GGredit load and save diagrams documents on a custom XML file using libxml2.

It use cairo for perform graphics operation, this allow to easily have support for multiple output devices (at the moment only the screen and the printer).

The user interface use gtkmm (the C++ interface for GTK+), and I try to follow the Gnome Human Interface Guidelines.

GGredit implements three custom widgets: the graphic editor, the properties browser and the document browser. These widget are used by DDraw for implements the Diagram Editor.

The graphic editor allow to work on the active page. It support infinite undo/redo commands. It implements an internal clipboard for cut, copy and paste objects on the document. The user can easily align objects in the page using snap lines that automatically appear when an object is aligned with the current.

The properties browser display all properties of selected object and for each kind of property use the widget suitable for edit the value. The properties browser can work also on more than one object on the same time (when the user select more than one object), and also on different objects (in this case only common properties are displayed).

The document browser display al pages contained in the document. Page are displayed with a miniature that show the effective drawn page. From the document browser the user can: insert new page, delete a page and also copy and paste page.