INTRO: For people that are interested in improving the DBus API here is a intro to how everything is layed out. First read the documentation for a general idea of how the different interfaces fit together and how Dbus is used in this application. Here are short descriptions of the relevent files: document-interface.cpp: This has most of the "meat" of the interface, this is where most functions are implemented. application-interface.cpp: This is where the application interface is implemented. (document/application)-interface.xml: These files are the master record of the interfaces. All of the documentation is generated from these files as is a lot of glue code. Any changes MUST be reflected here. dbus-init.cpp: This is where the interface is exposed when Inkscape starts up. Here is where the names given to the various interfaces are set. The application interface is constant but the document interfaces are generated on the fly. org.inkscape.service.in: This sets where DBus looks for the Inkscape executable if it is not running when someone tries to connect. Needs work. pytester.py: A python script that tests a lot of dbus functions. doc/builddocs.sh: builds documentation out of the XML files and some others. config.xsl, dbus-introspect-docs.dtd, spec-to-docbook.xsl, docbook.css: I borrowed these files, they set how the documentation looks, I have no idea how to edit them. doc/inkscapeDbusRef.xml: This is the top level file for laying out th documentation, it also includes the introduction. doc/inkscapeDbusTerms.xml: This containes the terms sections of the documentation. Also the overview and all the tutorials. *.ref.xml: These are intermediate files, do not edit. wrapper/inkscape-dbus-wrapper.c: This is actually completely seperate from inkscape. It has a wrapper for each function in the document interface and includes the client generated bindings. It is used to create a shared object that will allow people to use the interface without even knowing anything about Dbus. BUGS: *Inkscape crashes if widow is closed while code is running, need better error handling. *Pause updates needs work. *The following methods are broken: -document_interface_selection_move_to_layer *The following are not implemented: -document_interface_layer_get_all -document_interface_selection_box -document_interface_get_node_coordinates *The following do not behave like the documentation: -document_interface_transform -document_interface_text *Service file should point to wherever the inkscape executable was placed. EFFICIENCY: *Need better way to retrive objects by name. Switch to GQuark codes for object retrival? *Rethink how often activate_desktop needs to be called. FEATURES: *Find out more about extension API. *API compatibility for plugins? CLEANUP: