This is my totally unofficial list of todos for Dia. I probably won't have time to do all this myself so it may serve as starting point of the further direction Dia should take. --hb Useability Improvements - remember last selected sheet (almost done) - remember window position - tree window - main window - paste objects at current mouse position ? - default diagram for File/New ? - Adapt grid defaults ? - Paper setting #61446 - embed special file format dialog into main dialog ? Activate by selecting specific filter. Remember filter selection and settings across invocations - Allow to copy/paste style (properties of objects) - Select by Style (already implemented in Python) - Use statusbar to display something useful: - the curent object type (as an icon: to change props?) - the number of selected objects - the actual object position (in combination to move the selected object with the cursor keys by fractions of the current grid settings) Other Improvements - More detailed info at start-up, progress bar in splash (where does it spend all this time?) - Allow to attach 'arbitrary' data to Objects. Some kind of http://hans.breuer.org/dia printf ("Hi from Dia XML."); Python Bindings - create object from it's XML description (done) - provide interfaces to property editing widgets to allow to build full featured user interface with pygtk Fixes: - respect lines settings of custom shapes - #56066 : dia-win32 ships with no .po files - add gettext support on win32 - #56109 : Provide object defaults for StdProp objects (almost done) - Check quesionable objects / properties: UML - State ::type, - #59717 : Default orientation zigzag lines - #60330 : Add font setting to tool palette - Maybe some magic indirections in the XML definition to allow to change multiple equal fonts as once ... - #56177 : Make less dialogs popping up - #56233 : Further xml parsing robustness - no real defaults for object creation => string crashing - game over if is missing - endless loops with broken coords - create smarter data load/save functions, e.g. dia_data_color_with_default (node, name, &value, default) and use them all over the place (or switch to SAX interface ?) - #57060 : Undo on groups - Group resizing #59880, #59881 - unresziable objects would be moved (around center?) - every object could get a scale property ? i.e. allow to resize UML - Classes by changing their fonts - #60331 : Object properties should handle multiple objects (prototype already exists in Python, requires pygtk 0.6.x patch) Converting to Gtk2, GObject usage - during conversion to GObject converted objects should be properly namespaced (Dia prefix) - the same holds true for function conversions, i.e. keeping 'legacy' function would be much simpler if their new replacement would be prefixed with dia_ (This may even be applicable to rewrites of whole files). - ripp out GnomeDialog code and convert to GtkDialog. On the way change button ordering to conform to new guidelines - change Renderer to DiaRenderer which inherits from GObject - clean up renderer interface (remove all those fill functions and give the respective draw functions an extra fill parameter) - only few functions (marked as 'abstract' in the diagram) need to be implemented by a concrete renderer. Everything else should get a default implementation in the base class which uses the abstract (pure virtual) functions. If any concrete renderer knows better it simply can overwrite specialized functions. - convert Object and all inherits to DiaObject based on GObject - replace ObjectOps by proper class functions, allow additions e.g. DiaPolyConn could get extra functions add_point() and remove_point() which finally could be simply wrapped by language bindings (for all it's children). - Objects within packages should be named Dia as gobject (e.g. DiaFlowchartBox) cause otherwise the would collide with objects from other packages - use GArray for Connections, Handles, etc. and get rid of num_* parameter in objects - convert Point, Rectangle, ... etc. to GBoxed, GValue ? - goal: strong interface which allows change notification; gui/core separation; simple mapping for language bindings; allow to query with standard gobject functions ... - change Property API to use GValue, GType ? - DiaFont as abstract type with implementations for FreeType2, GtkFont, Pango