 = KDE3 TO KDE4 CHANGELOG =

This document describes what changed from the kde3 version of KTurtle (<= v0.7) to the kde4 (>= v0.8) version.

Since I (Cies Breijs) was working on the rewrite of the interpreter of KTurtle when the porting of kde3 to qt4 started, I decided to remove KTurtle from kde trunk to avoid dubble efford. In the end the rewrite of the interpreter resulted in a total rewrite for KTurtle. To know all that changed read on for the change log.

KTurtle is my first programming project; it basically learnt me C++/Qt/KDE development. I started off by massaging GPLed code of other project into what I wanted it to do. Gradually I learn alot about software design and this rewrite tries to set everything straight.

A lot of stuff still has to be done: not all features in the kde3 version of kturtle are in this version, work has started on a unittest framework (but it is by no means complete), the interpreter has not been very well tested yet, the documentation is still missing and there are rough edges all over the place. Yet I felt it the code is mature enough to back in kde trunk.

Any issues can be registered as bugs in bugs.kde.org (make shure to file it against 'svn kde'), or contact me directly: cies at kde dot nl.


I break up the change log by (groups of) classes:


 == interpreter ==
 * syntax heavily changed (no longer called 'logo' because of complaints by logo-purists)
 * the interpreter is now fully statefull (instead of doing ugly callbacks to the Qt event loop)
 * the tokenizer can be (and is) re-used for syntax highlighting and F2 context help
 * almost 1/3 of interpreter code is generated some ruby code (see: definitions.rb and generate.rb)
 * code generation allows a central place for command definition (in stead of over many files); so we're not repeating ourself
 * more sophiticated error handling
 * classes have better responsibilities
 * the translator is now a singleton
 * fully unicode ready (QString everywhere)
 * the signal to stdout 'echoer' allows GUIless unittests to cover signals to the canvas
 ---
 * a lot of testing has to be done (crashes occur, bad working functions, insufficient error messages)


 == canvas ==
 * from QCanvas to QGraphicsView (antialiassing, vectorbased)
 * the turtle figure is now vector (SVG) based (no longer keeping many rotation frames in .PNGs, yay!)
 ---
 * quite some functionality (most notably the 'wrapping' mode) are still missing
 * 2 annoying bugs: 1) i cant get rid of the scrollbars, 2) not properly resizing


 == editor ==
 * no longer uses katepart, now based on the QTextEdit framework
 * closer coupling with the interpreter (clever syntax highlighting that re-uses the tokenizer!)
 * the currently executed command and the currently selected error are marked
 ---
 * some functions are still missing (like find/replace, and a proper context menu)


 == mainwindow ==
 * F2 context help is now done using the tokenizer
 * new icons (logo) for kturtle (now svg based: thanks to inkscape)


 == main ==
 * there is now a way to invoke KTurtle from the command line (for unittests), try: "kturtle --help"
 * turtle code can be parsed (by re-using the tokenizer) to embeddable C++ code, try: "kturtle --help"


 == translator ==
 * the commands are now translated just like strings in the GUI (through a .po file)
 * the examples aswell! (examples are now the responsibility of the Translator class)
 * result: all of KTurtle (except for the manual) is now translated the 'normal' way, just like strings in the GUI!
 * this will probably make KTurtle available in many more languages


