This required creating a simple framework for operations to LdCanvas.
It is probable that it's going to require some changes when other
operations are added. The basic idea behind it seems to be good, though.
This way when the user clicks outside the menu when it is open,
the menu will close itself first.
Keyboard input is however still not handled.
The symbol menu should be redesigned.
* Now diagrams can be created, loaded and saved.
* Define descriptions and accelerators for actions.
* Set irrelevant actions unsensitive.
* Also remove redundant comments for clarity.
1. Add methods for coordinate translation between cairo/GtkWidget
coordinates and LdDocument coordinates.
2. Draw the grid correctly (also make it significantly faster).
3. Place the canvas into a GtkScrolledWindow and register
the set_scroll_adjustments signal in the GtkWidget base class.
4. Allow scrolling inside of an area of 200 x 200 units (for now).
In the future, it should be possible to go to infinity.
The previous method of containment, that is using GHashTable,
did not list children in any particular order.
Also names of children were duplicated. One copy has been
stored as a hash table index and another was present in the
child itself.
This step is needed, since the current design is quite chaotic
and it would not be possible to finish the application.
There's still a lot to be done.
After this step, it's time to implement the rest of LdLua.