Currently ongoing development in Dia

This page summarizes the various areas that are currently being actively developed in Dia, along with who is doing main development on them and what has been done/remains to be done.

Integrated UI

Status: Active. Main developer: Patrick Hallinan < >

This task adds an alternative style of user interface, namely in a single window with the diagrams as tabs.

Parts remaining:

  • Maybe add short cuts ctrl-1,2,... for selecting tabs like in GEdit.
  • Make menus update their sensitivity -- currently everything is sensitive all the time.
  • Avoid double shutdown.

Parts done:

  • Synchronized the remaining menu items to diagram in the tabbed notebook.
  • Removed right-click pop-up menu from dia-canvas.
  • Fixed crasher bug when closing diagrams in tabbed notebook.
  • Add popup message "Settings change will take effect after Dia is restarted" to the integrated UI option.
  • Add snap tool items to the toolbar.
  • Default the file filter for the Open File Dialog to "Supported Formats"
  • Force the new diagram to be shown!!!
  • Make the toolbar actually do something
  • Make the diagram tree show a diagram's tab (when it should).
  • Created Missing application menus.
  • Make the name of second diagram created be numbered 2 instead of 1.
  • Make diagram close button actually close the diagram.
  • Add shortcut cntl-w for closing the current tab (free when menu's were added).
  • Handle shutdown with multiple unsaved diagrams gracefully.
  • Add some indicator to tab label to show that it's diagram is unsaved.
  • Create toogle menu options to make statusbar and toolbar not shown.
  • Replace Zoom indicator in toolbar with something like a spinbutton so that the zoom can be set manually.
  • Integrate the layer dialog into the UI.

Multi-object properties dialog

Status: Active. Main developer: Sameer Sahasrabuddhe < >

A long-standing wish from users, this task allows multiple objects to have some properties updated without having unchanged properties be set to the same. The current implementation only works with grouped objects, but should be easy to transfer to working on the set of selected objects. As part of this update, standard properties like font size and line width are being given standard macros.

New group object

Status: Some progress, not in 0.97, main developer Lars Clausen < >

The current Group object takes all its "child" objects out of the diagram and replace them with itself. This causes some confusion, and disallows "opening" a group like XFig does. Also, any connections into and out of a group are broken, and layering is lost. This task aims at making a new group object that uses the "Parent" link to define its content.

The new group object now exists, but behind #ifdef bars.

Tasks done:

  • Allow loading of old groups as new groups.
  • Allow opening/closing of groups.

Tasks remaining:

  • Figure out what selection means vs. groups in connection with properties update (see above).
  • Make sure the various selection modes do not allow partial selects of closed groups.
  • Make groups automatically resize to follow their children.
  • Make sure parenting and groups works nicely together, i.e. that you can't group from different parents and vice-versa.
  • Make "group/ungroup" menu items work with the new group.
  • Remove new group item from Misc sheet.

Text edit mode

Status: Experimental first version implemented.

The goal of this task is to split into two modes of editing: Text edit mode and normal mode. In text edit mode, one object's text is being edited, and text-related actions are enabled, while some non-text related actions are disabled. Text edit mode is entered by pressing Enter or F2. Text edit mode is left by pressing Esc or by clicking somewhere else in the diagram.

bug 151115 is associated with this development.

Tasks accomplished:

  • Add textedit_mode function to tell if we're in text edit mode or not.
  • Add textedit_enter/exit for internally changing between text edit mode and not. This function currently just sets an internal (global) variable.
  • Changed ddisplay_canvas_events to control entering/exiting text edit mode on certain keys.
  • Make clicking on text in edit mode moves the cursor.
  • Make changes to menu activations when switching to and from text edit mode (probably just having a different set of actions around).
  • Make clicking on other objects exit text mode and do the right selection.
  • Make sure text edit mode is properly left at appropriate times.
  • Add toolbox item for entering/exiting text edit mode.

Tasks remaining:

  • Figure out how to handle changing between multiple diagrams. Ondrej Mikle says: "I'd suggest each diagram has its own focus instead of switching the focus object pointer each time diagram oses/gains focus. This would also preserve the edit mode per diagram which is IMHO better than having to press Enter each time user exits and enters the diagram (when he had left with some text focused in textedit mode). This would require adding something like Focus* diagram_focus and gboolean diagram_textedit_mode to struct _DDisplay.<p>Then there is question what to do with active_focus_ptr? Two possibilities: a) it remains as the "really active" focus, i.e. the one where text would be added when user presses the keystrokes b) we wouldn't need it anymore and functions such as request_focus, give_focus, remove_focus would first ask ddisplay_active and work with the active's display focus (I like this option better, but I have to check what happens if one of them is called while no display has focus)."

  • Figure out if ddisplay_im_context_preedit_reset should be called at the end of ddisplay_im_context_preedit_changed.
  • Add other key event handling in handle_key_event (pushing etc) (low priority).
  • Split non-text key event essentials into separate function.
  • Figure out if ddisplay_im_context functions need fixing.
  • Make exiting text edit mode collapse undo into a single transaction.
  • Make sure undoing past the start/end of edit mode works.

List property

Status: Quiescent.

This new property allows a list of other properties, like the Operations and Attributes lists in the UML objects. It is the only thing missing before the UML class properties can be defined just with the general properties system instead of having to use GTK code for the dialog.

Apps/Dia/CurrentDevelopment (last edited 2013-08-09 00:08:16 by WilliamJonMcCann)