INTRO: For people that are interested in improving the DBus API here is a intro to how everything is laid 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 relevant 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. 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 the documentation, it also includes the introduction. doc/inkscapeDbusTerms.xml: This contains 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 separate 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. *Default style for new shapes is occasionally strange. *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 EFFICIENCY: *Need better way to retrieve objects by name. Switch to GQuark codes for object retrieval? *Rethink how often activate_desktop needs to be called. FEATURES: *Find out more about extension API. *API compatibility for plugins? CLEANUP: