aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--ChangeLog643
-rw-r--r--Makefile.am.enum45
-rw-r--r--Makefile.in1
-rwxr-xr-xconfigure92
-rw-r--r--configure.ac8
-rw-r--r--docs/Makefile.in1
-rw-r--r--docs/libdbusmenu-glib/Makefile.in1
-rw-r--r--docs/libdbusmenu-glib/reference/Makefile.am18
-rw-r--r--docs/libdbusmenu-glib/reference/Makefile.in132
-rw-r--r--docs/libdbusmenu-glib/reference/html/annotation-glossary.html74
-rw-r--r--docs/libdbusmenu-glib/reference/html/api-index-deprecated.html31
-rw-r--r--docs/libdbusmenu-glib/reference/html/api-index-full.html545
-rw-r--r--docs/libdbusmenu-glib/reference/html/ch01.html50
-rw-r--r--docs/libdbusmenu-glib/reference/html/home.pngbin0 -> 578 bytes
-rw-r--r--docs/libdbusmenu-glib/reference/html/index.html49
-rw-r--r--docs/libdbusmenu-glib/reference/html/index.sgml162
-rw-r--r--docs/libdbusmenu-glib/reference/html/left.pngbin0 -> 373 bytes
-rw-r--r--docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuClient.html603
-rw-r--r--docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuMenuitem.html1696
-rw-r--r--docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuMenuitemProxy.html166
-rw-r--r--docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuServer.html412
-rw-r--r--docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-Types.html274
-rw-r--r--docs/libdbusmenu-glib/reference/html/libdbusmenu-glib.devhelp144
-rw-r--r--docs/libdbusmenu-glib/reference/html/libdbusmenu-glib.devhelp2149
-rw-r--r--docs/libdbusmenu-glib/reference/html/object-tree.html32
-rw-r--r--docs/libdbusmenu-glib/reference/html/right.pngbin0 -> 380 bytes
-rw-r--r--docs/libdbusmenu-glib/reference/html/style.css266
-rw-r--r--docs/libdbusmenu-glib/reference/html/up.pngbin0 -> 291 bytes
-rw-r--r--docs/libdbusmenu-glib/reference/libdbusmenu-glib-docs.sgml5
-rw-r--r--docs/libdbusmenu-glib/reference/libdbusmenu-glib-sections.txt86
-rw-r--r--docs/libdbusmenu-glib/reference/tmpl/client.sgml222
-rw-r--r--docs/libdbusmenu-glib/reference/tmpl/libdbusmenu-glib-unused.sgml0
-rw-r--r--docs/libdbusmenu-glib/reference/tmpl/menuitem-proxy.sgml59
-rw-r--r--docs/libdbusmenu-glib/reference/tmpl/menuitem.sgml635
-rw-r--r--docs/libdbusmenu-glib/reference/tmpl/server.sgml171
-rw-r--r--docs/libdbusmenu-glib/reference/tmpl/types.sgml109
-rw-r--r--docs/libdbusmenu-glib/reference/version.xml2
-rw-r--r--docs/libdbusmenu-glib/reference/xml/annotation-glossary.xml66
-rw-r--r--docs/libdbusmenu-glib/reference/xml/api-index-deprecated.xml8
-rw-r--r--docs/libdbusmenu-glib/reference/xml/api-index-full.xml141
-rw-r--r--docs/libdbusmenu-glib/reference/xml/client.xml446
-rw-r--r--docs/libdbusmenu-glib/reference/xml/menuitem-proxy.xml114
-rw-r--r--docs/libdbusmenu-glib/reference/xml/menuitem.xml1174
-rw-r--r--docs/libdbusmenu-glib/reference/xml/server.xml309
-rw-r--r--docs/libdbusmenu-glib/reference/xml/types.xml190
-rw-r--r--docs/libdbusmenu-gtk/Makefile.in1
-rw-r--r--docs/libdbusmenu-gtk/reference/Makefile.am11
-rw-r--r--docs/libdbusmenu-gtk/reference/Makefile.in126
-rw-r--r--docs/libdbusmenu-gtk/reference/html/annotation-glossary.html47
-rw-r--r--docs/libdbusmenu-gtk/reference/html/api-index-deprecated.html31
-rw-r--r--docs/libdbusmenu-gtk/reference/html/api-index-full.html135
-rw-r--r--docs/libdbusmenu-gtk/reference/html/ch01.html47
-rw-r--r--docs/libdbusmenu-gtk/reference/html/home.pngbin0 -> 578 bytes
-rw-r--r--docs/libdbusmenu-gtk/reference/html/index.html47
-rw-r--r--docs/libdbusmenu-gtk/reference/html/index.sgml52
-rw-r--r--docs/libdbusmenu-gtk/reference/html/left.pngbin0 -> 373 bytes
-rw-r--r--docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-DbusmenuGtkClient.html347
-rw-r--r--docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-DbusmenuGtkMenu.html187
-rw-r--r--docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-menuitem.html274
-rw-r--r--docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-parser.html91
-rw-r--r--docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk.devhelp43
-rw-r--r--docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk.devhelp243
-rw-r--r--docs/libdbusmenu-gtk/reference/html/object-tree.html32
-rw-r--r--docs/libdbusmenu-gtk/reference/html/right.pngbin0 -> 380 bytes
-rw-r--r--docs/libdbusmenu-gtk/reference/html/style.css266
-rw-r--r--docs/libdbusmenu-gtk/reference/html/up.pngbin0 -> 291 bytes
-rw-r--r--docs/libdbusmenu-gtk/reference/libdbusmenu-gtk-docs.sgml9
-rw-r--r--docs/libdbusmenu-gtk/reference/libdbusmenu-gtk-sections.txt77
-rw-r--r--docs/libdbusmenu-gtk/reference/tmpl/client.sgml110
-rw-r--r--docs/libdbusmenu-gtk/reference/tmpl/libdbusmenu-gtk-unused.sgml0
-rw-r--r--docs/libdbusmenu-gtk/reference/tmpl/menu.sgml56
-rw-r--r--docs/libdbusmenu-gtk/reference/tmpl/menuitem.sgml86
-rw-r--r--docs/libdbusmenu-gtk/reference/tmpl/parser.sgml33
-rw-r--r--docs/libdbusmenu-gtk/reference/tmpl/serializablemenuitem.sgml74
-rw-r--r--docs/libdbusmenu-gtk/reference/version.xml2
-rw-r--r--docs/libdbusmenu-gtk/reference/xml/annotation-glossary.xml32
-rw-r--r--docs/libdbusmenu-gtk/reference/xml/api-index-deprecated.xml8
-rw-r--r--docs/libdbusmenu-gtk/reference/xml/api-index-full.xml36
-rw-r--r--docs/libdbusmenu-gtk/reference/xml/client.xml238
-rw-r--r--docs/libdbusmenu-gtk/reference/xml/menu.xml133
-rw-r--r--docs/libdbusmenu-gtk/reference/xml/menuitem.xml178
-rw-r--r--docs/libdbusmenu-gtk/reference/xml/parser.xml61
-rw-r--r--docs/libdbusmenu-gtk/reference/xml/serializablemenuitem.xml176
-rw-r--r--libdbusmenu-glib/Makefile.am31
-rw-r--r--libdbusmenu-glib/Makefile.in115
-rw-r--r--libdbusmenu-glib/client-marshal.c2
-rw-r--r--libdbusmenu-glib/client-marshal.h3
-rw-r--r--libdbusmenu-glib/client-marshal.list1
-rw-r--r--libdbusmenu-glib/client-menuitem.c5
-rw-r--r--libdbusmenu-glib/client-menuitem.h12
-rw-r--r--libdbusmenu-glib/client-private.h48
-rw-r--r--libdbusmenu-glib/client.c319
-rw-r--r--libdbusmenu-glib/client.h91
-rw-r--r--libdbusmenu-glib/dbus-menu-clean.xml.c12
-rw-r--r--libdbusmenu-glib/dbus-menu.xml22
-rw-r--r--libdbusmenu-glib/defaults.c291
-rw-r--r--libdbusmenu-glib/defaults.h86
-rw-r--r--libdbusmenu-glib/enum-types.c183
-rw-r--r--libdbusmenu-glib/enum-types.c.in116
-rw-r--r--libdbusmenu-glib/enum-types.h68
-rw-r--r--libdbusmenu-glib/enum-types.h.in62
-rw-r--r--libdbusmenu-glib/menuitem-marshal.c43
-rw-r--r--libdbusmenu-glib/menuitem-marshal.h8
-rw-r--r--libdbusmenu-glib/menuitem-marshal.list1
-rw-r--r--libdbusmenu-glib/menuitem-private.h1
-rw-r--r--libdbusmenu-glib/menuitem-proxy.c34
-rw-r--r--libdbusmenu-glib/menuitem-proxy.h14
-rw-r--r--libdbusmenu-glib/menuitem.c999
-rw-r--r--libdbusmenu-glib/menuitem.h213
-rw-r--r--libdbusmenu-glib/server.c262
-rw-r--r--libdbusmenu-glib/server.h72
-rw-r--r--libdbusmenu-glib/types.h76
-rw-r--r--libdbusmenu-gtk/Makefile.am6
-rw-r--r--libdbusmenu-gtk/Makefile.in7
-rw-r--r--libdbusmenu-gtk/client.c110
-rw-r--r--libdbusmenu-gtk/client.h42
-rw-r--r--libdbusmenu-gtk/genericmenuitem.c54
-rw-r--r--libdbusmenu-gtk/genericmenuitem.h4
-rw-r--r--libdbusmenu-gtk/menu.c36
-rw-r--r--libdbusmenu-gtk/menu.h33
-rw-r--r--libdbusmenu-gtk/menuitem.c120
-rw-r--r--libdbusmenu-gtk/menuitem.h15
-rw-r--r--libdbusmenu-gtk/parser.c118
-rw-r--r--libdbusmenu-gtk/parser.h14
-rw-r--r--libdbusmenu-gtk/serializablemenuitem.c64
-rw-r--r--libdbusmenu-gtk/serializablemenuitem.h18
-rw-r--r--po/POTFILES.in2
-rw-r--r--tests/Makefile.am27
-rw-r--r--tests/Makefile.in68
-rwxr-xr-xtests/test-glib-simple-items.py35
-rw-r--r--tests/test-gtk-label.json26
-rwxr-xr-xtests/test-gtk-shortcut-client.py52
-rw-r--r--tests/test-json-01.json2111
-rw-r--r--tools/Makefile.in1
-rw-r--r--tools/testapp/Makefile.in1
136 files changed, 16009 insertions, 2566 deletions
diff --git a/AUTHORS b/AUTHORS
index 3885cab..79ab996 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -10,6 +10,7 @@
Kalle Valo
Ken VanDine
Martin Pitt
+ Mathieu Trudel-Lapierre
Michael Terry
Robert Collins
seb128
diff --git a/ChangeLog b/ChangeLog
index ff058d3..dfbaff5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,648 @@
# Generated by Makefile. Do not edit.
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ 0.3.99
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Marking as having details available in the signal
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Set property to status and return it
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Changing the property changed handler to get the property instead of using accessor functions that might not be the same
+
+2011-02-23 Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com>
+
+ Rework widget_notify_cb() to get the properties directly.
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Document the event signal define.
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Adding in the event signal for the menuitem
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Fixing signal emition to use the saved value instead of the enum
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Track the parent inside the menuitem instead of with a data property externally.
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Add the new functions to the sections doc
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Adding a transfer annotation for the get_parent function
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Checking to ensure we're the parent before deleting
+
+2011-02-24 Chris Coulson <chrisccoulson@ubuntu.com>
+
+ Hold a weak pointer to each DbusmenuMenuitems parent. This avoids
+ using g_object_{get/set}_data for storing a nodes parent in the parser code,
+ and the associated problems with that (ie, a child out-living its parent, leading
+ to invalid reads
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Unregister the theme signal handler on destruction instead of doing it through an odd reference.
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Not commenting out code, just deleteing
+
+2011-02-24 Chris Coulson <chrisccoulson@ubuntu.com>
+
+ Disconnect the theme_changed_cb handler when widgets are destroyed
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Adding an 'event' signal for generic event handling
+
+2011-02-23 Ted Gould <ted@gould.cx>
+
+ Switch signal handler to return bool so that we can signal if someone has handled it
+
+2011-02-22 Ted Gould <ted@gould.cx>
+
+ Sync to trunk
+
+2011-02-22 Ted Gould <ted@gould.cx>
+
+ Should return VOID
+
+2011-01-28 Ted Gould <ted@gould.cx>
+
+ Now emit that signal appropriately
+
+2011-01-28 Ted Gould <ted@gould.cx>
+
+ Adding a signal for events
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Documentation fixes
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Bad merge, forgot this change in name
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Only send property updates if the item has been already requested.
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adjusting so that we can check to see if the menu item has been exposed before sending the message. If it hasn't been we'll remove it from the signal, and perhaps not signal at all.
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Tracking whether we've been exposed
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adding a stub for exposed checking
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Allow sending only some properties based on what is requested.
+
+2011-02-23 Ted Gould <ted@gould.cx>
+
+ Search for and process type first
+
+2011-02-23 Ted Gould <ted@gould.cx>
+
+ Adding visible and enabled to the initial grab.
+
+2011-02-23 Ted Gould <ted@gould.cx>
+
+ If there's a singular NULL entry we also want the full list
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ When we're being selective we need to ensure we don't unref too boldly.
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Use the property structures that are from the GetLayout properties
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Set a fixed set of properties that we ask for when requesting the layout
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Handle a request for selective properties and give less data back
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Adding a property to request attention
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Merge changing from a signal to a property
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adds a status property that is gotten over DBus
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Tracking the status and signaling on DBus if it changes
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adding in the status property
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Fleshing out the getter and setter
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adding in some stub functions for the status
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adding in a status enum for tracking the status
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adding the 'state' property to the XML
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Adding a property for text direction
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Instead of defining a signal let's make this a property and use 'notify'
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Using the proper signal value. Oops
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Use a for loop for looking at invalidated properties
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Updating to trunk
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Start handling text direction and signal when it changes
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adding a nick to value translator
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adding a stub for getting the text direction
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adding the signal for text direction changing.
+
+2011-02-18 Ted Gould <ted@gould.cx>
+
+ Adding in the function prototypes for text direction in the client.
+
+2011-02-17 Ted Gould <ted@gould.cx>
+
+ Making it so that the dbus properties can have more than one.
+
+2011-02-17 Ted Gould <ted@gould.cx>
+
+ Use the get_nick function to get the value for the signal
+
+2011-02-17 Ted Gould <ted@gould.cx>
+
+ Adding a get_nick function for our enums
+
+2011-02-17 Ted Gould <ted@gould.cx>
+
+ Handling set and get of the property.
+
+2011-02-17 Ted Gould <ted@gould.cx>
+
+ Adding in the server.c file to POTFILES.in to get the default text direction
+
+2011-02-17 Ted Gould <ted@gould.cx>
+
+ Adding code to determine the default text direction
+
+2011-02-17 Ted Gould <ted@gould.cx>
+
+ Fleshing out the accessors for the text direction
+
+2011-02-17 Ted Gould <ted@gould.cx>
+
+ Adding a the text direction stub functions in.
+
+2011-02-17 Ted Gould <ted@gould.cx>
+
+ Whitespace
+
+2011-02-17 Ted Gould <ted@gould.cx>
+
+ Adding prototypes for the text direction
+
+2011-02-16 Ted Gould <ted@gould.cx>
+
+ Adding a property for text direction
+
+2011-02-16 Ted Gould <ted@gould.cx>
+
+ Ignoring the enum built files
+
+2011-02-16 Ted Gould <ted@gould.cx>
+
+ Changing the definition style to make mkenums happy.
+
+2011-02-16 Ted Gould <ted@gould.cx>
+
+ Make sure the text direction isn't in the server
+
+2011-02-16 Ted Gould <ted@gould.cx>
+
+ Adding building the enums untilthe build system
+
+2011-02-16 Ted Gould <ted@gould.cx>
+
+ Add the enum helper make file from Clutter
+
+2011-02-16 Ted Gould <ted@gould.cx>
+
+ Some enum type templates
+
+2011-02-16 Ted Gould <ted@gould.cx>
+
+ Adding a type for the text direction, putting it in a generic header for all
+
+2011-02-15 Ted Gould <ted@gould.cx>
+
+ Adding a property for text direction
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Fix up documentation and make it part of make check
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Make sure to run the check in the source directory.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing the sections in the base doc
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Adding sections and a little bit of docs to get everything up-to-date.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing the dbusmenu gtk menu docs
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Adding the root structure to the sections docs
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing up the client documentation
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Adding a sections file that's all cleaned up.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Only one version of the docs, just two builds.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Ensuring we don't have an GenericMenuItem in the docs
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing allow annotation
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Use the documented API here
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Adding in a deprecated section
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Removing some items that it said I needed before... I swear, constantly.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Removing the functions moved to the private header
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing all the menuitem documentation
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing menuitem proxy docs
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Block client-private.h from the docs
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixup documentation and move the private functions to a private header file
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing all of the server docs
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Making private subsections for private structures
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Dropping parents that are unused by gtk-doc
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Not parsing the generated XML header as well
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Adding in new symbols to the appropriate sections
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Remove outdated symbols that we don't want in the docs
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Changing the naming of the CLIENT MENUITEM macro to be standard
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Making sure the client menu item isn't parsed and remove some oldies.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Another update to trunk
+
+2010-06-10 Ted Gould <ted@gould.cx>
+
+ Catching up to trunk
+
+2010-06-09 Ted Gould <ted@gould.cx>
+
+ Putting in doc checks
+
+2011-02-24 Ted Gould <ted@gould.cx>
+
+ Make sure to not recurse if the value says we shouldn't
+
+2011-02-23 Ted Gould <ted@gould.cx>
+
+ Redefine so that we don't recurse if we shouldn't
+
+2011-02-23 Ted Gould <ted@gould.cx>
+
+ Don't check defaults with NULL objects
+
+2011-02-23 Ted Gould <ted@gould.cx>
+
+ Only look at defaults if we have a value to compare with.
+
+2011-02-23 Ted Gould <ted@gould.cx>
+
+ Cleaning up cleaning up so we don't unref twice and crash
+
+2011-02-23 Chris Coulson <chrisccoulson@ubuntu.com>
+
+ Various memory error fixes:
+ - Don't call g_object_add_weak_pointer multiple times on GtkMenuShell's
+ - Ensure we always clean up weak pointers to avoid invalid writes when
+ objects are destroyed
+ - If a GtkWidget is destroyed before it's DbusmenuMenuitem, don't try to access
+ it with g_object_steal_data
+
+2011-02-23 Ted Gould <ted@gould.cx>
+
+ Fixing the signatures to make them more consistent
+
+2011-02-22 Ted Gould <ted@gould.cx>
+
+ Changing parameter names to be more descriptive
+
+2011-02-22 Ted Gould <ted@gould.cx>
+
+ Changing signature to make more sense, comments by agateau
+
+2011-02-22 Ted Gould <ted@gould.cx>
+
+ Adding defaults to translatable files
+
+2011-02-22 Ted Gould <ted@gould.cx>
+
+ Support a set of defaults and not sending them over the bus.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Changing values to be booleans instead of strings to remove warnings.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing test data to not include default data, saving 40K of data.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Make sure to either ref or allocate
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Ensure that we check the local db for the type and don't go all recursive.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fleshing out the check for if a property is a default value.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ The defaults database can, and should, handle NULL types with fallbacks.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ If we can't get the value from our database, let's check the defaults.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Always replace to ensure we don't leak references.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Always check the type even if we don't have a value.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Allow for signaling the default value if it makes sense
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ When we're setting a value check to see if it's the same as the default and clear it if so.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Making sure to have weak pointer support incase we do drop all the refs
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Finally getting our very own reference for the defaults
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Flesh out the getters as well
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Create a basic setter function and fix our hashtables so they work with it.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Building our hash table and making sure it gets cleaned up
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Create an entry structure and functions for creating and destroying it
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Setting the core defaults up in a handy table.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Putting in stubs for our get/set functions
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fleshing out the ref_default
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Format sanely
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ License headers
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Setting up the private and some base documentation
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Adding in a defaults object
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing annotations and adding tests with python.
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing the path of the python in the test
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Bringing along the simple items test as well
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing distcheck by including py file and cleaning up it's pyc
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Removing parsing of unneeded comment block
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Typo in reference
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing the variable name
+
+2011-02-21 Ted Gould <ted@gould.cx>
+
+ Fixing transfer from the parser to be full
+
+2011-02-21 Martin Pitt <martin@piware.de>
+
+ add test-gtk-shortcut-client.py Python GI test
+
+ This replicates tests/test-gtk-shortcut-client.c using Python and GI.
+
+2011-02-21 Martin Pitt <martin@piware.de>
+
+ merge trunk
+
+2011-02-21 Martin Pitt <martin@piware.de>
+
+ fix typo in annotation
+
+2011-02-21 Martin Pitt <martin@piware.de>
+
+ add test-glib-simple-items.py Python GI test
+
+ This replicates tests/test-glib-simple-items.c using Python and GI. Update the
+ Makefile to use the locally generated GI typelibs for the tests.
+
+2011-02-16 Martin Pitt <martin@piware.de>
+
+ Fix GI annotations for DbusmenuGtk
+
+2011-02-16 Martin Pitt <martin@piware.de>
+
+ Fix g-ir-scanner file list for gtk
+
+ Analoguous to r211 for the GTK library.
+
+2011-02-16 Martin Pitt <martin@piware.de>
+
+ Fix GI annotations for Dbusmenu
+
+ Now everything is introspectable except for
+ dbusmenu_client_add_type_handler{,_full}(). These do not take a standard
+ GDestroyNotify argument, and thus the newfunc callback cannot get any valid
+ scope annotation. To fix this we need to break the API and ABI.
+
+2011-02-16 Martin Pitt <martin@piware.de>
+
+ Fix g-ir-scanner file list
+
+ As the annotations are in the .c files, g-ir-scanner actually needs to read
+ them.
+
2011-02-17 Ted Gould <ted@gould.cx>
0.3.98
diff --git a/Makefile.am.enum b/Makefile.am.enum
new file mode 100644
index 0000000..0503de0
--- /dev/null
+++ b/Makefile.am.enum
@@ -0,0 +1,45 @@
+# Rules for generating enumeration types using glib-mkenums
+#
+# Define:
+# glib_enum_h = header template file
+# glib_enum_c = source template file
+# glib_enum_headers = list of headers to parse
+#
+# before including Makefile.am.enums. You will also need to have
+# the following targets already defined:
+#
+# CLEANFILES
+# DISTCLEANFILES
+# BUILT_SOURCES
+# EXTRA_DIST
+#
+# Author: Emmanuele Bassi <ebassi@linux.intel.com>
+
+enum_tmpl_h=$(glib_enum_h:.h=.h.in)
+enum_tmpl_c=$(glib_enum_c:.c=.c.in)
+
+CLEANFILES += stamp-enum-types
+DISTCLEANFILES += $(glib_enum_h) $(glib_enum_c)
+BUILT_SOURCES += $(glib_enum_h) $(glib_enum_c)
+EXTRA_DIST += $(enum_tmpl_h) $(enum_tmpl_c)
+
+stamp-enum-types: $(glib_enum_headers)
+ $(QUIET_GEN)mkdir -p `dirname $(builddir)/$(glib_enum_h)`
+ $(QUIET_GEN)$(GLIB_MKENUMS) \
+ --template $(srcdir)/$(enum_tmpl_h) \
+ $(glib_enum_headers) > xgen-eh \
+ && (cmp -s xgen-eh $(builddir)/$(glib_enum_h) || cp -f xgen-eh $(builddir)/$(glib_enum_h)) \
+ && rm -f xgen-eh \
+ && echo timestamp > $(@F)
+
+$(glib_enum_h): stamp-enum-types
+ @true
+
+$(glib_enum_c): $(glib_enum_h)
+ $(QUIET_GEN)mkdir -p `dirname $(builddir)/$(glib_enum_c)`
+ $(QUIET_GEN)$(GLIB_MKENUMS) \
+ --template $(srcdir)/$(enum_tmpl_c) \
+ $(glib_enum_headers) > xgen-ec \
+ && cp -f xgen-ec $(builddir)/$(glib_enum_c) \
+ && rm -f xgen-ec
+
diff --git a/Makefile.in b/Makefile.in
index b123f90..0063aa3 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -152,6 +152,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
diff --git a/configure b/configure
index 66d50eb..9d2999a 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for libdbusmenu 0.3.98.
+# Generated by GNU Autoconf 2.67 for libdbusmenu 0.3.99.
#
# Report bugs to <ted@canonical.com>.
#
@@ -703,8 +703,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libdbusmenu'
PACKAGE_TARNAME='libdbusmenu'
-PACKAGE_VERSION='0.3.98'
-PACKAGE_STRING='libdbusmenu 0.3.98'
+PACKAGE_VERSION='0.3.99'
+PACKAGE_STRING='libdbusmenu 0.3.99'
PACKAGE_BUGREPORT='ted@canonical.com'
PACKAGE_URL=''
@@ -812,6 +812,7 @@ HTML_DIR
GTKDOC_MKPDF
GTKDOC_REBASE
GTKDOC_CHECK
+GLIB_MKENUMS
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
OTOOL64
@@ -1540,7 +1541,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libdbusmenu 0.3.98 to adapt to many kinds of systems.
+\`configure' configures libdbusmenu 0.3.99 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1610,7 +1611,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libdbusmenu 0.3.98:";;
+ short | recursive ) echo "Configuration of libdbusmenu 0.3.99:";;
esac
cat <<\_ACEOF
@@ -1750,7 +1751,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libdbusmenu configure 0.3.98
+libdbusmenu configure 0.3.99
generated by GNU Autoconf 2.67
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2121,7 +2122,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libdbusmenu $as_me 0.3.98, which was
+It was created by libdbusmenu $as_me 0.3.99, which was
generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@
@@ -2942,7 +2943,7 @@ fi
# Define the identity of the package.
PACKAGE=libdbusmenu
- VERSION=0.3.98
+ VERSION=0.3.99
# Some tools Automake needs.
@@ -6315,13 +6316,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:6318: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:6319: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:6321: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:6322: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:6324: output\"" >&5)
+ (eval echo "\"\$as_me:6325: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -7526,7 +7527,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 7529 "configure"' > conftest.$ac_ext
+ echo '#line 7530 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -8805,11 +8806,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8808: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8809: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8812: \$? = $ac_status" >&5
+ echo "$as_me:8813: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9144,11 +9145,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9147: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9148: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9151: \$? = $ac_status" >&5
+ echo "$as_me:9152: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9249,11 +9250,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9252: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9253: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9256: \$? = $ac_status" >&5
+ echo "$as_me:9257: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -9304,11 +9305,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9307: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9308: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9311: \$? = $ac_status" >&5
+ echo "$as_me:9312: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -11688,7 +11689,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11691 "configure"
+#line 11692 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11784,7 +11785,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11787 "configure"
+#line 11788 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12028,6 +12029,47 @@ esac
AM_BACKSLASH='\'
+# Extract the first word of "glib-mkenums", so it can be a program name with args.
+set dummy glib-mkenums; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GLIB_MKENUMS+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GLIB_MKENUMS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GLIB_MKENUMS="$GLIB_MKENUMS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GLIB_MKENUMS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GLIB_MKENUMS=$ac_cv_path_GLIB_MKENUMS
+if test -n "$GLIB_MKENUMS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_MKENUMS" >&5
+$as_echo "$GLIB_MKENUMS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
# Check whether --enable-deprecations was given.
if test "${enable_deprecations+set}" = set; then :
enableval=$enable_deprecations;
@@ -13256,7 +13298,7 @@ fi
###########################
LIBDBUSMENU_CURRENT=3
-LIBDBUSMENU_REVISION=6
+LIBDBUSMENU_REVISION=7
LIBDBUSMENU_AGE=0
@@ -14578,7 +14620,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libdbusmenu $as_me 0.3.98, which was
+This file was extended by libdbusmenu $as_me 0.3.99, which was
generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14644,7 +14686,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libdbusmenu config.status 0.3.98
+libdbusmenu config.status 0.3.99
configured by $0, generated by GNU Autoconf 2.67,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index a1af560..195422b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,11 +1,11 @@
-AC_INIT(libdbusmenu, 0.3.98, ted@canonical.com)
+AC_INIT(libdbusmenu, 0.3.99, ted@canonical.com)
AC_COPYRIGHT([Copyright 2009,2010 Canonical])
AC_PREREQ(2.62)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(libdbusmenu, 0.3.98, [-Wno-portability])
+AM_INIT_AUTOMAKE(libdbusmenu, 0.3.99, [-Wno-portability])
AM_MAINTAINER_MODE
@@ -21,6 +21,8 @@ AC_CONFIG_MACRO_DIR([m4])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums])
+
AC_ARG_ENABLE([deprecations],
[AS_HELP_STRING([--enable-deprecations],
[allow deprecated API usage @<:@default=yes@:>@])],
@@ -132,7 +134,7 @@ AC_PATH_PROG([XSLT_PROC], [xsltproc])
###########################
LIBDBUSMENU_CURRENT=3
-LIBDBUSMENU_REVISION=6
+LIBDBUSMENU_REVISION=7
LIBDBUSMENU_AGE=0
AC_SUBST(LIBDBUSMENU_CURRENT)
diff --git a/docs/Makefile.in b/docs/Makefile.in
index c47df3f..6b38370 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -136,6 +136,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
diff --git a/docs/libdbusmenu-glib/Makefile.in b/docs/libdbusmenu-glib/Makefile.in
index d18dc84..8a2cffb 100644
--- a/docs/libdbusmenu-glib/Makefile.in
+++ b/docs/libdbusmenu-glib/Makefile.in
@@ -136,6 +136,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
diff --git a/docs/libdbusmenu-glib/reference/Makefile.am b/docs/libdbusmenu-glib/reference/Makefile.am
index e8a3610..2af5ec3 100644
--- a/docs/libdbusmenu-glib/reference/Makefile.am
+++ b/docs/libdbusmenu-glib/reference/Makefile.am
@@ -48,11 +48,13 @@ CFILE_GLOB=$(top_srcdir)/libdbusmenu-glib/*.c
# Header files to ignore when scanning.
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
IGNORE_HFILES= \
+ dbus-menu-clean.xml.h \
+ client-menuitem.h \
+ client-private.h \
+ defaults.h \
menuitem-marshal.h \
server-marshal.h \
- menuitem-private.h \
- dbusmenu-client.h \
- dbusmenu-server.h
+ menuitem-private.h
# Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
@@ -88,5 +90,13 @@ EXTRA_DIST += version.xml.in
#DISTCLEANFILES +=
# Comment this out if you want your docs-status tested during 'make check'
-#TESTS = $(GTKDOC_CHECK)
+TESTS = gtkdoc-in-srcdir
+
+gtkdoc-in-srcdir: Makefile.am
+ @echo "#!/bin/sh" > $@
+ @echo "cd \"$(srcdir)\"" >> $@
+ @echo "$(GTKDOC_CHECK)" >> $@
+ @chmod +x $@
+
+DISTCLEANFILES = gtkdoc-in-srcdir
diff --git a/docs/libdbusmenu-glib/reference/Makefile.in b/docs/libdbusmenu-glib/reference/Makefile.in
index acd1735..a475a64 100644
--- a/docs/libdbusmenu-glib/reference/Makefile.in
+++ b/docs/libdbusmenu-glib/reference/Makefile.in
@@ -63,6 +63,8 @@ am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
am__v_at_0 = @
SOURCES =
DIST_SOURCES =
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALL_LINGUAS = @ALL_LINGUAS@
@@ -103,6 +105,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
@@ -281,11 +284,13 @@ CFILE_GLOB = $(top_srcdir)/libdbusmenu-glib/*.c
# Header files to ignore when scanning.
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
IGNORE_HFILES = \
+ dbus-menu-clean.xml.h \
+ client-menuitem.h \
+ client-private.h \
+ defaults.h \
menuitem-marshal.h \
server-marshal.h \
- menuitem-private.h \
- dbusmenu-client.h \
- dbusmenu-server.h
+ menuitem-private.h
# Images to copy into HTML directory.
@@ -345,6 +350,15 @@ REPORT_FILES = \
$(DOC_MODULE)-unused.txt
CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+
+# Files not to distribute
+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
+#DISTCLEANFILES +=
+
+# Comment this out if you want your docs-status tested during 'make check'
+TESTS = gtkdoc-in-srcdir
+DISTCLEANFILES = gtkdoc-in-srcdir
all: all-am
.SUFFIXES:
@@ -393,6 +407,98 @@ ctags: CTAGS
CTAGS:
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -427,6 +533,7 @@ distdir: $(DISTFILES)
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-hook
check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-am
all-am: Makefile all-local
installdirs:
@@ -452,6 +559,7 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -523,10 +631,10 @@ ps-am:
uninstall-am: uninstall-local
-.MAKE: install-am install-strip
+.MAKE: check-am install-am install-strip
-.PHONY: all all-am all-local check check-am clean clean-generic \
- clean-libtool clean-local dist-hook distclean \
+.PHONY: all all-am all-local check check-TESTS check-am clean \
+ clean-generic clean-libtool clean-local dist-hook distclean \
distclean-generic distclean-libtool distclean-local distdir \
dvi dvi-am html html-am info info-am install install-am \
install-data install-data-am install-data-local install-dvi \
@@ -681,13 +789,11 @@ dist-hook: dist-check-gtkdoc dist-hook-local
.PHONY : dist-hook-local docs
-# Files not to distribute
-# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
-# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
-#DISTCLEANFILES +=
-
-# Comment this out if you want your docs-status tested during 'make check'
-#TESTS = $(GTKDOC_CHECK)
+gtkdoc-in-srcdir: Makefile.am
+ @echo "#!/bin/sh" > $@
+ @echo "cd \"$(srcdir)\"" >> $@
+ @echo "$(GTKDOC_CHECK)" >> $@
+ @chmod +x $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/docs/libdbusmenu-glib/reference/html/annotation-glossary.html b/docs/libdbusmenu-glib/reference/html/annotation-glossary.html
new file mode 100644
index 0000000..0fa3cfa
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/annotation-glossary.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Annotation Glossary</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="up" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="prev" href="api-index-deprecated.html" title="Deprecated API Index">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="api-index-deprecated.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-glib Reference Manual</th>
+<td> </td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a class="shortcut" href="#glsA">A</a>
+  | 
+ <a class="shortcut" href="#glsE">E</a>
+  | 
+ <a class="shortcut" href="#glsT">T</a>
+  | 
+ <a class="shortcut" href="#glsI">I</a>
+  | 
+ <a class="shortcut" href="#glsT">T</a>
+  | 
+ <a class="shortcut" href="#glsC">C</a>
+  | 
+ <a class="shortcut" href="#glsT">T</a>
+</td></tr>
+</table>
+<div class="glossary">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="annotation-glossary"></a>Annotation Glossary</h2></div></div></div>
+<a name="glsA"></a><h3 class="title">A</h3>
+<dt>
+<a name="annotation-glossterm-allow-none"></a>allow-none</dt>
+<dd><p>NULL is ok, both for passing and for returning.</p></dd>
+<a name="glsE"></a><h3 class="title">E</h3>
+<dt>
+<a name="annotation-glossterm-element-type"></a>element-type</dt>
+<dd><p>Generics and defining elements of containers and arrays.</p></dd>
+<a name="glsT"></a><h3 class="title">T</h3>
+<dt>
+<a name="annotation-glossterm-transfer%20container"></a>transfer container</dt>
+<dd><p>Free data container after the code is done.</p></dd>
+<a name="glsI"></a><h3 class="title">I</h3>
+<dt>
+<a name="annotation-glossterm-in"></a>in</dt>
+<dd><p>Parameter for input. Default is <acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>.</p></dd>
+<a name="glsT"></a><h3 class="title">T</h3>
+<dt>
+<a name="annotation-glossterm-transfer%20full"></a>transfer full</dt>
+<dd><p>Free data after the code is done.</p></dd>
+<a name="glsC"></a><h3 class="title">C</h3>
+<dt>
+<a name="annotation-glossterm-closure"></a>closure</dt>
+<dd><p>This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.</p></dd>
+<a name="glsT"></a><h3 class="title">T</h3>
+<dt>
+<a name="annotation-glossterm-transfer%20none"></a>transfer none</dt>
+<dd><p>Don't free data after the code is done.</p></dd>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/api-index-deprecated.html b/docs/libdbusmenu-glib/reference/html/api-index-deprecated.html
new file mode 100644
index 0000000..1acd5ee
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/api-index-deprecated.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Deprecated API Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="up" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="prev" href="api-index-full.html" title="API Index">
+<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-glib Reference Manual</th>
+<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-deprecated"></a>Deprecated API Index</h2></div></div></div>
+<a name="idx"></a>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/api-index-full.html b/docs/libdbusmenu-glib/reference/html/api-index-full.html
new file mode 100644
index 0000000..7f2056c
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/api-index-full.html
@@ -0,0 +1,545 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>API Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="up" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="prev" href="object-tree.html" title="Object Hierarchy">
+<link rel="next" href="api-index-deprecated.html" title="Deprecated API Index">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="object-tree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-glib Reference Manual</th>
+<td><a accesskey="n" href="api-index-deprecated.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a class="shortcut" href="#idxC">C</a>
+  | 
+ <a class="shortcut" href="#idxM">M</a>
+  | 
+ <a class="shortcut" href="#idxS">S</a>
+  | 
+ <a class="shortcut" href="#idxT">T</a>
+</td></tr>
+</table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-full"></a>API Index</h2></div></div></div>
+<a name="idx"></a><a name="idxC"></a><h3 class="title">C</h3>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient">DbusmenuClient</a>, struct in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientClass" title="struct DbusmenuClientClass">DbusmenuClientClass</a>, struct in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeDestroyHandler" title="DbusmenuClientTypeDestroyHandler ()">DbusmenuClientTypeDestroyHandler</a>, user_function in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeHandler" title="DbusmenuClientTypeHandler ()">DbusmenuClientTypeHandler</a>, user_function in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler" title="dbusmenu_client_add_type_handler ()">dbusmenu_client_add_type_handler</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler-full" title="dbusmenu_client_add_type_handler_full ()">dbusmenu_client_add_type_handler_full</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-root" title="dbusmenu_client_get_root ()">dbusmenu_client_get_root</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-status" title="dbusmenu_client_get_status ()">dbusmenu_client_get_status</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-text-direction" title="dbusmenu_client_get_text_direction ()">dbusmenu_client_get_text_direction</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-new" title="dbusmenu_client_new ()">dbusmenu_client_new</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS" title="DBUSMENU_CLIENT_PROP_DBUS_NAME">DBUSMENU_CLIENT_PROP_DBUS_NAME</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS" title="DBUSMENU_CLIENT_PROP_DBUS_OBJECT">DBUSMENU_CLIENT_PROP_DBUS_OBJECT</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-STATUS:CAPS" title="DBUSMENU_CLIENT_PROP_STATUS">DBUSMENU_CLIENT_PROP_STATUS</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS" title="DBUSMENU_CLIENT_PROP_TEXT_DIRECTION">DBUSMENU_CLIENT_PROP_TEXT_DIRECTION</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS" title="DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT">DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS" title="DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE">DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS" title="DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED">DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS" title="DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM">DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS" title="DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED">DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS" title="DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED">DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS" title="DBUSMENU_CLIENT_TYPES_DEFAULT">DBUSMENU_CLIENT_TYPES_DEFAULT</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-IMAGE:CAPS" title="DBUSMENU_CLIENT_TYPES_IMAGE">DBUSMENU_CLIENT_TYPES_IMAGE</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS" title="DBUSMENU_CLIENT_TYPES_SEPARATOR">DBUSMENU_CLIENT_TYPES_SEPARATOR</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">DbusmenuClient</a>
+</dt>
+<dd></dd>
+<a name="idxM"></a><h3 class="title">M</h3>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem">DbusmenuMenuitem</a>, struct in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitemClass" title="struct DbusmenuMenuitemClass">DbusmenuMenuitemClass</a>, struct in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</a>, struct in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html" title="DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxyClass" title="struct DbusmenuMenuitemProxyClass">DbusmenuMenuitemProxyClass</a>, struct in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html" title="DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-about-to-show-cb" title="dbusmenu_menuitem_about_to_show_cb ()">dbusmenu_menuitem_about_to_show_cb</a>, user_function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-buildvariant-slot-t" title="dbusmenu_menuitem_buildvariant_slot_t ()">dbusmenu_menuitem_buildvariant_slot_t</a>, user_function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-add-position" title="dbusmenu_menuitem_child_add_position ()">dbusmenu_menuitem_child_add_position</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-append" title="dbusmenu_menuitem_child_append ()">dbusmenu_menuitem_child_append</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-delete" title="dbusmenu_menuitem_child_delete ()">dbusmenu_menuitem_child_delete</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS" title="DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU">DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-find" title="dbusmenu_menuitem_child_find ()">dbusmenu_menuitem_child_find</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-prepend" title="dbusmenu_menuitem_child_prepend ()">dbusmenu_menuitem_child_prepend</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-reorder" title="dbusmenu_menuitem_child_reorder ()">dbusmenu_menuitem_child_reorder</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-find-id" title="dbusmenu_menuitem_find_id ()">dbusmenu_menuitem_find_id</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-foreach" title="dbusmenu_menuitem_foreach ()">dbusmenu_menuitem_foreach</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-children" title="dbusmenu_menuitem_get_children ()">dbusmenu_menuitem_get_children</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-id" title="dbusmenu_menuitem_get_id ()">dbusmenu_menuitem_get_id</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-parent" title="dbusmenu_menuitem_get_parent ()">dbusmenu_menuitem_get_parent</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position" title="dbusmenu_menuitem_get_position ()">dbusmenu_menuitem_get_position</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position-realized" title="dbusmenu_menuitem_get_position_realized ()">dbusmenu_menuitem_get_position_realized</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-root" title="dbusmenu_menuitem_get_root ()">dbusmenu_menuitem_get_root</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-handle-event" title="dbusmenu_menuitem_handle_event ()">dbusmenu_menuitem_handle_event</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS" title="DBUSMENU_MENUITEM_ICON_NAME_BLANK">DBUSMENU_MENUITEM_ICON_NAME_BLANK</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-new" title="dbusmenu_menuitem_new ()">dbusmenu_menuitem_new</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-new-with-id" title="dbusmenu_menuitem_new_with_id ()">dbusmenu_menuitem_new_with_id</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-properties-copy" title="dbusmenu_menuitem_properties_copy ()">dbusmenu_menuitem_properties_copy</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-properties-list" title="dbusmenu_menuitem_properties_list ()">dbusmenu_menuitem_properties_list</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-exist" title="dbusmenu_menuitem_property_exist ()">dbusmenu_menuitem_property_exist</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get" title="dbusmenu_menuitem_property_get ()">dbusmenu_menuitem_property_get</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-bool" title="dbusmenu_menuitem_property_get_bool ()">dbusmenu_menuitem_property_get_bool</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-int" title="dbusmenu_menuitem_property_get_int ()">dbusmenu_menuitem_property_get_int</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-variant" title="dbusmenu_menuitem_property_get_variant ()">dbusmenu_menuitem_property_get_variant</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-remove" title="dbusmenu_menuitem_property_remove ()">dbusmenu_menuitem_property_remove</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set" title="dbusmenu_menuitem_property_set ()">dbusmenu_menuitem_property_set</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-bool" title="dbusmenu_menuitem_property_set_bool ()">dbusmenu_menuitem_property_set_bool</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-int" title="dbusmenu_menuitem_property_set_int ()">dbusmenu_menuitem_property_set_int</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-variant" title="dbusmenu_menuitem_property_set_variant ()">dbusmenu_menuitem_property_set_variant</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS" title="DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY">DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ENABLED:CAPS" title="DBUSMENU_MENUITEM_PROP_ENABLED">DBUSMENU_MENUITEM_PROP_ENABLED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS" title="DBUSMENU_MENUITEM_PROP_ICON_DATA">DBUSMENU_MENUITEM_PROP_ICON_DATA</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS" title="DBUSMENU_MENUITEM_PROP_ICON_NAME">DBUSMENU_MENUITEM_PROP_ICON_NAME</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-LABEL:CAPS" title="DBUSMENU_MENUITEM_PROP_LABEL">DBUSMENU_MENUITEM_PROP_LABEL</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS" title="DBUSMENU_MENUITEM_PROP_SHORTCUT">DBUSMENU_MENUITEM_PROP_SHORTCUT</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS" title="DBUSMENU_MENUITEM_PROP_TOGGLE_STATE">DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS" title="DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE">DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TYPE:CAPS" title="DBUSMENU_MENUITEM_PROP_TYPE">DBUSMENU_MENUITEM_PROP_TYPE</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS" title="DBUSMENU_MENUITEM_PROP_VISIBLE">DBUSMENU_MENUITEM_PROP_VISIBLE</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#dbusmenu-menuitem-proxy-get-wrapped" title="dbusmenu_menuitem_proxy_get_wrapped ()">dbusmenu_menuitem_proxy_get_wrapped</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html" title="DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#dbusmenu-menuitem-proxy-new" title="dbusmenu_menuitem_proxy_new ()">dbusmenu_menuitem_proxy_new</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html" title="DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-send-about-to-show" title="dbusmenu_menuitem_send_about_to_show ()">dbusmenu_menuitem_send_about_to_show</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-set-parent" title="dbusmenu_menuitem_set_parent ()">dbusmenu_menuitem_set_parent</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-set-root" title="dbusmenu_menuitem_set_root ()">dbusmenu_menuitem_set_root</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS" title="DBUSMENU_MENUITEM_SHORTCUT_ALT">DBUSMENU_MENUITEM_SHORTCUT_ALT</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS" title="DBUSMENU_MENUITEM_SHORTCUT_CONTROL">DBUSMENU_MENUITEM_SHORTCUT_CONTROL</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS" title="DBUSMENU_MENUITEM_SHORTCUT_SHIFT">DBUSMENU_MENUITEM_SHORTCUT_SHIFT</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS" title="DBUSMENU_MENUITEM_SHORTCUT_SUPER">DBUSMENU_MENUITEM_SHORTCUT_SUPER</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-show-to-user" title="dbusmenu_menuitem_show_to_user ()">dbusmenu_menuitem_show_to_user</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW">DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED">DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED">DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED">DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_EVENT">DBUSMENU_MENUITEM_SIGNAL_EVENT</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED">DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED">DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_REALIZED">DBUSMENU_MENUITEM_SIGNAL_REALIZED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID">DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER">DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-take-children" title="dbusmenu_menuitem_take_children ()">dbusmenu_menuitem_take_children</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_CHECK">DBUSMENU_MENUITEM_TOGGLE_CHECK</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_RADIO">DBUSMENU_MENUITEM_TOGGLE_RADIO</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED">DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED">DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN">DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-unparent" title="dbusmenu_menuitem_unparent ()">dbusmenu_menuitem_unparent</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">DbusmenuMenuitem</a>
+</dt>
+<dd></dd>
+<a name="idxS"></a><h3 class="title">S</h3>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer">DbusmenuServer</a>, struct in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServerClass" title="struct DbusmenuServerClass">DbusmenuServerClass</a>, struct in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-get-status" title="dbusmenu_server_get_status ()">dbusmenu_server_get_status</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-get-text-direction" title="dbusmenu_server_get_text_direction ()">dbusmenu_server_get_text_direction</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-new" title="dbusmenu_server_new ()">dbusmenu_server_new</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS" title="DBUSMENU_SERVER_PROP_DBUS_OBJECT">DBUSMENU_SERVER_PROP_DBUS_OBJECT</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS" title="DBUSMENU_SERVER_PROP_ROOT_NODE">DBUSMENU_SERVER_PROP_ROOT_NODE</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-STATUS:CAPS" title="DBUSMENU_SERVER_PROP_STATUS">DBUSMENU_SERVER_PROP_STATUS</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS" title="DBUSMENU_SERVER_PROP_TEXT_DIRECTION">DBUSMENU_SERVER_PROP_TEXT_DIRECTION</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-VERSION:CAPS" title="DBUSMENU_SERVER_PROP_VERSION">DBUSMENU_SERVER_PROP_VERSION</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-root" title="dbusmenu_server_set_root ()">dbusmenu_server_set_root</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-status" title="dbusmenu_server_set_status ()">dbusmenu_server_set_status</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-text-direction" title="dbusmenu_server_set_text_direction ()">dbusmenu_server_set_text_direction</a>, function in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS" title="DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE">DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS" title="DBUSMENU_SERVER_SIGNAL_ID_UPDATE">DBUSMENU_SERVER_SIGNAL_ID_UPDATE</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS" title="DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION">DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS" title="DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE">DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS" title="DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED">DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED</a>, macro in <a class="link" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">DbusmenuServer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus">DbusmenuStatus</a>, enum in <a class="link" href="libdbusmenu-glib-Types.html" title="Types">Types</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-status-get-nick" title="dbusmenu_status_get_nick ()">dbusmenu_status_get_nick</a>, function in <a class="link" href="libdbusmenu-glib-Types.html" title="Types">Types</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-status-get-type" title="dbusmenu_status_get_type ()">dbusmenu_status_get_type</a>, function in <a class="link" href="libdbusmenu-glib-Types.html" title="Types">Types</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-status-get-value-from-nick" title="dbusmenu_status_get_value_from_nick ()">dbusmenu_status_get_value_from_nick</a>, function in <a class="link" href="libdbusmenu-glib-Types.html" title="Types">Types</a>
+</dt>
+<dd></dd>
+<a name="idxT"></a><h3 class="title">T</h3>
+<dt>
+<a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection">DbusmenuTextDirection</a>, enum in <a class="link" href="libdbusmenu-glib-Types.html" title="Types">Types</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-nick" title="dbusmenu_text_direction_get_nick ()">dbusmenu_text_direction_get_nick</a>, function in <a class="link" href="libdbusmenu-glib-Types.html" title="Types">Types</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-type" title="dbusmenu_text_direction_get_type ()">dbusmenu_text_direction_get_type</a>, function in <a class="link" href="libdbusmenu-glib-Types.html" title="Types">Types</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-value-from-nick" title="dbusmenu_text_direction_get_value_from_nick ()">dbusmenu_text_direction_get_value_from_nick</a>, function in <a class="link" href="libdbusmenu-glib-Types.html" title="Types">Types</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-Types.html#DBUSMENU-TYPE-STATUS:CAPS" title="DBUSMENU_TYPE_STATUS">DBUSMENU_TYPE_STATUS</a>, macro in <a class="link" href="libdbusmenu-glib-Types.html" title="Types">Types</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-glib-Types.html#DBUSMENU-TYPE-TEXT-DIRECTION:CAPS" title="DBUSMENU_TYPE_TEXT_DIRECTION">DBUSMENU_TYPE_TEXT_DIRECTION</a>, macro in <a class="link" href="libdbusmenu-glib-Types.html" title="Types">Types</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/ch01.html b/docs/libdbusmenu-glib/reference/html/ch01.html
new file mode 100644
index 0000000..7fc0e1e
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/ch01.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>API</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="up" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="prev" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="next" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-glib Reference Manual</th>
+<td><a accesskey="n" href="libdbusmenu-glib-DbusmenuServer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="id401299"></a>API</h2></div></div></div>
+<div class="toc"><dl>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-glib-DbusmenuServer.html">DbusmenuServer</a></span><span class="refpurpose"> — The server signals changed and
+ updates on a tree of <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> objecs.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-glib-DbusmenuMenuitemProxy.html">DbusmenuMenuitemProxy</a></span><span class="refpurpose"> — A menuitem that proxies from another menuitem</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-glib-DbusmenuMenuitem.html">DbusmenuMenuitem</a></span><span class="refpurpose"> — A lowlevel represenation of a menuitem</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-glib-DbusmenuClient.html">DbusmenuClient</a></span><span class="refpurpose"> — The catcher of all the server traffic</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-glib-Types.html">Types</a></span><span class="refpurpose"> — Types that are used by both client and
+ server.</span>
+</dt>
+</dl></div>
+<span style="color: red">&lt;xi:include&gt;&lt;/xi:include&gt;</span><span style="color: red">&lt;xi:include&gt;&lt;/xi:include&gt;</span><span style="color: red">&lt;xi:include&gt;&lt;/xi:include&gt;</span>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/home.png b/docs/libdbusmenu-glib/reference/html/home.png
new file mode 100644
index 0000000..fb60b55
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/home.png
Binary files differ
diff --git a/docs/libdbusmenu-glib/reference/html/index.html b/docs/libdbusmenu-glib/reference/html/index.html
new file mode 100644
index 0000000..3e4a9ae
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/index.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>libdbusmenu-glib Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="next" href="ch01.html" title="API">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book">
+<div class="titlepage">
+<div><div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libdbusmenu-glib Reference Manual</p></th></tr></table></div></div>
+<hr>
+</div>
+<div class="toc"><dl>
+<dt><span class="chapter"><a href="ch01.html">API</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-glib-DbusmenuServer.html">DbusmenuServer</a></span><span class="refpurpose"> — The server signals changed and
+ updates on a tree of <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> objecs.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-glib-DbusmenuMenuitemProxy.html">DbusmenuMenuitemProxy</a></span><span class="refpurpose"> — A menuitem that proxies from another menuitem</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-glib-DbusmenuMenuitem.html">DbusmenuMenuitem</a></span><span class="refpurpose"> — A lowlevel represenation of a menuitem</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-glib-DbusmenuClient.html">DbusmenuClient</a></span><span class="refpurpose"> — The catcher of all the server traffic</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-glib-Types.html">Types</a></span><span class="refpurpose"> — Types that are used by both client and
+ server.</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="object-tree.html">Object Hierarchy</a></span></dt>
+<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt>
+<dt><span class="index"><a href="api-index-deprecated.html">Deprecated API Index</a></span></dt>
+<dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/index.sgml b/docs/libdbusmenu-glib/reference/html/index.sgml
new file mode 100644
index 0000000..ab3d53c
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/index.sgml
@@ -0,0 +1,162 @@
+<ANCHOR id="libdbusmenu-glib-DbusmenuServer" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html">
+<ANCHOR id="libdbusmenu-glib-DbusmenuServer.stability-level" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#libdbusmenu-glib-DbusmenuServer.stability-level">
+<ANCHOR id="libdbusmenu-glib-DbusmenuServer.synopsis" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#libdbusmenu-glib-DbusmenuServer.synopsis">
+<ANCHOR id="libdbusmenu-glib-DbusmenuServer.description" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#libdbusmenu-glib-DbusmenuServer.description">
+<ANCHOR id="libdbusmenu-glib-DbusmenuServer.details" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#libdbusmenu-glib-DbusmenuServer.details">
+<ANCHOR id="DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS">
+<ANCHOR id="DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS">
+<ANCHOR id="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS">
+<ANCHOR id="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS">
+<ANCHOR id="DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS">
+<ANCHOR id="DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS">
+<ANCHOR id="DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS">
+<ANCHOR id="DBUSMENU-SERVER-PROP-STATUS:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-STATUS:CAPS">
+<ANCHOR id="DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS">
+<ANCHOR id="DBUSMENU-SERVER-PROP-VERSION:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-VERSION:CAPS">
+<ANCHOR id="DbusmenuServer" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer">
+<ANCHOR id="DbusmenuServerClass" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServerClass">
+<ANCHOR id="dbusmenu-server-new" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-new">
+<ANCHOR id="dbusmenu-server-get-status" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-get-status">
+<ANCHOR id="dbusmenu-server-get-text-direction" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-get-text-direction">
+<ANCHOR id="dbusmenu-server-set-root" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-root">
+<ANCHOR id="dbusmenu-server-set-status" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-status">
+<ANCHOR id="dbusmenu-server-set-text-direction" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-text-direction">
+<ANCHOR id="libdbusmenu-glib-DbusmenuMenuitemProxy" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitemProxy.html">
+<ANCHOR id="libdbusmenu-glib-DbusmenuMenuitemProxy.stability-level" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitemProxy.html#libdbusmenu-glib-DbusmenuMenuitemProxy.stability-level">
+<ANCHOR id="libdbusmenu-glib-DbusmenuMenuitemProxy.synopsis" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitemProxy.html#libdbusmenu-glib-DbusmenuMenuitemProxy.synopsis">
+<ANCHOR id="libdbusmenu-glib-DbusmenuMenuitemProxy.description" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitemProxy.html#libdbusmenu-glib-DbusmenuMenuitemProxy.description">
+<ANCHOR id="libdbusmenu-glib-DbusmenuMenuitemProxy.details" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitemProxy.html#libdbusmenu-glib-DbusmenuMenuitemProxy.details">
+<ANCHOR id="DbusmenuMenuitemProxy" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy">
+<ANCHOR id="DbusmenuMenuitemProxyClass" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxyClass">
+<ANCHOR id="dbusmenu-menuitem-proxy-new" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitemProxy.html#dbusmenu-menuitem-proxy-new">
+<ANCHOR id="dbusmenu-menuitem-proxy-get-wrapped" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitemProxy.html#dbusmenu-menuitem-proxy-get-wrapped">
+<ANCHOR id="libdbusmenu-glib-DbusmenuMenuitem" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html">
+<ANCHOR id="libdbusmenu-glib-DbusmenuMenuitem.stability-level" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#libdbusmenu-glib-DbusmenuMenuitem.stability-level">
+<ANCHOR id="libdbusmenu-glib-DbusmenuMenuitem.synopsis" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#libdbusmenu-glib-DbusmenuMenuitem.synopsis">
+<ANCHOR id="libdbusmenu-glib-DbusmenuMenuitem.description" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#libdbusmenu-glib-DbusmenuMenuitem.description">
+<ANCHOR id="libdbusmenu-glib-DbusmenuMenuitem.details" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#libdbusmenu-glib-DbusmenuMenuitem.details">
+<ANCHOR id="DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-PROP-TYPE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TYPE:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-PROP-ENABLED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ENABLED:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-PROP-LABEL:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-LABEL:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS">
+<ANCHOR id="DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS">
+<ANCHOR id="DbusmenuMenuitem" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem">
+<ANCHOR id="dbusmenu-menuitem-about-to-show-cb" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-about-to-show-cb">
+<ANCHOR id="dbusmenu-menuitem-buildvariant-slot-t" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-buildvariant-slot-t">
+<ANCHOR id="DbusmenuMenuitemClass" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitemClass">
+<ANCHOR id="dbusmenu-menuitem-new" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-new">
+<ANCHOR id="dbusmenu-menuitem-new-with-id" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-new-with-id">
+<ANCHOR id="dbusmenu-menuitem-get-id" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-id">
+<ANCHOR id="dbusmenu-menuitem-get-children" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-children">
+<ANCHOR id="dbusmenu-menuitem-take-children" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-take-children">
+<ANCHOR id="dbusmenu-menuitem-get-position" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position">
+<ANCHOR id="dbusmenu-menuitem-get-position-realized" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position-realized">
+<ANCHOR id="dbusmenu-menuitem-child-append" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-append">
+<ANCHOR id="dbusmenu-menuitem-child-prepend" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-prepend">
+<ANCHOR id="dbusmenu-menuitem-child-delete" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-delete">
+<ANCHOR id="dbusmenu-menuitem-child-add-position" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-add-position">
+<ANCHOR id="dbusmenu-menuitem-child-reorder" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-reorder">
+<ANCHOR id="dbusmenu-menuitem-child-find" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-find">
+<ANCHOR id="dbusmenu-menuitem-find-id" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-find-id">
+<ANCHOR id="dbusmenu-menuitem-property-set" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set">
+<ANCHOR id="dbusmenu-menuitem-property-set-bool" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-bool">
+<ANCHOR id="dbusmenu-menuitem-property-set-int" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-int">
+<ANCHOR id="dbusmenu-menuitem-property-set-variant" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-variant">
+<ANCHOR id="dbusmenu-menuitem-property-get" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get">
+<ANCHOR id="dbusmenu-menuitem-property-get-bool" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-bool">
+<ANCHOR id="dbusmenu-menuitem-property-get-int" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-int">
+<ANCHOR id="dbusmenu-menuitem-property-get-variant" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-variant">
+<ANCHOR id="dbusmenu-menuitem-property-exist" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-exist">
+<ANCHOR id="dbusmenu-menuitem-properties-list" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-properties-list">
+<ANCHOR id="dbusmenu-menuitem-properties-copy" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-properties-copy">
+<ANCHOR id="dbusmenu-menuitem-property-remove" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-remove">
+<ANCHOR id="dbusmenu-menuitem-set-root" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-set-root">
+<ANCHOR id="dbusmenu-menuitem-get-root" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-root">
+<ANCHOR id="dbusmenu-menuitem-foreach" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-foreach">
+<ANCHOR id="dbusmenu-menuitem-handle-event" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-handle-event">
+<ANCHOR id="dbusmenu-menuitem-send-about-to-show" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-send-about-to-show">
+<ANCHOR id="dbusmenu-menuitem-show-to-user" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-show-to-user">
+<ANCHOR id="dbusmenu-menuitem-get-parent" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-parent">
+<ANCHOR id="dbusmenu-menuitem-set-parent" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-set-parent">
+<ANCHOR id="dbusmenu-menuitem-unparent" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-unparent">
+<ANCHOR id="libdbusmenu-glib-DbusmenuClient" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html">
+<ANCHOR id="libdbusmenu-glib-DbusmenuClient.stability-level" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#libdbusmenu-glib-DbusmenuClient.stability-level">
+<ANCHOR id="libdbusmenu-glib-DbusmenuClient.synopsis" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#libdbusmenu-glib-DbusmenuClient.synopsis">
+<ANCHOR id="libdbusmenu-glib-DbusmenuClient.description" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#libdbusmenu-glib-DbusmenuClient.description">
+<ANCHOR id="libdbusmenu-glib-DbusmenuClient.details" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#libdbusmenu-glib-DbusmenuClient.details">
+<ANCHOR id="DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-PROP-STATUS:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-STATUS:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS">
+<ANCHOR id="DBUSMENU-CLIENT-TYPES-IMAGE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-IMAGE:CAPS">
+<ANCHOR id="DbusmenuClient" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient">
+<ANCHOR id="DbusmenuClientClass" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientClass">
+<ANCHOR id="DbusmenuClientTypeHandler" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeHandler">
+<ANCHOR id="DbusmenuClientTypeDestroyHandler" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeDestroyHandler">
+<ANCHOR id="dbusmenu-client-new" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-new">
+<ANCHOR id="dbusmenu-client-get-root" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-root">
+<ANCHOR id="dbusmenu-client-get-status" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-status">
+<ANCHOR id="dbusmenu-client-get-text-direction" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-text-direction">
+<ANCHOR id="dbusmenu-client-add-type-handler" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler">
+<ANCHOR id="dbusmenu-client-add-type-handler-full" href="libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler-full">
+<ANCHOR id="libdbusmenu-glib-Types" href="libdbusmenu-glib/libdbusmenu-glib-Types.html">
+<ANCHOR id="libdbusmenu-glib-Types.stability-level" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#libdbusmenu-glib-Types.stability-level">
+<ANCHOR id="libdbusmenu-glib-Types.synopsis" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#libdbusmenu-glib-Types.synopsis">
+<ANCHOR id="libdbusmenu-glib-Types.description" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#libdbusmenu-glib-Types.description">
+<ANCHOR id="libdbusmenu-glib-Types.details" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#libdbusmenu-glib-Types.details">
+<ANCHOR id="DBUSMENU-TYPE-STATUS:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#DBUSMENU-TYPE-STATUS:CAPS">
+<ANCHOR id="DBUSMENU-TYPE-TEXT-DIRECTION:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#DBUSMENU-TYPE-TEXT-DIRECTION:CAPS">
+<ANCHOR id="DbusmenuStatus" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#DbusmenuStatus">
+<ANCHOR id="DBUSMENU-STATUS-NORMAL:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#DBUSMENU-STATUS-NORMAL:CAPS">
+<ANCHOR id="DBUSMENU-STATUS-NOTICE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#DBUSMENU-STATUS-NOTICE:CAPS">
+<ANCHOR id="DbusmenuTextDirection" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#DbusmenuTextDirection">
+<ANCHOR id="DBUSMENU-TEXT-DIRECTION-NONE:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#DBUSMENU-TEXT-DIRECTION-NONE:CAPS">
+<ANCHOR id="DBUSMENU-TEXT-DIRECTION-LTR:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#DBUSMENU-TEXT-DIRECTION-LTR:CAPS">
+<ANCHOR id="DBUSMENU-TEXT-DIRECTION-RTL:CAPS" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#DBUSMENU-TEXT-DIRECTION-RTL:CAPS">
+<ANCHOR id="dbusmenu-status-get-nick" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#dbusmenu-status-get-nick">
+<ANCHOR id="dbusmenu-status-get-type" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#dbusmenu-status-get-type">
+<ANCHOR id="dbusmenu-status-get-value-from-nick" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#dbusmenu-status-get-value-from-nick">
+<ANCHOR id="dbusmenu-text-direction-get-nick" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-nick">
+<ANCHOR id="dbusmenu-text-direction-get-type" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-type">
+<ANCHOR id="dbusmenu-text-direction-get-value-from-nick" href="libdbusmenu-glib/libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-value-from-nick">
+<ANCHOR id="annotation-glossterm-allow-none" href="libdbusmenu-glib/annotation-glossary.html#annotation-glossterm-allow-none">
+<ANCHOR id="annotation-glossterm-element-type" href="libdbusmenu-glib/annotation-glossary.html#annotation-glossterm-element-type">
+<ANCHOR id="annotation-glossterm-transfer container" href="libdbusmenu-glib/annotation-glossary.html#annotation-glossterm-transfer container">
+<ANCHOR id="annotation-glossterm-in" href="libdbusmenu-glib/annotation-glossary.html#annotation-glossterm-in">
+<ANCHOR id="annotation-glossterm-transfer full" href="libdbusmenu-glib/annotation-glossary.html#annotation-glossterm-transfer full">
+<ANCHOR id="annotation-glossterm-closure" href="libdbusmenu-glib/annotation-glossary.html#annotation-glossterm-closure">
+<ANCHOR id="annotation-glossterm-transfer none" href="libdbusmenu-glib/annotation-glossary.html#annotation-glossterm-transfer none">
diff --git a/docs/libdbusmenu-glib/reference/html/left.png b/docs/libdbusmenu-glib/reference/html/left.png
new file mode 100644
index 0000000..48cab27
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/left.png
Binary files differ
diff --git a/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuClient.html b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuClient.html
new file mode 100644
index 0000000..7caca3d
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuClient.html
@@ -0,0 +1,603 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>DbusmenuClient</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="up" href="ch01.html" title="API">
+<link rel="prev" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">
+<link rel="next" href="libdbusmenu-glib-Types.html" title="Types">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libdbusmenu-glib-DbusmenuMenuitem.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-glib Reference Manual</th>
+<td><a accesskey="n" href="libdbusmenu-glib-Types.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libdbusmenu-glib-DbusmenuClient.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#libdbusmenu-glib-DbusmenuClient.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="libdbusmenu-glib-DbusmenuClient"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libdbusmenu-glib-DbusmenuClient.top_of_page"></a>DbusmenuClient</span></h2>
+<p>DbusmenuClient — The catcher of all the server traffic</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuClient.stability-level"></a><h2>Stability Level</h2>
+Unstable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<a name="libdbusmenu-glib-DbusmenuClient.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;libdbusmenu-glib/client.h&gt;
+
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS" title="DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED">DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS" title="DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED">DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS" title="DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM">DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS" title="DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT">DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS" title="DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE">DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS" title="DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED">DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS" title="DBUSMENU_CLIENT_PROP_DBUS_NAME">DBUSMENU_CLIENT_PROP_DBUS_NAME</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS" title="DBUSMENU_CLIENT_PROP_DBUS_OBJECT">DBUSMENU_CLIENT_PROP_DBUS_OBJECT</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-STATUS:CAPS" title="DBUSMENU_CLIENT_PROP_STATUS">DBUSMENU_CLIENT_PROP_STATUS</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS" title="DBUSMENU_CLIENT_PROP_TEXT_DIRECTION">DBUSMENU_CLIENT_PROP_TEXT_DIRECTION</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS" title="DBUSMENU_CLIENT_TYPES_DEFAULT">DBUSMENU_CLIENT_TYPES_DEFAULT</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS" title="DBUSMENU_CLIENT_TYPES_SEPARATOR">DBUSMENU_CLIENT_TYPES_SEPARATOR</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-IMAGE:CAPS" title="DBUSMENU_CLIENT_TYPES_IMAGE">DBUSMENU_CLIENT_TYPES_IMAGE</a>
+ <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient">DbusmenuClient</a>;
+struct <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientClass" title="struct DbusmenuClientClass">DbusmenuClientClass</a>;
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> (<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeHandler" title="DbusmenuClientTypeHandler ()">*DbusmenuClientTypeHandler</a>) (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *newitem</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *parent</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
+<span class="returnvalue">void</span> (<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeDestroyHandler" title="DbusmenuClientTypeDestroyHandler ()">*DbusmenuClientTypeDestroyHandler</a>) (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *type</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="returnvalue">DbusmenuClient</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-new" title="dbusmenu_client_new ()">dbusmenu_client_new</a> (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object</code></em>);
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-root" title="dbusmenu_client_get_root ()">dbusmenu_client_get_root</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>);
+<a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="returnvalue">DbusmenuStatus</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-status" title="dbusmenu_client_get_status ()">dbusmenu_client_get_status</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>);
+<a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="returnvalue">DbusmenuTextDirection</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-text-direction" title="dbusmenu_client_get_text_direction ()">dbusmenu_client_get_text_direction</a>
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler" title="dbusmenu_client_add_type_handler ()">dbusmenu_client_add_type_handler</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *type</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeHandler" title="DbusmenuClientTypeHandler ()"><span class="type">DbusmenuClientTypeHandler</span></a> newfunc</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler-full" title="dbusmenu_client_add_type_handler_full ()">dbusmenu_client_add_type_handler_full</a>
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *type</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeHandler" title="DbusmenuClientTypeHandler ()"><span class="type">DbusmenuClientTypeHandler</span></a> newfunc</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeDestroyHandler" title="DbusmenuClientTypeDestroyHandler ()"><span class="type">DbusmenuClientTypeDestroyHandler</span></a> destroy_func</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuClient.description"></a><h2>Description</h2>
+<p>
+The client exists as a mirror to the server. For most folks
+ all they will do with a client is set it up to connect to
+ a server and then watch as the menu items on their side
+ of the bus change. This is all they should need to know about
+ the client, that it magically makes their menuitems dance.
+</p>
+<p>
+ It does this by setting up signal watchers and adjusting
+ the menuitems appropriately. Most users should watch the
+ menu items and the signal <span class="type">"layout-changed"</span> for
+ larger events so that they can be optimized. It is possible
+ with that signal that even the root node would change. If
+ that doesn't happen the normal signals on the individual
+ nodes should be enough for most users.
+</p>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuClient.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS"></a><h3>DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED "layout-updated"
+</pre>
+<p>
+String to attach to signal <span class="type">"layout-updated"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS"></a><h3>DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED "root-changed"
+</pre>
+<p>
+String to attach to signal <span class="type">"root-changed"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS"></a><h3>DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM "new-menuitem"
+</pre>
+<p>
+String to attach to signal <span class="type">"new-menuitem"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS"></a><h3>DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT "event-result"
+</pre>
+<p>
+String to attach to signal <span class="type">"event-result"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS"></a><h3>DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE "item-activate"
+</pre>
+<p>
+String to attach to signal <span class="type">"item-activate"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS"></a><h3>DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED "text-direction-changed"
+</pre>
+<p>
+String to attach to signal <span class="type">"text-direction-changed"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS"></a><h3>DBUSMENU_CLIENT_PROP_DBUS_NAME</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_PROP_DBUS_NAME "dbus-name"
+</pre>
+<p>
+String to access property <span class="type">"dbus-name"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS"></a><h3>DBUSMENU_CLIENT_PROP_DBUS_OBJECT</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_PROP_DBUS_OBJECT "dbus-object"
+</pre>
+<p>
+String to access property <span class="type">"dbus-object"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-PROP-STATUS:CAPS"></a><h3>DBUSMENU_CLIENT_PROP_STATUS</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_PROP_STATUS "status"
+</pre>
+<p>
+String to access property <span class="type">"status"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS"></a><h3>DBUSMENU_CLIENT_PROP_TEXT_DIRECTION</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_PROP_TEXT_DIRECTION "text-direction"
+</pre>
+<p>
+String to access property <span class="type">"text-direction"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS"></a><h3>DBUSMENU_CLIENT_TYPES_DEFAULT</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_TYPES_DEFAULT "standard"
+</pre>
+<p>
+Used to set the 'type' property on a menu item to create
+a standard menu item.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS"></a><h3>DBUSMENU_CLIENT_TYPES_SEPARATOR</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_TYPES_SEPARATOR "separator"
+</pre>
+<p>
+Used to set the 'type' property on a menu item to create
+a separator menu item.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-CLIENT-TYPES-IMAGE:CAPS"></a><h3>DBUSMENU_CLIENT_TYPES_IMAGE</h3>
+<pre class="programlisting">#define DBUSMENU_CLIENT_TYPES_IMAGE "standard"
+</pre>
+<p>
+Used to set the 'type' property on a menu item to create
+an image menu item. Deprecated as standard menu items now
+support images as well.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuClient"></a><h3>DbusmenuClient</h3>
+<pre class="programlisting">typedef struct _DbusmenuClient DbusmenuClient;</pre>
+<p>
+The client for a <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> creating a shared
+ object set of <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> objects.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuClientClass"></a><h3>struct DbusmenuClientClass</h3>
+<pre class="programlisting">struct DbusmenuClientClass {
+ GObjectClass parent_class;
+
+ void (*layout_updated)(void);
+ void (*root_changed) (DbusmenuMenuitem * newroot);
+ void (*new_menuitem) (DbusmenuMenuitem * newitem);
+ void (*item_activate) (DbusmenuMenuitem * item, guint timestamp);
+ void (*event_result) (DbusmenuMenuitem * item, gchar * event, GVariant * data, guint timestamp, GError * error);
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+ void (*reserved6) (void);
+};
+</pre>
+<p>
+A simple class that takes all of the information from a
+ <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> over DBus and makes the same set of
+ <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> objects appear on the other side.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObjectClass"><span class="type">GObjectClass</span></a> <em class="structfield"><code><a name="DbusmenuClientClass.parent-class"></a>parent_class</code></em>;</span></p></td>
+<td><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObjectClass"><span class="type">GObjectClass</span></a></td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.layout-updated"></a>layout_updated</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"layout-updated"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.root-changed"></a>root_changed</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"root-changed"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.new-menuitem"></a>new_menuitem</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"new-menuitem"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.item-activate"></a>item_activate</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"item-activate"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.event-result"></a>event_result</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"event-error"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.reserved1"></a>reserved1</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.reserved2"></a>reserved2</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.reserved3"></a>reserved3</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.reserved4"></a>reserved4</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.reserved5"></a>reserved5</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuClientClass.reserved6"></a>reserved6</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuClientTypeHandler"></a><h3>DbusmenuClientTypeHandler ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> (*DbusmenuClientTypeHandler) (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *newitem</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *parent</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>
+The type handler is called when a dbusmenu item is created
+ with a matching type as setup in <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler" title="dbusmenu_client_add_type_handler ()"><span class="type">dbusmenu_client_add_type_handler</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>newitem</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> that was created</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parent</code></em> :</span></p></td>
+<td>The parent of <em class="parameter"><code>newitem</code></em> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if none</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>A pointer to the <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>The data you gave us</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if the type has been handled. <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><span class="type">FALSE</span></a> if this
+function was somehow unable to handle it.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuClientTypeDestroyHandler"></a><h3>DbusmenuClientTypeDestroyHandler ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*DbusmenuClientTypeDestroyHandler) (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *type</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>
+This handler is called when the type becomes unregistered by the
+ client. This is usally caused by the <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> being destroyed
+ and should free memory or unref objects in <em class="parameter"><code>user_data</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>A pointer to the <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
+<td>The type that this handler was registered with</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>The data you gave us</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-client-new"></a><h3>dbusmenu_client_new ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="returnvalue">DbusmenuClient</span></a> * dbusmenu_client_new (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object</code></em>);</pre>
+<p>
+This function creates a new client that connects to a specific
+server on DBus. That server is at a specific location sharing
+a known object. The interface is assumed by the code to be
+the DBus menu interface. The newly created client will start
+sending out events as it syncs up with the server.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>The DBus name for the server to connect to</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>The object on the server to monitor</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A brand new <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-client-get-root"></a><h3>dbusmenu_client_get_root ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * dbusmenu_client_get_root (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>);</pre>
+<p>
+Grabs the root node for the specified client <em class="parameter"><code>client</code></em>. This
+function may block. It will block if there is currently a
+call to update the layout, it will block on that layout
+updated and then return the newly updated layout. Chances
+are that this update is in the queue for the mainloop as
+it would have been requested some time ago, but in theory
+it could block longer.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> to get the root node from</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> representing the root of
+menu on the server. If there is no server or there is
+an error receiving its layout it'll return <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-client-get-status"></a><h3>dbusmenu_client_get_status ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="returnvalue">DbusmenuStatus</span></a> dbusmenu_client_get_status (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>);</pre>
+<p>
+Gets the recommended current status that the server
+ is exporting for the menus. In situtations where the
+ value is <a class="link" href="libdbusmenu-glib-Types.html#DBUSMENU-STATUS-NOTICE:CAPS"><span class="type">DBUSMENU_STATUS_NOTICE</span></a> it is recommended that
+ the client show the menus to the user an a more noticible
+ way.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> to check the status on</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Status being exported.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-client-get-text-direction"></a><h3>dbusmenu_client_get_text_direction ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="returnvalue">DbusmenuTextDirection</span></a> dbusmenu_client_get_text_direction
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>);</pre>
+<p>
+Gets the text direction that the server is exporting. If
+ the server is not exporting a direction then the value
+ <a class="link" href="libdbusmenu-glib-Types.html#DBUSMENU-TEXT-DIRECTION-NONE:CAPS"><span class="type">DBUSMENU_TEXT_DIRECTION_NONE</span></a> will be returned.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>
+<a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> to check the text direction on</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Text direction being exported.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-client-add-type-handler"></a><h3>dbusmenu_client_add_type_handler ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_client_add_type_handler (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *type</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeHandler" title="DbusmenuClientTypeHandler ()"><span class="type">DbusmenuClientTypeHandler</span></a> newfunc</code></em>);</pre>
+<p>
+This function connects into the type handling of the <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a>.
+Every new menuitem that comes in immediately gets asked for it's
+properties. When we get those properties we check the 'type'
+property and look to see if it matches a handler that is known
+by the client. If so, the <em class="parameter"><code>newfunc</code></em> function is executed on that
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>. If not, then the DbusmenuClient::new-menuitem
+signal is sent.
+</p>
+<p>
+In the future the known types will be sent to the server so that it
+can make choices about the menu item types availble.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>Client where we're getting types coming in</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
+<td>A text string that will be matched with the 'type'
+property on incoming menu items</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>newfunc</code></em> :</span></p></td>
+<td>The function that will be executed with those new
+items when they come in.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>If registering the new type was successful.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-client-add-type-handler-full"></a><h3>dbusmenu_client_add_type_handler_full ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_client_add_type_handler_full
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> *client</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *type</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeHandler" title="DbusmenuClientTypeHandler ()"><span class="type">DbusmenuClientTypeHandler</span></a> newfunc</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeDestroyHandler" title="DbusmenuClientTypeDestroyHandler ()"><span class="type">DbusmenuClientTypeDestroyHandler</span></a> destroy_func</code></em>);</pre>
+<p>
+This function connects into the type handling of the <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a>.
+Every new menuitem that comes in immediately gets asked for it's
+properties. When we get those properties we check the 'type'
+property and look to see if it matches a handler that is known
+by the client. If so, the <em class="parameter"><code>newfunc</code></em> function is executed on that
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>. If not, then the DbusmenuClient::new-menuitem
+signal is sent.
+</p>
+<p>
+In the future the known types will be sent to the server so that it
+can make choices about the menu item types availble.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>Client where we're getting types coming in</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
+<td>A text string that will be matched with the 'type'
+property on incoming menu items</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>newfunc</code></em> :</span></p></td>
+<td>The function that will be executed with those new
+items when they come in.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>Data passed to <em class="parameter"><code>newfunc</code></em> when it is called</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>destroy_func</code></em> :</span></p></td>
+<td>A function that is called when the type handler is
+removed (usually on client destruction) which will free
+the resources in <em class="parameter"><code>user_data</code></em>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>If registering the new type was successful.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuMenuitem.html b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuMenuitem.html
new file mode 100644
index 0000000..9621955
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuMenuitem.html
@@ -0,0 +1,1696 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>DbusmenuMenuitem</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="up" href="ch01.html" title="API">
+<link rel="prev" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html" title="DbusmenuMenuitemProxy">
+<link rel="next" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-glib Reference Manual</th>
+<td><a accesskey="n" href="libdbusmenu-glib-DbusmenuClient.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libdbusmenu-glib-DbusmenuMenuitem.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#libdbusmenu-glib-DbusmenuMenuitem.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="libdbusmenu-glib-DbusmenuMenuitem"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libdbusmenu-glib-DbusmenuMenuitem.top_of_page"></a>DbusmenuMenuitem</span></h2>
+<p>DbusmenuMenuitem — A lowlevel represenation of a menuitem</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuMenuitem.stability-level"></a><h2>Stability Level</h2>
+Unstable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<a name="libdbusmenu-glib-DbusmenuMenuitem.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;libdbusmenu-glib/menuitem.h&gt;
+
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED">DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED">DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED">DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED">DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED">DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_EVENT">DBUSMENU_MENUITEM_SIGNAL_EVENT</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_REALIZED">DBUSMENU_MENUITEM_SIGNAL_REALIZED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID">DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW">DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS" title="DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER">DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TYPE:CAPS" title="DBUSMENU_MENUITEM_PROP_TYPE">DBUSMENU_MENUITEM_PROP_TYPE</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS" title="DBUSMENU_MENUITEM_PROP_VISIBLE">DBUSMENU_MENUITEM_PROP_VISIBLE</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ENABLED:CAPS" title="DBUSMENU_MENUITEM_PROP_ENABLED">DBUSMENU_MENUITEM_PROP_ENABLED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-LABEL:CAPS" title="DBUSMENU_MENUITEM_PROP_LABEL">DBUSMENU_MENUITEM_PROP_LABEL</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS" title="DBUSMENU_MENUITEM_PROP_ICON_NAME">DBUSMENU_MENUITEM_PROP_ICON_NAME</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS" title="DBUSMENU_MENUITEM_PROP_ICON_DATA">DBUSMENU_MENUITEM_PROP_ICON_DATA</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS" title="DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE">DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS" title="DBUSMENU_MENUITEM_PROP_TOGGLE_STATE">DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS" title="DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY">DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS" title="DBUSMENU_MENUITEM_PROP_SHORTCUT">DBUSMENU_MENUITEM_PROP_SHORTCUT</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_CHECK">DBUSMENU_MENUITEM_TOGGLE_CHECK</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_RADIO">DBUSMENU_MENUITEM_TOGGLE_RADIO</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED">DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED">DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN">DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS" title="DBUSMENU_MENUITEM_ICON_NAME_BLANK">DBUSMENU_MENUITEM_ICON_NAME_BLANK</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS" title="DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU">DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS" title="DBUSMENU_MENUITEM_SHORTCUT_ALT">DBUSMENU_MENUITEM_SHORTCUT_ALT</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS" title="DBUSMENU_MENUITEM_SHORTCUT_CONTROL">DBUSMENU_MENUITEM_SHORTCUT_CONTROL</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS" title="DBUSMENU_MENUITEM_SHORTCUT_SHIFT">DBUSMENU_MENUITEM_SHORTCUT_SHIFT</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS" title="DBUSMENU_MENUITEM_SHORTCUT_SUPER">DBUSMENU_MENUITEM_SHORTCUT_SUPER</a>
+struct <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem">DbusmenuMenuitem</a>;
+<span class="returnvalue">void</span> (<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-about-to-show-cb" title="dbusmenu_menuitem_about_to_show_cb ()">*dbusmenu_menuitem_about_to_show_cb</a>)
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * (<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-buildvariant-slot-t" title="dbusmenu_menuitem_buildvariant_slot_t ()">*dbusmenu_menuitem_buildvariant_slot_t</a>)
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **properties</code></em>);
+struct <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitemClass" title="struct DbusmenuMenuitemClass">DbusmenuMenuitemClass</a>;
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-new" title="dbusmenu_menuitem_new ()">dbusmenu_menuitem_new</a> (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-new-with-id" title="dbusmenu_menuitem_new_with_id ()">dbusmenu_menuitem_new_with_id</a> (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> id</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-id" title="dbusmenu_menuitem_get_id ()">dbusmenu_menuitem_get_id</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-children" title="dbusmenu_menuitem_get_children ()">dbusmenu_menuitem_get_children</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-take-children" title="dbusmenu_menuitem_take_children ()">dbusmenu_menuitem_take_children</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position" title="dbusmenu_menuitem_get_position ()">dbusmenu_menuitem_get_position</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *parent</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position-realized" title="dbusmenu_menuitem_get_position_realized ()">dbusmenu_menuitem_get_position_realized</a>
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *parent</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-append" title="dbusmenu_menuitem_child_append ()">dbusmenu_menuitem_child_append</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *child</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-prepend" title="dbusmenu_menuitem_child_prepend ()">dbusmenu_menuitem_child_prepend</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *child</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-delete" title="dbusmenu_menuitem_child_delete ()">dbusmenu_menuitem_child_delete</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *child</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-add-position" title="dbusmenu_menuitem_child_add_position ()">dbusmenu_menuitem_child_add_position</a>
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *child</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> position</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-reorder" title="dbusmenu_menuitem_child_reorder ()">dbusmenu_menuitem_child_reorder</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *child</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> position</code></em>);
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-find" title="dbusmenu_menuitem_child_find ()">dbusmenu_menuitem_child_find</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> id</code></em>);
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-find-id" title="dbusmenu_menuitem_find_id ()">dbusmenu_menuitem_find_id</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> id</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set" title="dbusmenu_menuitem_property_set ()">dbusmenu_menuitem_property_set</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *value</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-bool" title="dbusmenu_menuitem_property_set_bool ()">dbusmenu_menuitem_property_set_bool</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> value</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-int" title="dbusmenu_menuitem_property_set_int ()">dbusmenu_menuitem_property_set_int</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> value</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-variant" title="dbusmenu_menuitem_property_set_variant ()">dbusmenu_menuitem_property_set_variant</a>
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *value</code></em>);
+const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get" title="dbusmenu_menuitem_property_get ()">dbusmenu_menuitem_property_get</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-bool" title="dbusmenu_menuitem_property_get_bool ()">dbusmenu_menuitem_property_get_bool</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-int" title="dbusmenu_menuitem_property_get_int ()">dbusmenu_menuitem_property_get_int</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-variant" title="dbusmenu_menuitem_property_get_variant ()">dbusmenu_menuitem_property_get_variant</a>
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-exist" title="dbusmenu_menuitem_property_exist ()">dbusmenu_menuitem_property_exist</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-properties-list" title="dbusmenu_menuitem_properties_list ()">dbusmenu_menuitem_properties_list</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="returnvalue">GHashTable</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-properties-copy" title="dbusmenu_menuitem_properties_copy ()">dbusmenu_menuitem_properties_copy</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-remove" title="dbusmenu_menuitem_property_remove ()">dbusmenu_menuitem_property_remove</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-set-root" title="dbusmenu_menuitem_set_root ()">dbusmenu_menuitem_set_root</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> root</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-root" title="dbusmenu_menuitem_get_root ()">dbusmenu_menuitem_get_root</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-foreach" title="dbusmenu_menuitem_foreach ()">dbusmenu_menuitem_foreach</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><span class="type">void</span> (*func) (DbusmenuMenuitem * mi, gpointer data)</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-handle-event" title="dbusmenu_menuitem_handle_event ()">dbusmenu_menuitem_handle_event</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *variant</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> timestamp</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-send-about-to-show" title="dbusmenu_menuitem_send_about_to_show ()">dbusmenu_menuitem_send_about_to_show</a>
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><span class="type">void</span> (*cb) (DbusmenuMenuitem * mi, gpointer user_data)</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> cb_data</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-show-to-user" title="dbusmenu_menuitem_show_to_user ()">dbusmenu_menuitem_show_to_user</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> timestamp</code></em>);
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-parent" title="dbusmenu_menuitem_get_parent ()">dbusmenu_menuitem_get_parent</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-set-parent" title="dbusmenu_menuitem_set_parent ()">dbusmenu_menuitem_set_parent</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *parent</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-unparent" title="dbusmenu_menuitem_unparent ()">dbusmenu_menuitem_unparent</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuMenuitem.description"></a><h2>Description</h2>
+<p>
+A <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> is the lowest level of represenation of a
+single item in a menu. It gets created on the server side
+and copied over to the client side where it gets rendered. As
+the server starts to change it, and grow it, and do all kinds
+of fun stuff that information is transfered over DBus and the
+client updates it's understanding of the object model.
+</p>
+<p>
+Most people using either the client or the server should be
+able to deal mostly with <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> objects. These
+are simple, but then they can be attached to more complex
+objects and handled appropriately.
+</p>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuMenuitem.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS"></a><h3>DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED "property-changed"
+</pre>
+<p>
+String to attach to signal <span class="type">"property-changed"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS"></a><h3>DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED "item-activated"
+</pre>
+<p>
+String to attach to signal <span class="type">"item-activated"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS"></a><h3>DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED "child-added"
+</pre>
+<p>
+String to attach to signal <span class="type">"child-added"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS"></a><h3>DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED "child-removed"
+</pre>
+<p>
+String to attach to signal <span class="type">"child-removed"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS"></a><h3>DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED "child-moved"
+</pre>
+<p>
+String to attach to signal <span class="type">"child-moved"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS"></a><h3>DBUSMENU_MENUITEM_SIGNAL_EVENT</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SIGNAL_EVENT "event"
+</pre>
+<p>
+String to attach to signal <span class="type">"event"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS"></a><h3>DBUSMENU_MENUITEM_SIGNAL_REALIZED</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SIGNAL_REALIZED "realized"
+</pre>
+<p>
+String to attach to signal <span class="type">"realized"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS"></a><h3>DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID (g_signal_lookup(DBUSMENU_MENUITEM_SIGNAL_REALIZED, DBUSMENU_TYPE_MENUITEM))
+</pre>
+<p>
+ID to attach to signal <span class="type">"realized"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS"></a><h3>DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW "about-to-show"
+</pre>
+<p>
+String to attach to signal <span class="type">"about-to-show"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS"></a><h3>DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER "show-to-user"
+</pre>
+<p>
+String to attach to signal <span class="type">"show-to-user"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-PROP-TYPE:CAPS"></a><h3>DBUSMENU_MENUITEM_PROP_TYPE</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_PROP_TYPE "type"
+</pre>
+<p>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property used to represent what type of menuitem
+this object represents. Type: <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariantType.html#G-VARIANT-TYPE-STRING:CAPS"><span class="type">G_VARIANT_TYPE_STRING</span></a>.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS"></a><h3>DBUSMENU_MENUITEM_PROP_VISIBLE</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_PROP_VISIBLE "visible"
+</pre>
+<p>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property used to represent whether the menuitem
+should be shown or not. Type: <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariantType.html#G-VARIANT-TYPE-BOOLEAN:CAPS"><span class="type">G_VARIANT_TYPE_BOOLEAN</span></a>.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-PROP-ENABLED:CAPS"></a><h3>DBUSMENU_MENUITEM_PROP_ENABLED</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_PROP_ENABLED "enabled"
+</pre>
+<p>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property used to represent whether the menuitem
+is clickable or not. Type: <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariantType.html#G-VARIANT-TYPE-BOOLEAN:CAPS"><span class="type">G_VARIANT_TYPE_BOOLEAN</span></a>.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-PROP-LABEL:CAPS"></a><h3>DBUSMENU_MENUITEM_PROP_LABEL</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_PROP_LABEL "label"
+</pre>
+<p>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property used for the text on the menu item.
+Type: <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariantType.html#G-VARIANT-TYPE-STRING:CAPS"><span class="type">G_VARIANT_TYPE_STRING</span></a>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS"></a><h3>DBUSMENU_MENUITEM_PROP_ICON_NAME</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_PROP_ICON_NAME "icon-name"
+</pre>
+<p>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property that is the name of the icon under the
+Freedesktop.org icon naming spec. Type: <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariantType.html#G-VARIANT-TYPE-STRING:CAPS"><span class="type">G_VARIANT_TYPE_STRING</span></a>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS"></a><h3>DBUSMENU_MENUITEM_PROP_ICON_DATA</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_PROP_ICON_DATA "icon-data"
+</pre>
+<p>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property that is the raw data of a custom icon
+used in the application. Type: <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariantType.html#G-VARIANT-TYPE-VARIANT:CAPS"><span class="type">G_VARIANT_TYPE_VARIANT</span></a>
+</p>
+<p>
+It is recommended that this is not set directly but instead the
+libdbusmenu-gtk library is used with the function <a href="/usr/share/gtk-doc/html/libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-image"><code class="function">dbusmenu_menuitem_property_set_image()</code></a>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS"></a><h3>DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE "toggle-type"
+</pre>
+<p>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property that says what type of toggle entry should
+be shown in the menu. Should be either <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_CHECK"><span class="type">DBUSMENU_MENUITEM_TOGGLE_CHECK</span></a>
+or <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_RADIO"><span class="type">DBUSMENU_MENUITEM_TOGGLE_RADIO</span></a>. Type: <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariantType.html#G-VARIANT-TYPE-STRING:CAPS"><span class="type">G_VARIANT_TYPE_STRING</span></a>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS"></a><h3>DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_PROP_TOGGLE_STATE "toggle-state"
+</pre>
+<p>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property that says what state a toggle entry should
+be shown as the menu. Should be either <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED"><span class="type">DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED</span></a>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS" title="DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED"><span class="type">DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED</span></a> or <span class="type">DBUSMENU_MENUITEM_TOGGLE_STATUE_UNKNOWN</span>.
+Type: <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariantType.html#G-VARIANT-TYPE-INT32:CAPS"><span class="type">G_VARIANT_TYPE_INT32</span></a>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS"></a><h3>DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY "children-display"
+</pre>
+<p>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property that tells how the children of this menuitem
+should be displayed. Most likely this will be unset or of the value
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS" title="DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU"><span class="type">DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU</span></a>. Type: <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariantType.html#G-VARIANT-TYPE-STRING:CAPS"><span class="type">G_VARIANT_TYPE_STRING</span></a>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS"></a><h3>DBUSMENU_MENUITEM_PROP_SHORTCUT</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_PROP_SHORTCUT "shortcut"
+</pre>
+<p>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property that is the entries that represent a shortcut
+to activate the menuitem. It is an array of arrays of strings.
+Type: <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariantType.html#G-VARIANT-TYPE-ARRAY:CAPS"><span class="type">G_VARIANT_TYPE_ARRAY</span></a>
+</p>
+<p>
+It is recommended that this is not set directly but instead the
+libdbusmenu-gtk library is used with the function <a href="/usr/share/gtk-doc/html/libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut"><code class="function">dbusmenu_menuitem_property_set_shortcut()</code></a>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS"></a><h3>DBUSMENU_MENUITEM_TOGGLE_CHECK</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_TOGGLE_CHECK "checkmark"
+</pre>
+<p>
+Used to set <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS" title="DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE"><span class="type">DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</span></a> to be a standard
+check mark item.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS"></a><h3>DBUSMENU_MENUITEM_TOGGLE_RADIO</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_TOGGLE_RADIO "radio"
+</pre>
+<p>
+Used to set <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS" title="DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE"><span class="type">DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</span></a> to be a standard
+radio item.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS"></a><h3>DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED 0
+</pre>
+<p>
+Used to set <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS" title="DBUSMENU_MENUITEM_PROP_TOGGLE_STATE"><span class="type">DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</span></a> so that the menu's
+toggle item is empty.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS"></a><h3>DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED 1
+</pre>
+<p>
+Used to set <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS" title="DBUSMENU_MENUITEM_PROP_TOGGLE_STATE"><span class="type">DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</span></a> so that the menu's
+toggle item is filled.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS"></a><h3>DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN -1
+</pre>
+<p>
+Used to set <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS" title="DBUSMENU_MENUITEM_PROP_TOGGLE_STATE"><span class="type">DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</span></a> so that the menu's
+toggle item is undecided.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS"></a><h3>DBUSMENU_MENUITEM_ICON_NAME_BLANK</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_ICON_NAME_BLANK "blank-icon"
+</pre>
+<p>
+Used to set <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS" title="DBUSMENU_MENUITEM_PROP_TOGGLE_STATE"><span class="type">DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</span></a> so that the menu's
+toggle item is undecided.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS"></a><h3>DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU "submenu"
+</pre>
+<p>
+Used in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS" title="DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY"><span class="type">DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY</span></a> to have the
+subitems displayed as a submenu.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS"></a><h3>DBUSMENU_MENUITEM_SHORTCUT_ALT</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SHORTCUT_ALT "Alt"
+</pre>
+<p>
+Used in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS" title="DBUSMENU_MENUITEM_PROP_SHORTCUT"><span class="type">DBUSMENU_MENUITEM_PROP_SHORTCUT</span></a> to represent the
+alternate key.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS"></a><h3>DBUSMENU_MENUITEM_SHORTCUT_CONTROL</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SHORTCUT_CONTROL "Control"
+</pre>
+<p>
+Used in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS" title="DBUSMENU_MENUITEM_PROP_SHORTCUT"><span class="type">DBUSMENU_MENUITEM_PROP_SHORTCUT</span></a> to represent the
+control key.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS"></a><h3>DBUSMENU_MENUITEM_SHORTCUT_SHIFT</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SHORTCUT_SHIFT "Shift"
+</pre>
+<p>
+Used in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS" title="DBUSMENU_MENUITEM_PROP_SHORTCUT"><span class="type">DBUSMENU_MENUITEM_PROP_SHORTCUT</span></a> to represent the
+shift key.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS"></a><h3>DBUSMENU_MENUITEM_SHORTCUT_SUPER</h3>
+<pre class="programlisting">#define DBUSMENU_MENUITEM_SHORTCUT_SUPER "Super"
+</pre>
+<p>
+Used in <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS" title="DBUSMENU_MENUITEM_PROP_SHORTCUT"><span class="type">DBUSMENU_MENUITEM_PROP_SHORTCUT</span></a> to represent the
+super key.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuMenuitem"></a><h3>struct DbusmenuMenuitem</h3>
+<pre class="programlisting">struct DbusmenuMenuitem {
+ GObject parent;
+
+ /*&lt; Private &gt;*/
+ DbusmenuMenuitemPrivate * priv;
+};
+</pre>
+<p>
+This is the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> based object that represents a menu
+item. It gets created the same on both the client and
+the server side and libdbusmenu-glib does the work of making
+this object model appear on both sides of DBus. Simple
+really, though through updates and people coming on and off
+the bus it can lead to lots of fun complex scenarios.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> <em class="structfield"><code><a name="DbusmenuMenuitem.parent"></a>parent</code></em>;</span></p></td>
+<td>Parent object</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="type">DbusmenuMenuitemPrivate</span> *<em class="structfield"><code><a name="DbusmenuMenuitem.priv"></a>priv</code></em>;</span></p></td>
+<td>Private data</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-about-to-show-cb"></a><h3>dbusmenu_menuitem_about_to_show_cb ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> (*dbusmenu_menuitem_about_to_show_cb)
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+<p>
+Callback prototype for a callback that is called when the
+menu should be shown.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>Menu item that should be shown</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>Extra user data sent with the function. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-buildvariant-slot-t"></a><h3>dbusmenu_menuitem_buildvariant_slot_t ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * (*dbusmenu_menuitem_buildvariant_slot_t)
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **properties</code></em>);</pre>
+<p>
+This is the function that is called to represent this menu item
+as a variant. Should call it's own children.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>Menu item that should be built from. <span class="annotation">[<acronym title="Parameter for input. Default is transfer none."><span class="acronym">in</span></acronym>]</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>properties</code></em> :</span></p></td>
+<td>A list of properties that should be the only ones in the resulting variant structure. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A variant representing this item and it's children. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuMenuitemClass"></a><h3>struct DbusmenuMenuitemClass</h3>
+<pre class="programlisting">struct DbusmenuMenuitemClass {
+ GObjectClass parent_class;
+
+ /* Signals */
+ void (*property_changed) (gchar * property, GVariant * value);
+ void (*item_activated) (guint timestamp);
+ void (*child_added) (DbusmenuMenuitem * child, guint position);
+ void (*child_removed) (DbusmenuMenuitem * child);
+ void (*child_moved) (DbusmenuMenuitem * child, guint newpos, guint oldpos);
+ void (*realized) (void);
+
+ /* Virtual functions */
+ dbusmenu_menuitem_buildvariant_slot_t buildvariant;
+ void (*handle_event) (DbusmenuMenuitem * mi, const gchar * name, GVariant * variant, guint timestamp);
+ void (*send_about_to_show) (DbusmenuMenuitem * mi, void (*cb) (DbusmenuMenuitem * mi, gpointer user_data), gpointer cb_data);
+
+ void (*show_to_user) (DbusmenuMenuitem * mi, guint timestamp, gpointer cb_data);
+ gboolean (*about_to_show) (void);
+
+ void (*event) (const gchar * name, GVariant * value, guint timestamp);
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+};
+</pre>
+<p>
+Functions and signals that every menuitem should know something
+about.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObjectClass"><span class="type">GObjectClass</span></a> <em class="structfield"><code><a name="DbusmenuMenuitemClass.parent-class"></a>parent_class</code></em>;</span></p></td>
+<td>Functions and signals from our parent</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.property-changed"></a>property_changed</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"property-changed"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.item-activated"></a>item_activated</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"item-activated"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.child-added"></a>child_added</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"child-added"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.child-removed"></a>child_removed</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"child-removed"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.child-moved"></a>child_moved</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"child-moved"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.realized"></a>realized</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"realized"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-buildvariant-slot-t" title="dbusmenu_menuitem_buildvariant_slot_t ()"><span class="type">dbusmenu_menuitem_buildvariant_slot_t</span></a> <em class="structfield"><code><a name="DbusmenuMenuitemClass.buildvariant"></a>buildvariant</code></em>;</span></p></td>
+<td>Virtual function that appends the strings required to represent this menu item in the menu variant.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.handle-event"></a>handle_event</code></em> ()</span></p></td>
+<td>This function is to override how events are handled by subclasses. Look at <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-handle-event" title="dbusmenu_menuitem_handle_event ()"><span class="type">dbusmenu_menuitem_handle_event</span></a> for lots of good information.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.show-to-user"></a>show_to_user</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"show-to-user"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.about-to-show"></a>about_to_show</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"about-to-show"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.event"></a>event</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"event"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.reserved1"></a>reserved1</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.reserved2"></a>reserved2</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.reserved3"></a>reserved3</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.reserved4"></a>reserved4</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemClass.reserved5"></a>reserved5</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-new"></a><h3>dbusmenu_menuitem_new ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * dbusmenu_menuitem_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Create a new <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> with all default values.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A newly allocated <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-new-with-id"></a><h3>dbusmenu_menuitem_new_with_id ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * dbusmenu_menuitem_new_with_id (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> id</code></em>);</pre>
+<p>
+This creates a blank <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> with a specific ID.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>id</code></em> :</span></p></td>
+<td>ID to use for this menuitem</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A newly allocated <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-get-id"></a><h3>dbusmenu_menuitem_get_id ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> dbusmenu_menuitem_get_id (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);</pre>
+<p>
+Gets the unique ID for <em class="parameter"><code>mi</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to query.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The ID of the <em class="parameter"><code>mi</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-get-children"></a><h3>dbusmenu_menuitem_get_children ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * dbusmenu_menuitem_get_children (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);</pre>
+<p>
+Returns simply the list of children that this menu item
+has. The list is valid until another child related function
+is called, where it might be changed.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to query.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of pointers to <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> objects. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-take-children"></a><h3>dbusmenu_menuitem_take_children ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * dbusmenu_menuitem_take_children (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);</pre>
+<p>
+While the name sounds devious that's exactly what this function
+does. It takes the list of children from the <em class="parameter"><code>mi</code></em> and clears the
+internal list. The calling function is now in charge of the ref's
+on the children it has taken. A lot of responsibility involved
+in taking children.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <span class="type">DbusmenMenuitem</span> to take the children from.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of pointers to <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> objects. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> Dbusmenu.Menuitem]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-get-position"></a><h3>dbusmenu_menuitem_get_position ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> dbusmenu_menuitem_get_position (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *parent</code></em>);</pre>
+<p>
+This function returns the position of the menu item <em class="parameter"><code>mi</code></em>
+in the children of <em class="parameter"><code>parent</code></em>. It will return zero if the
+menu item can't be found.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to find the position of</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parent</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> who's children contain <em class="parameter"><code>mi</code></em>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The position of <em class="parameter"><code>mi</code></em> in the children of <em class="parameter"><code>parent</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-get-position-realized"></a><h3>dbusmenu_menuitem_get_position_realized ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> dbusmenu_menuitem_get_position_realized
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *parent</code></em>);</pre>
+<p>
+This function is very similar to <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position" title="dbusmenu_menuitem_get_position ()"><span class="type">dbusmenu_menuitem_get_position</span></a>
+except that it only counts in the children that have been realized.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to find the position of</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parent</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> who's children contain <em class="parameter"><code>mi</code></em>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The position of <em class="parameter"><code>mi</code></em> in the realized children of <em class="parameter"><code>parent</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-child-append"></a><h3>dbusmenu_menuitem_child_append ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_child_append (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *child</code></em>);</pre>
+<p>
+This function adds <em class="parameter"><code>child</code></em> to the list of children on <em class="parameter"><code>mi</code></em> at
+the end of that list.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> which will become a new parent</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>child</code></em> :</span></p></td>
+<td>The <span class="type">DbusmenMenuitem</span> that will be a child</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether the child has been added successfully.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-child-prepend"></a><h3>dbusmenu_menuitem_child_prepend ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_child_prepend (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *child</code></em>);</pre>
+<p>
+This function adds <em class="parameter"><code>child</code></em> to the list of children on <em class="parameter"><code>mi</code></em> at
+the beginning of that list.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> which will become a new parent</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>child</code></em> :</span></p></td>
+<td>The <span class="type">DbusmenMenuitem</span> that will be a child</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether the child has been added successfully.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-child-delete"></a><h3>dbusmenu_menuitem_child_delete ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_child_delete (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *child</code></em>);</pre>
+<p>
+This function removes <em class="parameter"><code>child</code></em> from the children list of <em class="parameter"><code>mi</code></em>. It does
+not call <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><span class="type">g_object_unref</span></a> on <em class="parameter"><code>child</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> which has <em class="parameter"><code>child</code></em> as a child</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>child</code></em> :</span></p></td>
+<td>The child <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> that you want to no longer
+be a child of <em class="parameter"><code>mi</code></em>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>If we were able to delete <em class="parameter"><code>child</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-child-add-position"></a><h3>dbusmenu_menuitem_child_add_position ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_child_add_position
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *child</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> position</code></em>);</pre>
+<p>
+Puts <em class="parameter"><code>child</code></em> in the list of children for <em class="parameter"><code>mi</code></em> at the location
+specified in <em class="parameter"><code>position</code></em>. If there is not enough entires available
+then <em class="parameter"><code>child</code></em> will be placed at the end of the list.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> that we're adding the child <em class="parameter"><code>child</code></em> to.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>child</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to make a child of <em class="parameter"><code>mi</code></em>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>position</code></em> :</span></p></td>
+<td>Where in <em class="parameter"><code>mi</code></em> object's list of chidren <em class="parameter"><code>child</code></em> should be placed.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether <em class="parameter"><code>child</code></em> was added successfully.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-child-reorder"></a><h3>dbusmenu_menuitem_child_reorder ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_child_reorder (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *child</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> position</code></em>);</pre>
+<p>
+This function moves a child on the list of children. It is
+for a child that is already in the list, but simply needs a
+new location.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> that has children needing realignment</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>child</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> that is a child needing to be moved</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>position</code></em> :</span></p></td>
+<td>The position in the list to place it in</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether the move was successful.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-child-find"></a><h3>dbusmenu_menuitem_child_find ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * dbusmenu_menuitem_child_find (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> id</code></em>);</pre>
+<p>
+Search the children of <em class="parameter"><code>mi</code></em> to find one with the ID of <em class="parameter"><code>id</code></em>.
+If it doesn't exist then we return <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> who's children to look on</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>id</code></em> :</span></p></td>
+<td>The ID of the child that we're looking for.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The menu item with the ID <em class="parameter"><code>id</code></em> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if it
+can't be found. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-find-id"></a><h3>dbusmenu_menuitem_find_id ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * dbusmenu_menuitem_find_id (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> id</code></em>);</pre>
+<p>
+This function searchs the whole tree of children that
+are attached to <em class="parameter"><code>mi</code></em>. This could be quite a few nodes, all
+the way down the tree. It is a depth first search.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> at the top of the tree to search</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>id</code></em> :</span></p></td>
+<td>ID of the <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to search for</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> with the ID of <em class="parameter"><code>id</code></em>
+or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if there isn't such a menu item in the tree
+represented by <em class="parameter"><code>mi</code></em>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-set"></a><h3>dbusmenu_menuitem_property_set ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_property_set (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *value</code></em>);</pre>
+<p>
+Takes the pair of <em class="parameter"><code>property</code></em> and <em class="parameter"><code>value</code></em> and places them as a
+property on <em class="parameter"><code>mi</code></em>. If a property already exists by that name,
+then the value is set to the new value. If not, the property
+is added. If the value is changed or the property was previously
+unset then the signal <span class="type">"prop-changed"</span> will be
+emitted by this function.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to set the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>Name of the property to set.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>The value of the property.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A boolean representing if the property value was set.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-set-bool"></a><h3>dbusmenu_menuitem_property_set_bool ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_property_set_bool (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> value</code></em>);</pre>
+<p>
+Takes a boolean <em class="parameter"><code>value</code></em> and sets it on <em class="parameter"><code>property</code></em> as a
+property on <em class="parameter"><code>mi</code></em>. If a property already exists by that name,
+then the value is set to the new value. If not, the property
+is added. If the value is changed or the property was previously
+unset then the signal <span class="type">"prop-changed"</span> will be
+emitted by this function.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to set the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>Name of the property to set.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>The value of the property.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A boolean representing if the property value was set.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-set-int"></a><h3>dbusmenu_menuitem_property_set_int ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_property_set_int (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> value</code></em>);</pre>
+<p>
+Takes a boolean <em class="parameter"><code>value</code></em> and sets it on <em class="parameter"><code>property</code></em> as a
+property on <em class="parameter"><code>mi</code></em>. If a property already exists by that name,
+then the value is set to the new value. If not, the property
+is added. If the value is changed or the property was previously
+unset then the signal <span class="type">"prop-changed"</span> will be
+emitted by this function.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to set the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>Name of the property to set.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>The value of the property.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A boolean representing if the property value was set.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-set-variant"></a><h3>dbusmenu_menuitem_property_set_variant ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_property_set_variant
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *value</code></em>);</pre>
+<p>
+Takes the pair of <em class="parameter"><code>property</code></em> and <em class="parameter"><code>value</code></em> and places them as a
+property on <em class="parameter"><code>mi</code></em>. If a property already exists by that name,
+then the value is set to the new value. If not, the property
+is added. If the value is changed or the property was previously
+unset then the signal <span class="type">"prop-changed"</span> will be
+emitted by this function.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to set the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>Name of the property to set.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>The value of the property.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A boolean representing if the property value was set.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-get"></a><h3>dbusmenu_menuitem_property_get ()</h3>
+<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * dbusmenu_menuitem_property_get (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);</pre>
+<p>
+Look up a property on <em class="parameter"><code>mi</code></em> and return the value of it if
+it exits. <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> will be returned if the property doesn't
+exist.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to look for the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>The property to grab.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A string with the value of the property
+that shouldn't be free'd. Or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if the property
+is not set or is not a string. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-get-bool"></a><h3>dbusmenu_menuitem_property_get_bool ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_property_get_bool (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);</pre>
+<p>
+Look up a property on <em class="parameter"><code>mi</code></em> and return the value of it if
+it exits. Returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><span class="type">FALSE</span></a> if the property doesn't exist.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to look for the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>The property to grab.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The value of the property or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><span class="type">FALSE</span></a>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-get-int"></a><h3>dbusmenu_menuitem_property_get_int ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> dbusmenu_menuitem_property_get_int (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);</pre>
+<p>
+Look up a property on <em class="parameter"><code>mi</code></em> and return the value of it if
+it exits. Returns zero if the property doesn't exist.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to look for the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>The property to grab.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The value of the property or zero.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-get-variant"></a><h3>dbusmenu_menuitem_property_get_variant ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * dbusmenu_menuitem_property_get_variant
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);</pre>
+<p>
+Look up a property on <em class="parameter"><code>mi</code></em> and return the value of it if
+it exits. <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> will be returned if the property doesn't
+exist.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to look for the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>The property to grab.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A GVariant for the property. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-exist"></a><h3>dbusmenu_menuitem_property_exist ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_property_exist (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);</pre>
+<p>
+Checkes to see if a particular property exists on <em class="parameter"><code>mi</code></em> and
+returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if so.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to look for the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>The property to look for.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A boolean checking to see if the property is available</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-properties-list"></a><h3>dbusmenu_menuitem_properties_list ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> * dbusmenu_menuitem_properties_list (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);</pre>
+<p>
+This functiong gets a list of the names of all the properties
+that are set on this menu item. This data on the list is owned
+by the menuitem but the list is not and should be freed using
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Doubly-Linked-Lists.html#g-list-free"><code class="function">g_list_free()</code></a> when the calling function is done with it.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to list the properties on</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A list of strings or NULL if there are
+none. <span class="annotation">[<acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-properties-copy"></a><h3>dbusmenu_menuitem_properties_copy ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="returnvalue">GHashTable</span></a> * dbusmenu_menuitem_properties_copy (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);</pre>
+<p>
+This function takes the properties of a <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>
+and puts them into a <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> that is referenced by the
+key of a string and has the value of a string. The hash
+table may not have any entries if there aren't any or there
+is an error in processing. It is the caller's responsibility
+to destroy the created <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> that we're interested in the properties of</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A brand new <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> that contains all of
+theroperties that are on this <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> <em class="parameter"><code>mi</code></em>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-remove"></a><h3>dbusmenu_menuitem_property_remove ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_menuitem_property_remove (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);</pre>
+<p>
+Removes a property from the menuitem.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to remove the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>The property to look for.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-set-root"></a><h3>dbusmenu_menuitem_set_root ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_menuitem_set_root (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> root</code></em>);</pre>
+<p>
+This function sets the internal value of whether this is a
+root node or not.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to set whether it's root</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>root</code></em> :</span></p></td>
+<td>Whether <em class="parameter"><code>mi</code></em> is a root node or not</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-get-root"></a><h3>dbusmenu_menuitem_get_root ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_get_root (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);</pre>
+<p>
+This function returns the internal value of whether this is a
+root node or not.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to see whether it's root</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a> if this is a root node</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-foreach"></a><h3>dbusmenu_menuitem_foreach ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_menuitem_foreach (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><span class="type">void</span> (*func) (DbusmenuMenuitem * mi, gpointer data)</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
+<p>
+This calls the function <em class="parameter"><code>func</code></em> on this menu item and all
+of the children of this item. And their children. And
+their children. And... you get the point. It will get
+called on the whole tree.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <span class="type">DbusmenItem</span> to start from</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td>
+<td>Function to call on every node in the tree</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
+<td>User data to pass to the function. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-handle-event"></a><h3>dbusmenu_menuitem_handle_event ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_menuitem_handle_event (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *variant</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> timestamp</code></em>);</pre>
+<p>
+This function is called to create an event. It is likely
+to be overrided by subclasses. The default menu item
+will respond to the activate signal and do:
+</p>
+<p>
+Emits the <span class="type">"item-activate"</span> signal on this
+menu item. Called by server objects when they get the
+appropriate DBus signals from the client.
+</p>
+<p>
+If you subclass this function you should really think
+about calling the parent function unless you have a good
+reason not to.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to send the signal on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
+<td>The name of the signal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>variant</code></em> :</span></p></td>
+<td>A value that could be set for the event</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>timestamp</code></em> :</span></p></td>
+<td>The timestamp of when the event happened</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-send-about-to-show"></a><h3>dbusmenu_menuitem_send_about_to_show ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_menuitem_send_about_to_show
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><span class="type">void</span> (*cb) (DbusmenuMenuitem * mi, gpointer user_data)</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> cb_data</code></em>);</pre>
+<p>
+This function is used to send the even that the submenu
+of this item is about to be shown. Callers to this event
+should delay showing the menu until their callback is
+called if possible.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to send the signal on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>cb</code></em> :</span></p></td>
+<td>Callback to call when the call has returned.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>cb_data</code></em> :</span></p></td>
+<td>Data to pass to the callback. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-show-to-user"></a><h3>dbusmenu_menuitem_show_to_user ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_menuitem_show_to_user (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> timestamp</code></em>);</pre>
+<p>
+Signals that this menu item should be shown to the user. If this is
+server side the server will then take it and send it over the
+bus.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to show</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>timestamp</code></em> :</span></p></td>
+<td>The time that the user requested it to be shown</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-get-parent"></a><h3>dbusmenu_menuitem_get_parent ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * dbusmenu_menuitem_get_parent (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);</pre>
+<p>
+This function looks up the parent of <em class="parameter"><code>mi</code></em>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> for which to inspect the parent</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The parent of this menu item. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-set-parent"></a><h3>dbusmenu_menuitem_set_parent ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_set_parent (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *parent</code></em>);</pre>
+<p>
+Sets the parent of <em class="parameter"><code>mi</code></em> to <em class="parameter"><code>parent</code></em>. If <em class="parameter"><code>mi</code></em> already
+has a parent, then this call will fail. The parent will
+be set automatically when using the usual methods to add a
+child menuitem, so this function should not normally be
+called directly
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> for which to set the parent</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parent</code></em> :</span></p></td>
+<td>The new parent <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether the parent was set successfully</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-unparent"></a><h3>dbusmenu_menuitem_unparent ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_unparent (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);</pre>
+<p>
+Unparents the menu item <em class="parameter"><code>mi</code></em>. If <em class="parameter"><code>mi</code></em> doesn't have a
+parent, then this call will fail. The menuitem will
+be unparented automatically when using the usual methods
+to delete a child menuitem, so this function should not
+normally be called directly
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to unparent</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether the menu item was unparented successfully</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuMenuitemProxy.html b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuMenuitemProxy.html
new file mode 100644
index 0000000..78edabc
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuMenuitemProxy.html
@@ -0,0 +1,166 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>DbusmenuMenuitemProxy</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="up" href="ch01.html" title="API">
+<link rel="prev" href="libdbusmenu-glib-DbusmenuServer.html" title="DbusmenuServer">
+<link rel="next" href="libdbusmenu-glib-DbusmenuMenuitem.html" title="DbusmenuMenuitem">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libdbusmenu-glib-DbusmenuServer.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-glib Reference Manual</th>
+<td><a accesskey="n" href="libdbusmenu-glib-DbusmenuMenuitem.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libdbusmenu-glib-DbusmenuMenuitemProxy.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#libdbusmenu-glib-DbusmenuMenuitemProxy.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="libdbusmenu-glib-DbusmenuMenuitemProxy"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libdbusmenu-glib-DbusmenuMenuitemProxy.top_of_page"></a>DbusmenuMenuitemProxy</span></h2>
+<p>DbusmenuMenuitemProxy — A menuitem that proxies from another menuitem</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuMenuitemProxy.stability-level"></a><h2>Stability Level</h2>
+Unstable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<a name="libdbusmenu-glib-DbusmenuMenuitemProxy.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;libdbusmenu-glib/menuitem-proxy.h&gt;
+
+ <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</a>;
+struct <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxyClass" title="struct DbusmenuMenuitemProxyClass">DbusmenuMenuitemProxyClass</a>;
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy"><span class="returnvalue">DbusmenuMenuitemProxy</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#dbusmenu-menuitem-proxy-new" title="dbusmenu_menuitem_proxy_new ()">dbusmenu_menuitem_proxy_new</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#dbusmenu-menuitem-proxy-get-wrapped" title="dbusmenu_menuitem_proxy_get_wrapped ()">dbusmenu_menuitem_proxy_get_wrapped</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy"><span class="type">DbusmenuMenuitemProxy</span></a> *pmi</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuMenuitemProxy.description"></a><h2>Description</h2>
+<p>
+This small object allows for proxying all the properties from a remote
+menuitem to a new object that can be moved around appropriately within
+the new menu structure.
+</p>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuMenuitemProxy.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="DbusmenuMenuitemProxy"></a><h3>DbusmenuMenuitemProxy</h3>
+<pre class="programlisting">typedef struct _DbusmenuMenuitemProxy DbusmenuMenuitemProxy;</pre>
+<p>
+Public instance data for a <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy"><span class="type">DbusmenuMenuitemProxy</span></a>.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuMenuitemProxyClass"></a><h3>struct DbusmenuMenuitemProxyClass</h3>
+<pre class="programlisting">struct DbusmenuMenuitemProxyClass {
+ DbusmenuMenuitemClass parent_class;
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+};
+</pre>
+<p>
+Functions and signal slots for <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy"><span class="type">DbusmenuMenuitemProxy</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitemClass" title="struct DbusmenuMenuitemClass"><span class="type">DbusmenuMenuitemClass</span></a> <em class="structfield"><code><a name="DbusmenuMenuitemProxyClass.parent-class"></a>parent_class</code></em>;</span></p></td>
+<td>The Class of <span class="type">DbusmeneMenuitem</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemProxyClass.reserved1"></a>reserved1</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemProxyClass.reserved2"></a>reserved2</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemProxyClass.reserved3"></a>reserved3</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuMenuitemProxyClass.reserved4"></a>reserved4</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-proxy-new"></a><h3>dbusmenu_menuitem_proxy_new ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy"><span class="returnvalue">DbusmenuMenuitemProxy</span></a> * dbusmenu_menuitem_proxy_new (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *mi</code></em>);</pre>
+<p>
+Builds a new <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy"><span class="type">DbusmenuMenuitemProxy</span></a> object that proxies
+all of the values for <em class="parameter"><code>mi</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mi</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to proxy</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A new <a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy"><span class="type">DbusmenuMenuitemProxy</span></a> object.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-proxy-get-wrapped"></a><h3>dbusmenu_menuitem_proxy_get_wrapped ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * dbusmenu_menuitem_proxy_get_wrapped (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy"><span class="type">DbusmenuMenuitemProxy</span></a> *pmi</code></em>);</pre>
+<p>
+Accesses the private variable of which <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>
+we are doing the proxying for.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>pmi</code></em> :</span></p></td>
+<td>
+<a class="link" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy" title="DbusmenuMenuitemProxy"><span class="type">DbusmenuMenuitemProxy</span></a> to look into</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> object or a <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if we
+don't have one or there is an error. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuServer.html b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuServer.html
new file mode 100644
index 0000000..f60ba38
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-DbusmenuServer.html
@@ -0,0 +1,412 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>DbusmenuServer</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="up" href="ch01.html" title="API">
+<link rel="prev" href="ch01.html" title="API">
+<link rel="next" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html" title="DbusmenuMenuitemProxy">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="ch01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-glib Reference Manual</th>
+<td><a accesskey="n" href="libdbusmenu-glib-DbusmenuMenuitemProxy.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libdbusmenu-glib-DbusmenuServer.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#libdbusmenu-glib-DbusmenuServer.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="libdbusmenu-glib-DbusmenuServer"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libdbusmenu-glib-DbusmenuServer.top_of_page"></a>DbusmenuServer</span></h2>
+<p>DbusmenuServer — The server signals changed and
+ updates on a tree of <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> objecs.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuServer.stability-level"></a><h2>Stability Level</h2>
+Unstable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<a name="libdbusmenu-glib-DbusmenuServer.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;libdbusmenu-glib/server.h&gt;
+
+#define <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS" title="DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE">DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS" title="DBUSMENU_SERVER_SIGNAL_ID_UPDATE">DBUSMENU_SERVER_SIGNAL_ID_UPDATE</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS" title="DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED">DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS" title="DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE">DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS" title="DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION">DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS" title="DBUSMENU_SERVER_PROP_DBUS_OBJECT">DBUSMENU_SERVER_PROP_DBUS_OBJECT</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS" title="DBUSMENU_SERVER_PROP_ROOT_NODE">DBUSMENU_SERVER_PROP_ROOT_NODE</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-STATUS:CAPS" title="DBUSMENU_SERVER_PROP_STATUS">DBUSMENU_SERVER_PROP_STATUS</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS" title="DBUSMENU_SERVER_PROP_TEXT_DIRECTION">DBUSMENU_SERVER_PROP_TEXT_DIRECTION</a>
+#define <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-VERSION:CAPS" title="DBUSMENU_SERVER_PROP_VERSION">DBUSMENU_SERVER_PROP_VERSION</a>
+ <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer">DbusmenuServer</a>;
+struct <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServerClass" title="struct DbusmenuServerClass">DbusmenuServerClass</a>;
+<a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="returnvalue">DbusmenuServer</span></a> * <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-new" title="dbusmenu_server_new ()">dbusmenu_server_new</a> (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object</code></em>);
+<a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="returnvalue">DbusmenuStatus</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-get-status" title="dbusmenu_server_get_status ()">dbusmenu_server_get_status</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> *server</code></em>);
+<a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="returnvalue">DbusmenuTextDirection</span></a> <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-get-text-direction" title="dbusmenu_server_get_text_direction ()">dbusmenu_server_get_text_direction</a>
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> *server</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-root" title="dbusmenu_server_set_root ()">dbusmenu_server_set_root</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> *self</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *root</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-status" title="dbusmenu_server_set_status ()">dbusmenu_server_set_status</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> *server</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="type">DbusmenuStatus</span></a> status</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-text-direction" title="dbusmenu_server_set_text_direction ()">dbusmenu_server_set_text_direction</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> *server</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="type">DbusmenuTextDirection</span></a> dir</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuServer.description"></a><h2>Description</h2>
+<p>
+A <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> is the object that represents the local
+ tree of <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> objects on DBus. It watches the
+ various signals that those objects emit and correctly
+ represents them across DBus to a <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a> so that
+ the same tree can be maintained in another process.
+</p>
+<p>
+ The server needs to have the root set of <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>
+ objects set via <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-root" title="dbusmenu_server_set_root ()"><span class="type">dbusmenu_server_set_root</span></a> but it will query
+ all of the objects in that tree automatically. After setting
+ the root there should be no other maintence required by
+ users of the server class.
+</p>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-DbusmenuServer.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS"></a><h3>DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE</h3>
+<pre class="programlisting">#define DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE "item-property-updated"
+</pre>
+<p>
+String to attach to signal <span class="type">"item-property-updated"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS"></a><h3>DBUSMENU_SERVER_SIGNAL_ID_UPDATE</h3>
+<pre class="programlisting">#define DBUSMENU_SERVER_SIGNAL_ID_UPDATE "item-updated"
+</pre>
+<p>
+String to attach to signal <span class="type">"item-updated"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS"></a><h3>DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED</h3>
+<pre class="programlisting">#define DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED "layout-updated"
+</pre>
+<p>
+String to attach to signal <span class="type">"layout-updated"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS"></a><h3>DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE</h3>
+<pre class="programlisting">#define DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED
+</pre>
+<p>
+String to attach to signal <span class="type">"layout-updated"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS"></a><h3>DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION</h3>
+<pre class="programlisting">#define DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION "item-activation-requested"
+</pre>
+<p>
+String to attach to signal <span class="type">"item-activation-requested"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS"></a><h3>DBUSMENU_SERVER_PROP_DBUS_OBJECT</h3>
+<pre class="programlisting">#define DBUSMENU_SERVER_PROP_DBUS_OBJECT "dbus-object"
+</pre>
+<p>
+String to access property <span class="type">"dbus-object"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS"></a><h3>DBUSMENU_SERVER_PROP_ROOT_NODE</h3>
+<pre class="programlisting">#define DBUSMENU_SERVER_PROP_ROOT_NODE "root-node"
+</pre>
+<p>
+String to access property <span class="type">"root-node"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-SERVER-PROP-STATUS:CAPS"></a><h3>DBUSMENU_SERVER_PROP_STATUS</h3>
+<pre class="programlisting">#define DBUSMENU_SERVER_PROP_STATUS "status"
+</pre>
+<p>
+String to access property <span class="type">"status"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS"></a><h3>DBUSMENU_SERVER_PROP_TEXT_DIRECTION</h3>
+<pre class="programlisting">#define DBUSMENU_SERVER_PROP_TEXT_DIRECTION "text-direction"
+</pre>
+<p>
+String to access property <span class="type">"text-direction"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-SERVER-PROP-VERSION:CAPS"></a><h3>DBUSMENU_SERVER_PROP_VERSION</h3>
+<pre class="programlisting">#define DBUSMENU_SERVER_PROP_VERSION "version"
+</pre>
+<p>
+String to access property <span class="type">"version"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuServer"></a><h3>DbusmenuServer</h3>
+<pre class="programlisting">typedef struct _DbusmenuServer DbusmenuServer;</pre>
+<p>
+A server which represents a sharing of a set of
+ <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitems</span></a> across DBus to a <a class="link" href="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient" title="DbusmenuClient"><span class="type">DbusmenuClient</span></a>.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuServerClass"></a><h3>struct DbusmenuServerClass</h3>
+<pre class="programlisting">struct DbusmenuServerClass {
+ GObjectClass parent_class;
+
+ /* Signals */
+ void (*id_prop_update)(gint id, gchar * property, gchar * value);
+ void (*id_update)(gint id);
+ void (*layout_updated)(gint revision);
+ void (*item_activation)(gint id, guint timestamp);
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+ void (*reserved6) (void);
+};
+</pre>
+<p>
+The class implementing the virtual functions for <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObjectClass"><span class="type">GObjectClass</span></a> <em class="structfield"><code><a name="DbusmenuServerClass.parent-class"></a>parent_class</code></em>;</span></p></td>
+<td><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObjectClass"><span class="type">GObjectClass</span></a></td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuServerClass.id-prop-update"></a>id_prop_update</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"id-prop-update"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuServerClass.id-update"></a>id_update</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"id-update"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuServerClass.layout-updated"></a>layout_updated</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"layout-update"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuServerClass.item-activation"></a>item_activation</code></em> ()</span></p></td>
+<td>Slot for <span class="type">"item-activation-requested"</span>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuServerClass.reserved1"></a>reserved1</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuServerClass.reserved2"></a>reserved2</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuServerClass.reserved3"></a>reserved3</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuServerClass.reserved4"></a>reserved4</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuServerClass.reserved5"></a>reserved5</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuServerClass.reserved6"></a>reserved6</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-server-new"></a><h3>dbusmenu_server_new ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="returnvalue">DbusmenuServer</span></a> * dbusmenu_server_new (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object</code></em>);</pre>
+<p>
+Creates a new <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> object with a specific object
+ path on DBus. If <em class="parameter"><code>object</code></em> is set to NULL the default object
+ name of "/com/canonical/dbusmenu" will be used.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>The object name to show for this menu structure
+on DBus. May be NULL.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A brand new <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-server-get-status"></a><h3>dbusmenu_server_get_status ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="returnvalue">DbusmenuStatus</span></a> dbusmenu_server_get_status (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> *server</code></em>);</pre>
+<p>
+Gets the current statust hat the server is sending out over
+ DBus.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> to get the status from</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The current status the server is sending</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-server-get-text-direction"></a><h3>dbusmenu_server_get_text_direction ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="returnvalue">DbusmenuTextDirection</span></a> dbusmenu_server_get_text_direction
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> *server</code></em>);</pre>
+<p>
+Returns the value of the text direction that is being exported
+ over DBus for this server. It should relate to the direction
+ of the labels and other text fields that are being exported by
+ this server.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> object to get the text direction from</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Text direction exported for this server.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-server-set-root"></a><h3>dbusmenu_server_set_root ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_server_set_root (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> *self</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *root</code></em>);</pre>
+<p>
+This function contains all of the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> wrapping
+ required to set the property <span class="type">"root-node"</span>
+ on the server <em class="parameter"><code>self</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> object to set the root on</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>root</code></em> :</span></p></td>
+<td>The new root <a class="link" href="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem" title="struct DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> tree</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-server-set-status"></a><h3>dbusmenu_server_set_status ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_server_set_status (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> *server</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="type">DbusmenuStatus</span></a> status</code></em>);</pre>
+<p>
+Changes the status of the server.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> to set the status on</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>status</code></em> :</span></p></td>
+<td>Status value to set on the server</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-server-set-text-direction"></a><h3>dbusmenu_server_set_text_direction ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_server_set_text_direction (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> *server</code></em>,
+ <em class="parameter"><code><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="type">DbusmenuTextDirection</span></a> dir</code></em>);</pre>
+<p>
+Sets the text direction that should be exported over DBus for
+ this server. If the value is set to <a class="link" href="libdbusmenu-glib-Types.html#DBUSMENU-TEXT-DIRECTION-NONE:CAPS"><span class="type">DBUSMENU_TEXT_DIRECTION_NONE</span></a>
+ the default detection will be used for setting the value and
+ exported over DBus.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
+<td>The <a class="link" href="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer" title="DbusmenuServer"><span class="type">DbusmenuServer</span></a> object to set the text direction on</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>dir</code></em> :</span></p></td>
+<td>Direction of the text</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-Types.html b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-Types.html
new file mode 100644
index 0000000..93e7e54
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib-Types.html
@@ -0,0 +1,274 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Types</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="up" href="ch01.html" title="API">
+<link rel="prev" href="libdbusmenu-glib-DbusmenuClient.html" title="DbusmenuClient">
+<link rel="next" href="object-tree.html" title="Object Hierarchy">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libdbusmenu-glib-DbusmenuClient.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-glib Reference Manual</th>
+<td><a accesskey="n" href="object-tree.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libdbusmenu-glib-Types.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#libdbusmenu-glib-Types.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="libdbusmenu-glib-Types"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libdbusmenu-glib-Types.top_of_page"></a>Types</span></h2>
+<p>Types — Types that are used by both client and
+ server.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-Types.stability-level"></a><h2>Stability Level</h2>
+Unstable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<a name="libdbusmenu-glib-Types.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;libdbusmenu-glib/types.h&gt;
+
+#define <a class="link" href="libdbusmenu-glib-Types.html#DBUSMENU-TYPE-STATUS:CAPS" title="DBUSMENU_TYPE_STATUS">DBUSMENU_TYPE_STATUS</a>
+#define <a class="link" href="libdbusmenu-glib-Types.html#DBUSMENU-TYPE-TEXT-DIRECTION:CAPS" title="DBUSMENU_TYPE_TEXT_DIRECTION">DBUSMENU_TYPE_TEXT_DIRECTION</a>
+enum <a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus">DbusmenuStatus</a>;
+enum <a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection">DbusmenuTextDirection</a>;
+const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-status-get-nick" title="dbusmenu_status_get_nick ()">dbusmenu_status_get_nick</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="type">DbusmenuStatus</span></a> value</code></em>);
+<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> <a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-status-get-type" title="dbusmenu_status_get_type ()">dbusmenu_status_get_type</a> (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="returnvalue">DbusmenuStatus</span></a> <a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-status-get-value-from-nick" title="dbusmenu_status_get_value_from_nick ()">dbusmenu_status_get_value_from_nick</a> (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *nick</code></em>);
+const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-nick" title="dbusmenu_text_direction_get_nick ()">dbusmenu_text_direction_get_nick</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="type">DbusmenuTextDirection</span></a> value</code></em>);
+<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> <a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-type" title="dbusmenu_text_direction_get_type ()">dbusmenu_text_direction_get_type</a> (<em class="parameter"><code><span class="type">void</span></code></em>);
+<a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="returnvalue">DbusmenuTextDirection</span></a> <a class="link" href="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-value-from-nick" title="dbusmenu_text_direction_get_value_from_nick ()">dbusmenu_text_direction_get_value_from_nick</a>
+ (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *nick</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-Types.description"></a><h2>Description</h2>
+<p>
+Enums that are used to describe states of the server across the
+ bus. They are sent over dbus using their nicks but then turned
+ back into enums by the client.
+</p>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-glib-Types.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="DBUSMENU-TYPE-STATUS:CAPS"></a><h3>DBUSMENU_TYPE_STATUS</h3>
+<pre class="programlisting">#define DBUSMENU_TYPE_STATUS (dbusmenu_status_get_type())
+</pre>
+<p>
+Gets the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> value for the type associated with the
+ <a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="type">DbusmenuStatus</span></a> enumerated type.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DBUSMENU-TYPE-TEXT-DIRECTION:CAPS"></a><h3>DBUSMENU_TYPE_TEXT_DIRECTION</h3>
+<pre class="programlisting">#define DBUSMENU_TYPE_TEXT_DIRECTION (dbusmenu_text_direction_get_type())
+</pre>
+<p>
+Gets the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> value for the type associated with the
+ <a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="type">DbusmenuTextDirection</span></a> enumerated type.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuStatus"></a><h3>enum DbusmenuStatus</h3>
+<pre class="programlisting">typedef enum { /*&lt; prefix=DBUSMENU_STATUS &gt;*/
+ DBUSMENU_STATUS_NORMAL, /*&lt; nick=normal &gt;*/
+ DBUSMENU_STATUS_NOTICE /*&lt; nick=notice &gt;*/
+} DbusmenuStatus;
+</pre>
+<p>
+Tracks how the menus should be presented to the user.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="DBUSMENU-STATUS-NORMAL:CAPS"></a><span class="term"><code class="literal">DBUSMENU_STATUS_NORMAL</code></span></p></td>
+<td>Everything is normal
+</td>
+</tr>
+<tr>
+<td><p><a name="DBUSMENU-STATUS-NOTICE:CAPS"></a><span class="term"><code class="literal">DBUSMENU_STATUS_NOTICE</code></span></p></td>
+<td>The menus should be shown at a higher priority
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuTextDirection"></a><h3>enum DbusmenuTextDirection</h3>
+<pre class="programlisting">typedef enum { /*&lt; prefix=DBUSMENU_TEXT_DIRECTION &gt;*/
+ DBUSMENU_TEXT_DIRECTION_NONE, /*&lt; nick=none &gt;*/
+ DBUSMENU_TEXT_DIRECTION_LTR, /*&lt; nick=ltr &gt;*/
+ DBUSMENU_TEXT_DIRECTION_RTL /*&lt; nick=rtl &gt;*/
+} DbusmenuTextDirection;
+</pre>
+<p>
+The direction of text that the strings that this server
+ will be sending strings as.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="DBUSMENU-TEXT-DIRECTION-NONE:CAPS"></a><span class="term"><code class="literal">DBUSMENU_TEXT_DIRECTION_NONE</code></span></p></td>
+<td>Unspecified text direction
+</td>
+</tr>
+<tr>
+<td><p><a name="DBUSMENU-TEXT-DIRECTION-LTR:CAPS"></a><span class="term"><code class="literal">DBUSMENU_TEXT_DIRECTION_LTR</code></span></p></td>
+<td>Left-to-right text direction
+</td>
+</tr>
+<tr>
+<td><p><a name="DBUSMENU-TEXT-DIRECTION-RTL:CAPS"></a><span class="term"><code class="literal">DBUSMENU_TEXT_DIRECTION_RTL</code></span></p></td>
+<td>Right-to-left text direction
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-status-get-nick"></a><h3>dbusmenu_status_get_nick ()</h3>
+<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * dbusmenu_status_get_nick (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="type">DbusmenuStatus</span></a> value</code></em>);</pre>
+<p>
+Looks up in the enum table for the nick of <em class="parameter"><code>value</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>The value of DbusmenuStatus to get the nick of</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The nick for the given value or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> on error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-status-get-type"></a><h3>dbusmenu_status_get_type ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> dbusmenu_status_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Builds a GLib type for the <a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="type">DbusmenuStatus</span></a> enumeration.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A unique <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> for the <a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="type">DbusmenuStatus</span></a> enum.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-status-get-value-from-nick"></a><h3>dbusmenu_status_get_value_from_nick ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuStatus" title="enum DbusmenuStatus"><span class="returnvalue">DbusmenuStatus</span></a> dbusmenu_status_get_value_from_nick (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *nick</code></em>);</pre>
+<p>
+Looks up in the enum table for the value of <em class="parameter"><code>nick</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nick</code></em> :</span></p></td>
+<td>The enum nick to lookup</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The value for the given <em class="parameter"><code>nick</code></em>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-text-direction-get-nick"></a><h3>dbusmenu_text_direction_get_nick ()</h3>
+<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * dbusmenu_text_direction_get_nick (<em class="parameter"><code><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="type">DbusmenuTextDirection</span></a> value</code></em>);</pre>
+<p>
+Looks up in the enum table for the nick of <em class="parameter"><code>value</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
+<td>The value of DbusmenuTextDirection to get the nick of</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The nick for the given value or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> on error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-text-direction-get-type"></a><h3>dbusmenu_text_direction_get_type ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> dbusmenu_text_direction_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>
+Builds a GLib type for the <a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="type">DbusmenuTextDirection</span></a> enumeration.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A unique <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> for the <a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="type">DbusmenuTextDirection</span></a> enum.</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-text-direction-get-value-from-nick"></a><h3>dbusmenu_text_direction_get_value_from_nick ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-glib-Types.html#DbusmenuTextDirection" title="enum DbusmenuTextDirection"><span class="returnvalue">DbusmenuTextDirection</span></a> dbusmenu_text_direction_get_value_from_nick
+ (<em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *nick</code></em>);</pre>
+<p>
+Looks up in the enum table for the value of <em class="parameter"><code>nick</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>nick</code></em> :</span></p></td>
+<td>The enum nick to lookup</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The value for the given <em class="parameter"><code>nick</code></em>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib.devhelp b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib.devhelp
new file mode 100644
index 0000000..ff65c23
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib.devhelp
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
+<book xmlns="http://www.devhelp.net/book" title="libdbusmenu-glib Reference Manual" link="index.html" author="" name="libdbusmenu-glib">
+ <chapters>
+ <sub name="API" link="ch01.html">
+ <sub name="DbusmenuServer" link="libdbusmenu-glib-DbusmenuServer.html"/>
+ <sub name="DbusmenuMenuitemProxy" link="libdbusmenu-glib-DbusmenuMenuitemProxy.html"/>
+ <sub name="DbusmenuMenuitem" link="libdbusmenu-glib-DbusmenuMenuitem.html"/>
+ <sub name="DbusmenuClient" link="libdbusmenu-glib-DbusmenuClient.html"/>
+ <sub name="Types" link="libdbusmenu-glib-Types.html"/>
+ </sub>
+ <sub name="Object Hierarchy" link="object-tree.html"/>
+ <sub name="API Index" link="api-index-full.html"/>
+ <sub name="Deprecated API Index" link="api-index-deprecated.html"/>
+ <sub name="Annotation Glossary" link="annotation-glossary.html"/>
+ </chapters>
+ <functions>
+ <function name="DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS"/>
+ <function name="DBUSMENU_SERVER_SIGNAL_ID_UPDATE" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS"/>
+ <function name="DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS"/>
+ <function name="DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS"/>
+ <function name="DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS"/>
+ <function name="DBUSMENU_SERVER_PROP_DBUS_OBJECT" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS"/>
+ <function name="DBUSMENU_SERVER_PROP_ROOT_NODE" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS"/>
+ <function name="DBUSMENU_SERVER_PROP_STATUS" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-STATUS:CAPS"/>
+ <function name="DBUSMENU_SERVER_PROP_TEXT_DIRECTION" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS"/>
+ <function name="DBUSMENU_SERVER_PROP_VERSION" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-VERSION:CAPS"/>
+ <function name="DbusmenuServer" link="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"/>
+ <function name="struct DbusmenuServerClass" link="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServerClass"/>
+ <function name="dbusmenu_server_new ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-new"/>
+ <function name="dbusmenu_server_get_status ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-get-status"/>
+ <function name="dbusmenu_server_get_text_direction ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-get-text-direction"/>
+ <function name="dbusmenu_server_set_root ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-root"/>
+ <function name="dbusmenu_server_set_status ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-status"/>
+ <function name="dbusmenu_server_set_text_direction ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-text-direction"/>
+ <function name="DbusmenuMenuitemProxy" link="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy"/>
+ <function name="struct DbusmenuMenuitemProxyClass" link="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxyClass"/>
+ <function name="dbusmenu_menuitem_proxy_new ()" link="libdbusmenu-glib-DbusmenuMenuitemProxy.html#dbusmenu-menuitem-proxy-new"/>
+ <function name="dbusmenu_menuitem_proxy_get_wrapped ()" link="libdbusmenu-glib-DbusmenuMenuitemProxy.html#dbusmenu-menuitem-proxy-get-wrapped"/>
+ <function name="DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SIGNAL_EVENT" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SIGNAL_REALIZED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_PROP_TYPE" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TYPE:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_PROP_VISIBLE" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_PROP_ENABLED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ENABLED:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_PROP_LABEL" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-LABEL:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_PROP_ICON_NAME" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_PROP_ICON_DATA" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_PROP_TOGGLE_STATE" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_PROP_SHORTCUT" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_TOGGLE_CHECK" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_TOGGLE_RADIO" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_ICON_NAME_BLANK" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SHORTCUT_ALT" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SHORTCUT_CONTROL" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SHORTCUT_SHIFT" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS"/>
+ <function name="DBUSMENU_MENUITEM_SHORTCUT_SUPER" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS"/>
+ <function name="struct DbusmenuMenuitem" link="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"/>
+ <function name="dbusmenu_menuitem_about_to_show_cb ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-about-to-show-cb"/>
+ <function name="dbusmenu_menuitem_buildvariant_slot_t ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-buildvariant-slot-t"/>
+ <function name="struct DbusmenuMenuitemClass" link="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitemClass"/>
+ <function name="dbusmenu_menuitem_new ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-new"/>
+ <function name="dbusmenu_menuitem_new_with_id ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-new-with-id"/>
+ <function name="dbusmenu_menuitem_get_id ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-id"/>
+ <function name="dbusmenu_menuitem_get_children ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-children"/>
+ <function name="dbusmenu_menuitem_take_children ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-take-children"/>
+ <function name="dbusmenu_menuitem_get_position ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position"/>
+ <function name="dbusmenu_menuitem_get_position_realized ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position-realized"/>
+ <function name="dbusmenu_menuitem_child_append ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-append"/>
+ <function name="dbusmenu_menuitem_child_prepend ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-prepend"/>
+ <function name="dbusmenu_menuitem_child_delete ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-delete"/>
+ <function name="dbusmenu_menuitem_child_add_position ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-add-position"/>
+ <function name="dbusmenu_menuitem_child_reorder ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-reorder"/>
+ <function name="dbusmenu_menuitem_child_find ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-find"/>
+ <function name="dbusmenu_menuitem_find_id ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-find-id"/>
+ <function name="dbusmenu_menuitem_property_set ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set"/>
+ <function name="dbusmenu_menuitem_property_set_bool ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-bool"/>
+ <function name="dbusmenu_menuitem_property_set_int ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-int"/>
+ <function name="dbusmenu_menuitem_property_set_variant ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-variant"/>
+ <function name="dbusmenu_menuitem_property_get ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get"/>
+ <function name="dbusmenu_menuitem_property_get_bool ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-bool"/>
+ <function name="dbusmenu_menuitem_property_get_int ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-int"/>
+ <function name="dbusmenu_menuitem_property_get_variant ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-variant"/>
+ <function name="dbusmenu_menuitem_property_exist ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-exist"/>
+ <function name="dbusmenu_menuitem_properties_list ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-properties-list"/>
+ <function name="dbusmenu_menuitem_properties_copy ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-properties-copy"/>
+ <function name="dbusmenu_menuitem_property_remove ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-remove"/>
+ <function name="dbusmenu_menuitem_set_root ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-set-root"/>
+ <function name="dbusmenu_menuitem_get_root ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-root"/>
+ <function name="dbusmenu_menuitem_foreach ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-foreach"/>
+ <function name="dbusmenu_menuitem_handle_event ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-handle-event"/>
+ <function name="dbusmenu_menuitem_send_about_to_show ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-send-about-to-show"/>
+ <function name="dbusmenu_menuitem_show_to_user ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-show-to-user"/>
+ <function name="dbusmenu_menuitem_get_parent ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-parent"/>
+ <function name="dbusmenu_menuitem_set_parent ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-set-parent"/>
+ <function name="dbusmenu_menuitem_unparent ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-unparent"/>
+ <function name="DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS"/>
+ <function name="DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS"/>
+ <function name="DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS"/>
+ <function name="DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS"/>
+ <function name="DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS"/>
+ <function name="DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS"/>
+ <function name="DBUSMENU_CLIENT_PROP_DBUS_NAME" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS"/>
+ <function name="DBUSMENU_CLIENT_PROP_DBUS_OBJECT" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS"/>
+ <function name="DBUSMENU_CLIENT_PROP_STATUS" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-STATUS:CAPS"/>
+ <function name="DBUSMENU_CLIENT_PROP_TEXT_DIRECTION" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS"/>
+ <function name="DBUSMENU_CLIENT_TYPES_DEFAULT" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS"/>
+ <function name="DBUSMENU_CLIENT_TYPES_SEPARATOR" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS"/>
+ <function name="DBUSMENU_CLIENT_TYPES_IMAGE" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-IMAGE:CAPS"/>
+ <function name="DbusmenuClient" link="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient"/>
+ <function name="struct DbusmenuClientClass" link="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientClass"/>
+ <function name="DbusmenuClientTypeHandler ()" link="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeHandler"/>
+ <function name="DbusmenuClientTypeDestroyHandler ()" link="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeDestroyHandler"/>
+ <function name="dbusmenu_client_new ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-new"/>
+ <function name="dbusmenu_client_get_root ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-root"/>
+ <function name="dbusmenu_client_get_status ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-status"/>
+ <function name="dbusmenu_client_get_text_direction ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-text-direction"/>
+ <function name="dbusmenu_client_add_type_handler ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler"/>
+ <function name="dbusmenu_client_add_type_handler_full ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler-full"/>
+ <function name="DBUSMENU_TYPE_STATUS" link="libdbusmenu-glib-Types.html#DBUSMENU-TYPE-STATUS:CAPS"/>
+ <function name="DBUSMENU_TYPE_TEXT_DIRECTION" link="libdbusmenu-glib-Types.html#DBUSMENU-TYPE-TEXT-DIRECTION:CAPS"/>
+ <function name="enum DbusmenuStatus" link="libdbusmenu-glib-Types.html#DbusmenuStatus"/>
+ <function name="enum DbusmenuTextDirection" link="libdbusmenu-glib-Types.html#DbusmenuTextDirection"/>
+ <function name="dbusmenu_status_get_nick ()" link="libdbusmenu-glib-Types.html#dbusmenu-status-get-nick"/>
+ <function name="dbusmenu_status_get_type ()" link="libdbusmenu-glib-Types.html#dbusmenu-status-get-type"/>
+ <function name="dbusmenu_status_get_value_from_nick ()" link="libdbusmenu-glib-Types.html#dbusmenu-status-get-value-from-nick"/>
+ <function name="dbusmenu_text_direction_get_nick ()" link="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-nick"/>
+ <function name="dbusmenu_text_direction_get_type ()" link="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-type"/>
+ <function name="dbusmenu_text_direction_get_value_from_nick ()" link="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-value-from-nick"/>
+ </functions>
+</book>
diff --git a/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib.devhelp2 b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib.devhelp2
new file mode 100644
index 0000000..0b34446
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/libdbusmenu-glib.devhelp2
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
+<book xmlns="http://www.devhelp.net/book" title="libdbusmenu-glib Reference Manual" link="index.html" author="" name="libdbusmenu-glib" version="2" language="c">
+ <chapters>
+ <sub name="API" link="ch01.html">
+ <sub name="DbusmenuServer" link="libdbusmenu-glib-DbusmenuServer.html"/>
+ <sub name="DbusmenuMenuitemProxy" link="libdbusmenu-glib-DbusmenuMenuitemProxy.html"/>
+ <sub name="DbusmenuMenuitem" link="libdbusmenu-glib-DbusmenuMenuitem.html"/>
+ <sub name="DbusmenuClient" link="libdbusmenu-glib-DbusmenuClient.html"/>
+ <sub name="Types" link="libdbusmenu-glib-Types.html"/>
+ </sub>
+ <sub name="Object Hierarchy" link="object-tree.html"/>
+ <sub name="API Index" link="api-index-full.html"/>
+ <sub name="Deprecated API Index" link="api-index-deprecated.html"/>
+ <sub name="Annotation Glossary" link="annotation-glossary.html"/>
+ </chapters>
+ <functions>
+ <keyword type="macro" name="DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_SERVER_SIGNAL_ID_UPDATE" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_SERVER_PROP_DBUS_OBJECT" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_SERVER_PROP_ROOT_NODE" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_SERVER_PROP_STATUS" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-STATUS:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_SERVER_PROP_TEXT_DIRECTION" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_SERVER_PROP_VERSION" link="libdbusmenu-glib-DbusmenuServer.html#DBUSMENU-SERVER-PROP-VERSION:CAPS"/>
+ <keyword type="struct" name="DbusmenuServer" link="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"/>
+ <keyword type="struct" name="struct DbusmenuServerClass" link="libdbusmenu-glib-DbusmenuServer.html#DbusmenuServerClass"/>
+ <keyword type="function" name="dbusmenu_server_new ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-new"/>
+ <keyword type="function" name="dbusmenu_server_get_status ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-get-status"/>
+ <keyword type="function" name="dbusmenu_server_get_text_direction ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-get-text-direction"/>
+ <keyword type="function" name="dbusmenu_server_set_root ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-root"/>
+ <keyword type="function" name="dbusmenu_server_set_status ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-status"/>
+ <keyword type="function" name="dbusmenu_server_set_text_direction ()" link="libdbusmenu-glib-DbusmenuServer.html#dbusmenu-server-set-text-direction"/>
+ <keyword type="struct" name="DbusmenuMenuitemProxy" link="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxy"/>
+ <keyword type="struct" name="struct DbusmenuMenuitemProxyClass" link="libdbusmenu-glib-DbusmenuMenuitemProxy.html#DbusmenuMenuitemProxyClass"/>
+ <keyword type="function" name="dbusmenu_menuitem_proxy_new ()" link="libdbusmenu-glib-DbusmenuMenuitemProxy.html#dbusmenu-menuitem-proxy-new"/>
+ <keyword type="function" name="dbusmenu_menuitem_proxy_get_wrapped ()" link="libdbusmenu-glib-DbusmenuMenuitemProxy.html#dbusmenu-menuitem-proxy-get-wrapped"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SIGNAL_EVENT" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SIGNAL_REALIZED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_PROP_TYPE" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TYPE:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_PROP_VISIBLE" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_PROP_ENABLED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ENABLED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_PROP_LABEL" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-LABEL:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_PROP_ICON_NAME" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_PROP_ICON_DATA" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_PROP_TOGGLE_STATE" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_PROP_SHORTCUT" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_TOGGLE_CHECK" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_TOGGLE_RADIO" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_ICON_NAME_BLANK" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SHORTCUT_ALT" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SHORTCUT_CONTROL" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SHORTCUT_SHIFT" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_MENUITEM_SHORTCUT_SUPER" link="libdbusmenu-glib-DbusmenuMenuitem.html#DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS"/>
+ <keyword type="struct" name="struct DbusmenuMenuitem" link="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"/>
+ <keyword type="function" name="dbusmenu_menuitem_about_to_show_cb ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-about-to-show-cb"/>
+ <keyword type="function" name="dbusmenu_menuitem_buildvariant_slot_t ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-buildvariant-slot-t"/>
+ <keyword type="struct" name="struct DbusmenuMenuitemClass" link="libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitemClass"/>
+ <keyword type="function" name="dbusmenu_menuitem_new ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-new"/>
+ <keyword type="function" name="dbusmenu_menuitem_new_with_id ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-new-with-id"/>
+ <keyword type="function" name="dbusmenu_menuitem_get_id ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-id"/>
+ <keyword type="function" name="dbusmenu_menuitem_get_children ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-children"/>
+ <keyword type="function" name="dbusmenu_menuitem_take_children ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-take-children"/>
+ <keyword type="function" name="dbusmenu_menuitem_get_position ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position"/>
+ <keyword type="function" name="dbusmenu_menuitem_get_position_realized ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-position-realized"/>
+ <keyword type="function" name="dbusmenu_menuitem_child_append ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-append"/>
+ <keyword type="function" name="dbusmenu_menuitem_child_prepend ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-prepend"/>
+ <keyword type="function" name="dbusmenu_menuitem_child_delete ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-delete"/>
+ <keyword type="function" name="dbusmenu_menuitem_child_add_position ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-add-position"/>
+ <keyword type="function" name="dbusmenu_menuitem_child_reorder ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-reorder"/>
+ <keyword type="function" name="dbusmenu_menuitem_child_find ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-child-find"/>
+ <keyword type="function" name="dbusmenu_menuitem_find_id ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-find-id"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_set ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_set_bool ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-bool"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_set_int ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-int"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_set_variant ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-set-variant"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_get ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_get_bool ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-bool"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_get_int ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-int"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_get_variant ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-get-variant"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_exist ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-exist"/>
+ <keyword type="function" name="dbusmenu_menuitem_properties_list ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-properties-list"/>
+ <keyword type="function" name="dbusmenu_menuitem_properties_copy ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-properties-copy"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_remove ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-property-remove"/>
+ <keyword type="function" name="dbusmenu_menuitem_set_root ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-set-root"/>
+ <keyword type="function" name="dbusmenu_menuitem_get_root ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-root"/>
+ <keyword type="function" name="dbusmenu_menuitem_foreach ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-foreach"/>
+ <keyword type="function" name="dbusmenu_menuitem_handle_event ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-handle-event"/>
+ <keyword type="function" name="dbusmenu_menuitem_send_about_to_show ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-send-about-to-show"/>
+ <keyword type="function" name="dbusmenu_menuitem_show_to_user ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-show-to-user"/>
+ <keyword type="function" name="dbusmenu_menuitem_get_parent ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-get-parent"/>
+ <keyword type="function" name="dbusmenu_menuitem_set_parent ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-set-parent"/>
+ <keyword type="function" name="dbusmenu_menuitem_unparent ()" link="libdbusmenu-glib-DbusmenuMenuitem.html#dbusmenu-menuitem-unparent"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_PROP_DBUS_NAME" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_PROP_DBUS_OBJECT" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_PROP_STATUS" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-STATUS:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_PROP_TEXT_DIRECTION" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_TYPES_DEFAULT" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_TYPES_SEPARATOR" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_CLIENT_TYPES_IMAGE" link="libdbusmenu-glib-DbusmenuClient.html#DBUSMENU-CLIENT-TYPES-IMAGE:CAPS"/>
+ <keyword type="struct" name="DbusmenuClient" link="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient"/>
+ <keyword type="struct" name="struct DbusmenuClientClass" link="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientClass"/>
+ <keyword type="function" name="DbusmenuClientTypeHandler ()" link="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeHandler"/>
+ <keyword type="function" name="DbusmenuClientTypeDestroyHandler ()" link="libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientTypeDestroyHandler"/>
+ <keyword type="function" name="dbusmenu_client_new ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-new"/>
+ <keyword type="function" name="dbusmenu_client_get_root ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-root"/>
+ <keyword type="function" name="dbusmenu_client_get_status ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-status"/>
+ <keyword type="function" name="dbusmenu_client_get_text_direction ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-get-text-direction"/>
+ <keyword type="function" name="dbusmenu_client_add_type_handler ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler"/>
+ <keyword type="function" name="dbusmenu_client_add_type_handler_full ()" link="libdbusmenu-glib-DbusmenuClient.html#dbusmenu-client-add-type-handler-full"/>
+ <keyword type="macro" name="DBUSMENU_TYPE_STATUS" link="libdbusmenu-glib-Types.html#DBUSMENU-TYPE-STATUS:CAPS"/>
+ <keyword type="macro" name="DBUSMENU_TYPE_TEXT_DIRECTION" link="libdbusmenu-glib-Types.html#DBUSMENU-TYPE-TEXT-DIRECTION:CAPS"/>
+ <keyword type="enum" name="enum DbusmenuStatus" link="libdbusmenu-glib-Types.html#DbusmenuStatus"/>
+ <keyword type="enum" name="enum DbusmenuTextDirection" link="libdbusmenu-glib-Types.html#DbusmenuTextDirection"/>
+ <keyword type="function" name="dbusmenu_status_get_nick ()" link="libdbusmenu-glib-Types.html#dbusmenu-status-get-nick"/>
+ <keyword type="function" name="dbusmenu_status_get_type ()" link="libdbusmenu-glib-Types.html#dbusmenu-status-get-type"/>
+ <keyword type="function" name="dbusmenu_status_get_value_from_nick ()" link="libdbusmenu-glib-Types.html#dbusmenu-status-get-value-from-nick"/>
+ <keyword type="function" name="dbusmenu_text_direction_get_nick ()" link="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-nick"/>
+ <keyword type="function" name="dbusmenu_text_direction_get_type ()" link="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-type"/>
+ <keyword type="function" name="dbusmenu_text_direction_get_value_from_nick ()" link="libdbusmenu-glib-Types.html#dbusmenu-text-direction-get-value-from-nick"/>
+ <keyword type="constant" name="DBUSMENU_STATUS_NORMAL" link="libdbusmenu-glib-Types.html#DBUSMENU-STATUS-NORMAL:CAPS"/>
+ <keyword type="constant" name="DBUSMENU_STATUS_NOTICE" link="libdbusmenu-glib-Types.html#DBUSMENU-STATUS-NOTICE:CAPS"/>
+ <keyword type="constant" name="DBUSMENU_TEXT_DIRECTION_NONE" link="libdbusmenu-glib-Types.html#DBUSMENU-TEXT-DIRECTION-NONE:CAPS"/>
+ <keyword type="constant" name="DBUSMENU_TEXT_DIRECTION_LTR" link="libdbusmenu-glib-Types.html#DBUSMENU-TEXT-DIRECTION-LTR:CAPS"/>
+ <keyword type="constant" name="DBUSMENU_TEXT_DIRECTION_RTL" link="libdbusmenu-glib-Types.html#DBUSMENU-TEXT-DIRECTION-RTL:CAPS"/>
+ </functions>
+</book>
diff --git a/docs/libdbusmenu-glib/reference/html/object-tree.html b/docs/libdbusmenu-glib/reference/html/object-tree.html
new file mode 100644
index 0000000..6a9e004
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/object-tree.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Object Hierarchy</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="up" href="index.html" title="libdbusmenu-glib Reference Manual">
+<link rel="prev" href="libdbusmenu-glib-Types.html" title="Types">
+<link rel="next" href="api-index-full.html" title="API Index">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="libdbusmenu-glib-Types.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-glib Reference Manual</th>
+<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="object-tree"></a>Object Hierarchy</h2></div></div></div>
+<pre class="screen">
+</pre>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-glib/reference/html/right.png b/docs/libdbusmenu-glib/reference/html/right.png
new file mode 100644
index 0000000..ed55207
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/right.png
Binary files differ
diff --git a/docs/libdbusmenu-glib/reference/html/style.css b/docs/libdbusmenu-glib/reference/html/style.css
new file mode 100644
index 0000000..d6f6c26
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/style.css
@@ -0,0 +1,266 @@
+.synopsis, .classsynopsis
+{
+ /* tango:aluminium 1/2 */
+ background: #eeeeec;
+ border: solid 1px #d3d7cf;
+ padding: 0.5em;
+}
+.programlisting
+{
+ /* tango:sky blue 0/1 */
+ background: #e6f3ff;
+ border: solid 1px #729fcf;
+ padding: 0.5em;
+}
+.variablelist
+{
+ padding: 4px;
+ margin-left: 3em;
+}
+.variablelist td:first-child
+{
+ vertical-align: top;
+}
+
+@media screen {
+ sup a.footnote
+ {
+ position: relative;
+ top: 0em ! important;
+
+ }
+ /* this is needed so that the local anchors are displayed below the naviagtion */
+ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
+ {
+ display: inline-block;
+ position: relative;
+ top:-5em;
+ }
+ /* this seems to be a bug in the xsl style sheets when generating indexes */
+ div.index div.index
+ {
+ top: 0em;
+ }
+ /* make space for the fixed navigation bar and add space at the bottom so that
+ * link targets appear somewhat close to top
+ */
+ body
+ {
+ padding-top: 3.2em;
+ padding-bottom: 20em;
+ }
+ /* style and size the navigation bar */
+ table.navigation#top
+ {
+ position: fixed;
+ /* tango:scarlet red 0/1 */
+ background: #ffe6e6;
+ border: solid 1px #ef2929;
+ margin-top: 0;
+ margin-bottom: 0;
+ top: 0;
+ left: 0;
+ height: 3em;
+ z-index: 10;
+ }
+ .navigation a, .navigation a:visited
+ {
+ /* tango:scarlet red 3 */
+ color: #a40000;
+ }
+ .navigation a:hover
+ {
+ /* tango:scarlet red 1 */
+ color: #ef2929;
+ }
+ td.shortcuts
+ {
+ /* tango:scarlet red 1 */
+ color: #ef2929;
+ font-size: 80%;
+ white-space: nowrap;
+ }
+}
+@media print {
+ table.navigation {
+ visibility: collapse;
+ display: none;
+ }
+ div.titlepage table.navigation {
+ visibility: visible;
+ display: table;
+ /* tango:scarlet red 0/1 */
+ background: #ffe6e6;
+ border: solid 1px #ef2929;
+ margin-top: 0;
+ margin-bottom: 0;
+ top: 0;
+ left: 0;
+ height: 3em;
+ }
+}
+
+.navigation .title
+{
+ font-size: 200%;
+}
+
+div.gallery-float
+{
+ float: left;
+ padding: 10px;
+}
+div.gallery-float img
+{
+ border-style: none;
+}
+div.gallery-spacer
+{
+ clear: both;
+}
+
+a, a:visited
+{
+ text-decoration: none;
+ /* tango:sky blue 2 */
+ color: #3465a4;
+}
+a:hover
+{
+ text-decoration: underline;
+ /* tango:sky blue 1 */
+ color: #729fcf;
+}
+
+div.table table
+{
+ border-collapse: collapse;
+ border-spacing: 0px;
+ /* tango:aluminium 3 */
+ border: solid 1px #babdb6;
+}
+
+div.table table td, div.table table th
+{
+ /* tango:aluminium 3 */
+ border: solid 1px #babdb6;
+ padding: 3px;
+ vertical-align: top;
+}
+
+div.table table th
+{
+ /* tango:aluminium 2 */
+ background-color: #d3d7cf;
+}
+
+hr
+{
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ background: #babdb6;
+ border: none 0px;
+ height: 1px;
+ clear: both;
+}
+
+.footer
+{
+ padding-top: 3.5em;
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ text-align: center;
+ font-size: 80%;
+}
+
+.warning
+{
+ /* tango:orange 0/1 */
+ background: #ffeed9;
+ border-color: #ffb04f;
+}
+.note
+{
+ /* tango:chameleon 0/0.5 */
+ background: #d8ffb2;
+ border-color: #abf562;
+}
+.note, .warning
+{
+ padding: 0.5em;
+ border-width: 1px;
+ border-style: solid;
+}
+.note h3, .warning h3
+{
+ margin-top: 0.0em
+}
+.note p, .warning p
+{
+ margin-bottom: 0.0em
+}
+
+/* blob links */
+h2 .extralinks, h3 .extralinks
+{
+ float: right;
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ font-size: 80%;
+ font-weight: normal;
+}
+
+.annotation
+{
+ /* tango:aluminium 5 */
+ color: #555753;
+ font-size: 80%;
+ font-weight: normal;
+}
+
+/* code listings */
+
+.listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */
+.listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */
+.listing_code .programlisting .function { color: #000000; font-weight: bold; }
+.listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
+.listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */
+.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
+.listing_code .programlisting .normal { color: #000000; }
+.listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */
+.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
+.listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */
+.listing_code .programlisting .type { color: #000000; }
+.listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */
+.listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */
+
+.listing_frame {
+ /* tango:sky blue 1 */
+ border: solid 1px #729fcf;
+ padding: 0px;
+}
+
+.listing_lines, .listing_code {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0.5em;
+}
+.listing_lines {
+ /* tango:sky blue 0.5 */
+ background: #a6c5e3;
+ /* tango:aluminium 6 */
+ color: #2e3436;
+}
+.listing_code {
+ /* tango:sky blue 0 */
+ background: #e6f3ff;
+}
+.listing_code .programlisting {
+ /* override from previous */
+ border: none 0px;
+ padding: 0px;
+}
+.listing_lines pre, .listing_code pre {
+ margin: 0px;
+}
+
diff --git a/docs/libdbusmenu-glib/reference/html/up.png b/docs/libdbusmenu-glib/reference/html/up.png
new file mode 100644
index 0000000..8eb591f
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/html/up.png
Binary files differ
diff --git a/docs/libdbusmenu-glib/reference/libdbusmenu-glib-docs.sgml b/docs/libdbusmenu-glib/reference/libdbusmenu-glib-docs.sgml
index ecc25a3..53a0ceb 100644
--- a/docs/libdbusmenu-glib/reference/libdbusmenu-glib-docs.sgml
+++ b/docs/libdbusmenu-glib/reference/libdbusmenu-glib-docs.sgml
@@ -18,6 +18,7 @@
<xi:include href="xml/client-menuitem.xml"/>
<xi:include href="xml/dbusmenu-client.xml"/>
<xi:include href="xml/dbusmenu-server.xml"/>
+ <xi:include href="xml/types.xml"/>
</chapter>
<chapter id="object-tree">
@@ -28,6 +29,10 @@
<title>API Index</title>
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
</index>
+ <index id="api-index-deprecated">
+ <title>Deprecated API Index</title>
+ <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
+ </index>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</book>
diff --git a/docs/libdbusmenu-glib/reference/libdbusmenu-glib-sections.txt b/docs/libdbusmenu-glib/reference/libdbusmenu-glib-sections.txt
index 0186049..b1e2d8c 100644
--- a/docs/libdbusmenu-glib/reference/libdbusmenu-glib-sections.txt
+++ b/docs/libdbusmenu-glib/reference/libdbusmenu-glib-sections.txt
@@ -4,27 +4,36 @@
DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED
DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED
DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM
+DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT
+DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE
+DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED
DBUSMENU_CLIENT_PROP_DBUS_NAME
DBUSMENU_CLIENT_PROP_DBUS_OBJECT
+DBUSMENU_CLIENT_PROP_STATUS
+DBUSMENU_CLIENT_PROP_TEXT_DIRECTION
DBUSMENU_CLIENT_TYPES_DEFAULT
DBUSMENU_CLIENT_TYPES_SEPARATOR
DBUSMENU_CLIENT_TYPES_IMAGE
DbusmenuClient
DbusmenuClientClass
DbusmenuClientTypeHandler
+DbusmenuClientTypeDestroyHandler
dbusmenu_client_new
dbusmenu_client_get_root
+dbusmenu_client_get_status
+dbusmenu_client_get_text_direction
dbusmenu_client_add_type_handler
-dbusmenu_client_send_event
-dbusmenu_client_send_about_to_show
+dbusmenu_client_add_type_handler_full
<SUBSECTION Standard>
DBUSMENU_CLIENT
DBUSMENU_IS_CLIENT
DBUSMENU_TYPE_CLIENT
-dbusmenu_client_get_type
DBUSMENU_CLIENT_CLASS
DBUSMENU_IS_CLIENT_CLASS
DBUSMENU_CLIENT_GET_CLASS
+<SUBSECTION Private>
+DbusmenuClientPrivate
+dbusmenu_client_get_type
</SECTION>
<SECTION>
@@ -35,8 +44,11 @@ DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED
DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED
DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED
DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED
+DBUSMENU_MENUITEM_SIGNAL_EVENT
DBUSMENU_MENUITEM_SIGNAL_REALIZED
DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID
+DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW
+DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER
DBUSMENU_MENUITEM_PROP_TYPE
DBUSMENU_MENUITEM_PROP_VISIBLE
DBUSMENU_MENUITEM_PROP_ENABLED
@@ -46,6 +58,7 @@ DBUSMENU_MENUITEM_PROP_ICON_DATA
DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE
DBUSMENU_MENUITEM_PROP_TOGGLE_STATE
DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY
+DBUSMENU_MENUITEM_PROP_SHORTCUT
DBUSMENU_MENUITEM_TOGGLE_CHECK
DBUSMENU_MENUITEM_TOGGLE_RADIO
DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED
@@ -53,9 +66,13 @@ DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED
DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN
DBUSMENU_MENUITEM_ICON_NAME_BLANK
DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU
+DBUSMENU_MENUITEM_SHORTCUT_ALT
+DBUSMENU_MENUITEM_SHORTCUT_CONTROL
+DBUSMENU_MENUITEM_SHORTCUT_SHIFT
+DBUSMENU_MENUITEM_SHORTCUT_SUPER
DbusmenuMenuitem
dbusmenu_menuitem_about_to_show_cb
-dbusmenu_menuitem_buildxml_slot_t
+dbusmenu_menuitem_buildvariant_slot_t
DbusmenuMenuitemClass
dbusmenu_menuitem_new
dbusmenu_menuitem_new_with_id
@@ -72,13 +89,13 @@ dbusmenu_menuitem_child_reorder
dbusmenu_menuitem_child_find
dbusmenu_menuitem_find_id
dbusmenu_menuitem_property_set
-dbusmenu_menuitem_property_set_value
dbusmenu_menuitem_property_set_bool
dbusmenu_menuitem_property_set_int
+dbusmenu_menuitem_property_set_variant
dbusmenu_menuitem_property_get
-dbusmenu_menuitem_property_get_value
dbusmenu_menuitem_property_get_bool
dbusmenu_menuitem_property_get_int
+dbusmenu_menuitem_property_get_variant
dbusmenu_menuitem_property_exist
dbusmenu_menuitem_properties_list
dbusmenu_menuitem_properties_copy
@@ -88,14 +105,20 @@ dbusmenu_menuitem_get_root
dbusmenu_menuitem_foreach
dbusmenu_menuitem_handle_event
dbusmenu_menuitem_send_about_to_show
+dbusmenu_menuitem_show_to_user
+dbusmenu_menuitem_get_parent
+dbusmenu_menuitem_set_parent
+dbusmenu_menuitem_unparent
<SUBSECTION Standard>
DBUSMENU_MENUITEM
DBUSMENU_IS_MENUITEM
DBUSMENU_TYPE_MENUITEM
-dbusmenu_menuitem_get_type
DBUSMENU_MENUITEM_CLASS
DBUSMENU_IS_MENUITEM_CLASS
DBUSMENU_MENUITEM_GET_CLASS
+<SUBSECTION Private>
+DbusmenuMenuitemPrivate
+dbusmenu_menuitem_get_type
</SECTION>
<SECTION>
@@ -105,37 +128,30 @@ DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE
DBUSMENU_SERVER_SIGNAL_ID_UPDATE
DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED
DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE
+DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION
DBUSMENU_SERVER_PROP_DBUS_OBJECT
DBUSMENU_SERVER_PROP_ROOT_NODE
+DBUSMENU_SERVER_PROP_STATUS
+DBUSMENU_SERVER_PROP_TEXT_DIRECTION
DBUSMENU_SERVER_PROP_VERSION
DbusmenuServer
DbusmenuServerClass
dbusmenu_server_new
+dbusmenu_server_get_status
+dbusmenu_server_get_text_direction
dbusmenu_server_set_root
+dbusmenu_server_set_status
+dbusmenu_server_set_text_direction
<SUBSECTION Standard>
DBUSMENU_SERVER
DBUSMENU_IS_SERVER
DBUSMENU_TYPE_SERVER
-dbusmenu_server_get_type
DBUSMENU_SERVER_CLASS
DBUSMENU_IS_SERVER_CLASS
DBUSMENU_SERVER_GET_CLASS
-</SECTION>
-
-<SECTION>
-<FILE>client-menuitem</FILE>
-<TITLE>DbusmenuClientMenuitem</TITLE>
-DBUSMENU_CLIENT_MENUITEM_TYPE
-DbusmenuClientMenuitem
-DbusmenuClientMenuitemClass
-dbusmenu_client_menuitem_new
-<SUBSECTION Standard>
-DBUSMENU_CLIENT_MENUITEM
-DBUSMENU_IS_CLIENT_MENUITEM
-dbusmenu_client_menuitem_get_type
-DBUSMENU_CLIENT_MENUITEM_CLASS
-DBUSMENU_IS_CLIENT_MENUITEM_CLASS
-DBUSMENU_CLIENT_MENUITEM_GET_CLASS
+<SUBSECTION Private>
+DbusmenuServerPrivate
+dbusmenu_server_get_type
</SECTION>
<SECTION>
@@ -149,9 +165,29 @@ dbusmenu_menuitem_proxy_get_wrapped
DBUSMENU_MENUITEM_PROXY
DBUSMENU_IS_MENUITEM_PROXY
DBUSMENU_TYPE_MENUITEM_PROXY
-dbusmenu_menuitem_proxy_get_type
DBUSMENU_MENUITEM_PROXY_CLASS
DBUSMENU_IS_MENUITEM_PROXY_CLASS
DBUSMENU_MENUITEM_PROXY_GET_CLASS
+<SUBSECTION Private>
+DbusmenuMenuitemProxyPrivate
+dbusmenu_menuitem_proxy_get_type
+</SECTION>
+
+<SECTION>
+<FILE>types</FILE>
+<TITLE>Types</TITLE>
+DBUSMENU_TYPE_STATUS
+DBUSMENU_TYPE_TEXT_DIRECTION
+DbusmenuStatus
+DbusmenuTextDirection
+dbusmenu_status_get_nick
+dbusmenu_status_get_type
+dbusmenu_status_get_value_from_nick
+dbusmenu_text_direction_get_nick
+dbusmenu_text_direction_get_type
+dbusmenu_text_direction_get_value_from_nick
+<SUBSECTION Private>
+DbusmenuServerPrivate
+dbusmenu_server_get_type
</SECTION>
diff --git a/docs/libdbusmenu-glib/reference/tmpl/client.sgml b/docs/libdbusmenu-glib/reference/tmpl/client.sgml
new file mode 100644
index 0000000..ac87e1e
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/tmpl/client.sgml
@@ -0,0 +1,222 @@
+<!-- ##### SECTION Title ##### -->
+DbusmenuClient
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_PROP_DBUS_NAME ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_PROP_DBUS_OBJECT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_PROP_STATUS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_PROP_TEXT_DIRECTION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_TYPES_DEFAULT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_TYPES_SEPARATOR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_CLIENT_TYPES_IMAGE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### STRUCT DbusmenuClient ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT DbusmenuClientClass ##### -->
+<para>
+
+</para>
+
+@parent_class:
+@layout_updated:
+@root_changed:
+@new_menuitem:
+@item_activate:
+@event_result:
+@reserved1:
+@reserved2:
+@reserved3:
+@reserved4:
+@reserved5:
+@reserved6:
+
+<!-- ##### USER_FUNCTION DbusmenuClientTypeHandler ##### -->
+<para>
+
+</para>
+
+@newitem:
+@parent:
+@client:
+@user_data:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION DbusmenuClientTypeDestroyHandler ##### -->
+<para>
+
+</para>
+
+@client:
+@type:
+@user_data:
+
+
+<!-- ##### FUNCTION dbusmenu_client_new ##### -->
+<para>
+
+</para>
+
+@name:
+@object:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_client_get_root ##### -->
+<para>
+
+</para>
+
+@client:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_client_get_status ##### -->
+<para>
+
+</para>
+
+@client:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_client_get_text_direction ##### -->
+<para>
+
+</para>
+
+@client:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_client_add_type_handler ##### -->
+<para>
+
+</para>
+
+@client:
+@type:
+@newfunc:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_client_add_type_handler_full ##### -->
+<para>
+
+</para>
+
+@client:
+@type:
+@newfunc:
+@user_data:
+@destroy_func:
+@Returns:
+
+
diff --git a/docs/libdbusmenu-glib/reference/tmpl/libdbusmenu-glib-unused.sgml b/docs/libdbusmenu-glib/reference/tmpl/libdbusmenu-glib-unused.sgml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/tmpl/libdbusmenu-glib-unused.sgml
diff --git a/docs/libdbusmenu-glib/reference/tmpl/menuitem-proxy.sgml b/docs/libdbusmenu-glib/reference/tmpl/menuitem-proxy.sgml
new file mode 100644
index 0000000..503c293
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/tmpl/menuitem-proxy.sgml
@@ -0,0 +1,59 @@
+<!-- ##### SECTION Title ##### -->
+DbusmenuMenuitemProxy
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT DbusmenuMenuitemProxy ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT DbusmenuMenuitemProxyClass ##### -->
+<para>
+
+</para>
+
+@parent_class:
+@reserved1:
+@reserved2:
+@reserved3:
+@reserved4:
+
+<!-- ##### FUNCTION dbusmenu_menuitem_proxy_new ##### -->
+<para>
+
+</para>
+
+@mi:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_proxy_get_wrapped ##### -->
+<para>
+
+</para>
+
+@pmi:
+@Returns:
+
+
diff --git a/docs/libdbusmenu-glib/reference/tmpl/menuitem.sgml b/docs/libdbusmenu-glib/reference/tmpl/menuitem.sgml
new file mode 100644
index 0000000..c45f2c9
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/tmpl/menuitem.sgml
@@ -0,0 +1,635 @@
+<!-- ##### SECTION Title ##### -->
+DbusmenuMenuitem
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SIGNAL_EVENT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SIGNAL_REALIZED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_PROP_TYPE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_PROP_VISIBLE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_PROP_ENABLED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_PROP_LABEL ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_PROP_ICON_NAME ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_PROP_ICON_DATA ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_PROP_TOGGLE_STATE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_PROP_SHORTCUT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_TOGGLE_CHECK ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_TOGGLE_RADIO ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_ICON_NAME_BLANK ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SHORTCUT_ALT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SHORTCUT_CONTROL ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SHORTCUT_SHIFT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_MENUITEM_SHORTCUT_SUPER ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### STRUCT DbusmenuMenuitem ##### -->
+<para>
+
+</para>
+
+@parent:
+@priv:
+
+<!-- ##### USER_FUNCTION dbusmenu_menuitem_about_to_show_cb ##### -->
+<para>
+
+</para>
+
+@mi:
+@user_data:
+
+
+<!-- ##### USER_FUNCTION dbusmenu_menuitem_buildvariant_slot_t ##### -->
+<para>
+
+</para>
+
+@mi:
+@properties:
+@Returns:
+
+
+<!-- ##### STRUCT DbusmenuMenuitemClass ##### -->
+<para>
+
+</para>
+
+@parent_class:
+@property_changed:
+@item_activated:
+@child_added:
+@child_removed:
+@child_moved:
+@realized:
+@buildvariant:
+@handle_event:
+@show_to_user:
+@about_to_show:
+@event:
+@reserved1:
+@reserved2:
+@reserved3:
+@reserved4:
+@reserved5:
+
+<!-- ##### FUNCTION dbusmenu_menuitem_new ##### -->
+<para>
+
+</para>
+
+@void:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_new_with_id ##### -->
+<para>
+
+</para>
+
+@id:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_get_id ##### -->
+<para>
+
+</para>
+
+@mi:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_get_children ##### -->
+<para>
+
+</para>
+
+@mi:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_take_children ##### -->
+<para>
+
+</para>
+
+@mi:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_get_position ##### -->
+<para>
+
+</para>
+
+@mi:
+@parent:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_get_position_realized ##### -->
+<para>
+
+</para>
+
+@mi:
+@parent:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_child_append ##### -->
+<para>
+
+</para>
+
+@mi:
+@child:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_child_prepend ##### -->
+<para>
+
+</para>
+
+@mi:
+@child:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_child_delete ##### -->
+<para>
+
+</para>
+
+@mi:
+@child:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_child_add_position ##### -->
+<para>
+
+</para>
+
+@mi:
+@child:
+@position:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_child_reorder ##### -->
+<para>
+
+</para>
+
+@mi:
+@child:
+@position:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_child_find ##### -->
+<para>
+
+</para>
+
+@mi:
+@id:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_find_id ##### -->
+<para>
+
+</para>
+
+@mi:
+@id:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_set ##### -->
+<para>
+
+</para>
+
+@mi:
+@property:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_set_bool ##### -->
+<para>
+
+</para>
+
+@mi:
+@property:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_set_int ##### -->
+<para>
+
+</para>
+
+@mi:
+@property:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_set_variant ##### -->
+<para>
+
+</para>
+
+@mi:
+@property:
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_get ##### -->
+<para>
+
+</para>
+
+@mi:
+@property:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_get_bool ##### -->
+<para>
+
+</para>
+
+@mi:
+@property:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_get_int ##### -->
+<para>
+
+</para>
+
+@mi:
+@property:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_get_variant ##### -->
+<para>
+
+</para>
+
+@mi:
+@property:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_exist ##### -->
+<para>
+
+</para>
+
+@mi:
+@property:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_properties_list ##### -->
+<para>
+
+</para>
+
+@mi:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_properties_copy ##### -->
+<para>
+
+</para>
+
+@mi:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_remove ##### -->
+<para>
+
+</para>
+
+@mi:
+@property:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_set_root ##### -->
+<para>
+
+</para>
+
+@mi:
+@root:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_get_root ##### -->
+<para>
+
+</para>
+
+@mi:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_foreach ##### -->
+<para>
+
+</para>
+
+@mi:
+@func:
+@data:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_handle_event ##### -->
+<para>
+
+</para>
+
+@mi:
+@name:
+@variant:
+@timestamp:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_send_about_to_show ##### -->
+<para>
+
+</para>
+
+@mi:
+@cb:
+@cb_data:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_show_to_user ##### -->
+<para>
+
+</para>
+
+@mi:
+@timestamp:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_get_parent ##### -->
+<para>
+
+</para>
+
+@mi:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_set_parent ##### -->
+<para>
+
+</para>
+
+@mi:
+@parent:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_unparent ##### -->
+<para>
+
+</para>
+
+@mi:
+@Returns:
+
+
diff --git a/docs/libdbusmenu-glib/reference/tmpl/server.sgml b/docs/libdbusmenu-glib/reference/tmpl/server.sgml
new file mode 100644
index 0000000..ca9c51e
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/tmpl/server.sgml
@@ -0,0 +1,171 @@
+<!-- ##### SECTION Title ##### -->
+DbusmenuServer
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### MACRO DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_SERVER_SIGNAL_ID_UPDATE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_SERVER_PROP_DBUS_OBJECT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_SERVER_PROP_ROOT_NODE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_SERVER_PROP_STATUS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_SERVER_PROP_TEXT_DIRECTION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_SERVER_PROP_VERSION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### STRUCT DbusmenuServer ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT DbusmenuServerClass ##### -->
+<para>
+
+</para>
+
+@parent_class:
+@id_prop_update:
+@id_update:
+@layout_updated:
+@item_activation:
+@reserved1:
+@reserved2:
+@reserved3:
+@reserved4:
+@reserved5:
+@reserved6:
+
+<!-- ##### FUNCTION dbusmenu_server_new ##### -->
+<para>
+
+</para>
+
+@object:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_server_get_status ##### -->
+<para>
+
+</para>
+
+@server:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_server_get_text_direction ##### -->
+<para>
+
+</para>
+
+@server:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_server_set_root ##### -->
+<para>
+
+</para>
+
+@self:
+@root:
+
+
+<!-- ##### FUNCTION dbusmenu_server_set_status ##### -->
+<para>
+
+</para>
+
+@server:
+@status:
+
+
+<!-- ##### FUNCTION dbusmenu_server_set_text_direction ##### -->
+<para>
+
+</para>
+
+@server:
+@dir:
+
+
diff --git a/docs/libdbusmenu-glib/reference/tmpl/types.sgml b/docs/libdbusmenu-glib/reference/tmpl/types.sgml
new file mode 100644
index 0000000..8a5e419
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/tmpl/types.sgml
@@ -0,0 +1,109 @@
+<!-- ##### SECTION Title ##### -->
+Types
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### MACRO DBUSMENU_TYPE_STATUS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DBUSMENU_TYPE_TEXT_DIRECTION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### ENUM DbusmenuStatus ##### -->
+<para>
+
+</para>
+
+@DBUSMENU_STATUS_NORMAL:
+@DBUSMENU_STATUS_NOTICE:
+
+<!-- ##### ENUM DbusmenuTextDirection ##### -->
+<para>
+
+</para>
+
+@DBUSMENU_TEXT_DIRECTION_NONE:
+@DBUSMENU_TEXT_DIRECTION_LTR:
+@DBUSMENU_TEXT_DIRECTION_RTL:
+
+<!-- ##### FUNCTION dbusmenu_status_get_nick ##### -->
+<para>
+
+</para>
+
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_status_get_type ##### -->
+<para>
+
+</para>
+
+@void:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_status_get_value_from_nick ##### -->
+<para>
+
+</para>
+
+@nick:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_text_direction_get_nick ##### -->
+<para>
+
+</para>
+
+@value:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_text_direction_get_type ##### -->
+<para>
+
+</para>
+
+@void:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_text_direction_get_value_from_nick ##### -->
+<para>
+
+</para>
+
+@nick:
+@Returns:
+
+
diff --git a/docs/libdbusmenu-glib/reference/version.xml b/docs/libdbusmenu-glib/reference/version.xml
index 9c786fa..85ea6ea 100644
--- a/docs/libdbusmenu-glib/reference/version.xml
+++ b/docs/libdbusmenu-glib/reference/version.xml
@@ -1 +1 @@
-0.3.98
+0.3.99
diff --git a/docs/libdbusmenu-glib/reference/xml/annotation-glossary.xml b/docs/libdbusmenu-glib/reference/xml/annotation-glossary.xml
new file mode 100644
index 0000000..1e38c0d
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/xml/annotation-glossary.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+
+<glossary id="annotation-glossary">
+ <title>Annotation Glossary</title>
+<glossdiv><title>A</title>
+ <glossentry>
+ <glossterm><anchor id="annotation-glossterm-allow-none"/>allow-none</glossterm>
+ <glossdef>
+ <para>NULL is ok, both for passing and for returning.</para>
+ </glossdef>
+ </glossentry>
+</glossdiv>
+<glossdiv><title>E</title>
+ <glossentry>
+ <glossterm><anchor id="annotation-glossterm-element-type"/>element-type</glossterm>
+ <glossdef>
+ <para>Generics and defining elements of containers and arrays.</para>
+ </glossdef>
+ </glossentry>
+</glossdiv>
+<glossdiv><title>T</title>
+ <glossentry>
+ <glossterm><anchor id="annotation-glossterm-transfer container"/>transfer container</glossterm>
+ <glossdef>
+ <para>Free data container after the code is done.</para>
+ </glossdef>
+ </glossentry>
+</glossdiv>
+<glossdiv><title>I</title>
+ <glossentry>
+ <glossterm><anchor id="annotation-glossterm-in"/>in</glossterm>
+ <glossdef>
+ <para>Parameter for input. Default is <acronym>transfer none</acronym>.</para>
+ </glossdef>
+ </glossentry>
+</glossdiv>
+<glossdiv><title>T</title>
+ <glossentry>
+ <glossterm><anchor id="annotation-glossterm-transfer full"/>transfer full</glossterm>
+ <glossdef>
+ <para>Free data after the code is done.</para>
+ </glossdef>
+ </glossentry>
+</glossdiv>
+<glossdiv><title>C</title>
+ <glossentry>
+ <glossterm><anchor id="annotation-glossterm-closure"/>closure</glossterm>
+ <glossdef>
+ <para>This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.</para>
+ </glossdef>
+ </glossentry>
+</glossdiv>
+<glossdiv><title>T</title>
+ <glossentry>
+ <glossterm><anchor id="annotation-glossterm-transfer none"/>transfer none</glossterm>
+ <glossdef>
+ <para>Don't free data after the code is done.</para>
+ </glossdef>
+ </glossentry>
+</glossdiv>
+</glossary>
diff --git a/docs/libdbusmenu-glib/reference/xml/api-index-deprecated.xml b/docs/libdbusmenu-glib/reference/xml/api-index-deprecated.xml
new file mode 100644
index 0000000..8ec0fe4
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/xml/api-index-deprecated.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<indexdiv>
+</indexdiv>
diff --git a/docs/libdbusmenu-glib/reference/xml/api-index-full.xml b/docs/libdbusmenu-glib/reference/xml/api-index-full.xml
new file mode 100644
index 0000000..f539fd3
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/xml/api-index-full.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0"?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<indexdiv>
+<indexdiv><title>C</title>
+<indexentry><primaryie linkends="DbusmenuClient"><link linkend="DbusmenuClient">DbusmenuClient</link>, struct in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuClientClass"><link linkend="DbusmenuClientClass">DbusmenuClientClass</link>, struct in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuClientTypeDestroyHandler"><link linkend="DbusmenuClientTypeDestroyHandler">DbusmenuClientTypeDestroyHandler</link>, user_function in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuClientTypeHandler"><link linkend="DbusmenuClientTypeHandler">DbusmenuClientTypeHandler</link>, user_function in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-client-add-type-handler"><link linkend="dbusmenu-client-add-type-handler">dbusmenu_client_add_type_handler</link>, function in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-client-add-type-handler-full"><link linkend="dbusmenu-client-add-type-handler-full">dbusmenu_client_add_type_handler_full</link>, function in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-client-get-root"><link linkend="dbusmenu-client-get-root">dbusmenu_client_get_root</link>, function in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-client-get-status"><link linkend="dbusmenu-client-get-status">dbusmenu_client_get_status</link>, function in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-client-get-text-direction"><link linkend="dbusmenu-client-get-text-direction">dbusmenu_client_get_text_direction</link>, function in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-client-new"><link linkend="dbusmenu-client-new">dbusmenu_client_new</link>, function in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS"><link linkend="DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS">DBUSMENU_CLIENT_PROP_DBUS_NAME</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS"><link linkend="DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS">DBUSMENU_CLIENT_PROP_DBUS_OBJECT</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-PROP-STATUS:CAPS"><link linkend="DBUSMENU-CLIENT-PROP-STATUS:CAPS">DBUSMENU_CLIENT_PROP_STATUS</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS"><link linkend="DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS">DBUSMENU_CLIENT_PROP_TEXT_DIRECTION</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS"><link linkend="DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS">DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS"><link linkend="DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS">DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS"><link linkend="DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS">DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS"><link linkend="DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS">DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS"><link linkend="DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS">DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS"><link linkend="DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS">DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS"><link linkend="DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS">DBUSMENU_CLIENT_TYPES_DEFAULT</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-TYPES-IMAGE:CAPS"><link linkend="DBUSMENU-CLIENT-TYPES-IMAGE:CAPS">DBUSMENU_CLIENT_TYPES_IMAGE</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS"><link linkend="DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS">DBUSMENU_CLIENT_TYPES_SEPARATOR</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuClient">DbusmenuClient</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>M</title>
+<indexentry><primaryie linkends="DbusmenuMenuitem"><link linkend="DbusmenuMenuitem">DbusmenuMenuitem</link>, struct in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuMenuitemClass"><link linkend="DbusmenuMenuitemClass">DbusmenuMenuitemClass</link>, struct in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuMenuitemProxy"><link linkend="DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</link>, struct in <link linkend="libdbusmenu-glib-DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuMenuitemProxyClass"><link linkend="DbusmenuMenuitemProxyClass">DbusmenuMenuitemProxyClass</link>, struct in <link linkend="libdbusmenu-glib-DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-about-to-show-cb"><link linkend="dbusmenu-menuitem-about-to-show-cb">dbusmenu_menuitem_about_to_show_cb</link>, user_function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-buildvariant-slot-t"><link linkend="dbusmenu-menuitem-buildvariant-slot-t">dbusmenu_menuitem_buildvariant_slot_t</link>, user_function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-child-add-position"><link linkend="dbusmenu-menuitem-child-add-position">dbusmenu_menuitem_child_add_position</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-child-append"><link linkend="dbusmenu-menuitem-child-append">dbusmenu_menuitem_child_append</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-child-delete"><link linkend="dbusmenu-menuitem-child-delete">dbusmenu_menuitem_child_delete</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS"><link linkend="DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS">DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-child-find"><link linkend="dbusmenu-menuitem-child-find">dbusmenu_menuitem_child_find</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-child-prepend"><link linkend="dbusmenu-menuitem-child-prepend">dbusmenu_menuitem_child_prepend</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-child-reorder"><link linkend="dbusmenu-menuitem-child-reorder">dbusmenu_menuitem_child_reorder</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-find-id"><link linkend="dbusmenu-menuitem-find-id">dbusmenu_menuitem_find_id</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-foreach"><link linkend="dbusmenu-menuitem-foreach">dbusmenu_menuitem_foreach</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-get-children"><link linkend="dbusmenu-menuitem-get-children">dbusmenu_menuitem_get_children</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-get-id"><link linkend="dbusmenu-menuitem-get-id">dbusmenu_menuitem_get_id</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-get-parent"><link linkend="dbusmenu-menuitem-get-parent">dbusmenu_menuitem_get_parent</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-get-position"><link linkend="dbusmenu-menuitem-get-position">dbusmenu_menuitem_get_position</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-get-position-realized"><link linkend="dbusmenu-menuitem-get-position-realized">dbusmenu_menuitem_get_position_realized</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-get-root"><link linkend="dbusmenu-menuitem-get-root">dbusmenu_menuitem_get_root</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-handle-event"><link linkend="dbusmenu-menuitem-handle-event">dbusmenu_menuitem_handle_event</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS"><link linkend="DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS">DBUSMENU_MENUITEM_ICON_NAME_BLANK</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-new"><link linkend="dbusmenu-menuitem-new">dbusmenu_menuitem_new</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-new-with-id"><link linkend="dbusmenu-menuitem-new-with-id">dbusmenu_menuitem_new_with_id</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-properties-copy"><link linkend="dbusmenu-menuitem-properties-copy">dbusmenu_menuitem_properties_copy</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-properties-list"><link linkend="dbusmenu-menuitem-properties-list">dbusmenu_menuitem_properties_list</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-exist"><link linkend="dbusmenu-menuitem-property-exist">dbusmenu_menuitem_property_exist</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-get"><link linkend="dbusmenu-menuitem-property-get">dbusmenu_menuitem_property_get</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-get-bool"><link linkend="dbusmenu-menuitem-property-get-bool">dbusmenu_menuitem_property_get_bool</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-get-int"><link linkend="dbusmenu-menuitem-property-get-int">dbusmenu_menuitem_property_get_int</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-get-variant"><link linkend="dbusmenu-menuitem-property-get-variant">dbusmenu_menuitem_property_get_variant</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-remove"><link linkend="dbusmenu-menuitem-property-remove">dbusmenu_menuitem_property_remove</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-set"><link linkend="dbusmenu-menuitem-property-set">dbusmenu_menuitem_property_set</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-set-bool"><link linkend="dbusmenu-menuitem-property-set-bool">dbusmenu_menuitem_property_set_bool</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-set-int"><link linkend="dbusmenu-menuitem-property-set-int">dbusmenu_menuitem_property_set_int</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-set-variant"><link linkend="dbusmenu-menuitem-property-set-variant">dbusmenu_menuitem_property_set_variant</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS"><link linkend="DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS">DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-PROP-ENABLED:CAPS"><link linkend="DBUSMENU-MENUITEM-PROP-ENABLED:CAPS">DBUSMENU_MENUITEM_PROP_ENABLED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS"><link linkend="DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS">DBUSMENU_MENUITEM_PROP_ICON_DATA</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS"><link linkend="DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS">DBUSMENU_MENUITEM_PROP_ICON_NAME</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-PROP-LABEL:CAPS"><link linkend="DBUSMENU-MENUITEM-PROP-LABEL:CAPS">DBUSMENU_MENUITEM_PROP_LABEL</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS"><link linkend="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS">DBUSMENU_MENUITEM_PROP_SHORTCUT</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS"><link linkend="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS">DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS"><link linkend="DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS">DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-PROP-TYPE:CAPS"><link linkend="DBUSMENU-MENUITEM-PROP-TYPE:CAPS">DBUSMENU_MENUITEM_PROP_TYPE</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS"><link linkend="DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS">DBUSMENU_MENUITEM_PROP_VISIBLE</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-proxy-get-wrapped"><link linkend="dbusmenu-menuitem-proxy-get-wrapped">dbusmenu_menuitem_proxy_get_wrapped</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-proxy-new"><link linkend="dbusmenu-menuitem-proxy-new">dbusmenu_menuitem_proxy_new</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-send-about-to-show"><link linkend="dbusmenu-menuitem-send-about-to-show">dbusmenu_menuitem_send_about_to_show</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-set-parent"><link linkend="dbusmenu-menuitem-set-parent">dbusmenu_menuitem_set_parent</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-set-root"><link linkend="dbusmenu-menuitem-set-root">dbusmenu_menuitem_set_root</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS"><link linkend="DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS">DBUSMENU_MENUITEM_SHORTCUT_ALT</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS"><link linkend="DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS">DBUSMENU_MENUITEM_SHORTCUT_CONTROL</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS"><link linkend="DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS">DBUSMENU_MENUITEM_SHORTCUT_SHIFT</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS"><link linkend="DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS">DBUSMENU_MENUITEM_SHORTCUT_SUPER</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-show-to-user"><link linkend="dbusmenu-menuitem-show-to-user">dbusmenu_menuitem_show_to_user</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS"><link linkend="DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS">DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS"><link linkend="DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS">DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS"><link linkend="DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS">DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS"><link linkend="DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS">DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS"><link linkend="DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS">DBUSMENU_MENUITEM_SIGNAL_EVENT</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS"><link linkend="DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS">DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS"><link linkend="DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS">DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS"><link linkend="DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS">DBUSMENU_MENUITEM_SIGNAL_REALIZED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS"><link linkend="DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS">DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS"><link linkend="DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS">DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-take-children"><link linkend="dbusmenu-menuitem-take-children">dbusmenu_menuitem_take_children</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS"><link linkend="DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS">DBUSMENU_MENUITEM_TOGGLE_CHECK</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS"><link linkend="DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS">DBUSMENU_MENUITEM_TOGGLE_RADIO</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS"><link linkend="DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS">DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS"><link linkend="DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS">DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS"><link linkend="DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS">DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-unparent"><link linkend="dbusmenu-menuitem-unparent">dbusmenu_menuitem_unparent</link>, function in <link linkend="libdbusmenu-glib-DbusmenuMenuitem">DbusmenuMenuitem</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="DbusmenuServer"><link linkend="DbusmenuServer">DbusmenuServer</link>, struct in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuServerClass"><link linkend="DbusmenuServerClass">DbusmenuServerClass</link>, struct in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-server-get-status"><link linkend="dbusmenu-server-get-status">dbusmenu_server_get_status</link>, function in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-server-get-text-direction"><link linkend="dbusmenu-server-get-text-direction">dbusmenu_server_get_text_direction</link>, function in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-server-new"><link linkend="dbusmenu-server-new">dbusmenu_server_new</link>, function in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS"><link linkend="DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS">DBUSMENU_SERVER_PROP_DBUS_OBJECT</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS"><link linkend="DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS">DBUSMENU_SERVER_PROP_ROOT_NODE</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-SERVER-PROP-STATUS:CAPS"><link linkend="DBUSMENU-SERVER-PROP-STATUS:CAPS">DBUSMENU_SERVER_PROP_STATUS</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS"><link linkend="DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS">DBUSMENU_SERVER_PROP_TEXT_DIRECTION</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-SERVER-PROP-VERSION:CAPS"><link linkend="DBUSMENU-SERVER-PROP-VERSION:CAPS">DBUSMENU_SERVER_PROP_VERSION</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-server-set-root"><link linkend="dbusmenu-server-set-root">dbusmenu_server_set_root</link>, function in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-server-set-status"><link linkend="dbusmenu-server-set-status">dbusmenu_server_set_status</link>, function in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-server-set-text-direction"><link linkend="dbusmenu-server-set-text-direction">dbusmenu_server_set_text_direction</link>, function in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS"><link linkend="DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS">DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS"><link linkend="DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS">DBUSMENU_SERVER_SIGNAL_ID_UPDATE</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS"><link linkend="DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS">DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS"><link linkend="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS">DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS"><link linkend="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS">DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED</link>, macro in <link linkend="libdbusmenu-glib-DbusmenuServer">DbusmenuServer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuStatus"><link linkend="DbusmenuStatus">DbusmenuStatus</link>, enum in <link linkend="libdbusmenu-glib-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-status-get-nick"><link linkend="dbusmenu-status-get-nick">dbusmenu_status_get_nick</link>, function in <link linkend="libdbusmenu-glib-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-status-get-type"><link linkend="dbusmenu-status-get-type">dbusmenu_status_get_type</link>, function in <link linkend="libdbusmenu-glib-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-status-get-value-from-nick"><link linkend="dbusmenu-status-get-value-from-nick">dbusmenu_status_get_value_from_nick</link>, function in <link linkend="libdbusmenu-glib-Types">Types</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>T</title>
+<indexentry><primaryie linkends="DbusmenuTextDirection"><link linkend="DbusmenuTextDirection">DbusmenuTextDirection</link>, enum in <link linkend="libdbusmenu-glib-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-text-direction-get-nick"><link linkend="dbusmenu-text-direction-get-nick">dbusmenu_text_direction_get_nick</link>, function in <link linkend="libdbusmenu-glib-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-text-direction-get-type"><link linkend="dbusmenu-text-direction-get-type">dbusmenu_text_direction_get_type</link>, function in <link linkend="libdbusmenu-glib-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-text-direction-get-value-from-nick"><link linkend="dbusmenu-text-direction-get-value-from-nick">dbusmenu_text_direction_get_value_from_nick</link>, function in <link linkend="libdbusmenu-glib-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-TYPE-STATUS:CAPS"><link linkend="DBUSMENU-TYPE-STATUS:CAPS">DBUSMENU_TYPE_STATUS</link>, macro in <link linkend="libdbusmenu-glib-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-TYPE-TEXT-DIRECTION:CAPS"><link linkend="DBUSMENU-TYPE-TEXT-DIRECTION:CAPS">DBUSMENU_TYPE_TEXT_DIRECTION</link>, macro in <link linkend="libdbusmenu-glib-Types">Types</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/docs/libdbusmenu-glib/reference/xml/client.xml b/docs/libdbusmenu-glib/reference/xml/client.xml
new file mode 100644
index 0000000..0ddb004
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/xml/client.xml
@@ -0,0 +1,446 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<refentry id="libdbusmenu-glib-DbusmenuClient">
+<refmeta>
+<refentrytitle role="top_of_page" id="libdbusmenu-glib-DbusmenuClient.top_of_page">DbusmenuClient</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>
+ LIBDBUSMENU-GLIB Library
+</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>DbusmenuClient</refname>
+<refpurpose>The catcher of all the server traffic</refpurpose>
+</refnamediv>
+<refsect1 id="libdbusmenu-glib-DbusmenuClient.stability-level">
+<title>Stability Level</title>
+Unstable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv id="libdbusmenu-glib-DbusmenuClient.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#include &lt;libdbusmenu-glib/client.h&gt;
+
+#define <link linkend="DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS">DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED</link>
+#define <link linkend="DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS">DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED</link>
+#define <link linkend="DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS">DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM</link>
+#define <link linkend="DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS">DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT</link>
+#define <link linkend="DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS">DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE</link>
+#define <link linkend="DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS">DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED</link>
+#define <link linkend="DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS">DBUSMENU_CLIENT_PROP_DBUS_NAME</link>
+#define <link linkend="DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS">DBUSMENU_CLIENT_PROP_DBUS_OBJECT</link>
+#define <link linkend="DBUSMENU-CLIENT-PROP-STATUS:CAPS">DBUSMENU_CLIENT_PROP_STATUS</link>
+#define <link linkend="DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS">DBUSMENU_CLIENT_PROP_TEXT_DIRECTION</link>
+#define <link linkend="DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS">DBUSMENU_CLIENT_TYPES_DEFAULT</link>
+#define <link linkend="DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS">DBUSMENU_CLIENT_TYPES_SEPARATOR</link>
+#define <link linkend="DBUSMENU-CLIENT-TYPES-IMAGE:CAPS">DBUSMENU_CLIENT_TYPES_IMAGE</link>
+ <link linkend="DbusmenuClient">DbusmenuClient</link>;
+struct <link linkend="DbusmenuClientClass">DbusmenuClientClass</link>;
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> (<link linkend="DbusmenuClientTypeHandler">*DbusmenuClientTypeHandler</link>) (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *newitem</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *parent</parameter>,
+ <parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> (<link linkend="DbusmenuClientTypeDestroyHandler">*DbusmenuClientTypeDestroyHandler</link>) (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *type</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);
+<link linkend="DbusmenuClient"><returnvalue>DbusmenuClient</returnvalue></link> * <link linkend="dbusmenu-client-new">dbusmenu_client_new</link> (<parameter>const <link linkend="gchar"><type>gchar</type></link> *name</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *object</parameter>);
+<link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * <link linkend="dbusmenu-client-get-root">dbusmenu_client_get_root</link> (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>);
+<link linkend="DbusmenuStatus"><returnvalue>DbusmenuStatus</returnvalue></link> <link linkend="dbusmenu-client-get-status">dbusmenu_client_get_status</link> (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>);
+<link linkend="DbusmenuTextDirection"><returnvalue>DbusmenuTextDirection</returnvalue></link> <link linkend="dbusmenu-client-get-text-direction">dbusmenu_client_get_text_direction</link>
+ (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-client-add-type-handler">dbusmenu_client_add_type_handler</link> (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *type</parameter>,
+ <parameter><link linkend="DbusmenuClientTypeHandler"><type>DbusmenuClientTypeHandler</type></link> newfunc</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-client-add-type-handler-full">dbusmenu_client_add_type_handler_full</link>
+ (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *type</parameter>,
+ <parameter><link linkend="DbusmenuClientTypeHandler"><type>DbusmenuClientTypeHandler</type></link> newfunc</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>,
+ <parameter><link linkend="DbusmenuClientTypeDestroyHandler"><type>DbusmenuClientTypeDestroyHandler</type></link> destroy_func</parameter>);
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1 id="libdbusmenu-glib-DbusmenuClient.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+The client exists as a mirror to the server. For most folks
+ all they will do with a client is set it up to connect to
+ a server and then watch as the menu items on their side
+ of the bus change. This is all they should need to know about
+ the client, that it magically makes their menuitems dance.
+</para>
+<para>
+ It does this by setting up signal watchers and adjusting
+ the menuitems appropriately. Most users should watch the
+ menu items and the signal <link linkend="DbusmenuClient-layout-changed"><type>"layout-changed"</type></link> for
+ larger events so that they can be optimized. It is possible
+ with that signal that even the root node would change. If
+ that doesn't happen the normal signals on the individual
+ nodes should be enough for most users.
+</para>
+</refsect1>
+<refsect1 id="libdbusmenu-glib-DbusmenuClient.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED</title>
+<indexterm zone="DBUSMENU-CLIENT-SIGNAL-LAYOUT-UPDATED:CAPS"><primary>DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED "layout-updated"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuClient-layout-updated"><type>"layout-updated"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED</title>
+<indexterm zone="DBUSMENU-CLIENT-SIGNAL-ROOT-CHANGED:CAPS"><primary>DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED "root-changed"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuClient-root-changed"><type>"root-changed"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM</title>
+<indexterm zone="DBUSMENU-CLIENT-SIGNAL-NEW-MENUITEM:CAPS"><primary>DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM "new-menuitem"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuClient-new-menuitem"><type>"new-menuitem"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT</title>
+<indexterm zone="DBUSMENU-CLIENT-SIGNAL-EVENT-RESULT:CAPS"><primary>DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT "event-result"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuClient-event-result"><type>"event-result"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE</title>
+<indexterm zone="DBUSMENU-CLIENT-SIGNAL-ITEM-ACTIVATE:CAPS"><primary>DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE "item-activate"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuClient-item-activate"><type>"item-activate"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED</title>
+<indexterm zone="DBUSMENU-CLIENT-SIGNAL-TEXT-DIRECTION-CHANGED:CAPS"><primary>DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED "text-direction-changed"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuClient-text-direction-changed"><type>"text-direction-changed"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_PROP_DBUS_NAME</title>
+<indexterm zone="DBUSMENU-CLIENT-PROP-DBUS-NAME:CAPS"><primary>DBUSMENU_CLIENT_PROP_DBUS_NAME</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_PROP_DBUS_NAME "dbus-name"
+</programlisting>
+<para>
+String to access property <link linkend="DbusmenuClient--dbus-name"><type>"dbus-name"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_PROP_DBUS_OBJECT</title>
+<indexterm zone="DBUSMENU-CLIENT-PROP-DBUS-OBJECT:CAPS"><primary>DBUSMENU_CLIENT_PROP_DBUS_OBJECT</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_PROP_DBUS_OBJECT "dbus-object"
+</programlisting>
+<para>
+String to access property <link linkend="DbusmenuClient--dbus-object"><type>"dbus-object"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-PROP-STATUS:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_PROP_STATUS</title>
+<indexterm zone="DBUSMENU-CLIENT-PROP-STATUS:CAPS"><primary>DBUSMENU_CLIENT_PROP_STATUS</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_PROP_STATUS "status"
+</programlisting>
+<para>
+String to access property <link linkend="DbusmenuClient--status"><type>"status"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_PROP_TEXT_DIRECTION</title>
+<indexterm zone="DBUSMENU-CLIENT-PROP-TEXT-DIRECTION:CAPS"><primary>DBUSMENU_CLIENT_PROP_TEXT_DIRECTION</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_PROP_TEXT_DIRECTION "text-direction"
+</programlisting>
+<para>
+String to access property <link linkend="DbusmenuClient--text-direction"><type>"text-direction"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_TYPES_DEFAULT</title>
+<indexterm zone="DBUSMENU-CLIENT-TYPES-DEFAULT:CAPS"><primary>DBUSMENU_CLIENT_TYPES_DEFAULT</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_TYPES_DEFAULT "standard"
+</programlisting>
+<para>
+Used to set the 'type' property on a menu item to create
+a standard menu item.
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_TYPES_SEPARATOR</title>
+<indexterm zone="DBUSMENU-CLIENT-TYPES-SEPARATOR:CAPS"><primary>DBUSMENU_CLIENT_TYPES_SEPARATOR</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_TYPES_SEPARATOR "separator"
+</programlisting>
+<para>
+Used to set the 'type' property on a menu item to create
+a separator menu item.
+</para></refsect2>
+<refsect2 id="DBUSMENU-CLIENT-TYPES-IMAGE:CAPS" role="macro">
+<title>DBUSMENU_CLIENT_TYPES_IMAGE</title>
+<indexterm zone="DBUSMENU-CLIENT-TYPES-IMAGE:CAPS"><primary>DBUSMENU_CLIENT_TYPES_IMAGE</primary></indexterm>
+<programlisting>#define DBUSMENU_CLIENT_TYPES_IMAGE "standard"
+</programlisting>
+<para>
+Used to set the 'type' property on a menu item to create
+an image menu item. Deprecated as standard menu items now
+support images as well.
+</para></refsect2>
+<refsect2 id="DbusmenuClient" role="struct">
+<title>DbusmenuClient</title>
+<indexterm zone="DbusmenuClient"><primary>DbusmenuClient</primary></indexterm>
+<programlisting>typedef struct _DbusmenuClient DbusmenuClient;</programlisting>
+<para>
+The client for a <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> creating a shared
+ object set of <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> objects.
+</para></refsect2>
+<refsect2 id="DbusmenuClientClass" role="struct">
+<title>struct DbusmenuClientClass</title>
+<indexterm zone="DbusmenuClientClass"><primary>DbusmenuClientClass</primary></indexterm>
+<programlisting>struct DbusmenuClientClass {
+ GObjectClass parent_class;
+
+ void (*layout_updated)(void);
+ void (*root_changed) (DbusmenuMenuitem * newroot);
+ void (*new_menuitem) (DbusmenuMenuitem * newitem);
+ void (*item_activate) (DbusmenuMenuitem * item, guint timestamp);
+ void (*event_result) (DbusmenuMenuitem * item, gchar * event, GVariant * data, guint timestamp, GError * error);
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+ void (*reserved6) (void);
+};
+</programlisting>
+<para>
+A simple class that takes all of the information from a
+ <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> over DBus and makes the same set of
+ <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> objects appear on the other side.
+</para><variablelist role="struct">
+<varlistentry><term><link linkend="GObjectClass"><type>GObjectClass</type></link>&#160;<structfield id="DbusmenuClientClass.parent-class">parent_class</structfield>;</term>
+<listitem><simpara><link linkend="GObjectClass"><type>GObjectClass</type></link></simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.layout-updated">layout_updated</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuClient-layout-updated"><type>"layout-updated"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.root-changed">root_changed</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuClient-root-changed"><type>"root-changed"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.new-menuitem">new_menuitem</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuClient-new-menuitem"><type>"new-menuitem"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.item-activate">item_activate</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuClient-item-activate"><type>"item-activate"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.event-result">event_result</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuClient-event-error"><type>"event-error"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.reserved1">reserved1</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.reserved2">reserved2</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.reserved3">reserved3</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.reserved4">reserved4</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.reserved5">reserved5</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuClientClass.reserved6">reserved6</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="DbusmenuClientTypeHandler" role="function">
+<title>DbusmenuClientTypeHandler ()</title>
+<indexterm zone="DbusmenuClientTypeHandler"><primary>DbusmenuClientTypeHandler</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> (*DbusmenuClientTypeHandler) (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *newitem</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *parent</parameter>,
+ <parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);</programlisting>
+<para>
+The type handler is called when a dbusmenu item is created
+ with a matching type as setup in <link linkend="dbusmenu-client-add-type-handler"><type>dbusmenu_client_add_type_handler</type></link>
+</para><variablelist role="params">
+<varlistentry><term><parameter>newitem</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> that was created</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter>&#160;:</term>
+<listitem><simpara>The parent of <parameter>newitem</parameter> or <link linkend="NULL:CAPS"><type>NULL</type></link> if none</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara>A pointer to the <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link></simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter>&#160;:</term>
+<listitem><simpara>The data you gave us</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="TRUE:CAPS"><type>TRUE</type></link> if the type has been handled. <link linkend="FALSE:CAPS"><type>FALSE</type></link> if this
+function was somehow unable to handle it.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="DbusmenuClientTypeDestroyHandler" role="function">
+<title>DbusmenuClientTypeDestroyHandler ()</title>
+<indexterm zone="DbusmenuClientTypeDestroyHandler"><primary>DbusmenuClientTypeDestroyHandler</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> (*DbusmenuClientTypeDestroyHandler) (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *type</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);</programlisting>
+<para>
+This handler is called when the type becomes unregistered by the
+ client. This is usally caused by the <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> being destroyed
+ and should free memory or unref objects in <parameter>user_data</parameter>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara>A pointer to the <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link></simpara></listitem></varlistentry>
+<varlistentry><term><parameter>type</parameter>&#160;:</term>
+<listitem><simpara>The type that this handler was registered with</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter>&#160;:</term>
+<listitem><simpara>The data you gave us</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-client-new" role="function">
+<title>dbusmenu_client_new ()</title>
+<indexterm zone="dbusmenu-client-new"><primary>dbusmenu_client_new</primary></indexterm>
+<programlisting><link linkend="DbusmenuClient"><returnvalue>DbusmenuClient</returnvalue></link> * dbusmenu_client_new (<parameter>const <link linkend="gchar"><type>gchar</type></link> *name</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *object</parameter>);</programlisting>
+<para>
+This function creates a new client that connects to a specific
+server on DBus. That server is at a specific location sharing
+a known object. The interface is assumed by the code to be
+the DBus menu interface. The newly created client will start
+sending out events as it syncs up with the server.
+</para><variablelist role="params">
+<varlistentry><term><parameter>name</parameter>&#160;:</term>
+<listitem><simpara>The DBus name for the server to connect to</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>object</parameter>&#160;:</term>
+<listitem><simpara>The object on the server to monitor</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A brand new <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-client-get-root" role="function">
+<title>dbusmenu_client_get_root ()</title>
+<indexterm zone="dbusmenu-client-get-root"><primary>dbusmenu_client_get_root</primary></indexterm>
+<programlisting><link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * dbusmenu_client_get_root (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>);</programlisting>
+<para>
+Grabs the root node for the specified client <parameter>client</parameter>. This
+function may block. It will block if there is currently a
+call to update the layout, it will block on that layout
+updated and then return the newly updated layout. Chances
+are that this update is in the queue for the mainloop as
+it would have been requested some time ago, but in theory
+it could block longer.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> to get the root node from</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> representing the root of
+menu on the server. If there is no server or there is
+an error receiving its layout it'll return <link linkend="NULL:CAPS"><type>NULL</type></link>. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-client-get-status" role="function">
+<title>dbusmenu_client_get_status ()</title>
+<indexterm zone="dbusmenu-client-get-status"><primary>dbusmenu_client_get_status</primary></indexterm>
+<programlisting><link linkend="DbusmenuStatus"><returnvalue>DbusmenuStatus</returnvalue></link> dbusmenu_client_get_status (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>);</programlisting>
+<para>
+Gets the recommended current status that the server
+ is exporting for the menus. In situtations where the
+ value is <link linkend="DBUSMENU-STATUS-NOTICE:CAPS"><type>DBUSMENU_STATUS_NOTICE</type></link> it is recommended that
+ the client show the menus to the user an a more noticible
+ way.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> to check the status on</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Status being exported.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-client-get-text-direction" role="function">
+<title>dbusmenu_client_get_text_direction ()</title>
+<indexterm zone="dbusmenu-client-get-text-direction"><primary>dbusmenu_client_get_text_direction</primary></indexterm>
+<programlisting><link linkend="DbusmenuTextDirection"><returnvalue>DbusmenuTextDirection</returnvalue></link> dbusmenu_client_get_text_direction
+ (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>);</programlisting>
+<para>
+Gets the text direction that the server is exporting. If
+ the server is not exporting a direction then the value
+ <link linkend="DBUSMENU-TEXT-DIRECTION-NONE:CAPS"><type>DBUSMENU_TEXT_DIRECTION_NONE</type></link> will be returned.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> to check the text direction on</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Text direction being exported.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-client-add-type-handler" role="function">
+<title>dbusmenu_client_add_type_handler ()</title>
+<indexterm zone="dbusmenu-client-add-type-handler"><primary>dbusmenu_client_add_type_handler</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_client_add_type_handler (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *type</parameter>,
+ <parameter><link linkend="DbusmenuClientTypeHandler"><type>DbusmenuClientTypeHandler</type></link> newfunc</parameter>);</programlisting>
+<para>
+This function connects into the type handling of the <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link>.
+Every new menuitem that comes in immediately gets asked for it's
+properties. When we get those properties we check the 'type'
+property and look to see if it matches a handler that is known
+by the client. If so, the <parameter>newfunc</parameter> function is executed on that
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link>. If not, then the DbusmenuClient::new-menuitem
+signal is sent.
+</para>
+<para>
+In the future the known types will be sent to the server so that it
+can make choices about the menu item types availble.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara>Client where we're getting types coming in</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>type</parameter>&#160;:</term>
+<listitem><simpara>A text string that will be matched with the 'type'
+property on incoming menu items</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>newfunc</parameter>&#160;:</term>
+<listitem><simpara>The function that will be executed with those new
+items when they come in.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>If registering the new type was successful.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-client-add-type-handler-full" role="function">
+<title>dbusmenu_client_add_type_handler_full ()</title>
+<indexterm zone="dbusmenu-client-add-type-handler-full"><primary>dbusmenu_client_add_type_handler_full</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_client_add_type_handler_full
+ (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *type</parameter>,
+ <parameter><link linkend="DbusmenuClientTypeHandler"><type>DbusmenuClientTypeHandler</type></link> newfunc</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>,
+ <parameter><link linkend="DbusmenuClientTypeDestroyHandler"><type>DbusmenuClientTypeDestroyHandler</type></link> destroy_func</parameter>);</programlisting>
+<para>
+This function connects into the type handling of the <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link>.
+Every new menuitem that comes in immediately gets asked for it's
+properties. When we get those properties we check the 'type'
+property and look to see if it matches a handler that is known
+by the client. If so, the <parameter>newfunc</parameter> function is executed on that
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link>. If not, then the DbusmenuClient::new-menuitem
+signal is sent.
+</para>
+<para>
+In the future the known types will be sent to the server so that it
+can make choices about the menu item types availble.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara>Client where we're getting types coming in</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>type</parameter>&#160;:</term>
+<listitem><simpara>A text string that will be matched with the 'type'
+property on incoming menu items</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>newfunc</parameter>&#160;:</term>
+<listitem><simpara>The function that will be executed with those new
+items when they come in.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter>&#160;:</term>
+<listitem><simpara>Data passed to <parameter>newfunc</parameter> when it is called</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>destroy_func</parameter>&#160;:</term>
+<listitem><simpara>A function that is called when the type handler is
+removed (usually on client destruction) which will free
+the resources in <parameter>user_data</parameter>.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>If registering the new type was successful.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/docs/libdbusmenu-glib/reference/xml/menuitem-proxy.xml b/docs/libdbusmenu-glib/reference/xml/menuitem-proxy.xml
new file mode 100644
index 0000000..db860d6
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/xml/menuitem-proxy.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<refentry id="libdbusmenu-glib-DbusmenuMenuitemProxy">
+<refmeta>
+<refentrytitle role="top_of_page" id="libdbusmenu-glib-DbusmenuMenuitemProxy.top_of_page">DbusmenuMenuitemProxy</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>
+ LIBDBUSMENU-GLIB Library
+</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>DbusmenuMenuitemProxy</refname>
+<refpurpose>A menuitem that proxies from another menuitem</refpurpose>
+</refnamediv>
+<refsect1 id="libdbusmenu-glib-DbusmenuMenuitemProxy.stability-level">
+<title>Stability Level</title>
+Unstable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv id="libdbusmenu-glib-DbusmenuMenuitemProxy.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#include &lt;libdbusmenu-glib/menuitem-proxy.h&gt;
+
+ <link linkend="DbusmenuMenuitemProxy">DbusmenuMenuitemProxy</link>;
+struct <link linkend="DbusmenuMenuitemProxyClass">DbusmenuMenuitemProxyClass</link>;
+<link linkend="DbusmenuMenuitemProxy"><returnvalue>DbusmenuMenuitemProxy</returnvalue></link> * <link linkend="dbusmenu-menuitem-proxy-new">dbusmenu_menuitem_proxy_new</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);
+<link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * <link linkend="dbusmenu-menuitem-proxy-get-wrapped">dbusmenu_menuitem_proxy_get_wrapped</link> (<parameter><link linkend="DbusmenuMenuitemProxy"><type>DbusmenuMenuitemProxy</type></link> *pmi</parameter>);
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1 id="libdbusmenu-glib-DbusmenuMenuitemProxy.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+This small object allows for proxying all the properties from a remote
+menuitem to a new object that can be moved around appropriately within
+the new menu structure.
+</para>
+</refsect1>
+<refsect1 id="libdbusmenu-glib-DbusmenuMenuitemProxy.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="DbusmenuMenuitemProxy" role="struct">
+<title>DbusmenuMenuitemProxy</title>
+<indexterm zone="DbusmenuMenuitemProxy"><primary>DbusmenuMenuitemProxy</primary></indexterm>
+<programlisting>typedef struct _DbusmenuMenuitemProxy DbusmenuMenuitemProxy;</programlisting>
+<para>
+Public instance data for a <link linkend="DbusmenuMenuitemProxy"><type>DbusmenuMenuitemProxy</type></link>.
+</para></refsect2>
+<refsect2 id="DbusmenuMenuitemProxyClass" role="struct">
+<title>struct DbusmenuMenuitemProxyClass</title>
+<indexterm zone="DbusmenuMenuitemProxyClass"><primary>DbusmenuMenuitemProxyClass</primary></indexterm>
+<programlisting>struct DbusmenuMenuitemProxyClass {
+ DbusmenuMenuitemClass parent_class;
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+};
+</programlisting>
+<para>
+Functions and signal slots for <link linkend="DbusmenuMenuitemProxy"><type>DbusmenuMenuitemProxy</type></link>.
+</para><variablelist role="struct">
+<varlistentry><term><link linkend="DbusmenuMenuitemClass"><type>DbusmenuMenuitemClass</type></link>&#160;<structfield id="DbusmenuMenuitemProxyClass.parent-class">parent_class</structfield>;</term>
+<listitem><simpara>The Class of <link linkend="DbusmeneMenuitem"><type>DbusmeneMenuitem</type></link></simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemProxyClass.reserved1">reserved1</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemProxyClass.reserved2">reserved2</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemProxyClass.reserved3">reserved3</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemProxyClass.reserved4">reserved4</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-proxy-new" role="function">
+<title>dbusmenu_menuitem_proxy_new ()</title>
+<indexterm zone="dbusmenu-menuitem-proxy-new"><primary>dbusmenu_menuitem_proxy_new</primary></indexterm>
+<programlisting><link linkend="DbusmenuMenuitemProxy"><returnvalue>DbusmenuMenuitemProxy</returnvalue></link> * dbusmenu_menuitem_proxy_new (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);</programlisting>
+<para>
+Builds a new <link linkend="DbusmenuMenuitemProxy"><type>DbusmenuMenuitemProxy</type></link> object that proxies
+all of the values for <parameter>mi</parameter>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to proxy</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A new <link linkend="DbusmenuMenuitemProxy"><type>DbusmenuMenuitemProxy</type></link> object.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-proxy-get-wrapped" role="function">
+<title>dbusmenu_menuitem_proxy_get_wrapped ()</title>
+<indexterm zone="dbusmenu-menuitem-proxy-get-wrapped"><primary>dbusmenu_menuitem_proxy_get_wrapped</primary></indexterm>
+<programlisting><link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * dbusmenu_menuitem_proxy_get_wrapped (<parameter><link linkend="DbusmenuMenuitemProxy"><type>DbusmenuMenuitemProxy</type></link> *pmi</parameter>);</programlisting>
+<para>
+Accesses the private variable of which <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link>
+we are doing the proxying for.
+</para><variablelist role="params">
+<varlistentry><term><parameter>pmi</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuMenuitemProxy"><type>DbusmenuMenuitemProxy</type></link> to look into</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> object or a <link linkend="NULL:CAPS"><type>NULL</type></link> if we
+don't have one or there is an error. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/docs/libdbusmenu-glib/reference/xml/menuitem.xml b/docs/libdbusmenu-glib/reference/xml/menuitem.xml
new file mode 100644
index 0000000..d4f3504
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/xml/menuitem.xml
@@ -0,0 +1,1174 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<refentry id="libdbusmenu-glib-DbusmenuMenuitem">
+<refmeta>
+<refentrytitle role="top_of_page" id="libdbusmenu-glib-DbusmenuMenuitem.top_of_page">DbusmenuMenuitem</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>
+ LIBDBUSMENU-GLIB Library
+</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>DbusmenuMenuitem</refname>
+<refpurpose>A lowlevel represenation of a menuitem</refpurpose>
+</refnamediv>
+<refsect1 id="libdbusmenu-glib-DbusmenuMenuitem.stability-level">
+<title>Stability Level</title>
+Unstable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv id="libdbusmenu-glib-DbusmenuMenuitem.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#include &lt;libdbusmenu-glib/menuitem.h&gt;
+
+#define <link linkend="DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS">DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED</link>
+#define <link linkend="DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS">DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED</link>
+#define <link linkend="DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS">DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED</link>
+#define <link linkend="DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS">DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED</link>
+#define <link linkend="DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS">DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED</link>
+#define <link linkend="DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS">DBUSMENU_MENUITEM_SIGNAL_EVENT</link>
+#define <link linkend="DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS">DBUSMENU_MENUITEM_SIGNAL_REALIZED</link>
+#define <link linkend="DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS">DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID</link>
+#define <link linkend="DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS">DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW</link>
+#define <link linkend="DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS">DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER</link>
+#define <link linkend="DBUSMENU-MENUITEM-PROP-TYPE:CAPS">DBUSMENU_MENUITEM_PROP_TYPE</link>
+#define <link linkend="DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS">DBUSMENU_MENUITEM_PROP_VISIBLE</link>
+#define <link linkend="DBUSMENU-MENUITEM-PROP-ENABLED:CAPS">DBUSMENU_MENUITEM_PROP_ENABLED</link>
+#define <link linkend="DBUSMENU-MENUITEM-PROP-LABEL:CAPS">DBUSMENU_MENUITEM_PROP_LABEL</link>
+#define <link linkend="DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS">DBUSMENU_MENUITEM_PROP_ICON_NAME</link>
+#define <link linkend="DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS">DBUSMENU_MENUITEM_PROP_ICON_DATA</link>
+#define <link linkend="DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS">DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</link>
+#define <link linkend="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS">DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</link>
+#define <link linkend="DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS">DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY</link>
+#define <link linkend="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS">DBUSMENU_MENUITEM_PROP_SHORTCUT</link>
+#define <link linkend="DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS">DBUSMENU_MENUITEM_TOGGLE_CHECK</link>
+#define <link linkend="DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS">DBUSMENU_MENUITEM_TOGGLE_RADIO</link>
+#define <link linkend="DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS">DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED</link>
+#define <link linkend="DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS">DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED</link>
+#define <link linkend="DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS">DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN</link>
+#define <link linkend="DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS">DBUSMENU_MENUITEM_ICON_NAME_BLANK</link>
+#define <link linkend="DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS">DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU</link>
+#define <link linkend="DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS">DBUSMENU_MENUITEM_SHORTCUT_ALT</link>
+#define <link linkend="DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS">DBUSMENU_MENUITEM_SHORTCUT_CONTROL</link>
+#define <link linkend="DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS">DBUSMENU_MENUITEM_SHORTCUT_SHIFT</link>
+#define <link linkend="DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS">DBUSMENU_MENUITEM_SHORTCUT_SUPER</link>
+struct <link linkend="DbusmenuMenuitem">DbusmenuMenuitem</link>;
+<link linkend="void"><returnvalue>void</returnvalue></link> (<link linkend="dbusmenu-menuitem-about-to-show-cb">*dbusmenu_menuitem_about_to_show_cb</link>)
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);
+<link linkend="GVariant"><returnvalue>GVariant</returnvalue></link> * (<link linkend="dbusmenu-menuitem-buildvariant-slot-t">*dbusmenu_menuitem_buildvariant_slot_t</link>)
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="gchar"><type>gchar</type></link> **properties</parameter>);
+struct <link linkend="DbusmenuMenuitemClass">DbusmenuMenuitemClass</link>;
+<link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * <link linkend="dbusmenu-menuitem-new">dbusmenu_menuitem_new</link> (<parameter><type>void</type></parameter>);
+<link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * <link linkend="dbusmenu-menuitem-new-with-id">dbusmenu_menuitem_new_with_id</link> (<parameter><link linkend="gint"><type>gint</type></link> id</parameter>);
+<link linkend="gint"><returnvalue>gint</returnvalue></link> <link linkend="dbusmenu-menuitem-get-id">dbusmenu_menuitem_get_id</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);
+<link linkend="GList"><returnvalue>GList</returnvalue></link> * <link linkend="dbusmenu-menuitem-get-children">dbusmenu_menuitem_get_children</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);
+<link linkend="GList"><returnvalue>GList</returnvalue></link> * <link linkend="dbusmenu-menuitem-take-children">dbusmenu_menuitem_take_children</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);
+<link linkend="guint"><returnvalue>guint</returnvalue></link> <link linkend="dbusmenu-menuitem-get-position">dbusmenu_menuitem_get_position</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *parent</parameter>);
+<link linkend="guint"><returnvalue>guint</returnvalue></link> <link linkend="dbusmenu-menuitem-get-position-realized">dbusmenu_menuitem_get_position_realized</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *parent</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-child-append">dbusmenu_menuitem_child_append</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *child</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-child-prepend">dbusmenu_menuitem_child_prepend</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *child</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-child-delete">dbusmenu_menuitem_child_delete</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *child</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-child-add-position">dbusmenu_menuitem_child_add_position</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *child</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> position</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-child-reorder">dbusmenu_menuitem_child_reorder</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *child</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> position</parameter>);
+<link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * <link linkend="dbusmenu-menuitem-child-find">dbusmenu_menuitem_child_find</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="gint"><type>gint</type></link> id</parameter>);
+<link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * <link linkend="dbusmenu-menuitem-find-id">dbusmenu_menuitem_find_id</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="gint"><type>gint</type></link> id</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-property-set">dbusmenu_menuitem_property_set</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *value</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-property-set-bool">dbusmenu_menuitem_property_set_bool</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>,
+ <parameter>const <link linkend="gboolean"><type>gboolean</type></link> value</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-property-set-int">dbusmenu_menuitem_property_set_int</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>,
+ <parameter>const <link linkend="gint"><type>gint</type></link> value</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-property-set-variant">dbusmenu_menuitem_property_set_variant</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>,
+ <parameter><link linkend="GVariant"><type>GVariant</type></link> *value</parameter>);
+const <link linkend="gchar"><returnvalue>gchar</returnvalue></link> * <link linkend="dbusmenu-menuitem-property-get">dbusmenu_menuitem_property_get</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-property-get-bool">dbusmenu_menuitem_property_get_bool</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);
+<link linkend="gint"><returnvalue>gint</returnvalue></link> <link linkend="dbusmenu-menuitem-property-get-int">dbusmenu_menuitem_property_get_int</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);
+<link linkend="GVariant"><returnvalue>GVariant</returnvalue></link> * <link linkend="dbusmenu-menuitem-property-get-variant">dbusmenu_menuitem_property_get_variant</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-property-exist">dbusmenu_menuitem_property_exist</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);
+<link linkend="GList"><returnvalue>GList</returnvalue></link> * <link linkend="dbusmenu-menuitem-properties-list">dbusmenu_menuitem_properties_list</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);
+<link linkend="GHashTable"><returnvalue>GHashTable</returnvalue></link> * <link linkend="dbusmenu-menuitem-properties-copy">dbusmenu_menuitem_properties_copy</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-menuitem-property-remove">dbusmenu_menuitem_property_remove</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-menuitem-set-root">dbusmenu_menuitem_set_root</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="gboolean"><type>gboolean</type></link> root</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-get-root">dbusmenu_menuitem_get_root</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-menuitem-foreach">dbusmenu_menuitem_foreach</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> (*func) (DbusmenuMenuitem * mi, gpointer data)</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> data</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-menuitem-handle-event">dbusmenu_menuitem_handle_event</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *name</parameter>,
+ <parameter><link linkend="GVariant"><type>GVariant</type></link> *variant</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> timestamp</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-menuitem-send-about-to-show">dbusmenu_menuitem_send_about_to_show</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> (*cb) (DbusmenuMenuitem * mi, gpointer user_data)</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> cb_data</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-menuitem-show-to-user">dbusmenu_menuitem_show_to_user</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> timestamp</parameter>);
+<link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * <link linkend="dbusmenu-menuitem-get-parent">dbusmenu_menuitem_get_parent</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-set-parent">dbusmenu_menuitem_set_parent</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *parent</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-unparent">dbusmenu_menuitem_unparent</link> (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1 id="libdbusmenu-glib-DbusmenuMenuitem.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+A <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> is the lowest level of represenation of a
+single item in a menu. It gets created on the server side
+and copied over to the client side where it gets rendered. As
+the server starts to change it, and grow it, and do all kinds
+of fun stuff that information is transfered over DBus and the
+client updates it's understanding of the object model.
+</para>
+<para>
+Most people using either the client or the server should be
+able to deal mostly with <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> objects. These
+are simple, but then they can be attached to more complex
+objects and handled appropriately.
+</para>
+</refsect1>
+<refsect1 id="libdbusmenu-glib-DbusmenuMenuitem.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED</title>
+<indexterm zone="DBUSMENU-MENUITEM-SIGNAL-PROPERTY-CHANGED:CAPS"><primary>DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED "property-changed"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-property-changed"><type>"property-changed"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED</title>
+<indexterm zone="DBUSMENU-MENUITEM-SIGNAL-ITEM-ACTIVATED:CAPS"><primary>DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED "item-activated"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-item-activated"><type>"item-activated"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED</title>
+<indexterm zone="DBUSMENU-MENUITEM-SIGNAL-CHILD-ADDED:CAPS"><primary>DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED "child-added"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-child-added"><type>"child-added"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED</title>
+<indexterm zone="DBUSMENU-MENUITEM-SIGNAL-CHILD-REMOVED:CAPS"><primary>DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED "child-removed"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-child-removed"><type>"child-removed"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED</title>
+<indexterm zone="DBUSMENU-MENUITEM-SIGNAL-CHILD-MOVED:CAPS"><primary>DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED "child-moved"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-child-moved"><type>"child-moved"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SIGNAL_EVENT</title>
+<indexterm zone="DBUSMENU-MENUITEM-SIGNAL-EVENT:CAPS"><primary>DBUSMENU_MENUITEM_SIGNAL_EVENT</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SIGNAL_EVENT "event"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-event"><type>"event"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SIGNAL_REALIZED</title>
+<indexterm zone="DBUSMENU-MENUITEM-SIGNAL-REALIZED:CAPS"><primary>DBUSMENU_MENUITEM_SIGNAL_REALIZED</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SIGNAL_REALIZED "realized"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-realized"><type>"realized"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID</title>
+<indexterm zone="DBUSMENU-MENUITEM-SIGNAL-REALIZED-ID:CAPS"><primary>DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID (g_signal_lookup(DBUSMENU_MENUITEM_SIGNAL_REALIZED, DBUSMENU_TYPE_MENUITEM))
+</programlisting>
+<para>
+ID to attach to signal <link linkend="DbusmenuServer-realized"><type>"realized"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW</title>
+<indexterm zone="DBUSMENU-MENUITEM-SIGNAL-ABOUT-TO-SHOW:CAPS"><primary>DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW "about-to-show"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-about-to-show"><type>"about-to-show"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER</title>
+<indexterm zone="DBUSMENU-MENUITEM-SIGNAL-SHOW-TO-USER:CAPS"><primary>DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER "show-to-user"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-show-to-user"><type>"show-to-user"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-PROP-TYPE:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_PROP_TYPE</title>
+<indexterm zone="DBUSMENU-MENUITEM-PROP-TYPE:CAPS"><primary>DBUSMENU_MENUITEM_PROP_TYPE</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_PROP_TYPE "type"
+</programlisting>
+<para>
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property used to represent what type of menuitem
+this object represents. Type: <link linkend="G-VARIANT-TYPE-STRING:CAPS"><type>G_VARIANT_TYPE_STRING</type></link>.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_PROP_VISIBLE</title>
+<indexterm zone="DBUSMENU-MENUITEM-PROP-VISIBLE:CAPS"><primary>DBUSMENU_MENUITEM_PROP_VISIBLE</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_PROP_VISIBLE "visible"
+</programlisting>
+<para>
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property used to represent whether the menuitem
+should be shown or not. Type: <link linkend="G-VARIANT-TYPE-BOOLEAN:CAPS"><type>G_VARIANT_TYPE_BOOLEAN</type></link>.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-PROP-ENABLED:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_PROP_ENABLED</title>
+<indexterm zone="DBUSMENU-MENUITEM-PROP-ENABLED:CAPS"><primary>DBUSMENU_MENUITEM_PROP_ENABLED</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_PROP_ENABLED "enabled"
+</programlisting>
+<para>
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property used to represent whether the menuitem
+is clickable or not. Type: <link linkend="G-VARIANT-TYPE-BOOLEAN:CAPS"><type>G_VARIANT_TYPE_BOOLEAN</type></link>.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-PROP-LABEL:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_PROP_LABEL</title>
+<indexterm zone="DBUSMENU-MENUITEM-PROP-LABEL:CAPS"><primary>DBUSMENU_MENUITEM_PROP_LABEL</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_PROP_LABEL "label"
+</programlisting>
+<para>
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property used for the text on the menu item.
+Type: <link linkend="G-VARIANT-TYPE-STRING:CAPS"><type>G_VARIANT_TYPE_STRING</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_PROP_ICON_NAME</title>
+<indexterm zone="DBUSMENU-MENUITEM-PROP-ICON-NAME:CAPS"><primary>DBUSMENU_MENUITEM_PROP_ICON_NAME</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_PROP_ICON_NAME "icon-name"
+</programlisting>
+<para>
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property that is the name of the icon under the
+Freedesktop.org icon naming spec. Type: <link linkend="G-VARIANT-TYPE-STRING:CAPS"><type>G_VARIANT_TYPE_STRING</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_PROP_ICON_DATA</title>
+<indexterm zone="DBUSMENU-MENUITEM-PROP-ICON-DATA:CAPS"><primary>DBUSMENU_MENUITEM_PROP_ICON_DATA</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_PROP_ICON_DATA "icon-data"
+</programlisting>
+<para>
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property that is the raw data of a custom icon
+used in the application. Type: <link linkend="G-VARIANT-TYPE-VARIANT:CAPS"><type>G_VARIANT_TYPE_VARIANT</type></link>
+</para>
+<para>
+It is recommended that this is not set directly but instead the
+libdbusmenu-gtk library is used with the function <link linkend="dbusmenu-menuitem-property-set-image"><function>dbusmenu_menuitem_property_set_image()</function></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</title>
+<indexterm zone="DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS"><primary>DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE "toggle-type"
+</programlisting>
+<para>
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property that says what type of toggle entry should
+be shown in the menu. Should be either <link linkend="DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS"><type>DBUSMENU_MENUITEM_TOGGLE_CHECK</type></link>
+or <link linkend="DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS"><type>DBUSMENU_MENUITEM_TOGGLE_RADIO</type></link>. Type: <link linkend="G-VARIANT-TYPE-STRING:CAPS"><type>G_VARIANT_TYPE_STRING</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</title>
+<indexterm zone="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS"><primary>DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_PROP_TOGGLE_STATE "toggle-state"
+</programlisting>
+<para>
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property that says what state a toggle entry should
+be shown as the menu. Should be either <link linkend="DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS"><type>DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED</type></link>
+<link linkend="DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS"><type>DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED</type></link> or <link linkend="DBUSMENU-MENUITEM-TOGGLE-STATUE-UNKNOWN:CAPS"><type>DBUSMENU_MENUITEM_TOGGLE_STATUE_UNKNOWN</type></link>.
+Type: <link linkend="G-VARIANT-TYPE-INT32:CAPS"><type>G_VARIANT_TYPE_INT32</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY</title>
+<indexterm zone="DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS"><primary>DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY "children-display"
+</programlisting>
+<para>
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property that tells how the children of this menuitem
+should be displayed. Most likely this will be unset or of the value
+<link linkend="DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS"><type>DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU</type></link>. Type: <link linkend="G-VARIANT-TYPE-STRING:CAPS"><type>G_VARIANT_TYPE_STRING</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_PROP_SHORTCUT</title>
+<indexterm zone="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS"><primary>DBUSMENU_MENUITEM_PROP_SHORTCUT</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_PROP_SHORTCUT "shortcut"
+</programlisting>
+<para>
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property that is the entries that represent a shortcut
+to activate the menuitem. It is an array of arrays of strings.
+Type: <link linkend="G-VARIANT-TYPE-ARRAY:CAPS"><type>G_VARIANT_TYPE_ARRAY</type></link>
+</para>
+<para>
+It is recommended that this is not set directly but instead the
+libdbusmenu-gtk library is used with the function <link linkend="dbusmenu-menuitem-property-set-shortcut"><function>dbusmenu_menuitem_property_set_shortcut()</function></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_TOGGLE_CHECK</title>
+<indexterm zone="DBUSMENU-MENUITEM-TOGGLE-CHECK:CAPS"><primary>DBUSMENU_MENUITEM_TOGGLE_CHECK</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_TOGGLE_CHECK "checkmark"
+</programlisting>
+<para>
+Used to set <link linkend="DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS"><type>DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</type></link> to be a standard
+check mark item.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_TOGGLE_RADIO</title>
+<indexterm zone="DBUSMENU-MENUITEM-TOGGLE-RADIO:CAPS"><primary>DBUSMENU_MENUITEM_TOGGLE_RADIO</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_TOGGLE_RADIO "radio"
+</programlisting>
+<para>
+Used to set <link linkend="DBUSMENU-MENUITEM-PROP-TOGGLE-TYPE:CAPS"><type>DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE</type></link> to be a standard
+radio item.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED</title>
+<indexterm zone="DBUSMENU-MENUITEM-TOGGLE-STATE-UNCHECKED:CAPS"><primary>DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED 0
+</programlisting>
+<para>
+Used to set <link linkend="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS"><type>DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</type></link> so that the menu's
+toggle item is empty.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED</title>
+<indexterm zone="DBUSMENU-MENUITEM-TOGGLE-STATE-CHECKED:CAPS"><primary>DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED 1
+</programlisting>
+<para>
+Used to set <link linkend="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS"><type>DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</type></link> so that the menu's
+toggle item is filled.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN</title>
+<indexterm zone="DBUSMENU-MENUITEM-TOGGLE-STATE-UNKNOWN:CAPS"><primary>DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN -1
+</programlisting>
+<para>
+Used to set <link linkend="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS"><type>DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</type></link> so that the menu's
+toggle item is undecided.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_ICON_NAME_BLANK</title>
+<indexterm zone="DBUSMENU-MENUITEM-ICON-NAME-BLANK:CAPS"><primary>DBUSMENU_MENUITEM_ICON_NAME_BLANK</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_ICON_NAME_BLANK "blank-icon"
+</programlisting>
+<para>
+Used to set <link linkend="DBUSMENU-MENUITEM-PROP-TOGGLE-STATE:CAPS"><type>DBUSMENU_MENUITEM_PROP_TOGGLE_STATE</type></link> so that the menu's
+toggle item is undecided.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU</title>
+<indexterm zone="DBUSMENU-MENUITEM-CHILD-DISPLAY-SUBMENU:CAPS"><primary>DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU "submenu"
+</programlisting>
+<para>
+Used in <link linkend="DBUSMENU-MENUITEM-PROP-CHILD-DISPLAY:CAPS"><type>DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY</type></link> to have the
+subitems displayed as a submenu.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SHORTCUT_ALT</title>
+<indexterm zone="DBUSMENU-MENUITEM-SHORTCUT-ALT:CAPS"><primary>DBUSMENU_MENUITEM_SHORTCUT_ALT</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SHORTCUT_ALT "Alt"
+</programlisting>
+<para>
+Used in <link linkend="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS"><type>DBUSMENU_MENUITEM_PROP_SHORTCUT</type></link> to represent the
+alternate key.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SHORTCUT_CONTROL</title>
+<indexterm zone="DBUSMENU-MENUITEM-SHORTCUT-CONTROL:CAPS"><primary>DBUSMENU_MENUITEM_SHORTCUT_CONTROL</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SHORTCUT_CONTROL "Control"
+</programlisting>
+<para>
+Used in <link linkend="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS"><type>DBUSMENU_MENUITEM_PROP_SHORTCUT</type></link> to represent the
+control key.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SHORTCUT_SHIFT</title>
+<indexterm zone="DBUSMENU-MENUITEM-SHORTCUT-SHIFT:CAPS"><primary>DBUSMENU_MENUITEM_SHORTCUT_SHIFT</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SHORTCUT_SHIFT "Shift"
+</programlisting>
+<para>
+Used in <link linkend="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS"><type>DBUSMENU_MENUITEM_PROP_SHORTCUT</type></link> to represent the
+shift key.
+</para></refsect2>
+<refsect2 id="DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS" role="macro">
+<title>DBUSMENU_MENUITEM_SHORTCUT_SUPER</title>
+<indexterm zone="DBUSMENU-MENUITEM-SHORTCUT-SUPER:CAPS"><primary>DBUSMENU_MENUITEM_SHORTCUT_SUPER</primary></indexterm>
+<programlisting>#define DBUSMENU_MENUITEM_SHORTCUT_SUPER "Super"
+</programlisting>
+<para>
+Used in <link linkend="DBUSMENU-MENUITEM-PROP-SHORTCUT:CAPS"><type>DBUSMENU_MENUITEM_PROP_SHORTCUT</type></link> to represent the
+super key.
+</para></refsect2>
+<refsect2 id="DbusmenuMenuitem" role="struct">
+<title>struct DbusmenuMenuitem</title>
+<indexterm zone="DbusmenuMenuitem"><primary>DbusmenuMenuitem</primary></indexterm>
+<programlisting>struct DbusmenuMenuitem {
+ GObject parent;
+
+ /*&lt; Private &gt;*/
+ DbusmenuMenuitemPrivate * priv;
+};
+</programlisting>
+<para>
+This is the <link linkend="GObject"><type>GObject</type></link> based object that represents a menu
+item. It gets created the same on both the client and
+the server side and libdbusmenu-glib does the work of making
+this object model appear on both sides of DBus. Simple
+really, though through updates and people coming on and off
+the bus it can lead to lots of fun complex scenarios.
+</para><variablelist role="struct">
+<varlistentry><term><link linkend="GObject"><type>GObject</type></link>&#160;<structfield id="DbusmenuMenuitem.parent">parent</structfield>;</term>
+<listitem><simpara>Parent object</simpara></listitem>
+</varlistentry>
+<varlistentry><term><link linkend="DbusmenuMenuitemPrivate"><type>DbusmenuMenuitemPrivate</type></link>&#160;*<structfield id="DbusmenuMenuitem.priv">priv</structfield>;</term>
+<listitem><simpara>Private data</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-about-to-show-cb" role="function">
+<title>dbusmenu_menuitem_about_to_show_cb ()</title>
+<indexterm zone="dbusmenu-menuitem-about-to-show-cb"><primary>dbusmenu_menuitem_about_to_show_cb</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> (*dbusmenu_menuitem_about_to_show_cb)
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);</programlisting>
+<para>
+Callback prototype for a callback that is called when the
+menu should be shown.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>Menu item that should be shown</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter>&#160;:</term>
+<listitem><simpara>Extra user data sent with the function. <emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-buildvariant-slot-t" role="function">
+<title>dbusmenu_menuitem_buildvariant_slot_t ()</title>
+<indexterm zone="dbusmenu-menuitem-buildvariant-slot-t"><primary>dbusmenu_menuitem_buildvariant_slot_t</primary></indexterm>
+<programlisting><link linkend="GVariant"><returnvalue>GVariant</returnvalue></link> * (*dbusmenu_menuitem_buildvariant_slot_t)
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="gchar"><type>gchar</type></link> **properties</parameter>);</programlisting>
+<para>
+This is the function that is called to represent this menu item
+as a variant. Should call it's own children.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>Menu item that should be built from. <emphasis role="annotation">[<acronym>in</acronym>]</emphasis></simpara></listitem></varlistentry>
+<varlistentry><term><parameter>properties</parameter>&#160;:</term>
+<listitem><simpara>A list of properties that should be the only ones in the resulting variant structure. <emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A variant representing this item and it's children. <emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="DbusmenuMenuitemClass" role="struct">
+<title>struct DbusmenuMenuitemClass</title>
+<indexterm zone="DbusmenuMenuitemClass"><primary>DbusmenuMenuitemClass</primary></indexterm>
+<programlisting>struct DbusmenuMenuitemClass {
+ GObjectClass parent_class;
+
+ /* Signals */
+ void (*property_changed) (gchar * property, GVariant * value);
+ void (*item_activated) (guint timestamp);
+ void (*child_added) (DbusmenuMenuitem * child, guint position);
+ void (*child_removed) (DbusmenuMenuitem * child);
+ void (*child_moved) (DbusmenuMenuitem * child, guint newpos, guint oldpos);
+ void (*realized) (void);
+
+ /* Virtual functions */
+ dbusmenu_menuitem_buildvariant_slot_t buildvariant;
+ void (*handle_event) (DbusmenuMenuitem * mi, const gchar * name, GVariant * variant, guint timestamp);
+ void (*send_about_to_show) (DbusmenuMenuitem * mi, void (*cb) (DbusmenuMenuitem * mi, gpointer user_data), gpointer cb_data);
+
+ void (*show_to_user) (DbusmenuMenuitem * mi, guint timestamp, gpointer cb_data);
+ gboolean (*about_to_show) (void);
+
+ void (*event) (const gchar * name, GVariant * value, guint timestamp);
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+};
+</programlisting>
+<para>
+Functions and signals that every menuitem should know something
+about.
+</para><variablelist role="struct">
+<varlistentry><term><link linkend="GObjectClass"><type>GObjectClass</type></link>&#160;<structfield id="DbusmenuMenuitemClass.parent-class">parent_class</structfield>;</term>
+<listitem><simpara>Functions and signals from our parent</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.property-changed">property_changed</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuMenuitem-property-changed"><type>"property-changed"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.item-activated">item_activated</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuMenuitem-item-activated"><type>"item-activated"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.child-added">child_added</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuMenuitem-child-added"><type>"child-added"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.child-removed">child_removed</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuMenuitem-child-removed"><type>"child-removed"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.child-moved">child_moved</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuMenuitem-child-moved"><type>"child-moved"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.realized">realized</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuMenuitem-realized"><type>"realized"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><link linkend="dbusmenu-menuitem-buildvariant-slot-t"><type>dbusmenu_menuitem_buildvariant_slot_t</type></link>&#160;<structfield id="DbusmenuMenuitemClass.buildvariant">buildvariant</structfield>;</term>
+<listitem><simpara>Virtual function that appends the strings required to represent this menu item in the menu variant.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.handle-event">handle_event</structfield>&#160;()</term>
+<listitem><simpara>This function is to override how events are handled by subclasses. Look at <link linkend="dbusmenu-menuitem-handle-event"><type>dbusmenu_menuitem_handle_event</type></link> for lots of good information.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.show-to-user">show_to_user</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuMenuitem-show-to-user"><type>"show-to-user"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.about-to-show">about_to_show</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuMenuitem-about-to-show"><type>"about-to-show"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.event">event</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbsumenuMenuitem-event"><type>"event"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.reserved1">reserved1</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.reserved2">reserved2</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.reserved3">reserved3</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.reserved4">reserved4</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuMenuitemClass.reserved5">reserved5</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-new" role="function">
+<title>dbusmenu_menuitem_new ()</title>
+<indexterm zone="dbusmenu-menuitem-new"><primary>dbusmenu_menuitem_new</primary></indexterm>
+<programlisting><link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * dbusmenu_menuitem_new (<parameter><type>void</type></parameter>);</programlisting>
+<para>
+Create a new <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> with all default values.
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A newly allocated <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link>.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-new-with-id" role="function">
+<title>dbusmenu_menuitem_new_with_id ()</title>
+<indexterm zone="dbusmenu-menuitem-new-with-id"><primary>dbusmenu_menuitem_new_with_id</primary></indexterm>
+<programlisting><link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * dbusmenu_menuitem_new_with_id (<parameter><link linkend="gint"><type>gint</type></link> id</parameter>);</programlisting>
+<para>
+This creates a blank <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> with a specific ID.
+</para><variablelist role="params">
+<varlistentry><term><parameter>id</parameter>&#160;:</term>
+<listitem><simpara>ID to use for this menuitem</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A newly allocated <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link>.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-get-id" role="function">
+<title>dbusmenu_menuitem_get_id ()</title>
+<indexterm zone="dbusmenu-menuitem-get-id"><primary>dbusmenu_menuitem_get_id</primary></indexterm>
+<programlisting><link linkend="gint"><returnvalue>gint</returnvalue></link> dbusmenu_menuitem_get_id (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);</programlisting>
+<para>
+Gets the unique ID for <parameter>mi</parameter>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to query.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The ID of the <parameter>mi</parameter>.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-get-children" role="function">
+<title>dbusmenu_menuitem_get_children ()</title>
+<indexterm zone="dbusmenu-menuitem-get-children"><primary>dbusmenu_menuitem_get_children</primary></indexterm>
+<programlisting><link linkend="GList"><returnvalue>GList</returnvalue></link> * dbusmenu_menuitem_get_children (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);</programlisting>
+<para>
+Returns simply the list of children that this menu item
+has. The list is valid until another child related function
+is called, where it might be changed.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to query.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A <link linkend="GList"><type>GList</type></link> of pointers to <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> objects. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-take-children" role="function">
+<title>dbusmenu_menuitem_take_children ()</title>
+<indexterm zone="dbusmenu-menuitem-take-children"><primary>dbusmenu_menuitem_take_children</primary></indexterm>
+<programlisting><link linkend="GList"><returnvalue>GList</returnvalue></link> * dbusmenu_menuitem_take_children (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);</programlisting>
+<para>
+While the name sounds devious that's exactly what this function
+does. It takes the list of children from the <parameter>mi</parameter> and clears the
+internal list. The calling function is now in charge of the ref's
+on the children it has taken. A lot of responsibility involved
+in taking children.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenMenuitem"><type>DbusmenMenuitem</type></link> to take the children from.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A <link linkend="GList"><type>GList</type></link> of pointers to <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> objects. <emphasis role="annotation">[<acronym>transfer full</acronym>][<acronym>element-type</acronym> Dbusmenu.Menuitem]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-get-position" role="function">
+<title>dbusmenu_menuitem_get_position ()</title>
+<indexterm zone="dbusmenu-menuitem-get-position"><primary>dbusmenu_menuitem_get_position</primary></indexterm>
+<programlisting><link linkend="guint"><returnvalue>guint</returnvalue></link> dbusmenu_menuitem_get_position (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *parent</parameter>);</programlisting>
+<para>
+This function returns the position of the menu item <parameter>mi</parameter>
+in the children of <parameter>parent</parameter>. It will return zero if the
+menu item can't be found.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to find the position of</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> who's children contain <parameter>mi</parameter></simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The position of <parameter>mi</parameter> in the children of <parameter>parent</parameter>.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-get-position-realized" role="function">
+<title>dbusmenu_menuitem_get_position_realized ()</title>
+<indexterm zone="dbusmenu-menuitem-get-position-realized"><primary>dbusmenu_menuitem_get_position_realized</primary></indexterm>
+<programlisting><link linkend="guint"><returnvalue>guint</returnvalue></link> dbusmenu_menuitem_get_position_realized
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *parent</parameter>);</programlisting>
+<para>
+This function is very similar to <link linkend="dbusmenu-menuitem-get-position"><type>dbusmenu_menuitem_get_position</type></link>
+except that it only counts in the children that have been realized.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to find the position of</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> who's children contain <parameter>mi</parameter></simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The position of <parameter>mi</parameter> in the realized children of <parameter>parent</parameter>.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-child-append" role="function">
+<title>dbusmenu_menuitem_child_append ()</title>
+<indexterm zone="dbusmenu-menuitem-child-append"><primary>dbusmenu_menuitem_child_append</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_child_append (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *child</parameter>);</programlisting>
+<para>
+This function adds <parameter>child</parameter> to the list of children on <parameter>mi</parameter> at
+the end of that list.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> which will become a new parent</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>child</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenMenuitem"><type>DbusmenMenuitem</type></link> that will be a child</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Whether the child has been added successfully.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-child-prepend" role="function">
+<title>dbusmenu_menuitem_child_prepend ()</title>
+<indexterm zone="dbusmenu-menuitem-child-prepend"><primary>dbusmenu_menuitem_child_prepend</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_child_prepend (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *child</parameter>);</programlisting>
+<para>
+This function adds <parameter>child</parameter> to the list of children on <parameter>mi</parameter> at
+the beginning of that list.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> which will become a new parent</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>child</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenMenuitem"><type>DbusmenMenuitem</type></link> that will be a child</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Whether the child has been added successfully.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-child-delete" role="function">
+<title>dbusmenu_menuitem_child_delete ()</title>
+<indexterm zone="dbusmenu-menuitem-child-delete"><primary>dbusmenu_menuitem_child_delete</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_child_delete (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *child</parameter>);</programlisting>
+<para>
+This function removes <parameter>child</parameter> from the children list of <parameter>mi</parameter>. It does
+not call <link linkend="g-object-unref"><type>g_object_unref</type></link> on <parameter>child</parameter>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> which has <parameter>child</parameter> as a child</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>child</parameter>&#160;:</term>
+<listitem><simpara>The child <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> that you want to no longer
+be a child of <parameter>mi</parameter>.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>If we were able to delete <parameter>child</parameter>.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-child-add-position" role="function">
+<title>dbusmenu_menuitem_child_add_position ()</title>
+<indexterm zone="dbusmenu-menuitem-child-add-position"><primary>dbusmenu_menuitem_child_add_position</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_child_add_position
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *child</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> position</parameter>);</programlisting>
+<para>
+Puts <parameter>child</parameter> in the list of children for <parameter>mi</parameter> at the location
+specified in <parameter>position</parameter>. If there is not enough entires available
+then <parameter>child</parameter> will be placed at the end of the list.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> that we're adding the child <parameter>child</parameter> to.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>child</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to make a child of <parameter>mi</parameter>.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>position</parameter>&#160;:</term>
+<listitem><simpara>Where in <parameter>mi</parameter> object's list of chidren <parameter>child</parameter> should be placed.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Whether <parameter>child</parameter> was added successfully.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-child-reorder" role="function">
+<title>dbusmenu_menuitem_child_reorder ()</title>
+<indexterm zone="dbusmenu-menuitem-child-reorder"><primary>dbusmenu_menuitem_child_reorder</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_child_reorder (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *child</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> position</parameter>);</programlisting>
+<para>
+This function moves a child on the list of children. It is
+for a child that is already in the list, but simply needs a
+new location.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> that has children needing realignment</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>child</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> that is a child needing to be moved</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>position</parameter>&#160;:</term>
+<listitem><simpara>The position in the list to place it in</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Whether the move was successful.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-child-find" role="function">
+<title>dbusmenu_menuitem_child_find ()</title>
+<indexterm zone="dbusmenu-menuitem-child-find"><primary>dbusmenu_menuitem_child_find</primary></indexterm>
+<programlisting><link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * dbusmenu_menuitem_child_find (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="gint"><type>gint</type></link> id</parameter>);</programlisting>
+<para>
+Search the children of <parameter>mi</parameter> to find one with the ID of <parameter>id</parameter>.
+If it doesn't exist then we return <link linkend="NULL:CAPS"><type>NULL</type></link>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> who's children to look on</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&#160;:</term>
+<listitem><simpara>The ID of the child that we're looking for.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The menu item with the ID <parameter>id</parameter> or <link linkend="NULL:CAPS"><type>NULL</type></link> if it
+can't be found. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-find-id" role="function">
+<title>dbusmenu_menuitem_find_id ()</title>
+<indexterm zone="dbusmenu-menuitem-find-id"><primary>dbusmenu_menuitem_find_id</primary></indexterm>
+<programlisting><link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * dbusmenu_menuitem_find_id (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="gint"><type>gint</type></link> id</parameter>);</programlisting>
+<para>
+This function searchs the whole tree of children that
+are attached to <parameter>mi</parameter>. This could be quite a few nodes, all
+the way down the tree. It is a depth first search.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> at the top of the tree to search</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&#160;:</term>
+<listitem><simpara>ID of the <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to search for</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> with the ID of <parameter>id</parameter>
+or <link linkend="NULL:CAPS"><type>NULL</type></link> if there isn't such a menu item in the tree
+represented by <parameter>mi</parameter>. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-set" role="function">
+<title>dbusmenu_menuitem_property_set ()</title>
+<indexterm zone="dbusmenu-menuitem-property-set"><primary>dbusmenu_menuitem_property_set</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_property_set (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *value</parameter>);</programlisting>
+<para>
+Takes the pair of <parameter>property</parameter> and <parameter>value</parameter> and places them as a
+property on <parameter>mi</parameter>. If a property already exists by that name,
+then the value is set to the new value. If not, the property
+is added. If the value is changed or the property was previously
+unset then the signal <link linkend="DbusmenuMenuitem-prop-changed"><type>"prop-changed"</type></link> will be
+emitted by this function.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to set the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>Name of the property to set.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>value</parameter>&#160;:</term>
+<listitem><simpara>The value of the property.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A boolean representing if the property value was set.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-set-bool" role="function">
+<title>dbusmenu_menuitem_property_set_bool ()</title>
+<indexterm zone="dbusmenu-menuitem-property-set-bool"><primary>dbusmenu_menuitem_property_set_bool</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_property_set_bool (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>,
+ <parameter>const <link linkend="gboolean"><type>gboolean</type></link> value</parameter>);</programlisting>
+<para>
+Takes a boolean <parameter>value</parameter> and sets it on <parameter>property</parameter> as a
+property on <parameter>mi</parameter>. If a property already exists by that name,
+then the value is set to the new value. If not, the property
+is added. If the value is changed or the property was previously
+unset then the signal <link linkend="DbusmenuMenuitem-prop-changed"><type>"prop-changed"</type></link> will be
+emitted by this function.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to set the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>Name of the property to set.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>value</parameter>&#160;:</term>
+<listitem><simpara>The value of the property.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A boolean representing if the property value was set.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-set-int" role="function">
+<title>dbusmenu_menuitem_property_set_int ()</title>
+<indexterm zone="dbusmenu-menuitem-property-set-int"><primary>dbusmenu_menuitem_property_set_int</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_property_set_int (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>,
+ <parameter>const <link linkend="gint"><type>gint</type></link> value</parameter>);</programlisting>
+<para>
+Takes a boolean <parameter>value</parameter> and sets it on <parameter>property</parameter> as a
+property on <parameter>mi</parameter>. If a property already exists by that name,
+then the value is set to the new value. If not, the property
+is added. If the value is changed or the property was previously
+unset then the signal <link linkend="DbusmenuMenuitem-prop-changed"><type>"prop-changed"</type></link> will be
+emitted by this function.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to set the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>Name of the property to set.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>value</parameter>&#160;:</term>
+<listitem><simpara>The value of the property.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A boolean representing if the property value was set.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-set-variant" role="function">
+<title>dbusmenu_menuitem_property_set_variant ()</title>
+<indexterm zone="dbusmenu-menuitem-property-set-variant"><primary>dbusmenu_menuitem_property_set_variant</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_property_set_variant
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>,
+ <parameter><link linkend="GVariant"><type>GVariant</type></link> *value</parameter>);</programlisting>
+<para>
+Takes the pair of <parameter>property</parameter> and <parameter>value</parameter> and places them as a
+property on <parameter>mi</parameter>. If a property already exists by that name,
+then the value is set to the new value. If not, the property
+is added. If the value is changed or the property was previously
+unset then the signal <link linkend="DbusmenuMenuitem-prop-changed"><type>"prop-changed"</type></link> will be
+emitted by this function.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to set the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>Name of the property to set.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>value</parameter>&#160;:</term>
+<listitem><simpara>The value of the property.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A boolean representing if the property value was set.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-get" role="function">
+<title>dbusmenu_menuitem_property_get ()</title>
+<indexterm zone="dbusmenu-menuitem-property-get"><primary>dbusmenu_menuitem_property_get</primary></indexterm>
+<programlisting>const <link linkend="gchar"><returnvalue>gchar</returnvalue></link> * dbusmenu_menuitem_property_get (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);</programlisting>
+<para>
+Look up a property on <parameter>mi</parameter> and return the value of it if
+it exits. <link linkend="NULL:CAPS"><type>NULL</type></link> will be returned if the property doesn't
+exist.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to look for the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>The property to grab.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A string with the value of the property
+that shouldn't be free'd. Or <link linkend="NULL:CAPS"><type>NULL</type></link> if the property
+is not set or is not a string. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-get-bool" role="function">
+<title>dbusmenu_menuitem_property_get_bool ()</title>
+<indexterm zone="dbusmenu-menuitem-property-get-bool"><primary>dbusmenu_menuitem_property_get_bool</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_property_get_bool (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);</programlisting>
+<para>
+Look up a property on <parameter>mi</parameter> and return the value of it if
+it exits. Returns <link linkend="FALSE:CAPS"><type>FALSE</type></link> if the property doesn't exist.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to look for the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>The property to grab.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The value of the property or <link linkend="FALSE:CAPS"><type>FALSE</type></link>.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-get-int" role="function">
+<title>dbusmenu_menuitem_property_get_int ()</title>
+<indexterm zone="dbusmenu-menuitem-property-get-int"><primary>dbusmenu_menuitem_property_get_int</primary></indexterm>
+<programlisting><link linkend="gint"><returnvalue>gint</returnvalue></link> dbusmenu_menuitem_property_get_int (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);</programlisting>
+<para>
+Look up a property on <parameter>mi</parameter> and return the value of it if
+it exits. Returns zero if the property doesn't exist.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to look for the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>The property to grab.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The value of the property or zero.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-get-variant" role="function">
+<title>dbusmenu_menuitem_property_get_variant ()</title>
+<indexterm zone="dbusmenu-menuitem-property-get-variant"><primary>dbusmenu_menuitem_property_get_variant</primary></indexterm>
+<programlisting><link linkend="GVariant"><returnvalue>GVariant</returnvalue></link> * dbusmenu_menuitem_property_get_variant
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);</programlisting>
+<para>
+Look up a property on <parameter>mi</parameter> and return the value of it if
+it exits. <link linkend="NULL:CAPS"><type>NULL</type></link> will be returned if the property doesn't
+exist.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to look for the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>The property to grab.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A GVariant for the property. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-exist" role="function">
+<title>dbusmenu_menuitem_property_exist ()</title>
+<indexterm zone="dbusmenu-menuitem-property-exist"><primary>dbusmenu_menuitem_property_exist</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_property_exist (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);</programlisting>
+<para>
+Checkes to see if a particular property exists on <parameter>mi</parameter> and
+returns <link linkend="TRUE:CAPS"><type>TRUE</type></link> if so.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to look for the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>The property to look for.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A boolean checking to see if the property is available</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-properties-list" role="function">
+<title>dbusmenu_menuitem_properties_list ()</title>
+<indexterm zone="dbusmenu-menuitem-properties-list"><primary>dbusmenu_menuitem_properties_list</primary></indexterm>
+<programlisting><link linkend="GList"><returnvalue>GList</returnvalue></link> * dbusmenu_menuitem_properties_list (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);</programlisting>
+<para>
+This functiong gets a list of the names of all the properties
+that are set on this menu item. This data on the list is owned
+by the menuitem but the list is not and should be freed using
+<link linkend="g-list-free"><function>g_list_free()</function></link> when the calling function is done with it.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to list the properties on</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A list of strings or NULL if there are
+none. <emphasis role="annotation">[<acronym>transfer container</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-properties-copy" role="function">
+<title>dbusmenu_menuitem_properties_copy ()</title>
+<indexterm zone="dbusmenu-menuitem-properties-copy"><primary>dbusmenu_menuitem_properties_copy</primary></indexterm>
+<programlisting><link linkend="GHashTable"><returnvalue>GHashTable</returnvalue></link> * dbusmenu_menuitem_properties_copy (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);</programlisting>
+<para>
+This function takes the properties of a <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link>
+and puts them into a <link linkend="GHashTable"><type>GHashTable</type></link> that is referenced by the
+key of a string and has the value of a string. The hash
+table may not have any entries if there aren't any or there
+is an error in processing. It is the caller's responsibility
+to destroy the created <link linkend="GHashTable"><type>GHashTable</type></link>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> that we're interested in the properties of</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A brand new <link linkend="GHashTable"><type>GHashTable</type></link> that contains all of
+theroperties that are on this <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> <parameter>mi</parameter>. <emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-remove" role="function">
+<title>dbusmenu_menuitem_property_remove ()</title>
+<indexterm zone="dbusmenu-menuitem-property-remove"><primary>dbusmenu_menuitem_property_remove</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_menuitem_property_remove (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);</programlisting>
+<para>
+Removes a property from the menuitem.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to remove the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>The property to look for.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-set-root" role="function">
+<title>dbusmenu_menuitem_set_root ()</title>
+<indexterm zone="dbusmenu-menuitem-set-root"><primary>dbusmenu_menuitem_set_root</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_menuitem_set_root (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="gboolean"><type>gboolean</type></link> root</parameter>);</programlisting>
+<para>
+This function sets the internal value of whether this is a
+root node or not.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to set whether it's root</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>root</parameter>&#160;:</term>
+<listitem><simpara>Whether <parameter>mi</parameter> is a root node or not</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-get-root" role="function">
+<title>dbusmenu_menuitem_get_root ()</title>
+<indexterm zone="dbusmenu-menuitem-get-root"><primary>dbusmenu_menuitem_get_root</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_get_root (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);</programlisting>
+<para>
+This function returns the internal value of whether this is a
+root node or not.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to see whether it's root</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara><link linkend="TRUE:CAPS"><type>TRUE</type></link> if this is a root node</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-foreach" role="function">
+<title>dbusmenu_menuitem_foreach ()</title>
+<indexterm zone="dbusmenu-menuitem-foreach"><primary>dbusmenu_menuitem_foreach</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_menuitem_foreach (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> (*func) (DbusmenuMenuitem * mi, gpointer data)</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> data</parameter>);</programlisting>
+<para>
+This calls the function <parameter>func</parameter> on this menu item and all
+of the children of this item. And their children. And
+their children. And... you get the point. It will get
+called on the whole tree.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenItem"><type>DbusmenItem</type></link> to start from</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>func</parameter>&#160;:</term>
+<listitem><simpara>Function to call on every node in the tree</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data</parameter>&#160;:</term>
+<listitem><simpara>User data to pass to the function. <emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-handle-event" role="function">
+<title>dbusmenu_menuitem_handle_event ()</title>
+<indexterm zone="dbusmenu-menuitem-handle-event"><primary>dbusmenu_menuitem_handle_event</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_menuitem_handle_event (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *name</parameter>,
+ <parameter><link linkend="GVariant"><type>GVariant</type></link> *variant</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> timestamp</parameter>);</programlisting>
+<para>
+This function is called to create an event. It is likely
+to be overrided by subclasses. The default menu item
+will respond to the activate signal and do:
+</para>
+<para>
+Emits the <link linkend="DbusmenuMenuitem-item-activate"><type>"item-activate"</type></link> signal on this
+menu item. Called by server objects when they get the
+appropriate DBus signals from the client.
+</para>
+<para>
+If you subclass this function you should really think
+about calling the parent function unless you have a good
+reason not to.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to send the signal on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&#160;:</term>
+<listitem><simpara>The name of the signal</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>variant</parameter>&#160;:</term>
+<listitem><simpara>A value that could be set for the event</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>timestamp</parameter>&#160;:</term>
+<listitem><simpara>The timestamp of when the event happened</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-send-about-to-show" role="function">
+<title>dbusmenu_menuitem_send_about_to_show ()</title>
+<indexterm zone="dbusmenu-menuitem-send-about-to-show"><primary>dbusmenu_menuitem_send_about_to_show</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_menuitem_send_about_to_show
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> (*cb) (DbusmenuMenuitem * mi, gpointer user_data)</parameter>,
+ <parameter><link linkend="gpointer"><type>gpointer</type></link> cb_data</parameter>);</programlisting>
+<para>
+This function is used to send the even that the submenu
+of this item is about to be shown. Callers to this event
+should delay showing the menu until their callback is
+called if possible.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to send the signal on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>cb</parameter>&#160;:</term>
+<listitem><simpara>Callback to call when the call has returned.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>cb_data</parameter>&#160;:</term>
+<listitem><simpara>Data to pass to the callback. <emphasis role="annotation">[<acronym>closure</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-show-to-user" role="function">
+<title>dbusmenu_menuitem_show_to_user ()</title>
+<indexterm zone="dbusmenu-menuitem-show-to-user"><primary>dbusmenu_menuitem_show_to_user</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_menuitem_show_to_user (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> timestamp</parameter>);</programlisting>
+<para>
+Signals that this menu item should be shown to the user. If this is
+server side the server will then take it and send it over the
+bus.
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to show</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>timestamp</parameter>&#160;:</term>
+<listitem><simpara>The time that the user requested it to be shown</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-get-parent" role="function">
+<title>dbusmenu_menuitem_get_parent ()</title>
+<indexterm zone="dbusmenu-menuitem-get-parent"><primary>dbusmenu_menuitem_get_parent</primary></indexterm>
+<programlisting><link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * dbusmenu_menuitem_get_parent (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);</programlisting>
+<para>
+This function looks up the parent of <parameter>mi</parameter>
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> for which to inspect the parent</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The parent of this menu item. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-set-parent" role="function">
+<title>dbusmenu_menuitem_set_parent ()</title>
+<indexterm zone="dbusmenu-menuitem-set-parent"><primary>dbusmenu_menuitem_set_parent</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_set_parent (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *parent</parameter>);</programlisting>
+<para>
+Sets the parent of <parameter>mi</parameter> to <parameter>parent</parameter>. If <parameter>mi</parameter> already
+has a parent, then this call will fail. The parent will
+be set automatically when using the usual methods to add a
+child menuitem, so this function should not normally be
+called directly
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> for which to set the parent</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter>&#160;:</term>
+<listitem><simpara>The new parent <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link></simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Whether the parent was set successfully</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-unparent" role="function">
+<title>dbusmenu_menuitem_unparent ()</title>
+<indexterm zone="dbusmenu-menuitem-unparent"><primary>dbusmenu_menuitem_unparent</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_unparent (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);</programlisting>
+<para>
+Unparents the menu item <parameter>mi</parameter>. If <parameter>mi</parameter> doesn't have a
+parent, then this call will fail. The menuitem will
+be unparented automatically when using the usual methods
+to delete a child menuitem, so this function should not
+normally be called directly
+</para><variablelist role="params">
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to unparent</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Whether the menu item was unparented successfully</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/docs/libdbusmenu-glib/reference/xml/server.xml b/docs/libdbusmenu-glib/reference/xml/server.xml
new file mode 100644
index 0000000..de93198
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/xml/server.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<refentry id="libdbusmenu-glib-DbusmenuServer">
+<refmeta>
+<refentrytitle role="top_of_page" id="libdbusmenu-glib-DbusmenuServer.top_of_page">DbusmenuServer</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>
+ LIBDBUSMENU-GLIB Library
+</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>DbusmenuServer</refname>
+<refpurpose>The server signals changed and
+ updates on a tree of <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> objecs.</refpurpose>
+</refnamediv>
+<refsect1 id="libdbusmenu-glib-DbusmenuServer.stability-level">
+<title>Stability Level</title>
+Unstable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv id="libdbusmenu-glib-DbusmenuServer.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#include &lt;libdbusmenu-glib/server.h&gt;
+
+#define <link linkend="DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS">DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE</link>
+#define <link linkend="DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS">DBUSMENU_SERVER_SIGNAL_ID_UPDATE</link>
+#define <link linkend="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS">DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED</link>
+#define <link linkend="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS">DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE</link>
+#define <link linkend="DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS">DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION</link>
+#define <link linkend="DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS">DBUSMENU_SERVER_PROP_DBUS_OBJECT</link>
+#define <link linkend="DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS">DBUSMENU_SERVER_PROP_ROOT_NODE</link>
+#define <link linkend="DBUSMENU-SERVER-PROP-STATUS:CAPS">DBUSMENU_SERVER_PROP_STATUS</link>
+#define <link linkend="DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS">DBUSMENU_SERVER_PROP_TEXT_DIRECTION</link>
+#define <link linkend="DBUSMENU-SERVER-PROP-VERSION:CAPS">DBUSMENU_SERVER_PROP_VERSION</link>
+ <link linkend="DbusmenuServer">DbusmenuServer</link>;
+struct <link linkend="DbusmenuServerClass">DbusmenuServerClass</link>;
+<link linkend="DbusmenuServer"><returnvalue>DbusmenuServer</returnvalue></link> * <link linkend="dbusmenu-server-new">dbusmenu_server_new</link> (<parameter>const <link linkend="gchar"><type>gchar</type></link> *object</parameter>);
+<link linkend="DbusmenuStatus"><returnvalue>DbusmenuStatus</returnvalue></link> <link linkend="dbusmenu-server-get-status">dbusmenu_server_get_status</link> (<parameter><link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> *server</parameter>);
+<link linkend="DbusmenuTextDirection"><returnvalue>DbusmenuTextDirection</returnvalue></link> <link linkend="dbusmenu-server-get-text-direction">dbusmenu_server_get_text_direction</link>
+ (<parameter><link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> *server</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-server-set-root">dbusmenu_server_set_root</link> (<parameter><link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> *self</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *root</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-server-set-status">dbusmenu_server_set_status</link> (<parameter><link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> *server</parameter>,
+ <parameter><link linkend="DbusmenuStatus"><type>DbusmenuStatus</type></link> status</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-server-set-text-direction">dbusmenu_server_set_text_direction</link> (<parameter><link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> *server</parameter>,
+ <parameter><link linkend="DbusmenuTextDirection"><type>DbusmenuTextDirection</type></link> dir</parameter>);
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1 id="libdbusmenu-glib-DbusmenuServer.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+A <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> is the object that represents the local
+ tree of <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> objects on DBus. It watches the
+ various signals that those objects emit and correctly
+ represents them across DBus to a <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> so that
+ the same tree can be maintained in another process.
+</para>
+<para>
+ The server needs to have the root set of <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link>
+ objects set via <link linkend="dbusmenu-server-set-root"><type>dbusmenu_server_set_root</type></link> but it will query
+ all of the objects in that tree automatically. After setting
+ the root there should be no other maintence required by
+ users of the server class.
+</para>
+</refsect1>
+<refsect1 id="libdbusmenu-glib-DbusmenuServer.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS" role="macro">
+<title>DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE</title>
+<indexterm zone="DBUSMENU-SERVER-SIGNAL-ID-PROP-UPDATE:CAPS"><primary>DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE</primary></indexterm>
+<programlisting>#define DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE "item-property-updated"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-item-property-updated"><type>"item-property-updated"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS" role="macro">
+<title>DBUSMENU_SERVER_SIGNAL_ID_UPDATE</title>
+<indexterm zone="DBUSMENU-SERVER-SIGNAL-ID-UPDATE:CAPS"><primary>DBUSMENU_SERVER_SIGNAL_ID_UPDATE</primary></indexterm>
+<programlisting>#define DBUSMENU_SERVER_SIGNAL_ID_UPDATE "item-updated"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-item-updated"><type>"item-updated"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS" role="macro">
+<title>DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED</title>
+<indexterm zone="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATED:CAPS"><primary>DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED</primary></indexterm>
+<programlisting>#define DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED "layout-updated"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-layout-updated"><type>"layout-updated"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS" role="macro">
+<title>DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE</title>
+<indexterm zone="DBUSMENU-SERVER-SIGNAL-LAYOUT-UPDATE:CAPS"><primary>DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE</primary></indexterm>
+<programlisting>#define DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-layout-updated"><type>"layout-updated"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS" role="macro">
+<title>DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION</title>
+<indexterm zone="DBUSMENU-SERVER-SIGNAL-ITEM-ACTIVATION:CAPS"><primary>DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION</primary></indexterm>
+<programlisting>#define DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION "item-activation-requested"
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuServer-item-activation-requested"><type>"item-activation-requested"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS" role="macro">
+<title>DBUSMENU_SERVER_PROP_DBUS_OBJECT</title>
+<indexterm zone="DBUSMENU-SERVER-PROP-DBUS-OBJECT:CAPS"><primary>DBUSMENU_SERVER_PROP_DBUS_OBJECT</primary></indexterm>
+<programlisting>#define DBUSMENU_SERVER_PROP_DBUS_OBJECT "dbus-object"
+</programlisting>
+<para>
+String to access property <link linkend="DbusmenuServer--dbus-object"><type>"dbus-object"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS" role="macro">
+<title>DBUSMENU_SERVER_PROP_ROOT_NODE</title>
+<indexterm zone="DBUSMENU-SERVER-PROP-ROOT-NODE:CAPS"><primary>DBUSMENU_SERVER_PROP_ROOT_NODE</primary></indexterm>
+<programlisting>#define DBUSMENU_SERVER_PROP_ROOT_NODE "root-node"
+</programlisting>
+<para>
+String to access property <link linkend="DbusmenuServer--root-node"><type>"root-node"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-SERVER-PROP-STATUS:CAPS" role="macro">
+<title>DBUSMENU_SERVER_PROP_STATUS</title>
+<indexterm zone="DBUSMENU-SERVER-PROP-STATUS:CAPS"><primary>DBUSMENU_SERVER_PROP_STATUS</primary></indexterm>
+<programlisting>#define DBUSMENU_SERVER_PROP_STATUS "status"
+</programlisting>
+<para>
+String to access property <link linkend="DbusmenuServer--status"><type>"status"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS" role="macro">
+<title>DBUSMENU_SERVER_PROP_TEXT_DIRECTION</title>
+<indexterm zone="DBUSMENU-SERVER-PROP-TEXT-DIRECTION:CAPS"><primary>DBUSMENU_SERVER_PROP_TEXT_DIRECTION</primary></indexterm>
+<programlisting>#define DBUSMENU_SERVER_PROP_TEXT_DIRECTION "text-direction"
+</programlisting>
+<para>
+String to access property <link linkend="DbusmenuServer--text-direction"><type>"text-direction"</type></link>
+</para></refsect2>
+<refsect2 id="DBUSMENU-SERVER-PROP-VERSION:CAPS" role="macro">
+<title>DBUSMENU_SERVER_PROP_VERSION</title>
+<indexterm zone="DBUSMENU-SERVER-PROP-VERSION:CAPS"><primary>DBUSMENU_SERVER_PROP_VERSION</primary></indexterm>
+<programlisting>#define DBUSMENU_SERVER_PROP_VERSION "version"
+</programlisting>
+<para>
+String to access property <link linkend="DbusmenuServer--version"><type>"version"</type></link>
+</para></refsect2>
+<refsect2 id="DbusmenuServer" role="struct">
+<title>DbusmenuServer</title>
+<indexterm zone="DbusmenuServer"><primary>DbusmenuServer</primary></indexterm>
+<programlisting>typedef struct _DbusmenuServer DbusmenuServer;</programlisting>
+<para>
+A server which represents a sharing of a set of
+ <link linkend="DbusmenuMenuitems"><type>DbusmenuMenuitems</type></link> across DBus to a <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link>.
+</para></refsect2>
+<refsect2 id="DbusmenuServerClass" role="struct">
+<title>struct DbusmenuServerClass</title>
+<indexterm zone="DbusmenuServerClass"><primary>DbusmenuServerClass</primary></indexterm>
+<programlisting>struct DbusmenuServerClass {
+ GObjectClass parent_class;
+
+ /* Signals */
+ void (*id_prop_update)(gint id, gchar * property, gchar * value);
+ void (*id_update)(gint id);
+ void (*layout_updated)(gint revision);
+ void (*item_activation)(gint id, guint timestamp);
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+ void (*reserved6) (void);
+};
+</programlisting>
+<para>
+The class implementing the virtual functions for <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link>.
+</para><variablelist role="struct">
+<varlistentry><term><link linkend="GObjectClass"><type>GObjectClass</type></link>&#160;<structfield id="DbusmenuServerClass.parent-class">parent_class</structfield>;</term>
+<listitem><simpara><link linkend="GObjectClass"><type>GObjectClass</type></link></simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuServerClass.id-prop-update">id_prop_update</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuServer-id-prop-update"><type>"id-prop-update"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuServerClass.id-update">id_update</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuServer-id-update"><type>"id-update"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuServerClass.layout-updated">layout_updated</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuServer-layout-update"><type>"layout-update"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuServerClass.item-activation">item_activation</structfield>&#160;()</term>
+<listitem><simpara>Slot for <link linkend="DbusmenuServer-item-activation-requested"><type>"item-activation-requested"</type></link>.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuServerClass.reserved1">reserved1</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuServerClass.reserved2">reserved2</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuServerClass.reserved3">reserved3</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuServerClass.reserved4">reserved4</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuServerClass.reserved5">reserved5</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuServerClass.reserved6">reserved6</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-server-new" role="function">
+<title>dbusmenu_server_new ()</title>
+<indexterm zone="dbusmenu-server-new"><primary>dbusmenu_server_new</primary></indexterm>
+<programlisting><link linkend="DbusmenuServer"><returnvalue>DbusmenuServer</returnvalue></link> * dbusmenu_server_new (<parameter>const <link linkend="gchar"><type>gchar</type></link> *object</parameter>);</programlisting>
+<para>
+Creates a new <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> object with a specific object
+ path on DBus. If <parameter>object</parameter> is set to NULL the default object
+ name of "/com/canonical/dbusmenu" will be used.
+</para><variablelist role="params">
+<varlistentry><term><parameter>object</parameter>&#160;:</term>
+<listitem><simpara>The object name to show for this menu structure
+on DBus. May be NULL.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A brand new <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-server-get-status" role="function">
+<title>dbusmenu_server_get_status ()</title>
+<indexterm zone="dbusmenu-server-get-status"><primary>dbusmenu_server_get_status</primary></indexterm>
+<programlisting><link linkend="DbusmenuStatus"><returnvalue>DbusmenuStatus</returnvalue></link> dbusmenu_server_get_status (<parameter><link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> *server</parameter>);</programlisting>
+<para>
+Gets the current statust hat the server is sending out over
+ DBus.
+</para><variablelist role="params">
+<varlistentry><term><parameter>server</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> to get the status from</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The current status the server is sending</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-server-get-text-direction" role="function">
+<title>dbusmenu_server_get_text_direction ()</title>
+<indexterm zone="dbusmenu-server-get-text-direction"><primary>dbusmenu_server_get_text_direction</primary></indexterm>
+<programlisting><link linkend="DbusmenuTextDirection"><returnvalue>DbusmenuTextDirection</returnvalue></link> dbusmenu_server_get_text_direction
+ (<parameter><link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> *server</parameter>);</programlisting>
+<para>
+Returns the value of the text direction that is being exported
+ over DBus for this server. It should relate to the direction
+ of the labels and other text fields that are being exported by
+ this server.
+</para><variablelist role="params">
+<varlistentry><term><parameter>server</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> object to get the text direction from</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Text direction exported for this server.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-server-set-root" role="function">
+<title>dbusmenu_server_set_root ()</title>
+<indexterm zone="dbusmenu-server-set-root"><primary>dbusmenu_server_set_root</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_server_set_root (<parameter><link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> *self</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *root</parameter>);</programlisting>
+<para>
+This function contains all of the <link linkend="GValue"><type>GValue</type></link> wrapping
+ required to set the property <link linkend="DbusmenuServer--root-node"><type>"root-node"</type></link>
+ on the server <parameter>self</parameter>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>self</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> object to set the root on</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>root</parameter>&#160;:</term>
+<listitem><simpara>The new root <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> tree</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-server-set-status" role="function">
+<title>dbusmenu_server_set_status ()</title>
+<indexterm zone="dbusmenu-server-set-status"><primary>dbusmenu_server_set_status</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_server_set_status (<parameter><link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> *server</parameter>,
+ <parameter><link linkend="DbusmenuStatus"><type>DbusmenuStatus</type></link> status</parameter>);</programlisting>
+<para>
+Changes the status of the server.
+</para><variablelist role="params">
+<varlistentry><term><parameter>server</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> to set the status on</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>status</parameter>&#160;:</term>
+<listitem><simpara>Status value to set on the server</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-server-set-text-direction" role="function">
+<title>dbusmenu_server_set_text_direction ()</title>
+<indexterm zone="dbusmenu-server-set-text-direction"><primary>dbusmenu_server_set_text_direction</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_server_set_text_direction (<parameter><link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> *server</parameter>,
+ <parameter><link linkend="DbusmenuTextDirection"><type>DbusmenuTextDirection</type></link> dir</parameter>);</programlisting>
+<para>
+Sets the text direction that should be exported over DBus for
+ this server. If the value is set to <link linkend="DBUSMENU-TEXT-DIRECTION-NONE:CAPS"><type>DBUSMENU_TEXT_DIRECTION_NONE</type></link>
+ the default detection will be used for setting the value and
+ exported over DBus.
+</para><variablelist role="params">
+<varlistentry><term><parameter>server</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> object to set the text direction on</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dir</parameter>&#160;:</term>
+<listitem><simpara>Direction of the text</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/docs/libdbusmenu-glib/reference/xml/types.xml b/docs/libdbusmenu-glib/reference/xml/types.xml
new file mode 100644
index 0000000..c9a04ba
--- /dev/null
+++ b/docs/libdbusmenu-glib/reference/xml/types.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<refentry id="libdbusmenu-glib-Types">
+<refmeta>
+<refentrytitle role="top_of_page" id="libdbusmenu-glib-Types.top_of_page">Types</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>
+ LIBDBUSMENU-GLIB Library
+</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Types</refname>
+<refpurpose>Types that are used by both client and
+ server.</refpurpose>
+</refnamediv>
+<refsect1 id="libdbusmenu-glib-Types.stability-level">
+<title>Stability Level</title>
+Unstable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv id="libdbusmenu-glib-Types.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#include &lt;libdbusmenu-glib/types.h&gt;
+
+#define <link linkend="DBUSMENU-TYPE-STATUS:CAPS">DBUSMENU_TYPE_STATUS</link>
+#define <link linkend="DBUSMENU-TYPE-TEXT-DIRECTION:CAPS">DBUSMENU_TYPE_TEXT_DIRECTION</link>
+enum <link linkend="DbusmenuStatus">DbusmenuStatus</link>;
+enum <link linkend="DbusmenuTextDirection">DbusmenuTextDirection</link>;
+const <link linkend="gchar"><returnvalue>gchar</returnvalue></link> * <link linkend="dbusmenu-status-get-nick">dbusmenu_status_get_nick</link> (<parameter><link linkend="DbusmenuStatus"><type>DbusmenuStatus</type></link> value</parameter>);
+<link linkend="GType"><returnvalue>GType</returnvalue></link> <link linkend="dbusmenu-status-get-type">dbusmenu_status_get_type</link> (<parameter><type>void</type></parameter>);
+<link linkend="DbusmenuStatus"><returnvalue>DbusmenuStatus</returnvalue></link> <link linkend="dbusmenu-status-get-value-from-nick">dbusmenu_status_get_value_from_nick</link> (<parameter>const <link linkend="gchar"><type>gchar</type></link> *nick</parameter>);
+const <link linkend="gchar"><returnvalue>gchar</returnvalue></link> * <link linkend="dbusmenu-text-direction-get-nick">dbusmenu_text_direction_get_nick</link> (<parameter><link linkend="DbusmenuTextDirection"><type>DbusmenuTextDirection</type></link> value</parameter>);
+<link linkend="GType"><returnvalue>GType</returnvalue></link> <link linkend="dbusmenu-text-direction-get-type">dbusmenu_text_direction_get_type</link> (<parameter><type>void</type></parameter>);
+<link linkend="DbusmenuTextDirection"><returnvalue>DbusmenuTextDirection</returnvalue></link> <link linkend="dbusmenu-text-direction-get-value-from-nick">dbusmenu_text_direction_get_value_from_nick</link>
+ (<parameter>const <link linkend="gchar"><type>gchar</type></link> *nick</parameter>);
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1 id="libdbusmenu-glib-Types.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+Enums that are used to describe states of the server across the
+ bus. They are sent over dbus using their nicks but then turned
+ back into enums by the client.
+</para>
+</refsect1>
+<refsect1 id="libdbusmenu-glib-Types.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="DBUSMENU-TYPE-STATUS:CAPS" role="macro">
+<title>DBUSMENU_TYPE_STATUS</title>
+<indexterm zone="DBUSMENU-TYPE-STATUS:CAPS"><primary>DBUSMENU_TYPE_STATUS</primary></indexterm>
+<programlisting>#define DBUSMENU_TYPE_STATUS (dbusmenu_status_get_type())
+</programlisting>
+<para>
+Gets the <link linkend="GType"><type>GType</type></link> value for the type associated with the
+ <link linkend="DbusmenuStatus"><type>DbusmenuStatus</type></link> enumerated type.
+</para></refsect2>
+<refsect2 id="DBUSMENU-TYPE-TEXT-DIRECTION:CAPS" role="macro">
+<title>DBUSMENU_TYPE_TEXT_DIRECTION</title>
+<indexterm zone="DBUSMENU-TYPE-TEXT-DIRECTION:CAPS"><primary>DBUSMENU_TYPE_TEXT_DIRECTION</primary></indexterm>
+<programlisting>#define DBUSMENU_TYPE_TEXT_DIRECTION (dbusmenu_text_direction_get_type())
+</programlisting>
+<para>
+Gets the <link linkend="GType"><type>GType</type></link> value for the type associated with the
+ <link linkend="DbusmenuTextDirection"><type>DbusmenuTextDirection</type></link> enumerated type.
+</para></refsect2>
+<refsect2 id="DbusmenuStatus" role="enum">
+<title>enum DbusmenuStatus</title>
+<indexterm zone="DbusmenuStatus"><primary>DbusmenuStatus</primary></indexterm>
+<programlisting>typedef enum { /*&lt; prefix=DBUSMENU_STATUS &gt;*/
+ DBUSMENU_STATUS_NORMAL, /*&lt; nick=normal &gt;*/
+ DBUSMENU_STATUS_NOTICE /*&lt; nick=notice &gt;*/
+} DbusmenuStatus;
+</programlisting>
+<para>
+Tracks how the menus should be presented to the user.
+</para><variablelist role="enum">
+<varlistentry id="DBUSMENU-STATUS-NORMAL:CAPS" role="constant">
+<term><literal>DBUSMENU_STATUS_NORMAL</literal></term>
+<listitem><simpara>Everything is normal
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="DBUSMENU-STATUS-NOTICE:CAPS" role="constant">
+<term><literal>DBUSMENU_STATUS_NOTICE</literal></term>
+<listitem><simpara>The menus should be shown at a higher priority
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="DbusmenuTextDirection" role="enum">
+<title>enum DbusmenuTextDirection</title>
+<indexterm zone="DbusmenuTextDirection"><primary>DbusmenuTextDirection</primary></indexterm>
+<programlisting>typedef enum { /*&lt; prefix=DBUSMENU_TEXT_DIRECTION &gt;*/
+ DBUSMENU_TEXT_DIRECTION_NONE, /*&lt; nick=none &gt;*/
+ DBUSMENU_TEXT_DIRECTION_LTR, /*&lt; nick=ltr &gt;*/
+ DBUSMENU_TEXT_DIRECTION_RTL /*&lt; nick=rtl &gt;*/
+} DbusmenuTextDirection;
+</programlisting>
+<para>
+The direction of text that the strings that this server
+ will be sending strings as.
+</para><variablelist role="enum">
+<varlistentry id="DBUSMENU-TEXT-DIRECTION-NONE:CAPS" role="constant">
+<term><literal>DBUSMENU_TEXT_DIRECTION_NONE</literal></term>
+<listitem><simpara>Unspecified text direction
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="DBUSMENU-TEXT-DIRECTION-LTR:CAPS" role="constant">
+<term><literal>DBUSMENU_TEXT_DIRECTION_LTR</literal></term>
+<listitem><simpara>Left-to-right text direction
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="DBUSMENU-TEXT-DIRECTION-RTL:CAPS" role="constant">
+<term><literal>DBUSMENU_TEXT_DIRECTION_RTL</literal></term>
+<listitem><simpara>Right-to-left text direction
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-status-get-nick" role="function">
+<title>dbusmenu_status_get_nick ()</title>
+<indexterm zone="dbusmenu-status-get-nick"><primary>dbusmenu_status_get_nick</primary></indexterm>
+<programlisting>const <link linkend="gchar"><returnvalue>gchar</returnvalue></link> * dbusmenu_status_get_nick (<parameter><link linkend="DbusmenuStatus"><type>DbusmenuStatus</type></link> value</parameter>);</programlisting>
+<para>
+Looks up in the enum table for the nick of <parameter>value</parameter>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>value</parameter>&#160;:</term>
+<listitem><simpara>The value of DbusmenuStatus to get the nick of</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The nick for the given value or <link linkend="NULL:CAPS"><type>NULL</type></link> on error</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-status-get-type" role="function">
+<title>dbusmenu_status_get_type ()</title>
+<indexterm zone="dbusmenu-status-get-type"><primary>dbusmenu_status_get_type</primary></indexterm>
+<programlisting><link linkend="GType"><returnvalue>GType</returnvalue></link> dbusmenu_status_get_type (<parameter><type>void</type></parameter>);</programlisting>
+<para>
+Builds a GLib type for the <link linkend="DbusmenuStatus"><type>DbusmenuStatus</type></link> enumeration.
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A unique <link linkend="GType"><type>GType</type></link> for the <link linkend="DbusmenuStatus"><type>DbusmenuStatus</type></link> enum.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-status-get-value-from-nick" role="function">
+<title>dbusmenu_status_get_value_from_nick ()</title>
+<indexterm zone="dbusmenu-status-get-value-from-nick"><primary>dbusmenu_status_get_value_from_nick</primary></indexterm>
+<programlisting><link linkend="DbusmenuStatus"><returnvalue>DbusmenuStatus</returnvalue></link> dbusmenu_status_get_value_from_nick (<parameter>const <link linkend="gchar"><type>gchar</type></link> *nick</parameter>);</programlisting>
+<para>
+Looks up in the enum table for the value of <parameter>nick</parameter>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>nick</parameter>&#160;:</term>
+<listitem><simpara>The enum nick to lookup</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The value for the given <parameter>nick</parameter></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-text-direction-get-nick" role="function">
+<title>dbusmenu_text_direction_get_nick ()</title>
+<indexterm zone="dbusmenu-text-direction-get-nick"><primary>dbusmenu_text_direction_get_nick</primary></indexterm>
+<programlisting>const <link linkend="gchar"><returnvalue>gchar</returnvalue></link> * dbusmenu_text_direction_get_nick (<parameter><link linkend="DbusmenuTextDirection"><type>DbusmenuTextDirection</type></link> value</parameter>);</programlisting>
+<para>
+Looks up in the enum table for the nick of <parameter>value</parameter>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>value</parameter>&#160;:</term>
+<listitem><simpara>The value of DbusmenuTextDirection to get the nick of</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The nick for the given value or <link linkend="NULL:CAPS"><type>NULL</type></link> on error</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-text-direction-get-type" role="function">
+<title>dbusmenu_text_direction_get_type ()</title>
+<indexterm zone="dbusmenu-text-direction-get-type"><primary>dbusmenu_text_direction_get_type</primary></indexterm>
+<programlisting><link linkend="GType"><returnvalue>GType</returnvalue></link> dbusmenu_text_direction_get_type (<parameter><type>void</type></parameter>);</programlisting>
+<para>
+Builds a GLib type for the <link linkend="DbusmenuTextDirection"><type>DbusmenuTextDirection</type></link> enumeration.
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A unique <link linkend="GType"><type>GType</type></link> for the <link linkend="DbusmenuTextDirection"><type>DbusmenuTextDirection</type></link> enum.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-text-direction-get-value-from-nick" role="function">
+<title>dbusmenu_text_direction_get_value_from_nick ()</title>
+<indexterm zone="dbusmenu-text-direction-get-value-from-nick"><primary>dbusmenu_text_direction_get_value_from_nick</primary></indexterm>
+<programlisting><link linkend="DbusmenuTextDirection"><returnvalue>DbusmenuTextDirection</returnvalue></link> dbusmenu_text_direction_get_value_from_nick
+ (<parameter>const <link linkend="gchar"><type>gchar</type></link> *nick</parameter>);</programlisting>
+<para>
+Looks up in the enum table for the value of <parameter>nick</parameter>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>nick</parameter>&#160;:</term>
+<listitem><simpara>The enum nick to lookup</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The value for the given <parameter>nick</parameter></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/docs/libdbusmenu-gtk/Makefile.in b/docs/libdbusmenu-gtk/Makefile.in
index 1dd1094..3bff39b 100644
--- a/docs/libdbusmenu-gtk/Makefile.in
+++ b/docs/libdbusmenu-gtk/Makefile.in
@@ -136,6 +136,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
diff --git a/docs/libdbusmenu-gtk/reference/Makefile.am b/docs/libdbusmenu-gtk/reference/Makefile.am
index 191d68e..06d0009 100644
--- a/docs/libdbusmenu-gtk/reference/Makefile.am
+++ b/docs/libdbusmenu-gtk/reference/Makefile.am
@@ -16,7 +16,7 @@ AUTOMAKE_OPTIONS = 1.6
# of using the various options.
# The name of the module, e.g. 'glib'.
-DOC_MODULE=libdbusmenu-gtk$(VER)
+DOC_MODULE=libdbusmenu-gtk
# The top-level SGML file. You can change this if you want to.
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
@@ -90,5 +90,12 @@ EXTRA_DIST += version.xml.in
#DISTCLEANFILES +=
# Comment this out if you want your docs-status tested during 'make check'
-#TESTS = $(GTKDOC_CHECK)
+TESTS = gtkdoc-in-srcdir
+gtkdoc-in-srcdir: Makefile.am
+ @echo "#!/bin/sh" > $@
+ @echo "cd \"$(srcdir)\"" >> $@
+ @echo "$(GTKDOC_CHECK)" >> $@
+ @chmod +x $@
+
+DISTCLEANFILES = gtkdoc-in-srcdir
diff --git a/docs/libdbusmenu-gtk/reference/Makefile.in b/docs/libdbusmenu-gtk/reference/Makefile.in
index 1b91634..23c4920 100644
--- a/docs/libdbusmenu-gtk/reference/Makefile.in
+++ b/docs/libdbusmenu-gtk/reference/Makefile.in
@@ -63,6 +63,8 @@ am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
am__v_at_0 = @
SOURCES =
DIST_SOURCES =
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALL_LINGUAS = @ALL_LINGUAS@
@@ -103,6 +105,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
@@ -244,7 +247,7 @@ AUTOMAKE_OPTIONS = 1.6
# of using the various options.
# The name of the module, e.g. 'glib'.
-DOC_MODULE = libdbusmenu-gtk$(VER)
+DOC_MODULE = libdbusmenu-gtk
# The top-level SGML file. You can change this if you want to.
DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml
@@ -341,6 +344,15 @@ REPORT_FILES = \
$(DOC_MODULE)-unused.txt
CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+
+# Files not to distribute
+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
+#DISTCLEANFILES +=
+
+# Comment this out if you want your docs-status tested during 'make check'
+TESTS = gtkdoc-in-srcdir
+DISTCLEANFILES = gtkdoc-in-srcdir
all: all-am
.SUFFIXES:
@@ -389,6 +401,98 @@ ctags: CTAGS
CTAGS:
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ echo "$$grn$$dashes"; \
+ else \
+ echo "$$red$$dashes"; \
+ fi; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes$$std"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -423,6 +527,7 @@ distdir: $(DISTFILES)
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-hook
check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-am
all-am: Makefile all-local
installdirs:
@@ -448,6 +553,7 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -519,10 +625,10 @@ ps-am:
uninstall-am: uninstall-local
-.MAKE: install-am install-strip
+.MAKE: check-am install-am install-strip
-.PHONY: all all-am all-local check check-am clean clean-generic \
- clean-libtool clean-local dist-hook distclean \
+.PHONY: all all-am all-local check check-TESTS check-am clean \
+ clean-generic clean-libtool clean-local dist-hook distclean \
distclean-generic distclean-libtool distclean-local distdir \
dvi dvi-am html html-am info info-am install install-am \
install-data install-data-am install-data-local install-dvi \
@@ -677,13 +783,11 @@ dist-hook: dist-check-gtkdoc dist-hook-local
.PHONY : dist-hook-local docs
-# Files not to distribute
-# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
-# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
-#DISTCLEANFILES +=
-
-# Comment this out if you want your docs-status tested during 'make check'
-#TESTS = $(GTKDOC_CHECK)
+gtkdoc-in-srcdir: Makefile.am
+ @echo "#!/bin/sh" > $@
+ @echo "cd \"$(srcdir)\"" >> $@
+ @echo "$(GTKDOC_CHECK)" >> $@
+ @chmod +x $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/docs/libdbusmenu-gtk/reference/html/annotation-glossary.html b/docs/libdbusmenu-gtk/reference/html/annotation-glossary.html
new file mode 100644
index 0000000..cb5c7bc
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/annotation-glossary.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Annotation Glossary</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="up" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="prev" href="api-index-deprecated.html" title="Deprecated API Index">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="api-index-deprecated.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-gtk Reference Manual</th>
+<td> </td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a class="shortcut" href="#glsO">O</a>
+  | 
+ <a class="shortcut" href="#glsT">T</a>
+</td></tr>
+</table>
+<div class="glossary">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="annotation-glossary"></a>Annotation Glossary</h2></div></div></div>
+<a name="glsO"></a><h3 class="title">O</h3>
+<dt>
+<a name="annotation-glossterm-out"></a>out</dt>
+<dd><p>Parameter for returning results. Default is <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>.</p></dd>
+<a name="glsT"></a><h3 class="title">T</h3>
+<dt>
+<a name="annotation-glossterm-transfer%20full"></a>transfer full</dt>
+<dd><p>Free data after the code is done.</p></dd>
+<dt>
+<a name="annotation-glossterm-transfer%20none"></a>transfer none</dt>
+<dd><p>Don't free data after the code is done.</p></dd>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-gtk/reference/html/api-index-deprecated.html b/docs/libdbusmenu-gtk/reference/html/api-index-deprecated.html
new file mode 100644
index 0000000..ad42b0e
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/api-index-deprecated.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Deprecated API Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="up" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="prev" href="api-index-full.html" title="API Index">
+<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-gtk Reference Manual</th>
+<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-deprecated"></a>Deprecated API Index</h2></div></div></div>
+<a name="idx"></a>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-gtk/reference/html/api-index-full.html b/docs/libdbusmenu-gtk/reference/html/api-index-full.html
new file mode 100644
index 0000000..52ae992
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/api-index-full.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>API Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="up" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="prev" href="object-tree.html" title="Object Hierarchy">
+<link rel="next" href="api-index-deprecated.html" title="Deprecated API Index">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="object-tree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-gtk Reference Manual</th>
+<td><a accesskey="n" href="api-index-deprecated.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a class="shortcut" href="#idxG">G</a>
+  | 
+ <a class="shortcut" href="#idxM">M</a>
+</td></tr>
+</table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-full"></a>API Index</h2></div></div></div>
+<a name="idx"></a><a name="idxG"></a><h3 class="title">G</h3>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient">DbusmenuGtkClient</a>, struct in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">DbusmenuGtkClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClientClass" title="struct DbusmenuGtkClientClass">DbusmenuGtkClientClass</a>, struct in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">DbusmenuGtkClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-get-accel-group" title="dbusmenu_gtkclient_get_accel_group ()">dbusmenu_gtkclient_get_accel_group</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">DbusmenuGtkClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-menuitem-get" title="dbusmenu_gtkclient_menuitem_get ()">dbusmenu_gtkclient_menuitem_get</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">DbusmenuGtkClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-menuitem-get-submenu" title="dbusmenu_gtkclient_menuitem_get_submenu ()">dbusmenu_gtkclient_menuitem_get_submenu</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">DbusmenuGtkClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-new" title="dbusmenu_gtkclient_new ()">dbusmenu_gtkclient_new</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">DbusmenuGtkClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-newitem-base" title="dbusmenu_gtkclient_newitem_base ()">dbusmenu_gtkclient_newitem_base</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">DbusmenuGtkClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-set-accel-group" title="dbusmenu_gtkclient_set_accel_group ()">dbusmenu_gtkclient_set_accel_group</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">DbusmenuGtkClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS" title="DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED">DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED</a>, macro in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">DbusmenuGtkClient</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html#DbusmenuGtkMenuClass" title="struct DbusmenuGtkMenuClass">DbusmenuGtkMenuClass</a>, struct in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html" title="DbusmenuGtkMenu">DbusmenuGtkMenu</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-get-client" title="dbusmenu_gtkmenu_get_client ()">dbusmenu_gtkmenu_get_client</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html" title="DbusmenuGtkMenu">DbusmenuGtkMenu</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-new" title="dbusmenu_gtkmenu_new ()">dbusmenu_gtkmenu_new</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html" title="DbusmenuGtkMenu">DbusmenuGtkMenu</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#DbusmenuGtkSerializableMenuItemClass" title="struct DbusmenuGtkSerializableMenuItemClass">DbusmenuGtkSerializableMenuItemClass</a>, struct in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html" title="DbusmenuGtkSerializableMenuItem">DbusmenuGtkSerializableMenuItem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-parser.html#dbusmenu-gtk-parse-menu-structure" title="dbusmenu_gtk_parse_menu_structure ()">dbusmenu_gtk_parse_menu_structure</a>, function in <a class="link" href="libdbusmenu-gtk-parser.html" title="parser">parser</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-build-menuitem" title="dbusmenu_gtk_serializable_menu_item_build_menuitem ()">dbusmenu_gtk_serializable_menu_item_build_menuitem</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html" title="DbusmenuGtkSerializableMenuItem">DbusmenuGtkSerializableMenuItem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#DBUSMENU-GTK-SERIALIZABLE-MENU-ITEM-PROP-MENUITEM:CAPS" title="DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM">DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM</a>, macro in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html" title="DbusmenuGtkSerializableMenuItem">DbusmenuGtkSerializableMenuItem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-register-to-client" title="dbusmenu_gtk_serializable_menu_item_register_to_client ()">dbusmenu_gtk_serializable_menu_item_register_to_client</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html" title="DbusmenuGtkSerializableMenuItem">DbusmenuGtkSerializableMenuItem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-set-menuitem" title="dbusmenu_gtk_serializable_menu_item_set_menuitem ()">dbusmenu_gtk_serializable_menu_item_set_menuitem</a>, function in <a class="link" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html" title="DbusmenuGtkSerializableMenuItem">DbusmenuGtkSerializableMenuItem</a>
+</dt>
+<dd></dd>
+<a name="idxM"></a><h3 class="title">M</h3>
+<dt>
+<a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-get-image" title="dbusmenu_menuitem_property_get_image ()">dbusmenu_menuitem_property_get_image</a>, function in <a class="link" href="libdbusmenu-gtk-menuitem.html" title="menuitem">menuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-get-shortcut" title="dbusmenu_menuitem_property_get_shortcut ()">dbusmenu_menuitem_property_get_shortcut</a>, function in <a class="link" href="libdbusmenu-gtk-menuitem.html" title="menuitem">menuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-image" title="dbusmenu_menuitem_property_set_image ()">dbusmenu_menuitem_property_set_image</a>, function in <a class="link" href="libdbusmenu-gtk-menuitem.html" title="menuitem">menuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut" title="dbusmenu_menuitem_property_set_shortcut ()">dbusmenu_menuitem_property_set_shortcut</a>, function in <a class="link" href="libdbusmenu-gtk-menuitem.html" title="menuitem">menuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut-menuitem" title="dbusmenu_menuitem_property_set_shortcut_menuitem ()">dbusmenu_menuitem_property_set_shortcut_menuitem</a>, function in <a class="link" href="libdbusmenu-gtk-menuitem.html" title="menuitem">menuitem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut-string" title="dbusmenu_menuitem_property_set_shortcut_string ()">dbusmenu_menuitem_property_set_shortcut_string</a>, function in <a class="link" href="libdbusmenu-gtk-menuitem.html" title="menuitem">menuitem</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-gtk/reference/html/ch01.html b/docs/libdbusmenu-gtk/reference/html/ch01.html
new file mode 100644
index 0000000..d2cb038
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/ch01.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>API</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="up" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="prev" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="next" href="libdbusmenu-gtk-DbusmenuGtkMenu.html" title="DbusmenuGtkMenu">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-gtk Reference Manual</th>
+<td><a accesskey="n" href="libdbusmenu-gtk-DbusmenuGtkMenu.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="id528275"></a>API</h2></div></div></div>
+<div class="toc"><dl>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-gtk-DbusmenuGtkMenu.html">DbusmenuGtkMenu</a></span><span class="refpurpose"> — A GTK Menu Object that syncronizes over DBus</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-gtk-menuitem.html">menuitem</a></span><span class="refpurpose"> — Helpers for <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> properties that require a GTK dependency</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-gtk-DbusmenuGtkClient.html">DbusmenuGtkClient</a></span><span class="refpurpose"> — A subclass of <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient"><span class="type">DbusmenuClient</span></a> adding GTK level features</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-gtk-parser.html">parser</a></span><span class="refpurpose"> — A parser of in-memory GTK menu trees</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html">DbusmenuGtkSerializableMenuItem</a></span><span class="refpurpose"> — A way to build <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItems</span></a> that can be sent over Dbusmenu</span>
+</dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-gtk/reference/html/home.png b/docs/libdbusmenu-gtk/reference/html/home.png
new file mode 100644
index 0000000..fb60b55
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/home.png
Binary files differ
diff --git a/docs/libdbusmenu-gtk/reference/html/index.html b/docs/libdbusmenu-gtk/reference/html/index.html
new file mode 100644
index 0000000..8c92ba7
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/index.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>libdbusmenu-gtk Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="next" href="ch01.html" title="API">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book">
+<div class="titlepage">
+<div><div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libdbusmenu-gtk Reference Manual</p></th></tr></table></div></div>
+<hr>
+</div>
+<div class="toc"><dl>
+<dt><span class="chapter"><a href="ch01.html">API</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-gtk-DbusmenuGtkMenu.html">DbusmenuGtkMenu</a></span><span class="refpurpose"> — A GTK Menu Object that syncronizes over DBus</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-gtk-menuitem.html">menuitem</a></span><span class="refpurpose"> — Helpers for <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> properties that require a GTK dependency</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-gtk-DbusmenuGtkClient.html">DbusmenuGtkClient</a></span><span class="refpurpose"> — A subclass of <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient"><span class="type">DbusmenuClient</span></a> adding GTK level features</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-gtk-parser.html">parser</a></span><span class="refpurpose"> — A parser of in-memory GTK menu trees</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html">DbusmenuGtkSerializableMenuItem</a></span><span class="refpurpose"> — A way to build <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItems</span></a> that can be sent over Dbusmenu</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="object-tree.html">Object Hierarchy</a></span></dt>
+<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt>
+<dt><span class="index"><a href="api-index-deprecated.html">Deprecated API Index</a></span></dt>
+<dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-gtk/reference/html/index.sgml b/docs/libdbusmenu-gtk/reference/html/index.sgml
new file mode 100644
index 0000000..95c6887
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/index.sgml
@@ -0,0 +1,52 @@
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkMenu" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkMenu.html">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkMenu.stability-level" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkMenu.html#libdbusmenu-gtk-DbusmenuGtkMenu.stability-level">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkMenu.synopsis" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkMenu.html#libdbusmenu-gtk-DbusmenuGtkMenu.synopsis">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkMenu.description" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkMenu.html#libdbusmenu-gtk-DbusmenuGtkMenu.description">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkMenu.details" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkMenu.html#libdbusmenu-gtk-DbusmenuGtkMenu.details">
+<ANCHOR id="DbusmenuGtkMenuClass" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkMenu.html#DbusmenuGtkMenuClass">
+<ANCHOR id="dbusmenu-gtkmenu-new" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-new">
+<ANCHOR id="dbusmenu-gtkmenu-get-client" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-get-client">
+<ANCHOR id="libdbusmenu-gtk-menuitem" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html">
+<ANCHOR id="libdbusmenu-gtk-menuitem.stability-level" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#libdbusmenu-gtk-menuitem.stability-level">
+<ANCHOR id="libdbusmenu-gtk-menuitem.synopsis" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#libdbusmenu-gtk-menuitem.synopsis">
+<ANCHOR id="libdbusmenu-gtk-menuitem.description" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#libdbusmenu-gtk-menuitem.description">
+<ANCHOR id="libdbusmenu-gtk-menuitem.details" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#libdbusmenu-gtk-menuitem.details">
+<ANCHOR id="dbusmenu-menuitem-property-set-image" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-image">
+<ANCHOR id="dbusmenu-menuitem-property-get-image" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-get-image">
+<ANCHOR id="dbusmenu-menuitem-property-set-shortcut" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut">
+<ANCHOR id="dbusmenu-menuitem-property-set-shortcut-string" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut-string">
+<ANCHOR id="dbusmenu-menuitem-property-set-shortcut-menuitem" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut-menuitem">
+<ANCHOR id="dbusmenu-menuitem-property-get-shortcut" href="libdbusmenu-gtk/libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-get-shortcut">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkClient" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkClient.stability-level" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#libdbusmenu-gtk-DbusmenuGtkClient.stability-level">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkClient.synopsis" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#libdbusmenu-gtk-DbusmenuGtkClient.synopsis">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkClient.description" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#libdbusmenu-gtk-DbusmenuGtkClient.description">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkClient.details" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#libdbusmenu-gtk-DbusmenuGtkClient.details">
+<ANCHOR id="DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS">
+<ANCHOR id="DbusmenuGtkClient" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient">
+<ANCHOR id="DbusmenuGtkClientClass" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClientClass">
+<ANCHOR id="dbusmenu-gtkclient-new" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-new">
+<ANCHOR id="dbusmenu-gtkclient-menuitem-get" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-menuitem-get">
+<ANCHOR id="dbusmenu-gtkclient-menuitem-get-submenu" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-menuitem-get-submenu">
+<ANCHOR id="dbusmenu-gtkclient-set-accel-group" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-set-accel-group">
+<ANCHOR id="dbusmenu-gtkclient-get-accel-group" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-get-accel-group">
+<ANCHOR id="dbusmenu-gtkclient-newitem-base" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-newitem-base">
+<ANCHOR id="libdbusmenu-gtk-parser" href="libdbusmenu-gtk/libdbusmenu-gtk-parser.html">
+<ANCHOR id="libdbusmenu-gtk-parser.stability-level" href="libdbusmenu-gtk/libdbusmenu-gtk-parser.html#libdbusmenu-gtk-parser.stability-level">
+<ANCHOR id="libdbusmenu-gtk-parser.synopsis" href="libdbusmenu-gtk/libdbusmenu-gtk-parser.html#libdbusmenu-gtk-parser.synopsis">
+<ANCHOR id="libdbusmenu-gtk-parser.description" href="libdbusmenu-gtk/libdbusmenu-gtk-parser.html#libdbusmenu-gtk-parser.description">
+<ANCHOR id="libdbusmenu-gtk-parser.details" href="libdbusmenu-gtk/libdbusmenu-gtk-parser.html#libdbusmenu-gtk-parser.details">
+<ANCHOR id="dbusmenu-gtk-parse-menu-structure" href="libdbusmenu-gtk/libdbusmenu-gtk-parser.html#dbusmenu-gtk-parse-menu-structure">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.stability-level" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.stability-level">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.synopsis" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.synopsis">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.description" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.description">
+<ANCHOR id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.details" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.details">
+<ANCHOR id="DBUSMENU-GTK-SERIALIZABLE-MENU-ITEM-PROP-MENUITEM:CAPS" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#DBUSMENU-GTK-SERIALIZABLE-MENU-ITEM-PROP-MENUITEM:CAPS">
+<ANCHOR id="DbusmenuGtkSerializableMenuItemClass" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#DbusmenuGtkSerializableMenuItemClass">
+<ANCHOR id="dbusmenu-gtk-serializable-menu-item-build-menuitem" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-build-menuitem">
+<ANCHOR id="dbusmenu-gtk-serializable-menu-item-register-to-client" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-register-to-client">
+<ANCHOR id="dbusmenu-gtk-serializable-menu-item-set-menuitem" href="libdbusmenu-gtk/libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-set-menuitem">
+<ANCHOR id="annotation-glossterm-out" href="libdbusmenu-gtk/annotation-glossary.html#annotation-glossterm-out">
+<ANCHOR id="annotation-glossterm-transfer full" href="libdbusmenu-gtk/annotation-glossary.html#annotation-glossterm-transfer full">
+<ANCHOR id="annotation-glossterm-transfer none" href="libdbusmenu-gtk/annotation-glossary.html#annotation-glossterm-transfer none">
diff --git a/docs/libdbusmenu-gtk/reference/html/left.png b/docs/libdbusmenu-gtk/reference/html/left.png
new file mode 100644
index 0000000..48cab27
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/left.png
Binary files differ
diff --git a/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-DbusmenuGtkClient.html b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-DbusmenuGtkClient.html
new file mode 100644
index 0000000..54c5bdb
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-DbusmenuGtkClient.html
@@ -0,0 +1,347 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>DbusmenuGtkClient</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="up" href="ch01.html" title="API">
+<link rel="prev" href="libdbusmenu-gtk-menuitem.html" title="menuitem">
+<link rel="next" href="libdbusmenu-gtk-parser.html" title="parser">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libdbusmenu-gtk-menuitem.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-gtk Reference Manual</th>
+<td><a accesskey="n" href="libdbusmenu-gtk-parser.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libdbusmenu-gtk-DbusmenuGtkClient.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#libdbusmenu-gtk-DbusmenuGtkClient.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="libdbusmenu-gtk-DbusmenuGtkClient"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libdbusmenu-gtk-DbusmenuGtkClient.top_of_page"></a>DbusmenuGtkClient</span></h2>
+<p>DbusmenuGtkClient — A subclass of <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient"><span class="type">DbusmenuClient</span></a> adding GTK level features</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-DbusmenuGtkClient.stability-level"></a><h2>Stability Level</h2>
+Unstable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<a name="libdbusmenu-gtk-DbusmenuGtkClient.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;libdbusmenu-gtk/client.h&gt;
+
+#define <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS" title="DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED">DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED</a>
+ <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient">DbusmenuGtkClient</a>;
+struct <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClientClass" title="struct DbusmenuGtkClientClass">DbusmenuGtkClientClass</a>;
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="returnvalue">DbusmenuGtkClient</span></a> * <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-new" title="dbusmenu_gtkclient_new ()">dbusmenu_gtkclient_new</a> (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dbus_name</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dbus_object</code></em>);
+<a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="returnvalue">GtkMenuItem</span></a> * <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-menuitem-get" title="dbusmenu_gtkclient_menuitem_get ()">dbusmenu_gtkclient_menuitem_get</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> *client</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *item</code></em>);
+<a href="http://library.gnome.org/devel/gtk/2.24/GtkMenu.html"><span class="returnvalue">GtkMenu</span></a> * <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-menuitem-get-submenu" title="dbusmenu_gtkclient_menuitem_get_submenu ()">dbusmenu_gtkclient_menuitem_get_submenu</a>
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> *client</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *item</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-set-accel-group" title="dbusmenu_gtkclient_set_accel_group ()">dbusmenu_gtkclient_set_accel_group</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> *client</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/gtk/2.24/gtk3-Keyboard-Accelerators.html#GtkAccelGroup"><span class="type">GtkAccelGroup</span></a> *agroup</code></em>);
+<a href="http://library.gnome.org/devel/gtk/2.24/gtk3-Keyboard-Accelerators.html#GtkAccelGroup"><span class="returnvalue">GtkAccelGroup</span></a> * <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-get-accel-group" title="dbusmenu_gtkclient_get_accel_group ()">dbusmenu_gtkclient_get_accel_group</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> *client</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-newitem-base" title="dbusmenu_gtkclient_newitem_base ()">dbusmenu_gtkclient_newitem_base</a> (<em class="parameter"><code><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> *client</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *item</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItem</span></a> *gmi</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *parent</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-DbusmenuGtkClient.description"></a><h2>Description</h2>
+<p>
+In general, this is just a <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenu.html"><span class="type">GtkMenu</span></a>, why else would you care? Oh,
+ because this menu is created by someone else on a server that exists
+ on the other side of DBus. You need a <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a> to be able
+ push the data into this menu.
+</p>
+<p>
+ The first thing you need to know is how to find that <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a>
+ on DBus. This involves both the DBus name and the DBus object that
+ the menu interface can be found on. Those two value should be set
+ when creating the object using <a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-new" title="dbusmenu_gtkmenu_new ()"><code class="function">dbusmenu_gtkmenu_new()</code></a>. They are then
+ stored on two properties <span class="type">"dbus-name"</span> and <span class="type">"dbus-object"</span>.
+</p>
+<p>
+ After creation the <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> it will continue to keep in
+ synchronization with the <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a> object across Dbus. If the
+ number of entries change, the menus change, if they change thier
+ properties change, they update in the items. All of this should
+ be handled transparently to the user of this object.
+</p>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-DbusmenuGtkClient.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS"></a><h3>DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED</h3>
+<pre class="programlisting">#define DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED
+</pre>
+<p>
+String to attach to signal <span class="type">"root-changed"</span>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuGtkClient"></a><h3>DbusmenuGtkClient</h3>
+<pre class="programlisting">typedef struct _DbusmenuGtkClient DbusmenuGtkClient;</pre>
+<p>
+A subclass of <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient"><span class="type">DbusmenuClient</span></a> to add functionality with regarding
+building GTK items out of the abstract tree.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="DbusmenuGtkClientClass"></a><h3>struct DbusmenuGtkClientClass</h3>
+<pre class="programlisting">struct DbusmenuGtkClientClass {
+ DbusmenuClientClass parent_class;
+
+ /* Signals */
+ void (*root_changed) (DbusmenuMenuitem * newroot);
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+ void (*reserved6) (void);
+};
+</pre>
+<p>
+Functions and signal slots for using a <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClientClass"><span class="type">DbusmenuClientClass</span></a> <em class="structfield"><code><a name="DbusmenuGtkClientClass.parent-class"></a>parent_class</code></em>;</span></p></td>
+<td><span class="type">GtkMenuClass</span></td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkClientClass.root-changed"></a>root_changed</code></em> ()</span></p></td>
+<td>Slot for signal <span class="type">"root-changed"</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkClientClass.reserved1"></a>reserved1</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkClientClass.reserved2"></a>reserved2</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkClientClass.reserved3"></a>reserved3</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkClientClass.reserved4"></a>reserved4</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkClientClass.reserved5"></a>reserved5</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkClientClass.reserved6"></a>reserved6</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-gtkclient-new"></a><h3>dbusmenu_gtkclient_new ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="returnvalue">DbusmenuGtkClient</span></a> * dbusmenu_gtkclient_new (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dbus_name</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dbus_object</code></em>);</pre>
+<p>
+Creates a new <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> object and creates a <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient"><span class="type">DbusmenuClient</span></a>
+that connects across DBus to a <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>dbus_name</code></em> :</span></p></td>
+<td>Name of the <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a> on DBus</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>dbus_object</code></em> :</span></p></td>
+<td>Name of the object on the <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A new <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> sync'd with a server</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-gtkclient-menuitem-get"></a><h3>dbusmenu_gtkclient_menuitem_get ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="returnvalue">GtkMenuItem</span></a> * dbusmenu_gtkclient_menuitem_get (<em class="parameter"><code><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> *client</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *item</code></em>);</pre>
+<p>
+This grabs the <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItem</span></a> that is associated with the
+<a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>A <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> with the item in it.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>item</code></em> :</span></p></td>
+<td>
+<a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to get associated <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItem</span></a> on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItem</span></a> that can be played with. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-gtkclient-menuitem-get-submenu"></a><h3>dbusmenu_gtkclient_menuitem_get_submenu ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/gtk/2.24/GtkMenu.html"><span class="returnvalue">GtkMenu</span></a> * dbusmenu_gtkclient_menuitem_get_submenu
+ (<em class="parameter"><code><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> *client</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *item</code></em>);</pre>
+<p>
+This grabs the submenu associated with the menuitem.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>A <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> with the item in it.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>item</code></em> :</span></p></td>
+<td>
+<a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to get associated <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenu.html"><span class="type">GtkMenu</span></a> on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenu.html"><span class="type">GtkMenu</span></a> if there is one. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-gtkclient-set-accel-group"></a><h3>dbusmenu_gtkclient_set_accel_group ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_gtkclient_set_accel_group (<em class="parameter"><code><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> *client</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/gtk/2.24/gtk3-Keyboard-Accelerators.html#GtkAccelGroup"><span class="type">GtkAccelGroup</span></a> *agroup</code></em>);</pre>
+<p>
+Sets the acceleration group for the menu items with accelerators
+on this client.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>To set the group on</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>agroup</code></em> :</span></p></td>
+<td>The new acceleration group</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-gtkclient-get-accel-group"></a><h3>dbusmenu_gtkclient_get_accel_group ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/gtk/2.24/gtk3-Keyboard-Accelerators.html#GtkAccelGroup"><span class="returnvalue">GtkAccelGroup</span></a> * dbusmenu_gtkclient_get_accel_group (<em class="parameter"><code><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> *client</code></em>);</pre>
+<p>
+Gets the accel group for this client.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>Client to query for an accelerator group</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Either a valid group or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> on error or
+none set. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-gtkclient-newitem-base"></a><h3>dbusmenu_gtkclient_newitem_base ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_gtkclient_newitem_base (<em class="parameter"><code><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> *client</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *item</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItem</span></a> *gmi</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *parent</code></em>);</pre>
+<p>
+This function provides some of the basic connectivity for being in
+the GTK world. Things like visibility and sensitivity of the item are
+handled here so that the subclasses don't have to. If you're building
+your on GTK menu item you can use this function to apply those basic
+attributes so that you don't have to deal with them either.
+</p>
+<p>
+This also handles passing the "activate" signal back to the
+<a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> side of thing.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>client</code></em> :</span></p></td>
+<td>The client handling everything on this connection</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>item</code></em> :</span></p></td>
+<td>The <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to attach the GTK-isms to</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>gmi</code></em> :</span></p></td>
+<td>A <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItem</span></a> representing the GTK world's view of this menuitem</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>parent</code></em> :</span></p></td>
+<td>The parent <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-DbusmenuGtkMenu.html b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-DbusmenuGtkMenu.html
new file mode 100644
index 0000000..44fb6e4
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-DbusmenuGtkMenu.html
@@ -0,0 +1,187 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>DbusmenuGtkMenu</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="up" href="ch01.html" title="API">
+<link rel="prev" href="ch01.html" title="API">
+<link rel="next" href="libdbusmenu-gtk-menuitem.html" title="menuitem">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="ch01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-gtk Reference Manual</th>
+<td><a accesskey="n" href="libdbusmenu-gtk-menuitem.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libdbusmenu-gtk-DbusmenuGtkMenu.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#libdbusmenu-gtk-DbusmenuGtkMenu.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="libdbusmenu-gtk-DbusmenuGtkMenu"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libdbusmenu-gtk-DbusmenuGtkMenu.top_of_page"></a>DbusmenuGtkMenu</span></h2>
+<p>DbusmenuGtkMenu — A GTK Menu Object that syncronizes over DBus</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-DbusmenuGtkMenu.stability-level"></a><h2>Stability Level</h2>
+Unstable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<a name="libdbusmenu-gtk-DbusmenuGtkMenu.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;libdbusmenu-gtk/menu.h&gt;
+
+struct <a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html#DbusmenuGtkMenuClass" title="struct DbusmenuGtkMenuClass">DbusmenuGtkMenuClass</a>;
+<span class="returnvalue">DbusmenuGtkMenu</span> * <a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-new" title="dbusmenu_gtkmenu_new ()">dbusmenu_gtkmenu_new</a> (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dbus_name</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dbus_object</code></em>);
+<a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="returnvalue">DbusmenuGtkClient</span></a> * <a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-get-client" title="dbusmenu_gtkmenu_get_client ()">dbusmenu_gtkmenu_get_client</a> (<em class="parameter"><code><span class="type">DbusmenuGtkMenu</span> *menu</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-DbusmenuGtkMenu.description"></a><h2>Description</h2>
+<p>
+In general, this is just a <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenu.html"><span class="type">GtkMenu</span></a>, why else would you care? Oh,
+ because this menu is created by someone else on a server that exists
+ on the other side of DBus. You need a <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a> to be able
+ push the data into this menu.
+</p>
+<p>
+ The first thing you need to know is how to find that <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a>
+ on DBus. This involves both the DBus name and the DBus object that
+ the menu interface can be found on. Those two value should be set
+ when creating the object using <a class="link" href="libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-new" title="dbusmenu_gtkmenu_new ()"><code class="function">dbusmenu_gtkmenu_new()</code></a>. They are then
+ stored on two properties <span class="type">"dbus-name"</span> and <span class="type">"dbus-object"</span>.
+</p>
+<p>
+ After creation the <span class="type">DbusmenuGtkMenu</span> it will continue to keep in
+ synchronization with the <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a> object across Dbus. If the
+ number of entries change, the menus change, if they change thier
+ properties change, they update in the items. All of this should
+ be handled transparently to the user of this object.
+</p>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-DbusmenuGtkMenu.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="DbusmenuGtkMenuClass"></a><h3>struct DbusmenuGtkMenuClass</h3>
+<pre class="programlisting">struct DbusmenuGtkMenuClass {
+ GtkMenuClass parent_class;
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+ void (*reserved6) (void);
+};
+</pre>
+<p>
+All of the subclassable functions and signal slots for a
+<span class="type">DbusmenuGtkMenu</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><span class="type">GtkMenuClass</span> <em class="structfield"><code><a name="DbusmenuGtkMenuClass.parent-class"></a>parent_class</code></em>;</span></p></td>
+<td><span class="type">GtkMenuClass</span></td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkMenuClass.reserved1"></a>reserved1</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkMenuClass.reserved2"></a>reserved2</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkMenuClass.reserved3"></a>reserved3</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkMenuClass.reserved4"></a>reserved4</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkMenuClass.reserved5"></a>reserved5</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="DbusmenuGtkMenuClass.reserved6"></a>reserved6</code></em> ()</span></p></td>
+<td>Reserved for future use.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-gtkmenu-new"></a><h3>dbusmenu_gtkmenu_new ()</h3>
+<pre class="programlisting"><span class="returnvalue">DbusmenuGtkMenu</span> * dbusmenu_gtkmenu_new (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dbus_name</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dbus_object</code></em>);</pre>
+<p>
+Creates a new <span class="type">DbusmenuGtkMenu</span> object and creates a <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuClient.html#DbusmenuClient"><span class="type">DbusmenuClient</span></a>
+that connects across DBus to a <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>dbus_name</code></em> :</span></p></td>
+<td>Name of the <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a> on DBus</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>dbus_object</code></em> :</span></p></td>
+<td>Name of the object on the <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuServer.html#DbusmenuServer"><span class="type">DbusmenuServer</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A new <span class="type">DbusmenuGtkMenu</span> sync'd with a server</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-gtkmenu-get-client"></a><h3>dbusmenu_gtkmenu_get_client ()</h3>
+<pre class="programlisting"><a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="returnvalue">DbusmenuGtkClient</span></a> * dbusmenu_gtkmenu_get_client (<em class="parameter"><code><span class="type">DbusmenuGtkMenu</span> *menu</code></em>);</pre>
+<p>
+An accessor for the client that this menu is using to
+communicate with the server.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>menu</code></em> :</span></p></td>
+<td>The <span class="type">DbusmenuGtkMenu</span> to get the client from</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A valid <a class="link" href="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient" title="DbusmenuGtkClient"><span class="type">DbusmenuGtkClient</span></a> or NULL on error. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-menuitem.html b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-menuitem.html
new file mode 100644
index 0000000..031cf48
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-menuitem.html
@@ -0,0 +1,274 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>menuitem</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="up" href="ch01.html" title="API">
+<link rel="prev" href="libdbusmenu-gtk-DbusmenuGtkMenu.html" title="DbusmenuGtkMenu">
+<link rel="next" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libdbusmenu-gtk-DbusmenuGtkMenu.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-gtk Reference Manual</th>
+<td><a accesskey="n" href="libdbusmenu-gtk-DbusmenuGtkClient.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libdbusmenu-gtk-menuitem.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#libdbusmenu-gtk-menuitem.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="libdbusmenu-gtk-menuitem"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libdbusmenu-gtk-menuitem.top_of_page"></a>menuitem</span></h2>
+<p>menuitem — Helpers for <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> properties that require a GTK dependency</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-menuitem.stability-level"></a><h2>Stability Level</h2>
+Unstable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<a name="libdbusmenu-gtk-menuitem.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;libdbusmenu-gtk/menuitem.h&gt;
+
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-image" title="dbusmenu_menuitem_property_set_image ()">dbusmenu_menuitem_property_set_image</a>
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>,
+ <em class="parameter"><code>const <span class="type">GdkPixbuf</span> *data</code></em>);
+<span class="returnvalue">GdkPixbuf</span> * <a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-get-image" title="dbusmenu_menuitem_property_get_image ()">dbusmenu_menuitem_property_get_image</a>
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut" title="dbusmenu_menuitem_property_set_shortcut ()">dbusmenu_menuitem_property_set_shortcut</a>
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> key</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/gdk3/gdk-Windows.html#GdkModifierType"><span class="type">GdkModifierType</span></a> modifier</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut-string" title="dbusmenu_menuitem_property_set_shortcut_string ()">dbusmenu_menuitem_property_set_shortcut_string</a>
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *shortcut</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut-menuitem" title="dbusmenu_menuitem_property_set_shortcut_menuitem ()">dbusmenu_menuitem_property_set_shortcut_menuitem</a>
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItem</span></a> *gmi</code></em>);
+<span class="returnvalue">void</span> <a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-get-shortcut" title="dbusmenu_menuitem_property_get_shortcut ()">dbusmenu_menuitem_property_get_shortcut</a>
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *key</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/gdk3/gdk-Windows.html#GdkModifierType"><span class="type">GdkModifierType</span></a> *modifier</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-menuitem.description"></a><h2>Description</h2>
+<p>
+Some property helpers can't be done without picking up a GTK+
+ dependency. So those sit in libdbusmenu-gtk but have very similar
+ prototypes to the code in libdbusmenu-glib so your code will
+ look consistent, just with the extra depedency.
+</p>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-menuitem.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-set-image"></a><h3>dbusmenu_menuitem_property_set_image ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_property_set_image
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>,
+ <em class="parameter"><code>const <span class="type">GdkPixbuf</span> *data</code></em>);</pre>
+<p>
+This function takes the pixbuf that is stored in <em class="parameter"><code>data</code></em> and
+turns it into a base64 encoded PNG so that it can be placed
+onto a standard <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> property.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>menuitem</code></em> :</span></p></td>
+<td>The <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to set the property on.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>Name of the property to set.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
+<td>The image to place on the property.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether the function was able to set the property
+or not.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-get-image"></a><h3>dbusmenu_menuitem_property_get_image ()</h3>
+<pre class="programlisting"><span class="returnvalue">GdkPixbuf</span> * dbusmenu_menuitem_property_get_image
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property</code></em>);</pre>
+<p>
+This function looks on the menu item for a property by the
+name of <em class="parameter"><code>property</code></em>. If one exists it tries to turn it into
+a <span class="type">GdkPixbuf</span>. It assumes that the property is a base64 encoded
+PNG file like the one created by <span class="type">dbusmenu_menuite_property_set_image</span>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>menuitem</code></em> :</span></p></td>
+<td>The <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to look for the property on</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>property</code></em> :</span></p></td>
+<td>The name of the property to look for.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A pixbuf or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> to signal error. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-set-shortcut"></a><h3>dbusmenu_menuitem_property_set_shortcut ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_property_set_shortcut
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> key</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/gdk3/gdk-Windows.html#GdkModifierType"><span class="type">GdkModifierType</span></a> modifier</code></em>);</pre>
+<p>
+Takes the modifer described by <em class="parameter"><code>key</code></em> and <em class="parameter"><code>modifier</code></em> and places that into
+the format sending across Dbus for shortcuts.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>menuitem</code></em> :</span></p></td>
+<td>The <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to set the shortcut on</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>key</code></em> :</span></p></td>
+<td>The keycode of the key to send</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>modifier</code></em> :</span></p></td>
+<td>A bitmask of modifiers used to activate the item</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether it was successful at setting the property.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-set-shortcut-string"></a><h3>dbusmenu_menuitem_property_set_shortcut_string ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_property_set_shortcut_string
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *shortcut</code></em>);</pre>
+<p>
+This function takes a GTK shortcut string as defined in
+<a href="http://library.gnome.org/devel/gtk/2.24/gtk3-Keyboard-Accelerators.html#gtk-accelerator-parse"><span class="type">gtk_accelerator_parse</span></a> and turns that into the information
+required to send it over DBusmenu.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>menuitem</code></em> :</span></p></td>
+<td>The <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to set the shortcut on</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>shortcut</code></em> :</span></p></td>
+<td>String describing the shortcut</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether it was successful at setting the property.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-set-shortcut-menuitem"></a><h3>dbusmenu_menuitem_property_set_shortcut_menuitem ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> dbusmenu_menuitem_property_set_shortcut_menuitem
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code>const <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItem</span></a> *gmi</code></em>);</pre>
+<p>
+Takes the shortcut that is installed on a menu item and calls
+<a class="link" href="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut" title="dbusmenu_menuitem_property_set_shortcut ()"><span class="type">dbusmenu_menuitem_property_set_shortcut</span></a> with it. It also sets
+up listeners to watch it change.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>menuitem</code></em> :</span></p></td>
+<td>The <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to set the shortcut on</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>gmi</code></em> :</span></p></td>
+<td>A menu item to steal the shortcut off of</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>Whether it was successful at setting the property.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="dbusmenu-menuitem-property-get-shortcut"></a><h3>dbusmenu_menuitem_property_get_shortcut ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> dbusmenu_menuitem_property_get_shortcut
+ (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> *menuitem</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *key</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/gdk3/gdk-Windows.html#GdkModifierType"><span class="type">GdkModifierType</span></a> *modifier</code></em>);</pre>
+<p>
+This function gets a GTK shortcut as a key and a mask
+for use to set the accelerators.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>menuitem</code></em> :</span></p></td>
+<td>The <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a> to get the shortcut off</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>key</code></em> :</span></p></td>
+<td>Location to put the key value. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>modifier</code></em> :</span></p></td>
+<td>Location to put the modifier mask. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-parser.html b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-parser.html
new file mode 100644
index 0000000..6642957
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk-parser.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>parser</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="up" href="ch01.html" title="API">
+<link rel="prev" href="libdbusmenu-gtk-DbusmenuGtkClient.html" title="DbusmenuGtkClient">
+<link rel="next" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html" title="DbusmenuGtkSerializableMenuItem">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libdbusmenu-gtk-DbusmenuGtkClient.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-gtk Reference Manual</th>
+<td><a accesskey="n" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libdbusmenu-gtk-parser.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#libdbusmenu-gtk-parser.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="libdbusmenu-gtk-parser"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libdbusmenu-gtk-parser.top_of_page"></a>parser</span></h2>
+<p>parser — A parser of in-memory GTK menu trees</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-parser.stability-level"></a><h2>Stability Level</h2>
+Unstable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<a name="libdbusmenu-gtk-parser.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;libdbusmenu-gtk/parser.h&gt;
+
+<a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * <a class="link" href="libdbusmenu-gtk-parser.html#dbusmenu-gtk-parse-menu-structure" title="dbusmenu_gtk_parse_menu_structure ()">dbusmenu_gtk_parse_menu_structure</a> (<em class="parameter"><code><a href="http://library.gnome.org/devel/gtk/2.24/GtkWidget.html"><span class="type">GtkWidget</span></a> *widget</code></em>);
+</pre>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-parser.description"></a><h2>Description</h2>
+<p>
+The parser will take a GTK menu tree and attach it to a Dbusmenu menu
+ tree. Along with setting up all the signals for updates and destruction.
+ The returned item would be the root item of the given tree.
+</p>
+</div>
+<div class="refsect1">
+<a name="libdbusmenu-gtk-parser.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="dbusmenu-gtk-parse-menu-structure"></a><h3>dbusmenu_gtk_parse_menu_structure ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="returnvalue">DbusmenuMenuitem</span></a> * dbusmenu_gtk_parse_menu_structure (<em class="parameter"><code><a href="http://library.gnome.org/devel/gtk/2.24/GtkWidget.html"><span class="type">GtkWidget</span></a> *widget</code></em>);</pre>
+<p>
+Goes through the GTK structures and turns them into the appropraite
+Dbusmenu structures along with setting up all the relationships
+between the objects. It also stores the dbusmenu items as a cache
+on the GTK items so that they'll be reused if necissary.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>widget</code></em> :</span></p></td>
+<td>A <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuItem.html"><span class="type">GtkMenuItem</span></a> or <a href="http://library.gnome.org/devel/gtk/2.24/GtkMenuShell.html"><span class="type">GtkMenuShell</span></a> to turn into a <a href="/usr/share/gtk-doc/html/libdbusmenu-glib/libdbusmenu-glib-DbusmenuMenuitem.html#DbusmenuMenuitem"><span class="type">DbusmenuMenuitem</span></a>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>A dbusmenu item representing the menu structure. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk.devhelp b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk.devhelp
new file mode 100644
index 0000000..2fd76c2
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk.devhelp
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
+<book xmlns="http://www.devhelp.net/book" title="libdbusmenu-gtk Reference Manual" link="index.html" author="" name="libdbusmenu-gtk">
+ <chapters>
+ <sub name="API" link="ch01.html">
+ <sub name="DbusmenuGtkMenu" link="libdbusmenu-gtk-DbusmenuGtkMenu.html"/>
+ <sub name="menuitem" link="libdbusmenu-gtk-menuitem.html"/>
+ <sub name="DbusmenuGtkClient" link="libdbusmenu-gtk-DbusmenuGtkClient.html"/>
+ <sub name="parser" link="libdbusmenu-gtk-parser.html"/>
+ <sub name="DbusmenuGtkSerializableMenuItem" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html"/>
+ </sub>
+ <sub name="Object Hierarchy" link="object-tree.html"/>
+ <sub name="API Index" link="api-index-full.html"/>
+ <sub name="Deprecated API Index" link="api-index-deprecated.html"/>
+ <sub name="Annotation Glossary" link="annotation-glossary.html"/>
+ </chapters>
+ <functions>
+ <function name="struct DbusmenuGtkMenuClass" link="libdbusmenu-gtk-DbusmenuGtkMenu.html#DbusmenuGtkMenuClass"/>
+ <function name="dbusmenu_gtkmenu_new ()" link="libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-new"/>
+ <function name="dbusmenu_gtkmenu_get_client ()" link="libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-get-client"/>
+ <function name="dbusmenu_menuitem_property_set_image ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-image"/>
+ <function name="dbusmenu_menuitem_property_get_image ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-get-image"/>
+ <function name="dbusmenu_menuitem_property_set_shortcut ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut"/>
+ <function name="dbusmenu_menuitem_property_set_shortcut_string ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut-string"/>
+ <function name="dbusmenu_menuitem_property_set_shortcut_menuitem ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut-menuitem"/>
+ <function name="dbusmenu_menuitem_property_get_shortcut ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-get-shortcut"/>
+ <function name="DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED" link="libdbusmenu-gtk-DbusmenuGtkClient.html#DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS"/>
+ <function name="DbusmenuGtkClient" link="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient"/>
+ <function name="struct DbusmenuGtkClientClass" link="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClientClass"/>
+ <function name="dbusmenu_gtkclient_new ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-new"/>
+ <function name="dbusmenu_gtkclient_menuitem_get ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-menuitem-get"/>
+ <function name="dbusmenu_gtkclient_menuitem_get_submenu ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-menuitem-get-submenu"/>
+ <function name="dbusmenu_gtkclient_set_accel_group ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-set-accel-group"/>
+ <function name="dbusmenu_gtkclient_get_accel_group ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-get-accel-group"/>
+ <function name="dbusmenu_gtkclient_newitem_base ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-newitem-base"/>
+ <function name="dbusmenu_gtk_parse_menu_structure ()" link="libdbusmenu-gtk-parser.html#dbusmenu-gtk-parse-menu-structure"/>
+ <function name="DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#DBUSMENU-GTK-SERIALIZABLE-MENU-ITEM-PROP-MENUITEM:CAPS"/>
+ <function name="struct DbusmenuGtkSerializableMenuItemClass" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#DbusmenuGtkSerializableMenuItemClass"/>
+ <function name="dbusmenu_gtk_serializable_menu_item_build_menuitem ()" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-build-menuitem"/>
+ <function name="dbusmenu_gtk_serializable_menu_item_register_to_client ()" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-register-to-client"/>
+ <function name="dbusmenu_gtk_serializable_menu_item_set_menuitem ()" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-set-menuitem"/>
+ </functions>
+</book>
diff --git a/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk.devhelp2 b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk.devhelp2
new file mode 100644
index 0000000..cc4a736
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/libdbusmenu-gtk.devhelp2
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
+<book xmlns="http://www.devhelp.net/book" title="libdbusmenu-gtk Reference Manual" link="index.html" author="" name="libdbusmenu-gtk" version="2" language="c">
+ <chapters>
+ <sub name="API" link="ch01.html">
+ <sub name="DbusmenuGtkMenu" link="libdbusmenu-gtk-DbusmenuGtkMenu.html"/>
+ <sub name="menuitem" link="libdbusmenu-gtk-menuitem.html"/>
+ <sub name="DbusmenuGtkClient" link="libdbusmenu-gtk-DbusmenuGtkClient.html"/>
+ <sub name="parser" link="libdbusmenu-gtk-parser.html"/>
+ <sub name="DbusmenuGtkSerializableMenuItem" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html"/>
+ </sub>
+ <sub name="Object Hierarchy" link="object-tree.html"/>
+ <sub name="API Index" link="api-index-full.html"/>
+ <sub name="Deprecated API Index" link="api-index-deprecated.html"/>
+ <sub name="Annotation Glossary" link="annotation-glossary.html"/>
+ </chapters>
+ <functions>
+ <keyword type="struct" name="struct DbusmenuGtkMenuClass" link="libdbusmenu-gtk-DbusmenuGtkMenu.html#DbusmenuGtkMenuClass"/>
+ <keyword type="function" name="dbusmenu_gtkmenu_new ()" link="libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-new"/>
+ <keyword type="function" name="dbusmenu_gtkmenu_get_client ()" link="libdbusmenu-gtk-DbusmenuGtkMenu.html#dbusmenu-gtkmenu-get-client"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_set_image ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-image"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_get_image ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-get-image"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_set_shortcut ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_set_shortcut_string ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut-string"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_set_shortcut_menuitem ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-set-shortcut-menuitem"/>
+ <keyword type="function" name="dbusmenu_menuitem_property_get_shortcut ()" link="libdbusmenu-gtk-menuitem.html#dbusmenu-menuitem-property-get-shortcut"/>
+ <keyword type="macro" name="DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED" link="libdbusmenu-gtk-DbusmenuGtkClient.html#DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS"/>
+ <keyword type="struct" name="DbusmenuGtkClient" link="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClient"/>
+ <keyword type="struct" name="struct DbusmenuGtkClientClass" link="libdbusmenu-gtk-DbusmenuGtkClient.html#DbusmenuGtkClientClass"/>
+ <keyword type="function" name="dbusmenu_gtkclient_new ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-new"/>
+ <keyword type="function" name="dbusmenu_gtkclient_menuitem_get ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-menuitem-get"/>
+ <keyword type="function" name="dbusmenu_gtkclient_menuitem_get_submenu ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-menuitem-get-submenu"/>
+ <keyword type="function" name="dbusmenu_gtkclient_set_accel_group ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-set-accel-group"/>
+ <keyword type="function" name="dbusmenu_gtkclient_get_accel_group ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-get-accel-group"/>
+ <keyword type="function" name="dbusmenu_gtkclient_newitem_base ()" link="libdbusmenu-gtk-DbusmenuGtkClient.html#dbusmenu-gtkclient-newitem-base"/>
+ <keyword type="function" name="dbusmenu_gtk_parse_menu_structure ()" link="libdbusmenu-gtk-parser.html#dbusmenu-gtk-parse-menu-structure"/>
+ <keyword type="macro" name="DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#DBUSMENU-GTK-SERIALIZABLE-MENU-ITEM-PROP-MENUITEM:CAPS"/>
+ <keyword type="struct" name="struct DbusmenuGtkSerializableMenuItemClass" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#DbusmenuGtkSerializableMenuItemClass"/>
+ <keyword type="function" name="dbusmenu_gtk_serializable_menu_item_build_menuitem ()" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-build-menuitem"/>
+ <keyword type="function" name="dbusmenu_gtk_serializable_menu_item_register_to_client ()" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-register-to-client"/>
+ <keyword type="function" name="dbusmenu_gtk_serializable_menu_item_set_menuitem ()" link="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html#dbusmenu-gtk-serializable-menu-item-set-menuitem"/>
+ </functions>
+</book>
diff --git a/docs/libdbusmenu-gtk/reference/html/object-tree.html b/docs/libdbusmenu-gtk/reference/html/object-tree.html
new file mode 100644
index 0000000..dc617a1
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/object-tree.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Object Hierarchy</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="up" href="index.html" title="libdbusmenu-gtk Reference Manual">
+<link rel="prev" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html" title="DbusmenuGtkSerializableMenuItem">
+<link rel="next" href="api-index-full.html" title="API Index">
+<meta name="generator" content="GTK-Doc V1.16 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">libdbusmenu-gtk Reference Manual</th>
+<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="object-tree"></a>Object Hierarchy</h2></div></div></div>
+<pre class="screen">
+</pre>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.16</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/libdbusmenu-gtk/reference/html/right.png b/docs/libdbusmenu-gtk/reference/html/right.png
new file mode 100644
index 0000000..ed55207
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/right.png
Binary files differ
diff --git a/docs/libdbusmenu-gtk/reference/html/style.css b/docs/libdbusmenu-gtk/reference/html/style.css
new file mode 100644
index 0000000..d6f6c26
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/style.css
@@ -0,0 +1,266 @@
+.synopsis, .classsynopsis
+{
+ /* tango:aluminium 1/2 */
+ background: #eeeeec;
+ border: solid 1px #d3d7cf;
+ padding: 0.5em;
+}
+.programlisting
+{
+ /* tango:sky blue 0/1 */
+ background: #e6f3ff;
+ border: solid 1px #729fcf;
+ padding: 0.5em;
+}
+.variablelist
+{
+ padding: 4px;
+ margin-left: 3em;
+}
+.variablelist td:first-child
+{
+ vertical-align: top;
+}
+
+@media screen {
+ sup a.footnote
+ {
+ position: relative;
+ top: 0em ! important;
+
+ }
+ /* this is needed so that the local anchors are displayed below the naviagtion */
+ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
+ {
+ display: inline-block;
+ position: relative;
+ top:-5em;
+ }
+ /* this seems to be a bug in the xsl style sheets when generating indexes */
+ div.index div.index
+ {
+ top: 0em;
+ }
+ /* make space for the fixed navigation bar and add space at the bottom so that
+ * link targets appear somewhat close to top
+ */
+ body
+ {
+ padding-top: 3.2em;
+ padding-bottom: 20em;
+ }
+ /* style and size the navigation bar */
+ table.navigation#top
+ {
+ position: fixed;
+ /* tango:scarlet red 0/1 */
+ background: #ffe6e6;
+ border: solid 1px #ef2929;
+ margin-top: 0;
+ margin-bottom: 0;
+ top: 0;
+ left: 0;
+ height: 3em;
+ z-index: 10;
+ }
+ .navigation a, .navigation a:visited
+ {
+ /* tango:scarlet red 3 */
+ color: #a40000;
+ }
+ .navigation a:hover
+ {
+ /* tango:scarlet red 1 */
+ color: #ef2929;
+ }
+ td.shortcuts
+ {
+ /* tango:scarlet red 1 */
+ color: #ef2929;
+ font-size: 80%;
+ white-space: nowrap;
+ }
+}
+@media print {
+ table.navigation {
+ visibility: collapse;
+ display: none;
+ }
+ div.titlepage table.navigation {
+ visibility: visible;
+ display: table;
+ /* tango:scarlet red 0/1 */
+ background: #ffe6e6;
+ border: solid 1px #ef2929;
+ margin-top: 0;
+ margin-bottom: 0;
+ top: 0;
+ left: 0;
+ height: 3em;
+ }
+}
+
+.navigation .title
+{
+ font-size: 200%;
+}
+
+div.gallery-float
+{
+ float: left;
+ padding: 10px;
+}
+div.gallery-float img
+{
+ border-style: none;
+}
+div.gallery-spacer
+{
+ clear: both;
+}
+
+a, a:visited
+{
+ text-decoration: none;
+ /* tango:sky blue 2 */
+ color: #3465a4;
+}
+a:hover
+{
+ text-decoration: underline;
+ /* tango:sky blue 1 */
+ color: #729fcf;
+}
+
+div.table table
+{
+ border-collapse: collapse;
+ border-spacing: 0px;
+ /* tango:aluminium 3 */
+ border: solid 1px #babdb6;
+}
+
+div.table table td, div.table table th
+{
+ /* tango:aluminium 3 */
+ border: solid 1px #babdb6;
+ padding: 3px;
+ vertical-align: top;
+}
+
+div.table table th
+{
+ /* tango:aluminium 2 */
+ background-color: #d3d7cf;
+}
+
+hr
+{
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ background: #babdb6;
+ border: none 0px;
+ height: 1px;
+ clear: both;
+}
+
+.footer
+{
+ padding-top: 3.5em;
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ text-align: center;
+ font-size: 80%;
+}
+
+.warning
+{
+ /* tango:orange 0/1 */
+ background: #ffeed9;
+ border-color: #ffb04f;
+}
+.note
+{
+ /* tango:chameleon 0/0.5 */
+ background: #d8ffb2;
+ border-color: #abf562;
+}
+.note, .warning
+{
+ padding: 0.5em;
+ border-width: 1px;
+ border-style: solid;
+}
+.note h3, .warning h3
+{
+ margin-top: 0.0em
+}
+.note p, .warning p
+{
+ margin-bottom: 0.0em
+}
+
+/* blob links */
+h2 .extralinks, h3 .extralinks
+{
+ float: right;
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ font-size: 80%;
+ font-weight: normal;
+}
+
+.annotation
+{
+ /* tango:aluminium 5 */
+ color: #555753;
+ font-size: 80%;
+ font-weight: normal;
+}
+
+/* code listings */
+
+.listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */
+.listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */
+.listing_code .programlisting .function { color: #000000; font-weight: bold; }
+.listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
+.listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */
+.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
+.listing_code .programlisting .normal { color: #000000; }
+.listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */
+.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
+.listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */
+.listing_code .programlisting .type { color: #000000; }
+.listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */
+.listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */
+
+.listing_frame {
+ /* tango:sky blue 1 */
+ border: solid 1px #729fcf;
+ padding: 0px;
+}
+
+.listing_lines, .listing_code {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0.5em;
+}
+.listing_lines {
+ /* tango:sky blue 0.5 */
+ background: #a6c5e3;
+ /* tango:aluminium 6 */
+ color: #2e3436;
+}
+.listing_code {
+ /* tango:sky blue 0 */
+ background: #e6f3ff;
+}
+.listing_code .programlisting {
+ /* override from previous */
+ border: none 0px;
+ padding: 0px;
+}
+.listing_lines pre, .listing_code pre {
+ margin: 0px;
+}
+
diff --git a/docs/libdbusmenu-gtk/reference/html/up.png b/docs/libdbusmenu-gtk/reference/html/up.png
new file mode 100644
index 0000000..8eb591f
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/html/up.png
Binary files differ
diff --git a/docs/libdbusmenu-gtk/reference/libdbusmenu-gtk-docs.sgml b/docs/libdbusmenu-gtk/reference/libdbusmenu-gtk-docs.sgml
index ec6b82f..e9020de 100644
--- a/docs/libdbusmenu-gtk/reference/libdbusmenu-gtk-docs.sgml
+++ b/docs/libdbusmenu-gtk/reference/libdbusmenu-gtk-docs.sgml
@@ -11,9 +11,10 @@
<chapter>
<title>API</title>
- <xi:include href="xml/menu.xml"/>
- <xi:include href="xml/client.xml"/>
+ <xi:include href="xml/menu.xml"/>
<xi:include href="xml/menuitem.xml"/>
+ <xi:include href="xml/client.xml"/>
+ <xi:include href="xml/parser.xml"/>
<xi:include href="xml/serializablemenuitem.xml"/>
</chapter>
@@ -25,6 +26,10 @@
<title>API Index</title>
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
</index>
+ <index id="api-index-deprecated">
+ <title>Deprecated API Index</title>
+ <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
+ </index>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</book>
diff --git a/docs/libdbusmenu-gtk/reference/libdbusmenu-gtk-sections.txt b/docs/libdbusmenu-gtk/reference/libdbusmenu-gtk-sections.txt
new file mode 100644
index 0000000..77101f7
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/libdbusmenu-gtk-sections.txt
@@ -0,0 +1,77 @@
+<SECTION>
+<FILE>client</FILE>
+<TITLE>DbusmenuGtkClient</TITLE>
+DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED
+DbusmenuGtkClient
+DbusmenuGtkClientClass
+dbusmenu_gtkclient_new
+dbusmenu_gtkclient_menuitem_get
+dbusmenu_gtkclient_menuitem_get_submenu
+dbusmenu_gtkclient_set_accel_group
+dbusmenu_gtkclient_get_accel_group
+dbusmenu_gtkclient_newitem_base
+<SUBSECTION Standard>
+DBUSMENU_GTKCLIENT
+DBUSMENU_IS_GTKCLIENT
+DBUSMENU_GTKCLIENT_CLASS
+DBUSMENU_IS_GTKCLIENT_CLASS
+DBUSMENU_GTKCLIENT_GET_CLASS
+<SUBSECTION Private>
+DBUSMENU_GTKCLIENT_TYPE
+dbusmenu_gtkclient_get_type
+DbusmenuGtkClientPrivate
+</SECTION>
+
+<SECTION>
+<FILE>serializablemenuitem</FILE>
+<TITLE>DbusmenuGtkSerializableMenuItem</TITLE>
+DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM
+DbusmenuGtkSerializableMenuItemClass
+dbusmenu_gtk_serializable_menu_item_build_menuitem
+dbusmenu_gtk_serializable_menu_item_register_to_client
+dbusmenu_gtk_serializable_menu_item_set_menuitem
+<SUBSECTION Standard>
+DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM
+DBUSMENU_IS_GTK_SERIALIZABLE_MENU_ITEM
+DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_CLASS
+DBUSMENU_IS_GTK_SERIALIZABLE_MENU_ITEM_CLASS
+DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_GET_CLASS
+<SUBSECTION Private>
+DBUSMENU_TYPE_GTK_SERIALIZABLE_MENU_ITEM
+dbusmenu_gtk_serializable_menu_item_get_type
+DbusmenuGtkSerializableMenuItemPrivate
+</SECTION>
+
+<SECTION>
+<FILE>menu</FILE>
+<TITLE>DbusmenuGtkMenu</TITLE>
+DbusmenuGtkMenuClass
+dbusmenu_gtkmenu_new
+dbusmenu_gtkmenu_get_client
+<SUBSECTION Standard>
+DBUSMENU_GTKMENU
+DBUSMENU_IS_GTKMENU
+DBUSMENU_GTKMENU_CLASS
+DBUSMENU_IS_GTKMENU_CLASS
+DBUSMENU_GTKMENU_GET_CLASS
+<SUBSECTION Private>
+dbusmenu_gtkmenu_get_type
+DBUSMENU_GTKMENU_TYPE
+DbusmenuGtkMenuPrivate
+</SECTION>
+
+<SECTION>
+<FILE>menuitem</FILE>
+dbusmenu_menuitem_property_set_image
+dbusmenu_menuitem_property_get_image
+dbusmenu_menuitem_property_set_shortcut
+dbusmenu_menuitem_property_set_shortcut_string
+dbusmenu_menuitem_property_set_shortcut_menuitem
+dbusmenu_menuitem_property_get_shortcut
+</SECTION>
+
+<SECTION>
+<FILE>parser</FILE>
+dbusmenu_gtk_parse_menu_structure
+</SECTION>
+
diff --git a/docs/libdbusmenu-gtk/reference/tmpl/client.sgml b/docs/libdbusmenu-gtk/reference/tmpl/client.sgml
new file mode 100644
index 0000000..e4b3efb
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/tmpl/client.sgml
@@ -0,0 +1,110 @@
+<!-- ##### SECTION Title ##### -->
+DbusmenuGtkClient
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### MACRO DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### STRUCT DbusmenuGtkClient ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT DbusmenuGtkClientClass ##### -->
+<para>
+
+</para>
+
+@parent_class:
+@root_changed:
+@reserved1:
+@reserved2:
+@reserved3:
+@reserved4:
+@reserved5:
+@reserved6:
+
+<!-- ##### FUNCTION dbusmenu_gtkclient_new ##### -->
+<para>
+
+</para>
+
+@dbus_name:
+@dbus_object:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_gtkclient_menuitem_get ##### -->
+<para>
+
+</para>
+
+@client:
+@item:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_gtkclient_menuitem_get_submenu ##### -->
+<para>
+
+</para>
+
+@client:
+@item:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_gtkclient_set_accel_group ##### -->
+<para>
+
+</para>
+
+@client:
+@agroup:
+
+
+<!-- ##### FUNCTION dbusmenu_gtkclient_get_accel_group ##### -->
+<para>
+
+</para>
+
+@client:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_gtkclient_newitem_base ##### -->
+<para>
+
+</para>
+
+@client:
+@item:
+@gmi:
+@parent:
+
+
diff --git a/docs/libdbusmenu-gtk/reference/tmpl/libdbusmenu-gtk-unused.sgml b/docs/libdbusmenu-gtk/reference/tmpl/libdbusmenu-gtk-unused.sgml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/tmpl/libdbusmenu-gtk-unused.sgml
diff --git a/docs/libdbusmenu-gtk/reference/tmpl/menu.sgml b/docs/libdbusmenu-gtk/reference/tmpl/menu.sgml
new file mode 100644
index 0000000..4e2d89d
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/tmpl/menu.sgml
@@ -0,0 +1,56 @@
+<!-- ##### SECTION Title ##### -->
+DbusmenuGtkMenu
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT DbusmenuGtkMenuClass ##### -->
+<para>
+
+</para>
+
+@parent_class:
+@reserved1:
+@reserved2:
+@reserved3:
+@reserved4:
+@reserved5:
+@reserved6:
+
+<!-- ##### FUNCTION dbusmenu_gtkmenu_new ##### -->
+<para>
+
+</para>
+
+@dbus_name:
+@dbus_object:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_gtkmenu_get_client ##### -->
+<para>
+
+</para>
+
+@menu:
+@Returns:
+
+
diff --git a/docs/libdbusmenu-gtk/reference/tmpl/menuitem.sgml b/docs/libdbusmenu-gtk/reference/tmpl/menuitem.sgml
new file mode 100644
index 0000000..eb30964
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/tmpl/menuitem.sgml
@@ -0,0 +1,86 @@
+<!-- ##### SECTION Title ##### -->
+menuitem
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_set_image ##### -->
+<para>
+
+</para>
+
+@menuitem:
+@property:
+@data:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_get_image ##### -->
+<para>
+
+</para>
+
+@menuitem:
+@property:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_set_shortcut ##### -->
+<para>
+
+</para>
+
+@menuitem:
+@key:
+@modifier:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_set_shortcut_string ##### -->
+<para>
+
+</para>
+
+@menuitem:
+@shortcut:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_set_shortcut_menuitem ##### -->
+<para>
+
+</para>
+
+@menuitem:
+@gmi:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_menuitem_property_get_shortcut ##### -->
+<para>
+
+</para>
+
+@menuitem:
+@key:
+@modifier:
+
+
diff --git a/docs/libdbusmenu-gtk/reference/tmpl/parser.sgml b/docs/libdbusmenu-gtk/reference/tmpl/parser.sgml
new file mode 100644
index 0000000..45de0a4
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/tmpl/parser.sgml
@@ -0,0 +1,33 @@
+<!-- ##### SECTION Title ##### -->
+parser
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### FUNCTION dbusmenu_gtk_parse_menu_structure ##### -->
+<para>
+
+</para>
+
+@widget:
+@Returns:
+
+
diff --git a/docs/libdbusmenu-gtk/reference/tmpl/serializablemenuitem.sgml b/docs/libdbusmenu-gtk/reference/tmpl/serializablemenuitem.sgml
new file mode 100644
index 0000000..c19603f
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/tmpl/serializablemenuitem.sgml
@@ -0,0 +1,74 @@
+<!-- ##### SECTION Title ##### -->
+DbusmenuGtkSerializableMenuItem
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### MACRO DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### STRUCT DbusmenuGtkSerializableMenuItemClass ##### -->
+<para>
+
+</para>
+
+@parent_class:
+@get_type_string:
+@get_default_properties:
+@build_dbusmenu_menuitem:
+@_dbusmenu_gtk_serializable_menu_item_reserved1:
+@_dbusmenu_gtk_serializable_menu_item_reserved2:
+@_dbusmenu_gtk_serializable_menu_item_reserved3:
+@_dbusmenu_gtk_serializable_menu_item_reserved4:
+@_dbusmenu_gtk_serializable_menu_item_reserved5:
+@_dbusmenu_gtk_serializable_menu_item_reserved6:
+
+<!-- ##### FUNCTION dbusmenu_gtk_serializable_menu_item_build_menuitem ##### -->
+<para>
+
+</para>
+
+@smi:
+@Returns:
+
+
+<!-- ##### FUNCTION dbusmenu_gtk_serializable_menu_item_register_to_client ##### -->
+<para>
+
+</para>
+
+@client:
+@item_type:
+
+
+<!-- ##### FUNCTION dbusmenu_gtk_serializable_menu_item_set_menuitem ##### -->
+<para>
+
+</para>
+
+@smi:
+@mi:
+
+
diff --git a/docs/libdbusmenu-gtk/reference/version.xml b/docs/libdbusmenu-gtk/reference/version.xml
index 9c786fa..85ea6ea 100644
--- a/docs/libdbusmenu-gtk/reference/version.xml
+++ b/docs/libdbusmenu-gtk/reference/version.xml
@@ -1 +1 @@
-0.3.98
+0.3.99
diff --git a/docs/libdbusmenu-gtk/reference/xml/annotation-glossary.xml b/docs/libdbusmenu-gtk/reference/xml/annotation-glossary.xml
new file mode 100644
index 0000000..7dde69a
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/xml/annotation-glossary.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+
+<glossary id="annotation-glossary">
+ <title>Annotation Glossary</title>
+<glossdiv><title>O</title>
+ <glossentry>
+ <glossterm><anchor id="annotation-glossterm-out"/>out</glossterm>
+ <glossdef>
+ <para>Parameter for returning results. Default is <acronym>transfer full</acronym>.</para>
+ </glossdef>
+ </glossentry>
+</glossdiv>
+<glossdiv><title>T</title>
+ <glossentry>
+ <glossterm><anchor id="annotation-glossterm-transfer full"/>transfer full</glossterm>
+ <glossdef>
+ <para>Free data after the code is done.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><anchor id="annotation-glossterm-transfer none"/>transfer none</glossterm>
+ <glossdef>
+ <para>Don't free data after the code is done.</para>
+ </glossdef>
+ </glossentry>
+</glossdiv>
+</glossary>
diff --git a/docs/libdbusmenu-gtk/reference/xml/api-index-deprecated.xml b/docs/libdbusmenu-gtk/reference/xml/api-index-deprecated.xml
new file mode 100644
index 0000000..8ec0fe4
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/xml/api-index-deprecated.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<indexdiv>
+</indexdiv>
diff --git a/docs/libdbusmenu-gtk/reference/xml/api-index-full.xml b/docs/libdbusmenu-gtk/reference/xml/api-index-full.xml
new file mode 100644
index 0000000..28e5364
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/xml/api-index-full.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<indexdiv>
+<indexdiv><title>G</title>
+<indexentry><primaryie linkends="DbusmenuGtkClient"><link linkend="DbusmenuGtkClient">DbusmenuGtkClient</link>, struct in <link linkend="libdbusmenu-gtk-DbusmenuGtkClient">DbusmenuGtkClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuGtkClientClass"><link linkend="DbusmenuGtkClientClass">DbusmenuGtkClientClass</link>, struct in <link linkend="libdbusmenu-gtk-DbusmenuGtkClient">DbusmenuGtkClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtkclient-get-accel-group"><link linkend="dbusmenu-gtkclient-get-accel-group">dbusmenu_gtkclient_get_accel_group</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkClient">DbusmenuGtkClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtkclient-menuitem-get"><link linkend="dbusmenu-gtkclient-menuitem-get">dbusmenu_gtkclient_menuitem_get</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkClient">DbusmenuGtkClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtkclient-menuitem-get-submenu"><link linkend="dbusmenu-gtkclient-menuitem-get-submenu">dbusmenu_gtkclient_menuitem_get_submenu</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkClient">DbusmenuGtkClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtkclient-new"><link linkend="dbusmenu-gtkclient-new">dbusmenu_gtkclient_new</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkClient">DbusmenuGtkClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtkclient-newitem-base"><link linkend="dbusmenu-gtkclient-newitem-base">dbusmenu_gtkclient_newitem_base</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkClient">DbusmenuGtkClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtkclient-set-accel-group"><link linkend="dbusmenu-gtkclient-set-accel-group">dbusmenu_gtkclient_set_accel_group</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkClient">DbusmenuGtkClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS"><link linkend="DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS">DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED</link>, macro in <link linkend="libdbusmenu-gtk-DbusmenuGtkClient">DbusmenuGtkClient</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuGtkMenuClass"><link linkend="DbusmenuGtkMenuClass">DbusmenuGtkMenuClass</link>, struct in <link linkend="libdbusmenu-gtk-DbusmenuGtkMenu">DbusmenuGtkMenu</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtkmenu-get-client"><link linkend="dbusmenu-gtkmenu-get-client">dbusmenu_gtkmenu_get_client</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkMenu">DbusmenuGtkMenu</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtkmenu-new"><link linkend="dbusmenu-gtkmenu-new">dbusmenu_gtkmenu_new</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkMenu">DbusmenuGtkMenu</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DbusmenuGtkSerializableMenuItemClass"><link linkend="DbusmenuGtkSerializableMenuItemClass">DbusmenuGtkSerializableMenuItemClass</link>, struct in <link linkend="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem">DbusmenuGtkSerializableMenuItem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtk-parse-menu-structure"><link linkend="dbusmenu-gtk-parse-menu-structure">dbusmenu_gtk_parse_menu_structure</link>, function in <link linkend="libdbusmenu-gtk-parser">parser</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtk-serializable-menu-item-build-menuitem"><link linkend="dbusmenu-gtk-serializable-menu-item-build-menuitem">dbusmenu_gtk_serializable_menu_item_build_menuitem</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem">DbusmenuGtkSerializableMenuItem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="DBUSMENU-GTK-SERIALIZABLE-MENU-ITEM-PROP-MENUITEM:CAPS"><link linkend="DBUSMENU-GTK-SERIALIZABLE-MENU-ITEM-PROP-MENUITEM:CAPS">DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM</link>, macro in <link linkend="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem">DbusmenuGtkSerializableMenuItem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtk-serializable-menu-item-register-to-client"><link linkend="dbusmenu-gtk-serializable-menu-item-register-to-client">dbusmenu_gtk_serializable_menu_item_register_to_client</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem">DbusmenuGtkSerializableMenuItem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-gtk-serializable-menu-item-set-menuitem"><link linkend="dbusmenu-gtk-serializable-menu-item-set-menuitem">dbusmenu_gtk_serializable_menu_item_set_menuitem</link>, function in <link linkend="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem">DbusmenuGtkSerializableMenuItem</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>M</title>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-get-image"><link linkend="dbusmenu-menuitem-property-get-image">dbusmenu_menuitem_property_get_image</link>, function in <link linkend="libdbusmenu-gtk-menuitem">menuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-get-shortcut"><link linkend="dbusmenu-menuitem-property-get-shortcut">dbusmenu_menuitem_property_get_shortcut</link>, function in <link linkend="libdbusmenu-gtk-menuitem">menuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-set-image"><link linkend="dbusmenu-menuitem-property-set-image">dbusmenu_menuitem_property_set_image</link>, function in <link linkend="libdbusmenu-gtk-menuitem">menuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-set-shortcut"><link linkend="dbusmenu-menuitem-property-set-shortcut">dbusmenu_menuitem_property_set_shortcut</link>, function in <link linkend="libdbusmenu-gtk-menuitem">menuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-set-shortcut-menuitem"><link linkend="dbusmenu-menuitem-property-set-shortcut-menuitem">dbusmenu_menuitem_property_set_shortcut_menuitem</link>, function in <link linkend="libdbusmenu-gtk-menuitem">menuitem</link></primaryie></indexentry>
+<indexentry><primaryie linkends="dbusmenu-menuitem-property-set-shortcut-string"><link linkend="dbusmenu-menuitem-property-set-shortcut-string">dbusmenu_menuitem_property_set_shortcut_string</link>, function in <link linkend="libdbusmenu-gtk-menuitem">menuitem</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/docs/libdbusmenu-gtk/reference/xml/client.xml b/docs/libdbusmenu-gtk/reference/xml/client.xml
new file mode 100644
index 0000000..d5ead35
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/xml/client.xml
@@ -0,0 +1,238 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<refentry id="libdbusmenu-gtk-DbusmenuGtkClient">
+<refmeta>
+<refentrytitle role="top_of_page" id="libdbusmenu-gtk-DbusmenuGtkClient.top_of_page">DbusmenuGtkClient</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>
+ LIBDBUSMENU-GTK Library
+</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>DbusmenuGtkClient</refname>
+<refpurpose>A subclass of <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> adding GTK level features</refpurpose>
+</refnamediv>
+<refsect1 id="libdbusmenu-gtk-DbusmenuGtkClient.stability-level">
+<title>Stability Level</title>
+Unstable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv id="libdbusmenu-gtk-DbusmenuGtkClient.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#include &lt;libdbusmenu-gtk/client.h&gt;
+
+#define <link linkend="DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS">DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED</link>
+ <link linkend="DbusmenuGtkClient">DbusmenuGtkClient</link>;
+struct <link linkend="DbusmenuGtkClientClass">DbusmenuGtkClientClass</link>;
+<link linkend="DbusmenuGtkClient"><returnvalue>DbusmenuGtkClient</returnvalue></link> * <link linkend="dbusmenu-gtkclient-new">dbusmenu_gtkclient_new</link> (<parameter><link linkend="gchar"><type>gchar</type></link> *dbus_name</parameter>,
+ <parameter><link linkend="gchar"><type>gchar</type></link> *dbus_object</parameter>);
+<link linkend="GtkMenuItem"><returnvalue>GtkMenuItem</returnvalue></link> * <link linkend="dbusmenu-gtkclient-menuitem-get">dbusmenu_gtkclient_menuitem_get</link> (<parameter><link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> *client</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *item</parameter>);
+<link linkend="GtkMenu"><returnvalue>GtkMenu</returnvalue></link> * <link linkend="dbusmenu-gtkclient-menuitem-get-submenu">dbusmenu_gtkclient_menuitem_get_submenu</link>
+ (<parameter><link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> *client</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *item</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-gtkclient-set-accel-group">dbusmenu_gtkclient_set_accel_group</link> (<parameter><link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> *client</parameter>,
+ <parameter><link linkend="GtkAccelGroup"><type>GtkAccelGroup</type></link> *agroup</parameter>);
+<link linkend="GtkAccelGroup"><returnvalue>GtkAccelGroup</returnvalue></link> * <link linkend="dbusmenu-gtkclient-get-accel-group">dbusmenu_gtkclient_get_accel_group</link> (<parameter><link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> *client</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-gtkclient-newitem-base">dbusmenu_gtkclient_newitem_base</link> (<parameter><link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> *client</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *item</parameter>,
+ <parameter><link linkend="GtkMenuItem"><type>GtkMenuItem</type></link> *gmi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *parent</parameter>);
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1 id="libdbusmenu-gtk-DbusmenuGtkClient.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+In general, this is just a <link linkend="GtkMenu"><type>GtkMenu</type></link>, why else would you care? Oh,
+ because this menu is created by someone else on a server that exists
+ on the other side of DBus. You need a <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> to be able
+ push the data into this menu.
+</para>
+<para>
+ The first thing you need to know is how to find that <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link>
+ on DBus. This involves both the DBus name and the DBus object that
+ the menu interface can be found on. Those two value should be set
+ when creating the object using <link linkend="dbusmenu-gtkmenu-new"><function>dbusmenu_gtkmenu_new()</function></link>. They are then
+ stored on two properties <link linkend="DbusmenuGtkClient--dbus-name"><type>"dbus-name"</type></link> and <link linkend="DbusmenuGtkClient--dbus-object"><type>"dbus-object"</type></link>.
+</para>
+<para>
+ After creation the <link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> it will continue to keep in
+ synchronization with the <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> object across Dbus. If the
+ number of entries change, the menus change, if they change thier
+ properties change, they update in the items. All of this should
+ be handled transparently to the user of this object.
+</para>
+</refsect1>
+<refsect1 id="libdbusmenu-gtk-DbusmenuGtkClient.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS" role="macro">
+<title>DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED</title>
+<indexterm zone="DBUSMENU-GTKCLIENT-SIGNAL-ROOT-CHANGED:CAPS"><primary>DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED</primary></indexterm>
+<programlisting>#define DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED
+</programlisting>
+<para>
+String to attach to signal <link linkend="DbusmenuClient-root-changed"><type>"root-changed"</type></link>
+</para></refsect2>
+<refsect2 id="DbusmenuGtkClient" role="struct">
+<title>DbusmenuGtkClient</title>
+<indexterm zone="DbusmenuGtkClient"><primary>DbusmenuGtkClient</primary></indexterm>
+<programlisting>typedef struct _DbusmenuGtkClient DbusmenuGtkClient;</programlisting>
+<para>
+A subclass of <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> to add functionality with regarding
+building GTK items out of the abstract tree.
+</para></refsect2>
+<refsect2 id="DbusmenuGtkClientClass" role="struct">
+<title>struct DbusmenuGtkClientClass</title>
+<indexterm zone="DbusmenuGtkClientClass"><primary>DbusmenuGtkClientClass</primary></indexterm>
+<programlisting>struct DbusmenuGtkClientClass {
+ DbusmenuClientClass parent_class;
+
+ /* Signals */
+ void (*root_changed) (DbusmenuMenuitem * newroot);
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+ void (*reserved6) (void);
+};
+</programlisting>
+<para>
+Functions and signal slots for using a <link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link>
+</para><variablelist role="struct">
+<varlistentry><term><link linkend="DbusmenuClientClass"><type>DbusmenuClientClass</type></link>&#160;<structfield id="DbusmenuGtkClientClass.parent-class">parent_class</structfield>;</term>
+<listitem><simpara><link linkend="GtkMenuClass"><type>GtkMenuClass</type></link></simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkClientClass.root-changed">root_changed</structfield>&#160;()</term>
+<listitem><simpara>Slot for signal <link linkend="DbusmenuGtkClient-root-changed"><type>"root-changed"</type></link></simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkClientClass.reserved1">reserved1</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkClientClass.reserved2">reserved2</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkClientClass.reserved3">reserved3</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkClientClass.reserved4">reserved4</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkClientClass.reserved5">reserved5</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkClientClass.reserved6">reserved6</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtkclient-new" role="function">
+<title>dbusmenu_gtkclient_new ()</title>
+<indexterm zone="dbusmenu-gtkclient-new"><primary>dbusmenu_gtkclient_new</primary></indexterm>
+<programlisting><link linkend="DbusmenuGtkClient"><returnvalue>DbusmenuGtkClient</returnvalue></link> * dbusmenu_gtkclient_new (<parameter><link linkend="gchar"><type>gchar</type></link> *dbus_name</parameter>,
+ <parameter><link linkend="gchar"><type>gchar</type></link> *dbus_object</parameter>);</programlisting>
+<para>
+Creates a new <link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> object and creates a <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link>
+that connects across DBus to a <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>dbus_name</parameter>&#160;:</term>
+<listitem><simpara>Name of the <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> on DBus</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dbus_object</parameter>&#160;:</term>
+<listitem><simpara>Name of the object on the <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link></simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A new <link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> sync'd with a server</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtkclient-menuitem-get" role="function">
+<title>dbusmenu_gtkclient_menuitem_get ()</title>
+<indexterm zone="dbusmenu-gtkclient-menuitem-get"><primary>dbusmenu_gtkclient_menuitem_get</primary></indexterm>
+<programlisting><link linkend="GtkMenuItem"><returnvalue>GtkMenuItem</returnvalue></link> * dbusmenu_gtkclient_menuitem_get (<parameter><link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> *client</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *item</parameter>);</programlisting>
+<para>
+This grabs the <link linkend="GtkMenuItem"><type>GtkMenuItem</type></link> that is associated with the
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara>A <link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> with the item in it.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>item</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to get associated <link linkend="GtkMenuItem"><type>GtkMenuItem</type></link> on.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The <link linkend="GtkMenuItem"><type>GtkMenuItem</type></link> that can be played with. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtkclient-menuitem-get-submenu" role="function">
+<title>dbusmenu_gtkclient_menuitem_get_submenu ()</title>
+<indexterm zone="dbusmenu-gtkclient-menuitem-get-submenu"><primary>dbusmenu_gtkclient_menuitem_get_submenu</primary></indexterm>
+<programlisting><link linkend="GtkMenu"><returnvalue>GtkMenu</returnvalue></link> * dbusmenu_gtkclient_menuitem_get_submenu
+ (<parameter><link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> *client</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *item</parameter>);</programlisting>
+<para>
+This grabs the submenu associated with the menuitem.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara>A <link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> with the item in it.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>item</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to get associated <link linkend="GtkMenu"><type>GtkMenu</type></link> on.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>The <link linkend="GtkMenu"><type>GtkMenu</type></link> if there is one. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtkclient-set-accel-group" role="function">
+<title>dbusmenu_gtkclient_set_accel_group ()</title>
+<indexterm zone="dbusmenu-gtkclient-set-accel-group"><primary>dbusmenu_gtkclient_set_accel_group</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_gtkclient_set_accel_group (<parameter><link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> *client</parameter>,
+ <parameter><link linkend="GtkAccelGroup"><type>GtkAccelGroup</type></link> *agroup</parameter>);</programlisting>
+<para>
+Sets the acceleration group for the menu items with accelerators
+on this client.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara>To set the group on</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>agroup</parameter>&#160;:</term>
+<listitem><simpara>The new acceleration group</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtkclient-get-accel-group" role="function">
+<title>dbusmenu_gtkclient_get_accel_group ()</title>
+<indexterm zone="dbusmenu-gtkclient-get-accel-group"><primary>dbusmenu_gtkclient_get_accel_group</primary></indexterm>
+<programlisting><link linkend="GtkAccelGroup"><returnvalue>GtkAccelGroup</returnvalue></link> * dbusmenu_gtkclient_get_accel_group (<parameter><link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> *client</parameter>);</programlisting>
+<para>
+Gets the accel group for this client.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara>Client to query for an accelerator group</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Either a valid group or <link linkend="NULL:CAPS"><type>NULL</type></link> on error or
+none set. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtkclient-newitem-base" role="function">
+<title>dbusmenu_gtkclient_newitem_base ()</title>
+<indexterm zone="dbusmenu-gtkclient-newitem-base"><primary>dbusmenu_gtkclient_newitem_base</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_gtkclient_newitem_base (<parameter><link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> *client</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *item</parameter>,
+ <parameter><link linkend="GtkMenuItem"><type>GtkMenuItem</type></link> *gmi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *parent</parameter>);</programlisting>
+<para>
+This function provides some of the basic connectivity for being in
+the GTK world. Things like visibility and sensitivity of the item are
+handled here so that the subclasses don't have to. If you're building
+your on GTK menu item you can use this function to apply those basic
+attributes so that you don't have to deal with them either.
+</para>
+<para>
+This also handles passing the "activate" signal back to the
+<link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> side of thing.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara>The client handling everything on this connection</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>item</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to attach the GTK-isms to</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>gmi</parameter>&#160;:</term>
+<listitem><simpara>A <link linkend="GtkMenuItem"><type>GtkMenuItem</type></link> representing the GTK world's view of this menuitem</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter>&#160;:</term>
+<listitem><simpara>The parent <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/docs/libdbusmenu-gtk/reference/xml/menu.xml b/docs/libdbusmenu-gtk/reference/xml/menu.xml
new file mode 100644
index 0000000..ad68499
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/xml/menu.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<refentry id="libdbusmenu-gtk-DbusmenuGtkMenu">
+<refmeta>
+<refentrytitle role="top_of_page" id="libdbusmenu-gtk-DbusmenuGtkMenu.top_of_page">DbusmenuGtkMenu</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>
+ LIBDBUSMENU-GTK Library
+</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>DbusmenuGtkMenu</refname>
+<refpurpose>A GTK Menu Object that syncronizes over DBus</refpurpose>
+</refnamediv>
+<refsect1 id="libdbusmenu-gtk-DbusmenuGtkMenu.stability-level">
+<title>Stability Level</title>
+Unstable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv id="libdbusmenu-gtk-DbusmenuGtkMenu.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#include &lt;libdbusmenu-gtk/menu.h&gt;
+
+struct <link linkend="DbusmenuGtkMenuClass">DbusmenuGtkMenuClass</link>;
+<link linkend="DbusmenuGtkMenu"><returnvalue>DbusmenuGtkMenu</returnvalue></link> * <link linkend="dbusmenu-gtkmenu-new">dbusmenu_gtkmenu_new</link> (<parameter><link linkend="gchar"><type>gchar</type></link> *dbus_name</parameter>,
+ <parameter><link linkend="gchar"><type>gchar</type></link> *dbus_object</parameter>);
+<link linkend="DbusmenuGtkClient"><returnvalue>DbusmenuGtkClient</returnvalue></link> * <link linkend="dbusmenu-gtkmenu-get-client">dbusmenu_gtkmenu_get_client</link> (<parameter><link linkend="DbusmenuGtkMenu"><type>DbusmenuGtkMenu</type></link> *menu</parameter>);
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1 id="libdbusmenu-gtk-DbusmenuGtkMenu.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+In general, this is just a <link linkend="GtkMenu"><type>GtkMenu</type></link>, why else would you care? Oh,
+ because this menu is created by someone else on a server that exists
+ on the other side of DBus. You need a <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> to be able
+ push the data into this menu.
+</para>
+<para>
+ The first thing you need to know is how to find that <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link>
+ on DBus. This involves both the DBus name and the DBus object that
+ the menu interface can be found on. Those two value should be set
+ when creating the object using <link linkend="dbusmenu-gtkmenu-new"><function>dbusmenu_gtkmenu_new()</function></link>. They are then
+ stored on two properties <link linkend="DbusmenuGtkMenu--dbus-name"><type>"dbus-name"</type></link> and <link linkend="DbusmenuGtkMenu--dbus-object"><type>"dbus-object"</type></link>.
+</para>
+<para>
+ After creation the <link linkend="DbusmenuGtkMenu"><type>DbusmenuGtkMenu</type></link> it will continue to keep in
+ synchronization with the <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> object across Dbus. If the
+ number of entries change, the menus change, if they change thier
+ properties change, they update in the items. All of this should
+ be handled transparently to the user of this object.
+</para>
+</refsect1>
+<refsect1 id="libdbusmenu-gtk-DbusmenuGtkMenu.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="DbusmenuGtkMenuClass" role="struct">
+<title>struct DbusmenuGtkMenuClass</title>
+<indexterm zone="DbusmenuGtkMenuClass"><primary>DbusmenuGtkMenuClass</primary></indexterm>
+<programlisting>struct DbusmenuGtkMenuClass {
+ GtkMenuClass parent_class;
+
+ /*&lt; Private &gt;*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+ void (*reserved6) (void);
+};
+</programlisting>
+<para>
+All of the subclassable functions and signal slots for a
+<link linkend="DbusmenuGtkMenu"><type>DbusmenuGtkMenu</type></link>.
+</para><variablelist role="struct">
+<varlistentry><term><link linkend="GtkMenuClass"><type>GtkMenuClass</type></link>&#160;<structfield id="DbusmenuGtkMenuClass.parent-class">parent_class</structfield>;</term>
+<listitem><simpara><link linkend="GtkMenuClass"><type>GtkMenuClass</type></link></simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkMenuClass.reserved1">reserved1</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkMenuClass.reserved2">reserved2</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkMenuClass.reserved3">reserved3</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkMenuClass.reserved4">reserved4</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkMenuClass.reserved5">reserved5</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkMenuClass.reserved6">reserved6</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtkmenu-new" role="function">
+<title>dbusmenu_gtkmenu_new ()</title>
+<indexterm zone="dbusmenu-gtkmenu-new"><primary>dbusmenu_gtkmenu_new</primary></indexterm>
+<programlisting><link linkend="DbusmenuGtkMenu"><returnvalue>DbusmenuGtkMenu</returnvalue></link> * dbusmenu_gtkmenu_new (<parameter><link linkend="gchar"><type>gchar</type></link> *dbus_name</parameter>,
+ <parameter><link linkend="gchar"><type>gchar</type></link> *dbus_object</parameter>);</programlisting>
+<para>
+Creates a new <link linkend="DbusmenuGtkMenu"><type>DbusmenuGtkMenu</type></link> object and creates a <link linkend="DbusmenuClient"><type>DbusmenuClient</type></link>
+that connects across DBus to a <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>dbus_name</parameter>&#160;:</term>
+<listitem><simpara>Name of the <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link> on DBus</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dbus_object</parameter>&#160;:</term>
+<listitem><simpara>Name of the object on the <link linkend="DbusmenuServer"><type>DbusmenuServer</type></link></simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A new <link linkend="DbusmenuGtkMenu"><type>DbusmenuGtkMenu</type></link> sync'd with a server</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtkmenu-get-client" role="function">
+<title>dbusmenu_gtkmenu_get_client ()</title>
+<indexterm zone="dbusmenu-gtkmenu-get-client"><primary>dbusmenu_gtkmenu_get_client</primary></indexterm>
+<programlisting><link linkend="DbusmenuGtkClient"><returnvalue>DbusmenuGtkClient</returnvalue></link> * dbusmenu_gtkmenu_get_client (<parameter><link linkend="DbusmenuGtkMenu"><type>DbusmenuGtkMenu</type></link> *menu</parameter>);</programlisting>
+<para>
+An accessor for the client that this menu is using to
+communicate with the server.
+</para><variablelist role="params">
+<varlistentry><term><parameter>menu</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuGtkMenu"><type>DbusmenuGtkMenu</type></link> to get the client from</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A valid <link linkend="DbusmenuGtkClient"><type>DbusmenuGtkClient</type></link> or NULL on error. <emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/docs/libdbusmenu-gtk/reference/xml/menuitem.xml b/docs/libdbusmenu-gtk/reference/xml/menuitem.xml
new file mode 100644
index 0000000..12f1325
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/xml/menuitem.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<refentry id="libdbusmenu-gtk-menuitem">
+<refmeta>
+<refentrytitle role="top_of_page" id="libdbusmenu-gtk-menuitem.top_of_page">menuitem</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>
+ LIBDBUSMENU-GTK Library
+</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>menuitem</refname>
+<refpurpose>Helpers for <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> properties that require a GTK dependency</refpurpose>
+</refnamediv>
+<refsect1 id="libdbusmenu-gtk-menuitem.stability-level">
+<title>Stability Level</title>
+Unstable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv id="libdbusmenu-gtk-menuitem.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#include &lt;libdbusmenu-gtk/menuitem.h&gt;
+
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-property-set-image">dbusmenu_menuitem_property_set_image</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>,
+ <parameter>const <link linkend="GdkPixbuf"><type>GdkPixbuf</type></link> *data</parameter>);
+<link linkend="GdkPixbuf"><returnvalue>GdkPixbuf</returnvalue></link> * <link linkend="dbusmenu-menuitem-property-get-image">dbusmenu_menuitem_property_get_image</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-property-set-shortcut">dbusmenu_menuitem_property_set_shortcut</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> key</parameter>,
+ <parameter><link linkend="GdkModifierType"><type>GdkModifierType</type></link> modifier</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-property-set-shortcut-string">dbusmenu_menuitem_property_set_shortcut_string</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *shortcut</parameter>);
+<link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> <link linkend="dbusmenu-menuitem-property-set-shortcut-menuitem">dbusmenu_menuitem_property_set_shortcut_menuitem</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter>const <link linkend="GtkMenuItem"><type>GtkMenuItem</type></link> *gmi</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-menuitem-property-get-shortcut">dbusmenu_menuitem_property_get_shortcut</link>
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> *key</parameter>,
+ <parameter><link linkend="GdkModifierType"><type>GdkModifierType</type></link> *modifier</parameter>);
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1 id="libdbusmenu-gtk-menuitem.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+Some property helpers can't be done without picking up a GTK+
+ dependency. So those sit in libdbusmenu-gtk but have very similar
+ prototypes to the code in libdbusmenu-glib so your code will
+ look consistent, just with the extra depedency.
+</para>
+</refsect1>
+<refsect1 id="libdbusmenu-gtk-menuitem.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="dbusmenu-menuitem-property-set-image" role="function">
+<title>dbusmenu_menuitem_property_set_image ()</title>
+<indexterm zone="dbusmenu-menuitem-property-set-image"><primary>dbusmenu_menuitem_property_set_image</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_property_set_image
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>,
+ <parameter>const <link linkend="GdkPixbuf"><type>GdkPixbuf</type></link> *data</parameter>);</programlisting>
+<para>
+This function takes the pixbuf that is stored in <parameter>data</parameter> and
+turns it into a base64 encoded PNG so that it can be placed
+onto a standard <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> property.
+</para><variablelist role="params">
+<varlistentry><term><parameter>menuitem</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to set the property on.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>Name of the property to set.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data</parameter>&#160;:</term>
+<listitem><simpara>The image to place on the property.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Whether the function was able to set the property
+or not.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-get-image" role="function">
+<title>dbusmenu_menuitem_property_get_image ()</title>
+<indexterm zone="dbusmenu-menuitem-property-get-image"><primary>dbusmenu_menuitem_property_get_image</primary></indexterm>
+<programlisting><link linkend="GdkPixbuf"><returnvalue>GdkPixbuf</returnvalue></link> * dbusmenu_menuitem_property_get_image
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *property</parameter>);</programlisting>
+<para>
+This function looks on the menu item for a property by the
+name of <parameter>property</parameter>. If one exists it tries to turn it into
+a <link linkend="GdkPixbuf"><type>GdkPixbuf</type></link>. It assumes that the property is a base64 encoded
+PNG file like the one created by <link linkend="dbusmenu-menuite-property-set-image"><type>dbusmenu_menuite_property_set_image</type></link>.
+</para><variablelist role="params">
+<varlistentry><term><parameter>menuitem</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to look for the property on</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>property</parameter>&#160;:</term>
+<listitem><simpara>The name of the property to look for.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A pixbuf or <link linkend="NULL:CAPS"><type>NULL</type></link> to signal error. <emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-set-shortcut" role="function">
+<title>dbusmenu_menuitem_property_set_shortcut ()</title>
+<indexterm zone="dbusmenu-menuitem-property-set-shortcut"><primary>dbusmenu_menuitem_property_set_shortcut</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_property_set_shortcut
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> key</parameter>,
+ <parameter><link linkend="GdkModifierType"><type>GdkModifierType</type></link> modifier</parameter>);</programlisting>
+<para>
+Takes the modifer described by <parameter>key</parameter> and <parameter>modifier</parameter> and places that into
+the format sending across Dbus for shortcuts.
+</para><variablelist role="params">
+<varlistentry><term><parameter>menuitem</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to set the shortcut on</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>key</parameter>&#160;:</term>
+<listitem><simpara>The keycode of the key to send</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>modifier</parameter>&#160;:</term>
+<listitem><simpara>A bitmask of modifiers used to activate the item</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Whether it was successful at setting the property.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-set-shortcut-string" role="function">
+<title>dbusmenu_menuitem_property_set_shortcut_string ()</title>
+<indexterm zone="dbusmenu-menuitem-property-set-shortcut-string"><primary>dbusmenu_menuitem_property_set_shortcut_string</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_property_set_shortcut_string
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter>const <link linkend="gchar"><type>gchar</type></link> *shortcut</parameter>);</programlisting>
+<para>
+This function takes a GTK shortcut string as defined in
+<link linkend="gtk-accelerator-parse"><type>gtk_accelerator_parse</type></link> and turns that into the information
+required to send it over DBusmenu.
+</para><variablelist role="params">
+<varlistentry><term><parameter>menuitem</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to set the shortcut on</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>shortcut</parameter>&#160;:</term>
+<listitem><simpara>String describing the shortcut</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Whether it was successful at setting the property.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-set-shortcut-menuitem" role="function">
+<title>dbusmenu_menuitem_property_set_shortcut_menuitem ()</title>
+<indexterm zone="dbusmenu-menuitem-property-set-shortcut-menuitem"><primary>dbusmenu_menuitem_property_set_shortcut_menuitem</primary></indexterm>
+<programlisting><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link> dbusmenu_menuitem_property_set_shortcut_menuitem
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter>const <link linkend="GtkMenuItem"><type>GtkMenuItem</type></link> *gmi</parameter>);</programlisting>
+<para>
+Takes the shortcut that is installed on a menu item and calls
+<link linkend="dbusmenu-menuitem-property-set-shortcut"><type>dbusmenu_menuitem_property_set_shortcut</type></link> with it. It also sets
+up listeners to watch it change.
+</para><variablelist role="params">
+<varlistentry><term><parameter>menuitem</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to set the shortcut on</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>gmi</parameter>&#160;:</term>
+<listitem><simpara>A menu item to steal the shortcut off of</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>Whether it was successful at setting the property.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-menuitem-property-get-shortcut" role="function">
+<title>dbusmenu_menuitem_property_get_shortcut ()</title>
+<indexterm zone="dbusmenu-menuitem-property-get-shortcut"><primary>dbusmenu_menuitem_property_get_shortcut</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_menuitem_property_get_shortcut
+ (<parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *menuitem</parameter>,
+ <parameter><link linkend="guint"><type>guint</type></link> *key</parameter>,
+ <parameter><link linkend="GdkModifierType"><type>GdkModifierType</type></link> *modifier</parameter>);</programlisting>
+<para>
+This function gets a GTK shortcut as a key and a mask
+for use to set the accelerators.
+</para><variablelist role="params">
+<varlistentry><term><parameter>menuitem</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> to get the shortcut off</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>key</parameter>&#160;:</term>
+<listitem><simpara>Location to put the key value. <emphasis role="annotation">[<acronym>out</acronym>]</emphasis></simpara></listitem></varlistentry>
+<varlistentry><term><parameter>modifier</parameter>&#160;:</term>
+<listitem><simpara>Location to put the modifier mask. <emphasis role="annotation">[<acronym>out</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/docs/libdbusmenu-gtk/reference/xml/parser.xml b/docs/libdbusmenu-gtk/reference/xml/parser.xml
new file mode 100644
index 0000000..75de002
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/xml/parser.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<refentry id="libdbusmenu-gtk-parser">
+<refmeta>
+<refentrytitle role="top_of_page" id="libdbusmenu-gtk-parser.top_of_page">parser</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>
+ LIBDBUSMENU-GTK Library
+</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>parser</refname>
+<refpurpose>A parser of in-memory GTK menu trees</refpurpose>
+</refnamediv>
+<refsect1 id="libdbusmenu-gtk-parser.stability-level">
+<title>Stability Level</title>
+Unstable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv id="libdbusmenu-gtk-parser.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#include &lt;libdbusmenu-gtk/parser.h&gt;
+
+<link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * <link linkend="dbusmenu-gtk-parse-menu-structure">dbusmenu_gtk_parse_menu_structure</link> (<parameter><link linkend="GtkWidget"><type>GtkWidget</type></link> *widget</parameter>);
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1 id="libdbusmenu-gtk-parser.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+The parser will take a GTK menu tree and attach it to a Dbusmenu menu
+ tree. Along with setting up all the signals for updates and destruction.
+ The returned item would be the root item of the given tree.
+</para>
+</refsect1>
+<refsect1 id="libdbusmenu-gtk-parser.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="dbusmenu-gtk-parse-menu-structure" role="function">
+<title>dbusmenu_gtk_parse_menu_structure ()</title>
+<indexterm zone="dbusmenu-gtk-parse-menu-structure"><primary>dbusmenu_gtk_parse_menu_structure</primary></indexterm>
+<programlisting><link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * dbusmenu_gtk_parse_menu_structure (<parameter><link linkend="GtkWidget"><type>GtkWidget</type></link> *widget</parameter>);</programlisting>
+<para>
+Goes through the GTK structures and turns them into the appropraite
+Dbusmenu structures along with setting up all the relationships
+between the objects. It also stores the dbusmenu items as a cache
+on the GTK items so that they'll be reused if necissary.
+</para><variablelist role="params">
+<varlistentry><term><parameter>widget</parameter>&#160;:</term>
+<listitem><simpara>A <link linkend="GtkMenuItem"><type>GtkMenuItem</type></link> or <link linkend="GtkMenuShell"><type>GtkMenuShell</type></link> to turn into a <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link></simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A dbusmenu item representing the menu structure. <emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/docs/libdbusmenu-gtk/reference/xml/serializablemenuitem.xml b/docs/libdbusmenu-gtk/reference/xml/serializablemenuitem.xml
new file mode 100644
index 0000000..05fad23
--- /dev/null
+++ b/docs/libdbusmenu-gtk/reference/xml/serializablemenuitem.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<refentry id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem">
+<refmeta>
+<refentrytitle role="top_of_page" id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.top_of_page">DbusmenuGtkSerializableMenuItem</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>
+ LIBDBUSMENU-GTK Library
+</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>DbusmenuGtkSerializableMenuItem</refname>
+<refpurpose>A way to build <link linkend="GtkMenuItems"><type>GtkMenuItems</type></link> that can be sent over Dbusmenu</refpurpose>
+</refnamediv>
+<refsect1 id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.stability-level">
+<title>Stability Level</title>
+Unstable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#include &lt;libdbusmenu-gtk/serializablemenuitem.h&gt;
+
+#define <link linkend="DBUSMENU-GTK-SERIALIZABLE-MENU-ITEM-PROP-MENUITEM:CAPS">DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM</link>
+struct <link linkend="DbusmenuGtkSerializableMenuItemClass">DbusmenuGtkSerializableMenuItemClass</link>;
+<link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * <link linkend="dbusmenu-gtk-serializable-menu-item-build-menuitem">dbusmenu_gtk_serializable_menu_item_build_menuitem</link>
+ (<parameter><link linkend="DbusmenuGtkSerializableMenuItem"><type>DbusmenuGtkSerializableMenuItem</type></link> *smi</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-gtk-serializable-menu-item-register-to-client">dbusmenu_gtk_serializable_menu_item_register_to_client</link>
+ (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>,
+ <parameter><link linkend="GType"><type>GType</type></link> item_type</parameter>);
+<link linkend="void"><returnvalue>void</returnvalue></link> <link linkend="dbusmenu-gtk-serializable-menu-item-set-menuitem">dbusmenu_gtk_serializable_menu_item_set_menuitem</link>
+ (<parameter><link linkend="DbusmenuGtkSerializableMenuItem"><type>DbusmenuGtkSerializableMenuItem</type></link> *smi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1 id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+Menuitems can subclass from this instead of <link linkend="GtkMenuItem"><type>GtkMenuItem</type></link> and
+ by providing the appropriate functions Dbusmenu will be able
+ to parse them and send them over the bus.
+</para>
+</refsect1>
+<refsect1 id="libdbusmenu-gtk-DbusmenuGtkSerializableMenuItem.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="DBUSMENU-GTK-SERIALIZABLE-MENU-ITEM-PROP-MENUITEM:CAPS" role="macro">
+<title>DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM</title>
+<indexterm zone="DBUSMENU-GTK-SERIALIZABLE-MENU-ITEM-PROP-MENUITEM:CAPS"><primary>DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM</primary></indexterm>
+<programlisting>#define DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM "dbusmenu-menuitem"
+</programlisting>
+<para>
+String to access property <link linkend="DbusmenuGtkSerializableMenuItem--dbusmenu-menuitem"><type>"dbusmenu-menuitem"</type></link>
+</para></refsect2>
+<refsect2 id="DbusmenuGtkSerializableMenuItemClass" role="struct">
+<title>struct DbusmenuGtkSerializableMenuItemClass</title>
+<indexterm zone="DbusmenuGtkSerializableMenuItemClass"><primary>DbusmenuGtkSerializableMenuItemClass</primary></indexterm>
+<programlisting>struct DbusmenuGtkSerializableMenuItemClass {
+ GtkMenuItemClass parent_class;
+
+ /* Subclassable functions */
+ const gchar * (*get_type_string) (void);
+ GHashTable * (*get_default_properties) (void);
+
+ DbusmenuMenuitem * (*build_dbusmenu_menuitem) (DbusmenuGtkSerializableMenuItem * smi);
+
+ /* Signals */
+
+
+
+ /* Empty Space */
+ /*&lt; Private &gt;*/
+ void (*_dbusmenu_gtk_serializable_menu_item_reserved1) (void);
+ void (*_dbusmenu_gtk_serializable_menu_item_reserved2) (void);
+ void (*_dbusmenu_gtk_serializable_menu_item_reserved3) (void);
+ void (*_dbusmenu_gtk_serializable_menu_item_reserved4) (void);
+ void (*_dbusmenu_gtk_serializable_menu_item_reserved5) (void);
+ void (*_dbusmenu_gtk_serializable_menu_item_reserved6) (void);
+};
+</programlisting>
+<para>
+Signals and functions for <link linkend="DbusmenuGtkSerializableMenuItem"><type>DbusmenuGtkSerializableMenuItem</type></link>.
+</para><variablelist role="struct">
+<varlistentry><term><link linkend="GtkMenuItemClass"><type>GtkMenuItemClass</type></link>&#160;<structfield id="DbusmenuGtkSerializableMenuItemClass.parent-class">parent_class</structfield>;</term>
+<listitem><simpara>Inherit from GtkMenuItem</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkSerializableMenuItemClass.get-type-string">get_type_string</structfield>&#160;()</term>
+<listitem><simpara>Static function to get a string describing this type</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkSerializableMenuItemClass.get-default-properties">get_default_properties</structfield>&#160;()</term>
+<listitem><simpara>Return a hashtable of defaults for the menu item type</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkSerializableMenuItemClass.build-dbusmenu-menuitem">build_dbusmenu_menuitem</structfield>&#160;()</term>
+<listitem><simpara>Build a menuitem that can be sent over dbus</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkSerializableMenuItemClass.-dbusmenu-gtk-serializable-menu-item-reserved1">_dbusmenu_gtk_serializable_menu_item_reserved1</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkSerializableMenuItemClass.-dbusmenu-gtk-serializable-menu-item-reserved2">_dbusmenu_gtk_serializable_menu_item_reserved2</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkSerializableMenuItemClass.-dbusmenu-gtk-serializable-menu-item-reserved3">_dbusmenu_gtk_serializable_menu_item_reserved3</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkSerializableMenuItemClass.-dbusmenu-gtk-serializable-menu-item-reserved4">_dbusmenu_gtk_serializable_menu_item_reserved4</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkSerializableMenuItemClass.-dbusmenu-gtk-serializable-menu-item-reserved5">_dbusmenu_gtk_serializable_menu_item_reserved5</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+<varlistentry><term><structfield id="DbusmenuGtkSerializableMenuItemClass.-dbusmenu-gtk-serializable-menu-item-reserved6">_dbusmenu_gtk_serializable_menu_item_reserved6</structfield>&#160;()</term>
+<listitem><simpara>Reserved for future use.</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtk-serializable-menu-item-build-menuitem" role="function">
+<title>dbusmenu_gtk_serializable_menu_item_build_menuitem ()</title>
+<indexterm zone="dbusmenu-gtk-serializable-menu-item-build-menuitem"><primary>dbusmenu_gtk_serializable_menu_item_build_menuitem</primary></indexterm>
+<programlisting><link linkend="DbusmenuMenuitem"><returnvalue>DbusmenuMenuitem</returnvalue></link> * dbusmenu_gtk_serializable_menu_item_build_menuitem
+ (<parameter><link linkend="DbusmenuGtkSerializableMenuItem"><type>DbusmenuGtkSerializableMenuItem</type></link> *smi</parameter>);</programlisting>
+<para>
+This function is for menu items that are instanciated from
+GTK and have their properites set using GTK functions. This
+builds a <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> that then has the properties that
+should be sent over the bus to create a new item of this
+type on the other side.
+</para><variablelist role="params">
+<varlistentry><term><parameter>smi</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuGtkSerializableMenuItem"><type>DbusmenuGtkSerializableMenuItem</type></link> to build a <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> mirroring</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>A <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> who's values will be
+set by this object. <emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtk-serializable-menu-item-register-to-client" role="function">
+<title>dbusmenu_gtk_serializable_menu_item_register_to_client ()</title>
+<indexterm zone="dbusmenu-gtk-serializable-menu-item-register-to-client"><primary>dbusmenu_gtk_serializable_menu_item_register_to_client</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_gtk_serializable_menu_item_register_to_client
+ (<parameter><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> *client</parameter>,
+ <parameter><link linkend="GType"><type>GType</type></link> item_type</parameter>);</programlisting>
+<para>
+Registers a generic handler for dealing with all subclasses of
+<link linkend="DbusmenuGtkSerializableMenuItem"><type>DbusmenuGtkSerializableMenuItem</type></link>. This handler responds to the callback,
+creates a new object and attaches it to the appropriate <link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link>
+object.
+</para><variablelist role="params">
+<varlistentry><term><parameter>client</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuClient"><type>DbusmenuClient</type></link> that we should register a type at.</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>item_type</parameter>&#160;:</term>
+<listitem><simpara>The <link linkend="GType"><type>GType</type></link> of a class that is a subclass of <link linkend="DbusmenuGtkSerializableMenuItem"><type>DbusmenuGtkSerializableMenuItem</type></link></simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="dbusmenu-gtk-serializable-menu-item-set-menuitem" role="function">
+<title>dbusmenu_gtk_serializable_menu_item_set_menuitem ()</title>
+<indexterm zone="dbusmenu-gtk-serializable-menu-item-set-menuitem"><primary>dbusmenu_gtk_serializable_menu_item_set_menuitem</primary></indexterm>
+<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> dbusmenu_gtk_serializable_menu_item_set_menuitem
+ (<parameter><link linkend="DbusmenuGtkSerializableMenuItem"><type>DbusmenuGtkSerializableMenuItem</type></link> *smi</parameter>,
+ <parameter><link linkend="DbusmenuMenuitem"><type>DbusmenuMenuitem</type></link> *mi</parameter>);</programlisting>
+<para>
+This function is used on the server side to signal to the object
+that it should get its' property change events from <parameter>mi</parameter> instead
+of expecting calls to its' API. A call to this function sets the
+property and subclasses should listen to the notify signal to
+pick up this property being set.
+</para><variablelist role="params">
+<varlistentry><term><parameter>smi</parameter>&#160;:</term>
+<listitem><simpara><link linkend="DbusmenuGtkSerializableMenuItem"><type>DbusmenuGtkSerializableMenuItem</type></link> to set the <parameter>DbusmenuGtkSerializableMenuItem</parameter>::dbusmenu-menuitem of</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mi</parameter>&#160;:</term>
+<listitem><simpara>Menuitem to get the properties from</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/libdbusmenu-glib/Makefile.am b/libdbusmenu-glib/Makefile.am
index e6877b6..8b523aa 100644
--- a/libdbusmenu-glib/Makefile.am
+++ b/libdbusmenu-glib/Makefile.am
@@ -1,6 +1,7 @@
-CLEANFILES =
-
+BUILT_SOURCES =
+CLEANFILES =
+DISTCLEANFILES =
EXTRA_DIST = \
clean-namespaces.xslt \
dbusmenu-glib-0.4.pc.in \
@@ -9,6 +10,8 @@ EXTRA_DIST = \
menuitem-marshal.list \
server-marshal.list
+include $(top_srcdir)/Makefile.am.enum
+
lib_LTLIBRARIES = \
libdbusmenu-glib.la
@@ -19,11 +22,16 @@ libdbusmenu_glibinclude_HEADERS = \
menuitem.h \
menuitem-proxy.h \
server.h \
- client.h
+ client.h \
+ types.h
libdbusmenu_glib_la_SOURCES = \
dbus-menu-clean.xml.h \
dbus-menu-clean.xml.c \
+ defaults.h \
+ defaults.c \
+ enum-types.h \
+ enum-types.c \
menuitem.h \
menuitem.c \
menuitem-marshal.h \
@@ -39,6 +47,7 @@ libdbusmenu_glib_la_SOURCES = \
client-marshal.c \
client-menuitem.h \
client-menuitem.c \
+ client-private.h \
client.h \
client.c
@@ -56,6 +65,14 @@ libdbusmenu_glib_la_LIBADD = \
pkgconfig_DATA = dbusmenu-glib-0.4.pc
pkgconfigdir = $(libdir)/pkgconfig
+glib_enum_h = enum-types.h
+glib_enum_c = enum-types.c
+glib_enum_headers = $(addprefix $(srcdir)/, $(libdbusmenu_glibinclude_HEADERS))
+
+DISTCLEANFILES += \
+ enum-types.c \
+ enum-types.h
+
%.xml.h: %.xml
echo "extern const char * $(subst -,_,$(subst .,_,$(basename $(notdir $@))));" > $@
@@ -69,7 +86,7 @@ dbus-menu-clean.xml: dbus-menu.xml
CLEANFILES += dbus-menu-clean.xml
-BUILT_SOURCES = \
+BUILT_SOURCES += \
dbus-menu-clean.xml.c \
dbus-menu-clean.xml.h \
client-marshal.h \
@@ -122,21 +139,21 @@ if INTROSPECTION_TEN
INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) \
--warn-all \
--add-include-path=$(srcdir) \
- $(addprefix --c-include=libdbusmenu-glib/, $(introspection_sources)) \
+ $(addprefix --c-include=libdbusmenu-glib/, $(libdbusmenu_glibinclude_HEADERS)) \
--symbol-prefix=dbusmenu \
--identifier-prefix=Dbusmenu
else
INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) \
--warn-all \
--add-include-path=$(srcdir) \
- $(addprefix --c-include=libdbusmenu-glib/, $(introspection_sources))
+ $(addprefix --c-include=libdbusmenu-glib/, $(libdbusmenu_glibinclude_HEADERS))
endif
INTROSPECTION_COMPILER_ARGS = --includedir=$(builddir)
if HAVE_INTROSPECTION
-introspection_sources = $(libdbusmenu_glibinclude_HEADERS)
+introspection_sources = $(libdbusmenu_glibinclude_HEADERS) $(libdbusmenu_glib_la_SOURCES)
Dbusmenu-0.4.gir: libdbusmenu-glib.la
Dbusmenu_0_4_gir_INCLUDES = \
diff --git a/libdbusmenu-glib/Makefile.in b/libdbusmenu-glib/Makefile.in
index 29386df..f81497b 100644
--- a/libdbusmenu-glib/Makefile.in
+++ b/libdbusmenu-glib/Makefile.in
@@ -15,6 +15,23 @@
@SET_MAKE@
+# Rules for generating enumeration types using glib-mkenums
+#
+# Define:
+# glib_enum_h = header template file
+# glib_enum_c = source template file
+# glib_enum_headers = list of headers to parse
+#
+# before including Makefile.am.enums. You will also need to have
+# the following targets already defined:
+#
+# CLEANFILES
+# DISTCLEANFILES
+# BUILT_SOURCES
+# EXTRA_DIST
+#
+# Author: Emmanuele Bassi <ebassi@linux.intel.com>
+
VPATH = @srcdir@
@@ -36,12 +53,13 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
+DIST_COMMON = $(libdbusmenu_glibinclude_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/dbusmenu-glib-0.4.pc.in \
+ $(top_srcdir)/Makefile.am.enum
@HAVE_INTROSPECTION_TRUE@am__append_1 = Dbusmenu-0.4.gir
@HAVE_INTROSPECTION_TRUE@am__append_2 = $(gir_DATA) $(typelib_DATA) \
@HAVE_INTROSPECTION_TRUE@ $(vapi_DATA)
subdir = libdbusmenu-glib
-DIST_COMMON = $(libdbusmenu_glibinclude_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/dbusmenu-glib-0.4.pc.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/gnome-doc-utils.m4 \
$(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \
@@ -85,6 +103,8 @@ am__DEPENDENCIES_1 =
libdbusmenu_glib_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_libdbusmenu_glib_la_OBJECTS = \
libdbusmenu_glib_la-dbus-menu-clean.xml.lo \
+ libdbusmenu_glib_la-defaults.lo \
+ libdbusmenu_glib_la-enum-types.lo \
libdbusmenu_glib_la-menuitem.lo \
libdbusmenu_glib_la-menuitem-marshal.lo \
libdbusmenu_glib_la-menuitem-proxy.lo \
@@ -173,6 +193,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
@@ -302,15 +323,19 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-CLEANFILES = dbus-menu-clean.xml $(BUILT_SOURCES) $(am__append_2)
-EXTRA_DIST = \
- clean-namespaces.xslt \
- dbusmenu-glib-0.4.pc.in \
- dbus-menu.xml \
- client-marshal.list \
- menuitem-marshal.list \
- server-marshal.list
-
+BUILT_SOURCES = $(glib_enum_h) $(glib_enum_c) dbus-menu-clean.xml.c \
+ dbus-menu-clean.xml.h client-marshal.h client-marshal.c \
+ menuitem-marshal.h menuitem-marshal.c server-marshal.h \
+ server-marshal.c
+CLEANFILES = stamp-enum-types dbus-menu-clean.xml $(BUILT_SOURCES) \
+ $(am__append_2)
+DISTCLEANFILES = $(glib_enum_h) $(glib_enum_c) enum-types.c \
+ enum-types.h
+EXTRA_DIST = clean-namespaces.xslt dbusmenu-glib-0.4.pc.in \
+ dbus-menu.xml client-marshal.list menuitem-marshal.list \
+ server-marshal.list $(enum_tmpl_h) $(enum_tmpl_c)
+enum_tmpl_h = $(glib_enum_h:.h=.h.in)
+enum_tmpl_c = $(glib_enum_c:.c=.c.in)
lib_LTLIBRARIES = \
libdbusmenu-glib.la
@@ -320,11 +345,16 @@ libdbusmenu_glibinclude_HEADERS = \
menuitem.h \
menuitem-proxy.h \
server.h \
- client.h
+ client.h \
+ types.h
libdbusmenu_glib_la_SOURCES = \
dbus-menu-clean.xml.h \
dbus-menu-clean.xml.c \
+ defaults.h \
+ defaults.c \
+ enum-types.h \
+ enum-types.c \
menuitem.h \
menuitem.c \
menuitem-marshal.h \
@@ -340,6 +370,7 @@ libdbusmenu_glib_la_SOURCES = \
client-marshal.c \
client-menuitem.h \
client-menuitem.c \
+ client-private.h \
client.h \
client.c
@@ -356,31 +387,24 @@ libdbusmenu_glib_la_LIBADD = \
pkgconfig_DATA = dbusmenu-glib-0.4.pc
pkgconfigdir = $(libdir)/pkgconfig
-BUILT_SOURCES = \
- dbus-menu-clean.xml.c \
- dbus-menu-clean.xml.h \
- client-marshal.h \
- client-marshal.c \
- menuitem-marshal.h \
- menuitem-marshal.c \
- server-marshal.h \
- server-marshal.c
-
+glib_enum_h = enum-types.h
+glib_enum_c = enum-types.c
+glib_enum_headers = $(addprefix $(srcdir)/, $(libdbusmenu_glibinclude_HEADERS))
INTROSPECTION_GIRS = $(am__append_1)
@INTROSPECTION_TEN_FALSE@INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) \
@INTROSPECTION_TEN_FALSE@ --warn-all \
@INTROSPECTION_TEN_FALSE@ --add-include-path=$(srcdir) \
-@INTROSPECTION_TEN_FALSE@ $(addprefix --c-include=libdbusmenu-glib/, $(introspection_sources))
+@INTROSPECTION_TEN_FALSE@ $(addprefix --c-include=libdbusmenu-glib/, $(libdbusmenu_glibinclude_HEADERS))
@INTROSPECTION_TEN_TRUE@INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) \
@INTROSPECTION_TEN_TRUE@ --warn-all \
@INTROSPECTION_TEN_TRUE@ --add-include-path=$(srcdir) \
-@INTROSPECTION_TEN_TRUE@ $(addprefix --c-include=libdbusmenu-glib/, $(introspection_sources)) \
+@INTROSPECTION_TEN_TRUE@ $(addprefix --c-include=libdbusmenu-glib/, $(libdbusmenu_glibinclude_HEADERS)) \
@INTROSPECTION_TEN_TRUE@ --symbol-prefix=dbusmenu \
@INTROSPECTION_TEN_TRUE@ --identifier-prefix=Dbusmenu
INTROSPECTION_COMPILER_ARGS = --includedir=$(builddir)
-@HAVE_INTROSPECTION_TRUE@introspection_sources = $(libdbusmenu_glibinclude_HEADERS)
+@HAVE_INTROSPECTION_TRUE@introspection_sources = $(libdbusmenu_glibinclude_HEADERS) $(libdbusmenu_glib_la_SOURCES)
@HAVE_INTROSPECTION_TRUE@Dbusmenu_0_4_gir_INCLUDES = \
@HAVE_INTROSPECTION_TRUE@ GObject-2.0
@@ -406,7 +430,7 @@ all: $(BUILT_SOURCES)
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.enum $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -482,6 +506,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdbusmenu_glib_la-client-menuitem.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdbusmenu_glib_la-client.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdbusmenu_glib_la-dbus-menu-clean.xml.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdbusmenu_glib_la-defaults.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdbusmenu_glib_la-enum-types.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdbusmenu_glib_la-menuitem-marshal.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdbusmenu_glib_la-menuitem-proxy.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdbusmenu_glib_la-menuitem.Plo@am__quote@
@@ -520,6 +546,22 @@ libdbusmenu_glib_la-dbus-menu-clean.xml.lo: dbus-menu-clean.xml.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdbusmenu_glib_la_CFLAGS) $(CFLAGS) -c -o libdbusmenu_glib_la-dbus-menu-clean.xml.lo `test -f 'dbus-menu-clean.xml.c' || echo '$(srcdir)/'`dbus-menu-clean.xml.c
+libdbusmenu_glib_la-defaults.lo: defaults.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdbusmenu_glib_la_CFLAGS) $(CFLAGS) -MT libdbusmenu_glib_la-defaults.lo -MD -MP -MF $(DEPDIR)/libdbusmenu_glib_la-defaults.Tpo -c -o libdbusmenu_glib_la-defaults.lo `test -f 'defaults.c' || echo '$(srcdir)/'`defaults.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdbusmenu_glib_la-defaults.Tpo $(DEPDIR)/libdbusmenu_glib_la-defaults.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='defaults.c' object='libdbusmenu_glib_la-defaults.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdbusmenu_glib_la_CFLAGS) $(CFLAGS) -c -o libdbusmenu_glib_la-defaults.lo `test -f 'defaults.c' || echo '$(srcdir)/'`defaults.c
+
+libdbusmenu_glib_la-enum-types.lo: enum-types.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdbusmenu_glib_la_CFLAGS) $(CFLAGS) -MT libdbusmenu_glib_la-enum-types.lo -MD -MP -MF $(DEPDIR)/libdbusmenu_glib_la-enum-types.Tpo -c -o libdbusmenu_glib_la-enum-types.lo `test -f 'enum-types.c' || echo '$(srcdir)/'`enum-types.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdbusmenu_glib_la-enum-types.Tpo $(DEPDIR)/libdbusmenu_glib_la-enum-types.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='enum-types.c' object='libdbusmenu_glib_la-enum-types.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdbusmenu_glib_la_CFLAGS) $(CFLAGS) -c -o libdbusmenu_glib_la-enum-types.lo `test -f 'enum-types.c' || echo '$(srcdir)/'`enum-types.c
+
libdbusmenu_glib_la-menuitem.lo: menuitem.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdbusmenu_glib_la_CFLAGS) $(CFLAGS) -MT libdbusmenu_glib_la-menuitem.lo -MD -MP -MF $(DEPDIR)/libdbusmenu_glib_la-menuitem.Tpo -c -o libdbusmenu_glib_la-menuitem.lo `test -f 'menuitem.c' || echo '$(srcdir)/'`menuitem.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdbusmenu_glib_la-menuitem.Tpo $(DEPDIR)/libdbusmenu_glib_la-menuitem.Plo
@@ -803,6 +845,7 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -906,6 +949,26 @@ uninstall-am: uninstall-girDATA uninstall-libLTLIBRARIES \
uninstall-vapiDATA
+stamp-enum-types: $(glib_enum_headers)
+ $(QUIET_GEN)mkdir -p `dirname $(builddir)/$(glib_enum_h)`
+ $(QUIET_GEN)$(GLIB_MKENUMS) \
+ --template $(srcdir)/$(enum_tmpl_h) \
+ $(glib_enum_headers) > xgen-eh \
+ && (cmp -s xgen-eh $(builddir)/$(glib_enum_h) || cp -f xgen-eh $(builddir)/$(glib_enum_h)) \
+ && rm -f xgen-eh \
+ && echo timestamp > $(@F)
+
+$(glib_enum_h): stamp-enum-types
+ @true
+
+$(glib_enum_c): $(glib_enum_h)
+ $(QUIET_GEN)mkdir -p `dirname $(builddir)/$(glib_enum_c)`
+ $(QUIET_GEN)$(GLIB_MKENUMS) \
+ --template $(srcdir)/$(enum_tmpl_c) \
+ $(glib_enum_headers) > xgen-ec \
+ && cp -f xgen-ec $(builddir)/$(glib_enum_c) \
+ && rm -f xgen-ec
+
%.xml.h: %.xml
echo "extern const char * $(subst -,_,$(subst .,_,$(basename $(notdir $@))));" > $@
diff --git a/libdbusmenu-glib/client-marshal.c b/libdbusmenu-glib/client-marshal.c
index 1fabb99..60d7bd6 100644
--- a/libdbusmenu-glib/client-marshal.c
+++ b/libdbusmenu-glib/client-marshal.c
@@ -129,3 +129,5 @@ _dbusmenu_client_marshal_VOID__OBJECT_STRING_VARIANT_UINT_POINTER (GClosure
data2);
}
+/* VOID:ENUM (./client-marshal.list:3) */
+
diff --git a/libdbusmenu-glib/client-marshal.h b/libdbusmenu-glib/client-marshal.h
index f12ddde..c12af7c 100644
--- a/libdbusmenu-glib/client-marshal.h
+++ b/libdbusmenu-glib/client-marshal.h
@@ -22,6 +22,9 @@ extern void _dbusmenu_client_marshal_VOID__OBJECT_STRING_VARIANT_UINT_POINTER (G
gpointer invocation_hint,
gpointer marshal_data);
+/* VOID:ENUM (./client-marshal.list:3) */
+#define _dbusmenu_client_marshal_VOID__ENUM g_cclosure_marshal_VOID__ENUM
+
G_END_DECLS
#endif /* ___dbusmenu_client_marshal_MARSHAL_H__ */
diff --git a/libdbusmenu-glib/client-marshal.list b/libdbusmenu-glib/client-marshal.list
index 866dfa8..96f9302 100644
--- a/libdbusmenu-glib/client-marshal.list
+++ b/libdbusmenu-glib/client-marshal.list
@@ -1,2 +1,3 @@
VOID: OBJECT, UINT
VOID: OBJECT, STRING, VARIANT, UINT, POINTER
+VOID: ENUM
diff --git a/libdbusmenu-glib/client-menuitem.c b/libdbusmenu-glib/client-menuitem.c
index 0f14b85..60f8637 100644
--- a/libdbusmenu-glib/client-menuitem.c
+++ b/libdbusmenu-glib/client-menuitem.c
@@ -30,6 +30,7 @@ License version 3 and version 2.1 along with this program. If not, see
#endif
#include "client-menuitem.h"
+#include "client-private.h"
typedef struct _DbusmenuClientMenuitemPrivate DbusmenuClientMenuitemPrivate;
@@ -39,7 +40,7 @@ struct _DbusmenuClientMenuitemPrivate
};
#define DBUSMENU_CLIENT_MENUITEM_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUSMENU_CLIENT_MENUITEM_TYPE, DbusmenuClientMenuitemPrivate))
+(G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUSMENU_TYPE_CLIENT_MENUITEM, DbusmenuClientMenuitemPrivate))
static void dbusmenu_client_menuitem_class_init (DbusmenuClientMenuitemClass *klass);
static void dbusmenu_client_menuitem_init (DbusmenuClientMenuitem *self);
@@ -94,7 +95,7 @@ dbusmenu_client_menuitem_finalize (GObject *object)
DbusmenuClientMenuitem *
dbusmenu_client_menuitem_new (gint id, DbusmenuClient * client)
{
- DbusmenuClientMenuitem * mi = g_object_new(DBUSMENU_CLIENT_MENUITEM_TYPE, "id", id, NULL);
+ DbusmenuClientMenuitem * mi = g_object_new(DBUSMENU_TYPE_CLIENT_MENUITEM, "id", id, NULL);
DbusmenuClientMenuitemPrivate * priv = DBUSMENU_CLIENT_MENUITEM_GET_PRIVATE(mi);
priv->client = client;
return mi;
diff --git a/libdbusmenu-glib/client-menuitem.h b/libdbusmenu-glib/client-menuitem.h
index ef61213..a89cb11 100644
--- a/libdbusmenu-glib/client-menuitem.h
+++ b/libdbusmenu-glib/client-menuitem.h
@@ -35,12 +35,12 @@ License version 3 and version 2.1 along with this program. If not, see
G_BEGIN_DECLS
-#define DBUSMENU_CLIENT_MENUITEM_TYPE (dbusmenu_client_menuitem_get_type ())
-#define DBUSMENU_CLIENT_MENUITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DBUSMENU_CLIENT_MENUITEM_TYPE, DbusmenuClientMenuitem))
-#define DBUSMENU_CLIENT_MENUITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DBUSMENU_CLIENT_MENUITEM_TYPE, DbusmenuClientMenuitemClass))
-#define DBUSMENU_IS_CLIENT_MENUITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DBUSMENU_CLIENT_MENUITEM_TYPE))
-#define DBUSMENU_IS_CLIENT_MENUITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DBUSMENU_CLIENT_MENUITEM_TYPE))
-#define DBUSMENU_CLIENT_MENUITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DBUSMENU_CLIENT_MENUITEM_TYPE, DbusmenuClientMenuitemClass))
+#define DBUSMENU_TYPE_CLIENT_MENUITEM (dbusmenu_client_menuitem_get_type ())
+#define DBUSMENU_CLIENT_MENUITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DBUSMENU_TYPE_CLIENT_MENUITEM, DbusmenuClientMenuitem))
+#define DBUSMENU_CLIENT_MENUITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DBUSMENU_TYPE_CLIENT_MENUITEM, DbusmenuClientMenuitemClass))
+#define DBUSMENU_IS_CLIENT_MENUITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DBUSMENU_TYPE_CLIENT_MENUITEM))
+#define DBUSMENU_IS_CLIENT_MENUITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DBUSMENU_TYPE_CLIENT_MENUITEM))
+#define DBUSMENU_CLIENT_MENUITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DBUSMENU_TYPE_CLIENT_MENUITEM, DbusmenuClientMenuitemClass))
typedef struct _DbusmenuClientMenuitem DbusmenuClientMenuitem;
typedef struct _DbusmenuClientMenuitemClass DbusmenuClientMenuitemClass;
diff --git a/libdbusmenu-glib/client-private.h b/libdbusmenu-glib/client-private.h
new file mode 100644
index 0000000..f6df372
--- /dev/null
+++ b/libdbusmenu-glib/client-private.h
@@ -0,0 +1,48 @@
+/*
+A library to communicate a menu object set accross DBus and
+track updates and maintain consistency.
+
+Copyright 2011 Canonical Ltd.
+
+Authors:
+ Ted Gould <ted@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the
+Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by
+the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the applicable version of the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public
+License version 3 and version 2.1 along with this program. If not, see
+<http://www.gnu.org/licenses/>
+*/
+
+#ifndef __DBUSMENU_CLIENT_PRIVATE_H__
+#define __DBUSMENU_CLIENT_PRIVATE_H__
+
+#include "client.h"
+
+G_BEGIN_DECLS
+
+void dbusmenu_client_send_event (DbusmenuClient * client,
+ gint id,
+ const gchar * name,
+ GVariant * variant,
+ guint timestamp);
+void dbusmenu_client_send_about_to_show(DbusmenuClient * client,
+ gint id,
+ void (*cb) (gpointer user_data),
+ gpointer cb_data);
+
+G_END_DECLS
+
+#endif
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index ba4ae7e..d368a0e 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -33,12 +33,14 @@ License version 3 and version 2.1 along with this program. If not, see
#include <gio/gio.h>
#include "client.h"
+#include "client-private.h"
#include "menuitem.h"
#include "menuitem-private.h"
#include "client-menuitem.h"
#include "server-marshal.h"
#include "client-marshal.h"
#include "dbus-menu-clean.xml.h"
+#include "enum-types.h"
/* How many property requests should we queue before
sending the message on dbus */
@@ -48,7 +50,9 @@ License version 3 and version 2.1 along with this program. If not, see
enum {
PROP_0,
PROP_DBUSOBJECT,
- PROP_DBUSNAME
+ PROP_DBUSNAME,
+ PROP_STATUS,
+ PROP_TEXT_DIRECTION
};
/* Signals */
@@ -79,6 +83,7 @@ struct _DbusmenuClientPrivate
GCancellable * menuproxy_cancel;
GCancellable * layoutcall;
+ GVariant * layout_props;
gint current_revision;
gint my_revision;
@@ -90,6 +95,9 @@ struct _DbusmenuClientPrivate
GArray * delayed_property_list;
GArray * delayed_property_listeners;
gint delayed_idle;
+
+ DbusmenuTextDirection text_direction;
+ DbusmenuStatus status;
};
typedef struct _newItemPropData newItemPropData;
@@ -157,6 +165,7 @@ static void get_properties_globber (DbusmenuClient * client, gint id, const gcha
static GQuark error_domain (void);
static void item_activated (GDBusProxy * proxy, gint id, guint timestamp, DbusmenuClient * client);
static void menuproxy_build_cb (GObject * object, GAsyncResult * res, gpointer user_data);
+static void menuproxy_prop_changed_cb (GDBusProxy * proxy, GVariant * properties, GStrv invalidated, gpointer user_data);
static void menuproxy_name_changed_cb (GObject * object, GParamSpec * pspec, gpointer user_data);
static void menuproxy_signal_cb (GDBusProxy * proxy, gchar * sender, gchar * signal, GVariant * params, gpointer user_data);
static void type_handler_destroy (gpointer user_data);
@@ -274,6 +283,16 @@ dbusmenu_client_class_init (DbusmenuClientClass *klass)
"Name of the DBus client we're connecting to.",
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_STATUS,
+ g_param_spec_enum(DBUSMENU_CLIENT_PROP_STATUS, "Status of viewing the menus",
+ "Whether the menus should be given special visuals",
+ DBUSMENU_TYPE_STATUS, DBUSMENU_STATUS_NORMAL,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_TEXT_DIRECTION,
+ g_param_spec_enum(DBUSMENU_CLIENT_PROP_TEXT_DIRECTION, "Direction text values have",
+ "Signals which direction the default text direction is for the menus",
+ DBUSMENU_TYPE_TEXT_DIRECTION, DBUSMENU_TEXT_DIRECTION_NONE,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
if (dbusmenu_node_info == NULL) {
GError * error = NULL;
@@ -316,6 +335,15 @@ dbusmenu_client_init (DbusmenuClient *self)
priv->layoutcall = NULL;
+ gchar * layout_props[5];
+ layout_props[0] = DBUSMENU_MENUITEM_PROP_TYPE;
+ layout_props[1] = DBUSMENU_MENUITEM_PROP_LABEL;
+ layout_props[2] = DBUSMENU_MENUITEM_PROP_VISIBLE;
+ layout_props[3] = DBUSMENU_MENUITEM_PROP_ENABLED;
+ layout_props[4] = NULL;
+ priv->layout_props = g_variant_new_strv((const gchar * const *)layout_props, 4);
+ g_variant_ref_sink(priv->layout_props);
+
priv->current_revision = 0;
priv->my_revision = 0;
@@ -328,6 +356,9 @@ dbusmenu_client_init (DbusmenuClient *self)
priv->delayed_property_list = g_array_new(TRUE, FALSE, sizeof(gchar *));
priv->delayed_property_listeners = g_array_new(FALSE, FALSE, sizeof(properties_listener_t));
+ priv->text_direction = DBUSMENU_TEXT_DIRECTION_NONE;
+ priv->status = DBUSMENU_STATUS_NORMAL;
+
return;
}
@@ -380,6 +411,11 @@ dbusmenu_client_dispose (GObject *object)
priv->layoutcall = NULL;
}
+ if (priv->layout_props != NULL) {
+ g_variant_unref(priv->layout_props);
+ priv->layout_props = NULL;
+ }
+
/* Bring down the menu proxy, ensure we're not
looking for one at the same time. */
if (priv->menuproxy_cancel != NULL) {
@@ -472,6 +508,12 @@ get_property (GObject * obj, guint id, GValue * value, GParamSpec * pspec)
case PROP_DBUSOBJECT:
g_value_set_string(value, priv->dbus_object);
break;
+ case PROP_STATUS:
+ g_value_set_enum(value, priv->status);
+ break;
+ case PROP_TEXT_DIRECTION:
+ g_value_set_enum(value, priv->text_direction);
+ break;
default:
g_warning("Unknown property %d.", id);
return;
@@ -983,6 +1025,19 @@ menuproxy_build_cb (GObject * object, GAsyncResult * res, gpointer user_data)
priv->menuproxy_cancel = NULL;
}
+ /* Check the text direction if available */
+ GVariant * textdir = g_dbus_proxy_get_cached_property(priv->menuproxy, "text-direction");
+ if (textdir != NULL) {
+ GVariant * str = textdir;
+ if (g_variant_is_of_type(str, G_VARIANT_TYPE_VARIANT)) {
+ str = g_variant_get_variant(str);
+ }
+
+ priv->text_direction = dbusmenu_text_direction_get_value_from_nick(g_variant_get_string(str, NULL));
+
+ g_variant_unref(textdir);
+ }
+
/* If we get here, we don't need the DBus proxy */
if (priv->dbusproxy != 0) {
g_bus_unwatch_name(priv->dbusproxy);
@@ -991,6 +1046,7 @@ menuproxy_build_cb (GObject * object, GAsyncResult * res, gpointer user_data)
g_signal_connect(priv->menuproxy, "g-signal", G_CALLBACK(menuproxy_signal_cb), client);
g_signal_connect(priv->menuproxy, "notify::g-name-owner", G_CALLBACK(menuproxy_name_changed_cb), client);
+ g_signal_connect(priv->menuproxy, "g-properties-changed", G_CALLBACK(menuproxy_prop_changed_cb), client);
gchar * name_owner = g_dbus_proxy_get_name_owner(priv->menuproxy);
if (name_owner != NULL) {
@@ -1001,6 +1057,63 @@ menuproxy_build_cb (GObject * object, GAsyncResult * res, gpointer user_data)
return;
}
+/* Handle the properites changing */
+static void
+menuproxy_prop_changed_cb (GDBusProxy * proxy, GVariant * properties, GStrv invalidated, gpointer user_data)
+{
+ DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(user_data);
+ DbusmenuTextDirection olddir = priv->text_direction;
+ DbusmenuStatus oldstatus = priv->status;
+
+ /* Invalidate first */
+ gchar * invalid;
+ gint i = 0;
+ for (invalid = invalidated[i]; invalid != NULL; invalid = invalidated[++i]) {
+ if (g_strcmp0(invalid, "text-direction") == 0) {
+ priv->text_direction = DBUSMENU_TEXT_DIRECTION_NONE;
+ }
+ if (g_strcmp0(invalid, "status") == 0) {
+ priv->status = DBUSMENU_STATUS_NORMAL;
+ }
+ }
+
+ /* Check updates */
+ GVariantIter iters;
+ gchar * key; GVariant * value;
+ g_variant_iter_init(&iters, properties);
+ while (g_variant_iter_next(&iters, "{sv}", &key, &value)) {
+ if (g_strcmp0(key, "text-direction") == 0) {
+ GVariant * str = value;
+ if (g_variant_is_of_type(str, G_VARIANT_TYPE_VARIANT)) {
+ str = g_variant_get_variant(str);
+ }
+
+ priv->text_direction = dbusmenu_text_direction_get_value_from_nick(g_variant_get_string(str, NULL));
+ }
+ if (g_strcmp0(key, "status") == 0) {
+ GVariant * str = value;
+ if (g_variant_is_of_type(str, G_VARIANT_TYPE_VARIANT)) {
+ str = g_variant_get_variant(str);
+ }
+
+ priv->status = dbusmenu_status_get_value_from_nick(g_variant_get_string(str, NULL));
+ }
+
+ g_variant_unref(value);
+ g_free(key);
+ }
+
+ if (olddir != priv->text_direction) {
+ g_object_notify(G_OBJECT(user_data), DBUSMENU_CLIENT_PROP_TEXT_DIRECTION);
+ }
+
+ if (oldstatus != priv->status) {
+ g_object_notify(G_OBJECT(user_data), DBUSMENU_CLIENT_PROP_STATUS);
+ }
+
+ return;
+}
+
/* Handle the case where we change owners */
static void
menuproxy_name_changed_cb (GObject * object, GParamSpec * pspec, gpointer user_data)
@@ -1473,6 +1586,33 @@ parse_layout_xml(DbusmenuClient * client, GVariant * layout, DbusmenuMenuitem *
parse_layout_update(childmi, client);
}
+ /* Apply known properties sent in the structure to the
+ menu item. Sometimes they may just be copies */
+ if (childmi != NULL) {
+ GVariantIter iter;
+ gchar * prop;
+ GVariant * value;
+
+ /* Set the type first as it can manage the behavior of
+ all other properties. */
+ g_variant_iter_init(&iter, g_variant_get_child_value(child, 1));
+ while (g_variant_iter_next(&iter, "{sv}", &prop, &value)) {
+ if (g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_TYPE) == 0) {
+ dbusmenu_menuitem_property_set_variant(childmi, prop, value);
+ }
+ g_free(prop);
+ g_variant_unref(value);
+ }
+
+ /* Now go through and do all the properties. */
+ g_variant_iter_init(&iter, g_variant_get_child_value(child, 1));
+ while (g_variant_iter_next(&iter, "{sv}", &prop, &value)) {
+ dbusmenu_menuitem_property_set_variant(childmi, prop, value);
+ g_free(prop);
+ g_variant_unref(value);
+ }
+ }
+
position++;
}
@@ -1662,7 +1802,7 @@ update_layout (DbusmenuClient * client)
g_variant_builder_add_value(&tupleb, g_variant_new_int32(0)); // root
g_variant_builder_add_value(&tupleb, g_variant_new_int32(-1)); // recurse
- g_variant_builder_add_value(&tupleb, g_variant_new_array(G_VARIANT_TYPE_STRING, NULL, 0)); // props
+ g_variant_builder_add_value(&tupleb, priv->layout_props); // props
GVariant * args = g_variant_builder_end(&tupleb);
// g_debug("Args (type: %s): %s", g_variant_get_type_string(args), g_variant_print(args, TRUE));
@@ -1682,17 +1822,17 @@ update_layout (DbusmenuClient * client)
/* Public API */
/**
- dbusmenu_client_new:
- @name: The DBus name for the server to connect to
- @object: The object on the server to monitor
-
- This function creates a new client that connects to a specific
- server on DBus. That server is at a specific location sharing
- a known object. The interface is assumed by the code to be
- the DBus menu interface. The newly created client will start
- sending out events as it syncs up with the server.
-
- Return value: A brand new #DbusmenuClient
+ * dbusmenu_client_new:
+ * @name: The DBus name for the server to connect to
+ * @object: The object on the server to monitor
+ *
+ * This function creates a new client that connects to a specific
+ * server on DBus. That server is at a specific location sharing
+ * a known object. The interface is assumed by the code to be
+ * the DBus menu interface. The newly created client will start
+ * sending out events as it syncs up with the server.
+ *
+ * Return value: A brand new #DbusmenuClient
*/
DbusmenuClient *
dbusmenu_client_new (const gchar * name, const gchar * object)
@@ -1706,21 +1846,21 @@ dbusmenu_client_new (const gchar * name, const gchar * object)
}
/**
- dbusmenu_client_get_root:
- @client: The #DbusmenuClient to get the root node from
-
- Grabs the root node for the specified client @client. This
- function may block. It will block if there is currently a
- call to update the layout, it will block on that layout
- updated and then return the newly updated layout. Chances
- are that this update is in the queue for the mainloop as
- it would have been requested some time ago, but in theory
- it could block longer.
-
- Return value: A #DbusmenuMenuitem representing the root of
- menu on the server. If there is no server or there is
- an error receiving its layout it'll return #NULL.
-*/
+ * dbusmenu_client_get_root:
+ * @client: The #DbusmenuClient to get the root node from
+ *
+ * Grabs the root node for the specified client @client. This
+ * function may block. It will block if there is currently a
+ * call to update the layout, it will block on that layout
+ * updated and then return the newly updated layout. Chances
+ * are that this update is in the queue for the mainloop as
+ * it would have been requested some time ago, but in theory
+ * it could block longer.
+ *
+ * Return value: (transfer none): A #DbusmenuMenuitem representing the root of
+ * menu on the server. If there is no server or there is
+ * an error receiving its layout it'll return #NULL.
+ */
DbusmenuMenuitem *
dbusmenu_client_get_root (DbusmenuClient * client)
{
@@ -1749,25 +1889,25 @@ type_handler_destroy (gpointer user_data)
}
/**
- dbusmenu_client_add_type_handler:
- @client: Client where we're getting types coming in
- @type: A text string that will be matched with the 'type'
- property on incoming menu items
- @newfunc: The function that will be executed with those new
- items when they come in.
-
- This function connects into the type handling of the #DbusmenuClient.
- Every new menuitem that comes in immediately gets asked for it's
- properties. When we get those properties we check the 'type'
- property and look to see if it matches a handler that is known
- by the client. If so, the @newfunc function is executed on that
- #DbusmenuMenuitem. If not, then the DbusmenuClient::new-menuitem
- signal is sent.
-
- In the future the known types will be sent to the server so that it
- can make choices about the menu item types availble.
-
- Return value: If registering the new type was successful.
+ * dbusmenu_client_add_type_handler:
+ * @client: Client where we're getting types coming in
+ * @type: A text string that will be matched with the 'type'
+ * property on incoming menu items
+ * @newfunc: The function that will be executed with those new
+ * items when they come in.
+ *
+ * This function connects into the type handling of the #DbusmenuClient.
+ * Every new menuitem that comes in immediately gets asked for it's
+ * properties. When we get those properties we check the 'type'
+ * property and look to see if it matches a handler that is known
+ * by the client. If so, the @newfunc function is executed on that
+ * #DbusmenuMenuitem. If not, then the DbusmenuClient::new-menuitem
+ * signal is sent.
+ *
+ * In the future the known types will be sent to the server so that it
+ * can make choices about the menu item types availble.
+ *
+ * Return value: If registering the new type was successful.
*/
gboolean
dbusmenu_client_add_type_handler (DbusmenuClient * client, const gchar * type, DbusmenuClientTypeHandler newfunc)
@@ -1776,29 +1916,29 @@ dbusmenu_client_add_type_handler (DbusmenuClient * client, const gchar * type, D
}
/**
- dbusmenu_client_add_type_handler_full:
- @client: Client where we're getting types coming in
- @type: A text string that will be matched with the 'type'
- property on incoming menu items
- @newfunc: The function that will be executed with those new
- items when they come in.
- @user_data: Data passed to @newfunc when it is called
- @destroy_func: A function that is called when the type handler is
- removed (usually on client destruction) which will free
- the resources in @user_data.
-
- This function connects into the type handling of the #DbusmenuClient.
- Every new menuitem that comes in immediately gets asked for it's
- properties. When we get those properties we check the 'type'
- property and look to see if it matches a handler that is known
- by the client. If so, the @newfunc function is executed on that
- #DbusmenuMenuitem. If not, then the DbusmenuClient::new-menuitem
- signal is sent.
-
- In the future the known types will be sent to the server so that it
- can make choices about the menu item types availble.
-
- Return value: If registering the new type was successful.
+ * dbusmenu_client_add_type_handler_full:
+ * @client: Client where we're getting types coming in
+ * @type: A text string that will be matched with the 'type'
+ * property on incoming menu items
+ * @newfunc: The function that will be executed with those new
+ * items when they come in.
+ * @user_data: Data passed to @newfunc when it is called
+ * @destroy_func: A function that is called when the type handler is
+ * removed (usually on client destruction) which will free
+ * the resources in @user_data.
+ *
+ * This function connects into the type handling of the #DbusmenuClient.
+ * Every new menuitem that comes in immediately gets asked for it's
+ * properties. When we get those properties we check the 'type'
+ * property and look to see if it matches a handler that is known
+ * by the client. If so, the @newfunc function is executed on that
+ * #DbusmenuMenuitem. If not, then the DbusmenuClient::new-menuitem
+ * signal is sent.
+ *
+ * In the future the known types will be sent to the server so that it
+ * can make choices about the menu item types availble.
+ *
+ * Return value: If registering the new type was successful.
*/
gboolean
dbusmenu_client_add_type_handler_full (DbusmenuClient * client, const gchar * type, DbusmenuClientTypeHandler newfunc, gpointer user_data, DbusmenuClientTypeDestroyHandler destroy_func)
@@ -1834,3 +1974,42 @@ dbusmenu_client_add_type_handler_full (DbusmenuClient * client, const gchar * ty
return TRUE;
}
+/**
+ dbusmenu_client_get_text_direction:
+ @client: #DbusmenuClient to check the text direction on
+
+ Gets the text direction that the server is exporting. If
+ the server is not exporting a direction then the value
+ #DBUSMENU_TEXT_DIRECTION_NONE will be returned.
+
+ Return value: Text direction being exported.
+*/
+DbusmenuTextDirection
+dbusmenu_client_get_text_direction (DbusmenuClient * client)
+{
+ g_return_val_if_fail(DBUSMENU_IS_CLIENT(client), DBUSMENU_TEXT_DIRECTION_NONE);
+ DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);
+ return priv->text_direction;
+}
+
+/**
+ dbusmenu_client_get_status:
+ @client: #DbusmenuClient to check the status on
+
+ Gets the recommended current status that the server
+ is exporting for the menus. In situtations where the
+ value is #DBUSMENU_STATUS_NOTICE it is recommended that
+ the client show the menus to the user an a more noticible
+ way.
+
+ Return value: Status being exported.
+*/
+DbusmenuStatus
+dbusmenu_client_get_status (DbusmenuClient * client)
+{
+ g_return_val_if_fail(DBUSMENU_IS_CLIENT(client), DBUSMENU_STATUS_NORMAL);
+ DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);
+ return priv->status;
+}
+
+
diff --git a/libdbusmenu-glib/client.h b/libdbusmenu-glib/client.h
index 6d78edf..28d4dd3 100644
--- a/libdbusmenu-glib/client.h
+++ b/libdbusmenu-glib/client.h
@@ -33,6 +33,7 @@ License version 3 and version 2.1 along with this program. If not, see
#include <glib-object.h>
#include "menuitem.h"
+#include "types.h"
G_BEGIN_DECLS
@@ -43,17 +44,89 @@ G_BEGIN_DECLS
#define DBUSMENU_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DBUSMENU_TYPE_CLIENT))
#define DBUSMENU_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DBUSMENU_TYPE_CLIENT, DbusmenuClientClass))
+/**
+ * DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED:
+ *
+ * String to attach to signal #DbusmenuClient::layout-updated
+ */
#define DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED "layout-updated"
+/**
+ * DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED:
+ *
+ * String to attach to signal #DbusmenuClient::root-changed
+ */
#define DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED "root-changed"
+/**
+ * DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM:
+ *
+ * String to attach to signal #DbusmenuClient::new-menuitem
+ */
#define DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM "new-menuitem"
+/**
+ * DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE:
+ *
+ * String to attach to signal #DbusmenuClient::item-activate
+ */
#define DBUSMENU_CLIENT_SIGNAL_ITEM_ACTIVATE "item-activate"
+/**
+ * DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT:
+ *
+ * String to attach to signal #DbusmenuClient::event-result
+ */
#define DBUSMENU_CLIENT_SIGNAL_EVENT_RESULT "event-result"
+/**
+ * DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED:
+ *
+ * String to attach to signal #DbusmenuClient::text-direction-changed
+ */
+#define DBUSMENU_CLIENT_SIGNAL_TEXT_DIRECTION_CHANGED "text-direction-changed"
+/**
+ * DBUSMENU_CLIENT_PROP_DBUS_NAME:
+ *
+ * String to access property #DbusmenuClient:dbus-name
+ */
#define DBUSMENU_CLIENT_PROP_DBUS_NAME "dbus-name"
+/**
+ * DBUSMENU_CLIENT_PROP_DBUS_OBJECT:
+ *
+ * String to access property #DbusmenuClient:dbus-object
+ */
#define DBUSMENU_CLIENT_PROP_DBUS_OBJECT "dbus-object"
+/**
+ * DBUSMENU_CLIENT_PROP_STATUS:
+ *
+ * String to access property #DbusmenuClient:status
+ */
+#define DBUSMENU_CLIENT_PROP_STATUS "status"
+/**
+ * DBUSMENU_CLIENT_PROP_TEXT_DIRECTION:
+ *
+ * String to access property #DbusmenuClient:text-direction
+ */
+#define DBUSMENU_CLIENT_PROP_TEXT_DIRECTION "text-direction"
+/**
+ * DBUSMENU_CLIENT_TYPES_DEFAULT:
+ *
+ * Used to set the 'type' property on a menu item to create
+ * a standard menu item.
+ */
#define DBUSMENU_CLIENT_TYPES_DEFAULT "standard"
+/**
+ * DBUSMENU_CLIENT_TYPES_SEPARATOR:
+ *
+ * Used to set the 'type' property on a menu item to create
+ * a separator menu item.
+ */
#define DBUSMENU_CLIENT_TYPES_SEPARATOR "separator"
+/**
+ * DBUSMENU_CLIENT_TYPES_IMAGE:
+ *
+ * Used to set the 'type' property on a menu item to create
+ * an image menu item. Deprecated as standard menu items now
+ * support images as well.
+ */
#define DBUSMENU_CLIENT_TYPES_IMAGE "standard"
typedef struct _DbusmenuClientPrivate DbusmenuClientPrivate;
@@ -62,6 +135,7 @@ typedef struct _DbusmenuClientPrivate DbusmenuClientPrivate;
DbusmenuClientClass:
@parent_class: #GObjectClass
@layout_updated: Slot for #DbusmenuClient::layout-updated.
+ @root_changed: Slot for #DbusmenuClient::root-changed.
@new_menuitem: Slot for #DbusmenuClient::new-menuitem.
@item_activate: Slot for #DbusmenuClient::item-activate.
@event_result: Slot for #DbusmenuClient::event-error.
@@ -97,7 +171,6 @@ struct _DbusmenuClientClass {
/**
DbusmenuClient:
- @parent: #GObject.
The client for a #DbusmenuServer creating a shared
object set of #DbusmenuMenuitem objects.
@@ -119,6 +192,9 @@ struct _DbusmenuClient {
The type handler is called when a dbusmenu item is created
with a matching type as setup in #dbusmenu_client_add_type_handler
+
+ Return value: #TRUE if the type has been handled. #FALSE if this
+ function was somehow unable to handle it.
*/
typedef gboolean (*DbusmenuClientTypeHandler) (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client, gpointer user_data);
@@ -145,16 +221,9 @@ gboolean dbusmenu_client_add_type_handler_full (DbusmenuClient * cli
const gchar * type,
DbusmenuClientTypeHandler newfunc,
gpointer user_data,
- DbusmenuClientTypeDestroyHandler destory_func);
-void dbusmenu_client_send_event (DbusmenuClient * client,
- gint id,
- const gchar * name,
- GVariant * variant,
- guint timestamp);
-void dbusmenu_client_send_about_to_show(DbusmenuClient * client,
- gint id,
- void (*cb) (gpointer user_data),
- gpointer cb_data);
+ DbusmenuClientTypeDestroyHandler destroy_func);
+DbusmenuTextDirection dbusmenu_client_get_text_direction (DbusmenuClient * client);
+DbusmenuStatus dbusmenu_client_get_status (DbusmenuClient * client);
/**
SECTION:client
diff --git a/libdbusmenu-glib/dbus-menu-clean.xml.c b/libdbusmenu-glib/dbus-menu-clean.xml.c
index 475adb5..215c19c 100644
--- a/libdbusmenu-glib/dbus-menu-clean.xml.c
+++ b/libdbusmenu-glib/dbus-menu-clean.xml.c
@@ -10,6 +10,14 @@ const char * dbus_menu_clean_xml =
" \n"
" </property>\n"
"\n"
+" <property name=\"text-direction\" type=\"s\" access=\"read\">\n"
+" \n"
+" </property>\n"
+"\n"
+" <property name=\"status\" type=\"s\" access=\"read\">\n"
+" \n"
+" </property>\n"
+"\n"
"\n"
"\n"
" <method name=\"GetLayout\">\n"
@@ -88,8 +96,8 @@ const char * dbus_menu_clean_xml =
"\n"
" <signal name=\"ItemsPropertiesUpdated\">\n"
" \n"
-" <arg type=\"a(ia(sv))\" name=\"props\" direction=\"out\"/>\n"
-" <arg type=\"a(ia(s))\" name=\"props_removed\" direction=\"out\"/>\n"
+" <arg type=\"a(ia{sv})\" name=\"updatedProps\" direction=\"out\"/>\n"
+" <arg type=\"a(ias)\" name=\"removedProps\" direction=\"out\"/>\n"
" </signal>\n"
" <signal name=\"LayoutUpdated\">\n"
" \n"
diff --git a/libdbusmenu-glib/dbus-menu.xml b/libdbusmenu-glib/dbus-menu.xml
index da14c63..0d2a2d6 100644
--- a/libdbusmenu-glib/dbus-menu.xml
+++ b/libdbusmenu-glib/dbus-menu.xml
@@ -171,6 +171,24 @@ License version 3 and version 2.1 along with this program. If not, see
</dox:d>
</property>
+ <property name="text-direction" type="s" access="read">
+ <dox:d>
+ Represents the way the text direction of the application. This
+ allows the server to handle mismatches intelligently. For left-
+ to-right the string is "ltr" for right-to-left it is "rtl".
+ </dox:d>
+ </property>
+
+ <property name="status" type="s" access="read">
+ <dox:d>
+ Tells if the menus are in a normal state or they believe that they
+ could use some attention. Cases for showing them would be if help
+ were referring to them or they accessors were being highlighted.
+ This property can have two values: "normal" in almost all cases and
+ "notice" when they should have a higher priority to be shown.
+ </dox:d>
+ </property>
+
<!-- Functions -->
<method name="GetLayout">
@@ -308,8 +326,8 @@ License version 3 and version 2.1 along with this program. If not, see
the ID of the item with a hashtable of names and values for those
properties.
</dox:d>
- <arg type="a(ia(sv))" name="props" direction="out" />
- <arg type="a(ia(s))" name="props_removed" direction="out" />
+ <arg type="a(ia{sv})" name="updatedProps" direction="out" />
+ <arg type="a(ias)" name="removedProps" direction="out" />
</signal>
<signal name="LayoutUpdated">
<dox:d>
diff --git a/libdbusmenu-glib/defaults.c b/libdbusmenu-glib/defaults.c
new file mode 100644
index 0000000..c05ef38
--- /dev/null
+++ b/libdbusmenu-glib/defaults.c
@@ -0,0 +1,291 @@
+/*
+A library to communicate a menu object set accross DBus and
+track updates and maintain consistency.
+
+Copyright 2011 Canonical Ltd.
+
+Authors:
+ Ted Gould <ted@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the
+Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by
+the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the applicable version of the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public
+License version 3 and version 2.1 along with this program. If not, see
+<http://www.gnu.org/licenses/>
+*/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib/gi18n.h>
+
+#include "defaults.h"
+#include "menuitem.h"
+#include "client.h"
+
+struct _DbusmenuDefaultsPrivate {
+ GHashTable * types;
+};
+
+typedef struct _DefaultEntry DefaultEntry;
+struct _DefaultEntry {
+ GVariantType * type;
+ GVariant * value;
+};
+
+#define DBUSMENU_DEFAULTS_GET_PRIVATE(o) \
+(G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUSMENU_TYPE_DEFAULTS, DbusmenuDefaultsPrivate))
+
+static void dbusmenu_defaults_class_init (DbusmenuDefaultsClass *klass);
+static void dbusmenu_defaults_init (DbusmenuDefaults *self);
+static void dbusmenu_defaults_dispose (GObject *object);
+static void dbusmenu_defaults_finalize (GObject *object);
+
+static DefaultEntry * entry_create (const GVariantType * type, GVariant * variant);
+static void entry_destroy (gpointer entry);
+
+G_DEFINE_TYPE (DbusmenuDefaults, dbusmenu_defaults, G_TYPE_OBJECT);
+
+static void
+dbusmenu_defaults_class_init (DbusmenuDefaultsClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (DbusmenuDefaultsPrivate));
+
+ object_class->dispose = dbusmenu_defaults_dispose;
+ object_class->finalize = dbusmenu_defaults_finalize;
+ return;
+}
+
+static void
+dbusmenu_defaults_init (DbusmenuDefaults *self)
+{
+ self->priv = DBUSMENU_DEFAULTS_GET_PRIVATE(self);
+
+ self->priv->types = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)g_hash_table_destroy);
+
+ /* Standard defaults */
+ dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_VISIBLE, G_VARIANT_TYPE_BOOLEAN, g_variant_new_boolean(TRUE));
+ dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_ENABLED, G_VARIANT_TYPE_BOOLEAN, g_variant_new_boolean(TRUE));
+ dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_LABEL, G_VARIANT_TYPE_STRING, g_variant_new_string(_("Label Empty")));
+ dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_ICON_NAME, G_VARIANT_TYPE_STRING, NULL);
+ dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, G_VARIANT_TYPE_STRING, NULL);
+ dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_TOGGLE_STATE, G_VARIANT_TYPE_INT32, NULL);
+ dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_SHORTCUT, G_VARIANT_TYPE_ARRAY, NULL);
+ dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_DEFAULT, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY, G_VARIANT_TYPE_STRING, NULL);
+
+ /* Separator defaults */
+ dbusmenu_defaults_default_set(self, DBUSMENU_CLIENT_TYPES_SEPARATOR, DBUSMENU_MENUITEM_PROP_VISIBLE, G_VARIANT_TYPE_BOOLEAN, g_variant_new_boolean(TRUE));
+
+ return;
+}
+
+static void
+dbusmenu_defaults_dispose (GObject *object)
+{
+ DbusmenuDefaults * self = DBUSMENU_DEFAULTS(object);
+
+ if (self->priv->types != NULL) {
+ g_hash_table_destroy(self->priv->types);
+ self->priv->types = NULL;
+ }
+
+ G_OBJECT_CLASS (dbusmenu_defaults_parent_class)->dispose (object);
+ return;
+}
+
+static void
+dbusmenu_defaults_finalize (GObject *object)
+{
+
+ G_OBJECT_CLASS (dbusmenu_defaults_parent_class)->finalize (object);
+ return;
+}
+
+/* Create a new entry based on the info provided */
+static DefaultEntry *
+entry_create (const GVariantType * type, GVariant * variant)
+{
+ DefaultEntry * defentry = g_new0(DefaultEntry, 1);
+
+ if (type != NULL) {
+ defentry->type = g_variant_type_copy(type);
+ }
+
+ if (variant != NULL) {
+ defentry->value = variant;
+ g_variant_ref_sink(variant);
+ }
+
+ return defentry;
+}
+
+/* Destroy an entry */
+static void
+entry_destroy (gpointer entry)
+{
+ DefaultEntry * defentry = (DefaultEntry *)entry;
+
+ if (defentry->type != NULL) {
+ g_variant_type_free(defentry->type);
+ defentry->type = NULL;
+ }
+
+ if (defentry->value != NULL) {
+ g_variant_unref(defentry->value);
+ defentry->value = NULL;
+ }
+
+ g_free(defentry);
+ return;
+}
+
+static DbusmenuDefaults * default_defaults = NULL;
+
+/*
+ * dbusmenu_defaults_ref_default:
+ *
+ * Get a reference to the default instance. If it doesn't exist this
+ * function will create it.
+ *
+ * Return value: (transfer full): A reference to the defaults
+ */
+DbusmenuDefaults *
+dbusmenu_defaults_ref_default (void)
+{
+ if (default_defaults == NULL) {
+ default_defaults = DBUSMENU_DEFAULTS(g_object_new(DBUSMENU_TYPE_DEFAULTS, NULL));
+ g_object_add_weak_pointer(G_OBJECT(default_defaults), (gpointer *)&default_defaults);
+ } else {
+ g_object_ref(default_defaults);
+ }
+
+ return default_defaults;
+}
+
+/*
+ * dbusmenu_defaults_default_set:
+ * @defaults: The #DbusmenuDefaults object to add to
+ * @type: (allow-none): The #DbusmenuMenuitem type for this default if #NULL will default to #DBUSMENU_CLIENT_TYPE_DEFAULT
+ * @property: Property name for the default
+ * @prop_type: (allow-none): Type of the property for runtime checking. To disable checking set to #NULL.
+ * @value: (allow-none): Default value for @property. #NULL if by default it is unset, but you want type checking from @prop_type.
+ *
+ * Sets up an entry in the defaults database for a given @property
+ * and menuitem type @type. @prop_type and @value can both be #NULL
+ * but both of them can not.
+ */
+void
+dbusmenu_defaults_default_set (DbusmenuDefaults * defaults, const gchar * type, const gchar * property, const GVariantType * prop_type, GVariant * value)
+{
+ g_return_if_fail(DBUSMENU_IS_DEFAULTS(defaults));
+ g_return_if_fail(property != NULL);
+ g_return_if_fail(prop_type != NULL || value != NULL);
+
+ if (type == NULL) {
+ type = DBUSMENU_CLIENT_TYPES_DEFAULT;
+ }
+
+ GHashTable * prop_table = (GHashTable *)g_hash_table_lookup(defaults->priv->types, type);
+
+ /* We've never had a default for this type, so we need
+ to create a table for it. */
+ if (prop_table == NULL) {
+ prop_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, entry_destroy);
+
+ g_hash_table_insert(prop_table, g_strdup(property), entry_create(prop_type, value));
+ g_hash_table_insert(defaults->priv->types, g_strdup(type), prop_table);
+ } else {
+ g_hash_table_replace(prop_table, g_strdup(property), entry_create(prop_type, value));
+ }
+
+ return;
+}
+
+/*
+ * dbusmenu_defaults_default_get:
+ * @defaults: The default database to use
+ * @type: (allow-none): The #DbusmenuMenuitem type for this default if #NULL will default to #DBUSMENU_CLIENT_TYPE_DEFAULT
+ * @property: Property name to lookup
+ *
+ * Gets an entry in the database for a give @property and @type.
+ *
+ * Return value: (transfer none): Returns a variant that does not
+ * have it's ref count increased. If you want to keep it, you should
+ * do that.
+ */
+GVariant *
+dbusmenu_defaults_default_get (DbusmenuDefaults * defaults, const gchar * type, const gchar * property)
+{
+ g_return_val_if_fail(DBUSMENU_IS_DEFAULTS(defaults), NULL);
+ g_return_val_if_fail(property != NULL, NULL);
+
+ if (type == NULL) {
+ type = DBUSMENU_CLIENT_TYPES_DEFAULT;
+ }
+
+ GHashTable * prop_table = (GHashTable *)g_hash_table_lookup(defaults->priv->types, type);
+
+ if (prop_table == NULL) {
+ return NULL;
+ }
+
+ DefaultEntry * entry = (DefaultEntry *)g_hash_table_lookup(prop_table, property);
+
+ if (entry == NULL) {
+ return NULL;
+ }
+
+ return entry->value;
+}
+
+/*
+ * dbusmenu_defaults_default_get_type:
+ * @defaults: The default database to use
+ * @type: (allow-none): The #DbusmenuMenuitem type for this default if #NULL will default to #DBUSMENU_CLIENT_TYPE_DEFAULT
+ * @property: Property name to lookup
+ *
+ * Gets the type for an entry in the database for a give @property and @type.
+ *
+ * Return value: (transfer none): Returns a type for the given
+ * @property value.
+ */
+GVariantType *
+dbusmenu_defaults_default_get_type (DbusmenuDefaults * defaults, const gchar * type, const gchar * property)
+{
+ g_return_val_if_fail(DBUSMENU_IS_DEFAULTS(defaults), NULL);
+ g_return_val_if_fail(property != NULL, NULL);
+
+ if (type == NULL) {
+ type = DBUSMENU_CLIENT_TYPES_DEFAULT;
+ }
+
+ GHashTable * prop_table = (GHashTable *)g_hash_table_lookup(defaults->priv->types, type);
+
+ if (prop_table == NULL) {
+ return NULL;
+ }
+
+ DefaultEntry * entry = (DefaultEntry *)g_hash_table_lookup(prop_table, property);
+
+ if (entry == NULL) {
+ return NULL;
+ }
+
+ return entry->type;
+}
+
diff --git a/libdbusmenu-glib/defaults.h b/libdbusmenu-glib/defaults.h
new file mode 100644
index 0000000..a1a8158
--- /dev/null
+++ b/libdbusmenu-glib/defaults.h
@@ -0,0 +1,86 @@
+/*
+A library to communicate a menu object set accross DBus and
+track updates and maintain consistency.
+
+Copyright 2011 Canonical Ltd.
+
+Authors:
+ Ted Gould <ted@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the
+Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by
+the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the applicable version of the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public
+License version 3 and version 2.1 along with this program. If not, see
+<http://www.gnu.org/licenses/>
+*/
+
+#ifndef __DBUSMENU_DEFAULTS_H__
+#define __DBUSMENU_DEFAULTS_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define DBUSMENU_TYPE_DEFAULTS (dbusmenu_defaults_get_type ())
+#define DBUSMENU_DEFAULTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DBUSMENU_TYPE_DEFAULTS, DbusmenuDefaults))
+#define DBUSMENU_DEFAULTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DBUSMENU_TYPE_DEFAULTS, DbusmenuDefaultsClass))
+#define DBUSMENU_IS_DEFAULTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DBUSMENU_TYPE_DEFAULTS))
+#define DBUSMENU_IS_DEFAULTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DBUSMENU_TYPE_DEFAULTS))
+#define DBUSMENU_DEFAULTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DBUSMENU_TYPE_DEFAULTS, DbusmenuDefaultsClass))
+
+typedef struct _DbusmenuDefaults DbusmenuDefaults;
+typedef struct _DbusmenuDefaultsClass DbusmenuDefaultsClass;
+typedef struct _DbusmenuDefaultsPrivate DbusmenuDefaultsPrivate;
+
+/*
+ * DbusmenuDefaultsClass:
+ *
+ * All of the signals and functions for #DbusmenuDefaults
+ */
+struct _DbusmenuDefaultsClass {
+ GObjectClass parent_class;
+};
+
+/*
+ * DbusmenuDefaults:
+ *
+ * A singleton to hold all of the defaults for the menuitems
+ * so they can use those easily.
+ */
+struct _DbusmenuDefaults {
+ GObject parent;
+
+ /*< Private >*/
+ DbusmenuDefaultsPrivate * priv;
+};
+
+GType dbusmenu_defaults_get_type (void);
+DbusmenuDefaults * dbusmenu_defaults_ref_default (void);
+void dbusmenu_defaults_default_set (DbusmenuDefaults * defaults,
+ const gchar * type,
+ const gchar * property,
+ const GVariantType * prop_type,
+ GVariant * value);
+GVariant * dbusmenu_defaults_default_get (DbusmenuDefaults * defaults,
+ const gchar * type,
+ const gchar * property);
+GVariantType * dbusmenu_defaults_default_get_type (DbusmenuDefaults * defaults,
+ const gchar * type,
+ const gchar * property);
+
+G_END_DECLS
+
+#endif
diff --git a/libdbusmenu-glib/enum-types.c b/libdbusmenu-glib/enum-types.c
new file mode 100644
index 0000000..dae615c
--- /dev/null
+++ b/libdbusmenu-glib/enum-types.c
@@ -0,0 +1,183 @@
+
+/* Generated data (by glib-mkenums) */
+
+/*
+Enums from the dbusmenu headers
+
+Copyright 2011 Canonical Ltd.
+
+Authors:
+ Ted Gould <ted@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the
+ Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by
+ the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the applicable version of the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public
+License version 3 and version 2.1 along with this program. If not, see
+<http://www.gnu.org/licenses/>
+*/
+
+#include "enum-types.h"
+
+#include "./types.h"
+/**
+ dbusmenu_text_direction_get_type:
+
+ Builds a GLib type for the #DbusmenuTextDirection enumeration.
+
+ Return value: A unique #GType for the #DbusmenuTextDirection enum.
+*/
+GType
+dbusmenu_text_direction_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0)) {
+ static const GEnumValue values[] = {
+ { DBUSMENU_TEXT_DIRECTION_NONE, "DBUSMENU_TEXT_DIRECTION_NONE", "none" },
+ { DBUSMENU_TEXT_DIRECTION_LTR, "DBUSMENU_TEXT_DIRECTION_LTR", "ltr" },
+ { DBUSMENU_TEXT_DIRECTION_RTL, "DBUSMENU_TEXT_DIRECTION_RTL", "rtl" },
+ { 0, NULL, NULL}
+ };
+
+ etype = g_enum_register_static (g_intern_static_string("DbusmenuTextDirection"), values);
+ }
+
+ return etype;
+}
+
+/**
+ dbusmenu_text_direction_get_nick:
+ @value: The value of DbusmenuTextDirection to get the nick of
+
+ Looks up in the enum table for the nick of @value.
+
+ Return value: The nick for the given value or #NULL on error
+*/
+const gchar *
+dbusmenu_text_direction_get_nick (DbusmenuTextDirection value)
+{
+ GEnumClass * class = G_ENUM_CLASS(g_type_class_ref(dbusmenu_text_direction_get_type()));
+ g_return_val_if_fail(class != NULL, NULL);
+
+ const gchar * ret = NULL;
+ GEnumValue * val = g_enum_get_value(class, value);
+ if (val != NULL) {
+ ret = val->value_nick;
+ }
+
+ g_type_class_unref(class);
+ return ret;
+}
+
+/**
+ dbusmenu_text_direction_get_value_from_nick:
+ @nick: The enum nick to lookup
+
+ Looks up in the enum table for the value of @nick.
+
+ Return value: The value for the given @nick
+*/
+DbusmenuTextDirection
+dbusmenu_text_direction_get_value_from_nick (const gchar * nick)
+{
+ GEnumClass * class = G_ENUM_CLASS(g_type_class_ref(dbusmenu_text_direction_get_type()));
+ g_return_val_if_fail(class != NULL, 0);
+
+ DbusmenuTextDirection ret = 0;
+ GEnumValue * val = g_enum_get_value_by_nick(class, nick);
+ if (val != NULL) {
+ ret = val->value;
+ }
+
+ g_type_class_unref(class);
+ return ret;
+}
+
+
+/**
+ dbusmenu_status_get_type:
+
+ Builds a GLib type for the #DbusmenuStatus enumeration.
+
+ Return value: A unique #GType for the #DbusmenuStatus enum.
+*/
+GType
+dbusmenu_status_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0)) {
+ static const GEnumValue values[] = {
+ { DBUSMENU_STATUS_NORMAL, "DBUSMENU_STATUS_NORMAL", "normal" },
+ { DBUSMENU_STATUS_NOTICE, "DBUSMENU_STATUS_NOTICE", "notice" },
+ { 0, NULL, NULL}
+ };
+
+ etype = g_enum_register_static (g_intern_static_string("DbusmenuStatus"), values);
+ }
+
+ return etype;
+}
+
+/**
+ dbusmenu_status_get_nick:
+ @value: The value of DbusmenuStatus to get the nick of
+
+ Looks up in the enum table for the nick of @value.
+
+ Return value: The nick for the given value or #NULL on error
+*/
+const gchar *
+dbusmenu_status_get_nick (DbusmenuStatus value)
+{
+ GEnumClass * class = G_ENUM_CLASS(g_type_class_ref(dbusmenu_status_get_type()));
+ g_return_val_if_fail(class != NULL, NULL);
+
+ const gchar * ret = NULL;
+ GEnumValue * val = g_enum_get_value(class, value);
+ if (val != NULL) {
+ ret = val->value_nick;
+ }
+
+ g_type_class_unref(class);
+ return ret;
+}
+
+/**
+ dbusmenu_status_get_value_from_nick:
+ @nick: The enum nick to lookup
+
+ Looks up in the enum table for the value of @nick.
+
+ Return value: The value for the given @nick
+*/
+DbusmenuStatus
+dbusmenu_status_get_value_from_nick (const gchar * nick)
+{
+ GEnumClass * class = G_ENUM_CLASS(g_type_class_ref(dbusmenu_status_get_type()));
+ g_return_val_if_fail(class != NULL, 0);
+
+ DbusmenuStatus ret = 0;
+ GEnumValue * val = g_enum_get_value_by_nick(class, nick);
+ if (val != NULL) {
+ ret = val->value;
+ }
+
+ g_type_class_unref(class);
+ return ret;
+}
+
+
+
+/* Generated data ends here */
+
diff --git a/libdbusmenu-glib/enum-types.c.in b/libdbusmenu-glib/enum-types.c.in
new file mode 100644
index 0000000..9395f5f
--- /dev/null
+++ b/libdbusmenu-glib/enum-types.c.in
@@ -0,0 +1,116 @@
+/*** BEGIN file-header ***/
+/*
+Enums from the dbusmenu headers
+
+Copyright 2011 Canonical Ltd.
+
+Authors:
+ Ted Gould <ted@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the
+ Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by
+ the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the applicable version of the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public
+License version 3 and version 2.1 along with this program. If not, see
+<http://www.gnu.org/licenses/>
+*/
+
+#include "enum-types.h"
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+#include "@filename@"
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+/**
+ @enum_name@_get_type:
+
+ Builds a GLib type for the #@EnumName@ enumeration.
+
+ Return value: A unique #GType for the #@EnumName@ enum.
+*/
+GType
+@enum_name@_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0)) {
+ static const G@Type@Value values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+ { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+ { 0, NULL, NULL}
+ };
+
+ etype = g_@type@_register_static (g_intern_static_string("@EnumName@"), values);
+ }
+
+ return etype;
+}
+
+/**
+ @enum_name@_get_nick:
+ @value: The value of @EnumName@ to get the nick of
+
+ Looks up in the enum table for the nick of @value.
+
+ Return value: The nick for the given value or #NULL on error
+*/
+const gchar *
+@enum_name@_get_nick (@EnumName@ value)
+{
+ GEnumClass * class = G_ENUM_CLASS(g_type_class_ref(@enum_name@_get_type()));
+ g_return_val_if_fail(class != NULL, NULL);
+
+ const gchar * ret = NULL;
+ GEnumValue * val = g_enum_get_value(class, value);
+ if (val != NULL) {
+ ret = val->value_nick;
+ }
+
+ g_type_class_unref(class);
+ return ret;
+}
+
+/**
+ @enum_name@_get_value_from_nick:
+ @nick: The enum nick to lookup
+
+ Looks up in the enum table for the value of @nick.
+
+ Return value: The value for the given @nick
+*/
+@EnumName@
+@enum_name@_get_value_from_nick (const gchar * nick)
+{
+ GEnumClass * class = G_ENUM_CLASS(g_type_class_ref(@enum_name@_get_type()));
+ g_return_val_if_fail(class != NULL, 0);
+
+ @EnumName@ ret = 0;
+ GEnumValue * val = g_enum_get_value_by_nick(class, nick);
+ if (val != NULL) {
+ ret = val->value;
+ }
+
+ g_type_class_unref(class);
+ return ret;
+}
+
+
+/*** END value-tail ***/
diff --git a/libdbusmenu-glib/enum-types.h b/libdbusmenu-glib/enum-types.h
new file mode 100644
index 0000000..f75ec64
--- /dev/null
+++ b/libdbusmenu-glib/enum-types.h
@@ -0,0 +1,68 @@
+
+/* Generated data (by glib-mkenums) */
+
+/*
+Enums from the dbusmenu headers
+
+Copyright 2011 Canonical Ltd.
+
+Authors:
+ Ted Gould <ted@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the
+ Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by
+ the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the applicable version of the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public
+License version 3 and version 2.1 along with this program. If not, see
+<http://www.gnu.org/licenses/>
+*/
+
+#ifndef __DBUSMENU_ENUM_TYPES_H__
+#define __DBUSMENU_ENUM_TYPES_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* Enumerations from file: "./types.h" */
+#include "./types.h"
+GType dbusmenu_text_direction_get_type (void) G_GNUC_CONST;
+const gchar * dbusmenu_text_direction_get_nick (DbusmenuTextDirection value) G_GNUC_CONST;
+DbusmenuTextDirection dbusmenu_text_direction_get_value_from_nick (const gchar * nick) G_GNUC_CONST;
+/**
+ DBUSMENU_TYPE_TEXT_DIRECTION:
+
+ Gets the #GType value for the type associated with the
+ #DbusmenuTextDirection enumerated type.
+*/
+#define DBUSMENU_TYPE_TEXT_DIRECTION (dbusmenu_text_direction_get_type())
+
+GType dbusmenu_status_get_type (void) G_GNUC_CONST;
+const gchar * dbusmenu_status_get_nick (DbusmenuStatus value) G_GNUC_CONST;
+DbusmenuStatus dbusmenu_status_get_value_from_nick (const gchar * nick) G_GNUC_CONST;
+/**
+ DBUSMENU_TYPE_STATUS:
+
+ Gets the #GType value for the type associated with the
+ #DbusmenuStatus enumerated type.
+*/
+#define DBUSMENU_TYPE_STATUS (dbusmenu_status_get_type())
+
+
+G_END_DECLS
+
+#endif /* __DBUSMENU_ENUM_TYPES_H__ */
+
+/* Generated data ends here */
+
diff --git a/libdbusmenu-glib/enum-types.h.in b/libdbusmenu-glib/enum-types.h.in
new file mode 100644
index 0000000..488b615
--- /dev/null
+++ b/libdbusmenu-glib/enum-types.h.in
@@ -0,0 +1,62 @@
+/*** BEGIN file-header ***/
+/*
+Enums from the dbusmenu headers
+
+Copyright 2011 Canonical Ltd.
+
+Authors:
+ Ted Gould <ted@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the
+ Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by
+ the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the applicable version of the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public
+License version 3 and version 2.1 along with this program. If not, see
+<http://www.gnu.org/licenses/>
+*/
+
+#ifndef __DBUSMENU_ENUM_TYPES_H__
+#define __DBUSMENU_ENUM_TYPES_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/*** END file-header ***/
+
+/*** BEGIN file-tail ***/
+
+G_END_DECLS
+
+#endif /* __DBUSMENU_ENUM_TYPES_H__ */
+/*** END file-tail ***/
+
+/*** BEGIN file-production ***/
+/* Enumerations from file: "@filename@" */
+#include "@filename@"
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+const gchar * @enum_name@_get_nick (@EnumName@ value) G_GNUC_CONST;
+@EnumName@ @enum_name@_get_value_from_nick (const gchar * nick) G_GNUC_CONST;
+/**
+ DBUSMENU_TYPE_@ENUMSHORT@:
+
+ Gets the #GType value for the type associated with the
+ #@EnumName@ enumerated type.
+*/
+#define DBUSMENU_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
+
+/*** END value-header ***/
diff --git a/libdbusmenu-glib/menuitem-marshal.c b/libdbusmenu-glib/menuitem-marshal.c
index bb2b6d7..de227fd 100644
--- a/libdbusmenu-glib/menuitem-marshal.c
+++ b/libdbusmenu-glib/menuitem-marshal.c
@@ -168,3 +168,46 @@ _dbusmenu_menuitem_marshal_VOID__OBJECT_UINT (GClosure *closure,
/* VOID:UINT (./menuitem-marshal.list:6) */
+/* BOOLEAN:STRING,VARIANT,UINT (./menuitem-marshal.list:7) */
+void
+_dbusmenu_menuitem_marshal_BOOLEAN__STRING_VARIANT_UINT (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_VARIANT_UINT) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ guint arg_3,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__STRING_VARIANT_UINT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 4);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__STRING_VARIANT_UINT) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_string (param_values + 1),
+ g_marshal_value_peek_variant (param_values + 2),
+ g_marshal_value_peek_uint (param_values + 3),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
diff --git a/libdbusmenu-glib/menuitem-marshal.h b/libdbusmenu-glib/menuitem-marshal.h
index 0cde7ad..0315ae8 100644
--- a/libdbusmenu-glib/menuitem-marshal.h
+++ b/libdbusmenu-glib/menuitem-marshal.h
@@ -39,6 +39,14 @@ extern void _dbusmenu_menuitem_marshal_VOID__OBJECT_UINT (GClosure *closure,
/* VOID:UINT (./menuitem-marshal.list:6) */
#define _dbusmenu_menuitem_marshal_VOID__UINT g_cclosure_marshal_VOID__UINT
+/* BOOLEAN:STRING,VARIANT,UINT (./menuitem-marshal.list:7) */
+extern void _dbusmenu_menuitem_marshal_BOOLEAN__STRING_VARIANT_UINT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
G_END_DECLS
#endif /* ___dbusmenu_menuitem_marshal_MARSHAL_H__ */
diff --git a/libdbusmenu-glib/menuitem-marshal.list b/libdbusmenu-glib/menuitem-marshal.list
index e3cb272..4382ed7 100644
--- a/libdbusmenu-glib/menuitem-marshal.list
+++ b/libdbusmenu-glib/menuitem-marshal.list
@@ -4,3 +4,4 @@ VOID: OBJECT, UINT
VOID: OBJECT
VOID: VOID
VOID: UINT
+BOOLEAN: STRING, VARIANT, UINT
diff --git a/libdbusmenu-glib/menuitem-private.h b/libdbusmenu-glib/menuitem-private.h
index 89319dc..336769d 100644
--- a/libdbusmenu-glib/menuitem-private.h
+++ b/libdbusmenu-glib/menuitem-private.h
@@ -38,6 +38,7 @@ gboolean dbusmenu_menuitem_realized (DbusmenuMenuitem * mi);
void dbusmenu_menuitem_set_realized (DbusmenuMenuitem * mi);
GVariant * dbusmenu_menuitem_properties_variant (DbusmenuMenuitem * mi, const gchar ** properties);
gboolean dbusmenu_menuitem_property_is_default (DbusmenuMenuitem * mi, const gchar * property);
+gboolean dbusmenu_menuitem_exposed (DbusmenuMenuitem * mi);
G_END_DECLS
diff --git a/libdbusmenu-glib/menuitem-proxy.c b/libdbusmenu-glib/menuitem-proxy.c
index 1d97c4c..ae6a334 100644
--- a/libdbusmenu-glib/menuitem-proxy.c
+++ b/libdbusmenu-glib/menuitem-proxy.c
@@ -325,14 +325,14 @@ remove_menuitem (DbusmenuMenuitemProxy * pmi)
}
/**
- dbusmenu_menuitem_proxy_new:
- @mi: The #DbusmenuMenuitem to proxy
-
- Builds a new #DbusmenuMenuitemProxy object that proxies
- all of the values for @mi.
-
- Return value: A new #DbusmenuMenuitemProxy object.
-*/
+ * dbusmenu_menuitem_proxy_new:
+ * @mi: The #DbusmenuMenuitem to proxy
+ *
+ * Builds a new #DbusmenuMenuitemProxy object that proxies
+ * all of the values for @mi.
+ *
+ * Return value: A new #DbusmenuMenuitemProxy object.
+ */
DbusmenuMenuitemProxy *
dbusmenu_menuitem_proxy_new (DbusmenuMenuitem * mi)
{
@@ -344,15 +344,15 @@ dbusmenu_menuitem_proxy_new (DbusmenuMenuitem * mi)
}
/**
- dbusmenu_menuitem_proxy_get_wrapped:
- @pmi: #DbusmenuMenuitemProxy to look into
-
- Accesses the private variable of which #DbusmenuMenuitem
- we are doing the proxying for.
-
- Return value: A #DbusmenuMenuitem object or a #NULL if we
- don't have one or there is an error.
-*/
+ * dbusmenu_menuitem_proxy_get_wrapped:
+ * @pmi: #DbusmenuMenuitemProxy to look into
+ *
+ * Accesses the private variable of which #DbusmenuMenuitem
+ * we are doing the proxying for.
+ *
+ * Return value: (transfer none): A #DbusmenuMenuitem object or a #NULL if we
+ * don't have one or there is an error.
+ */
DbusmenuMenuitem *
dbusmenu_menuitem_proxy_get_wrapped (DbusmenuMenuitemProxy * pmi)
{
diff --git a/libdbusmenu-glib/menuitem-proxy.h b/libdbusmenu-glib/menuitem-proxy.h
index 2a22efe..ee988d8 100644
--- a/libdbusmenu-glib/menuitem-proxy.h
+++ b/libdbusmenu-glib/menuitem-proxy.h
@@ -67,8 +67,7 @@ struct _DbusmenuMenuitemProxyClass {
};
/**
- DbusmeneMenuitemProxy:
- @parent: The instance of #DbusmenuMenuitem
+ DbusmenuMenuitemProxy:
Public instance data for a #DbusmenuMenuitemProxy.
*/
@@ -83,6 +82,17 @@ GType dbusmenu_menuitem_proxy_get_type (void);
DbusmenuMenuitemProxy * dbusmenu_menuitem_proxy_new (DbusmenuMenuitem * mi);
DbusmenuMenuitem * dbusmenu_menuitem_proxy_get_wrapped (DbusmenuMenuitemProxy * pmi);
+/**
+ * SECTION:menuitem-proxy
+ * @short_description: A menuitem that proxies from another menuitem
+ * @stability: Unstable
+ * @include: libdbusmenu-glib/menuitem-proxy.h
+ *
+ * This small object allows for proxying all the properties from a remote
+ * menuitem to a new object that can be moved around appropriately within
+ * the new menu structure.
+ */
+
G_END_DECLS
#endif
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index 54d2540..5202aa1 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -33,6 +33,7 @@ License version 3 and version 2.1 along with this program. If not, see
#include "menuitem.h"
#include "menuitem-marshal.h"
#include "menuitem-private.h"
+#include "defaults.h"
#ifdef MASSIVEDEBUGGING
#define LABEL(x) dbusmenu_menuitem_property_get(DBUSMENU_MENUITEM(x), DBUSMENU_MENUITEM_PROP_LABEL)
@@ -59,6 +60,9 @@ struct _DbusmenuMenuitemPrivate
GHashTable * properties;
gboolean root;
gboolean realized;
+ DbusmenuDefaults * defaults;
+ gboolean exposed;
+ DbusmenuMenuitem * parent;
};
/* Signals */
@@ -71,6 +75,7 @@ enum {
REALIZED,
SHOW_TO_USER,
ABOUT_TO_SHOW,
+ EVENT,
LAST_SIGNAL
};
@@ -95,7 +100,7 @@ static void set_property (GObject * obj, guint id, const GValue * value, GParamS
static void get_property (GObject * obj, guint id, GValue * value, GParamSpec * pspec);
static void g_value_transform_STRING_BOOLEAN (const GValue * in, GValue * out);
static void g_value_transform_STRING_INT (const GValue * in, GValue * out);
-static void handle_event (DbusmenuMenuitem * mi, const gchar * name, GVariant * value, guint timestamp);
+static void handle_event (DbusmenuMenuitem * mi, const gchar * name, GVariant * variant, guint timestamp);
static void send_about_to_show (DbusmenuMenuitem * mi, void (*cb) (DbusmenuMenuitem * mi, gpointer user_data), gpointer cb_data);
/* GObject stuff */
@@ -244,6 +249,23 @@ dbusmenu_menuitem_class_init (DbusmenuMenuitemClass *klass)
NULL, NULL,
_dbusmenu_menuitem_marshal_VOID__VOID,
G_TYPE_BOOLEAN, 0, G_TYPE_NONE);
+ /**
+ DbusmenuMenuitem::event:
+ @arg0: The #DbusmenuMenuitem object.
+ @arg1: Name of the event
+ @arg2: Information passed along with the event
+ @arg3: X11 timestamp of when the event happened
+
+ Emitted when an event is passed through. The event is signalled
+ after handle_event is called.
+ */
+ signals[EVENT] = g_signal_new(DBUSMENU_MENUITEM_SIGNAL_EVENT,
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
+ G_STRUCT_OFFSET(DbusmenuMenuitemClass, event),
+ g_signal_accumulator_true_handled, NULL,
+ _dbusmenu_menuitem_marshal_BOOLEAN__STRING_VARIANT_UINT,
+ G_TYPE_BOOLEAN, 3, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_UINT);
g_object_class_install_property (object_class, PROP_ID,
g_param_spec_int(PROP_ID_S, "ID for the menu item",
@@ -312,6 +334,9 @@ dbusmenu_menuitem_init (DbusmenuMenuitem *self)
priv->root = FALSE;
priv->realized = FALSE;
+
+ priv->defaults = dbusmenu_defaults_ref_default();
+ priv->exposed = FALSE;
return;
}
@@ -328,6 +353,16 @@ dbusmenu_menuitem_dispose (GObject *object)
g_list_free(priv->children);
priv->children = NULL;
+ if (priv->defaults != NULL) {
+ g_object_unref(priv->defaults);
+ priv->defaults = NULL;
+ }
+
+ if (priv->parent) {
+ g_object_remove_weak_pointer(G_OBJECT(priv->parent), (gpointer *)&priv->parent);
+ priv->parent = NULL;
+ }
+
G_OBJECT_CLASS (dbusmenu_menuitem_parent_class)->dispose (object);
return;
}
@@ -425,15 +460,28 @@ send_about_to_show (DbusmenuMenuitem * mi, void (*cb) (DbusmenuMenuitem * mi, gp
return;
}
+/* A helper function to get the type of the menuitem, this might
+ be a candidate for optimization in the future. */
+static const gchar *
+menuitem_get_type (DbusmenuMenuitem * mi)
+{
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+ GVariant * currentval = (GVariant *)g_hash_table_lookup(priv->properties, DBUSMENU_MENUITEM_PROP_TYPE);
+ if (currentval != NULL) {
+ return g_variant_get_string(currentval, NULL);
+ }
+ return NULL;
+}
+
/* Public interface */
/**
- dbusmenu_menuitem_new:
-
- Create a new #DbusmenuMenuitem with all default values.
-
- Return value: A newly allocated #DbusmenuMenuitem.
-*/
+ * dbusmenu_menuitem_new:
+ *
+ * Create a new #DbusmenuMenuitem with all default values.
+ *
+ * Return value: A newly allocated #DbusmenuMenuitem.
+ */
DbusmenuMenuitem *
dbusmenu_menuitem_new (void)
{
@@ -441,13 +489,13 @@ dbusmenu_menuitem_new (void)
}
/**
- dbusmenu_menuitem_new_with_id:
- @id: ID to use for this menuitem
-
- This creates a blank #DbusmenuMenuitem with a specific ID.
-
- Return value: A newly allocated #DbusmenuMenuitem.
-*/
+ * dbusmenu_menuitem_new_with_id:
+ * @id: ID to use for this menuitem
+ *
+ * This creates a blank #DbusmenuMenuitem with a specific ID.
+ *
+ * Return value: A newly allocated #DbusmenuMenuitem.
+ */
DbusmenuMenuitem *
dbusmenu_menuitem_new_with_id (gint id)
{
@@ -457,13 +505,13 @@ dbusmenu_menuitem_new_with_id (gint id)
}
/**
- dbusmenu_menuitem_get_id:
- @mi: The #DbusmenuMenuitem to query.
-
- Gets the unique ID for @mi.
-
- Return value: The ID of the @mi.
-*/
+ * dbusmenu_menuitem_get_id:
+ * @mi: The #DbusmenuMenuitem to query.
+ *
+ * Gets the unique ID for @mi.
+ *
+ * Return value: The ID of the @mi.
+ */
gint
dbusmenu_menuitem_get_id (DbusmenuMenuitem * mi)
{
@@ -480,17 +528,17 @@ dbusmenu_menuitem_get_id (DbusmenuMenuitem * mi)
}
/**
- dbusmenu_menuitem_realized:
- @mi: #DbusmenuMenuitem to check on
-
- This function returns whether the menuitem has been realized or
- not. This is significant mostly in client implementations that
- can use this additional state to see if the second layers of
- the implementation have been built yet.
-
- Return value: Returns whether or not the menu item has been realized
- yet or not.
-*/
+ * dbusmenu_menuitem_realized:
+ * @mi: #DbusmenuMenuitem to check on
+ *
+ * This function returns whether the menuitem has been realized or
+ * not. This is significant mostly in client implementations that
+ * can use this additional state to see if the second layers of
+ * the implementation have been built yet.
+ *
+ * Return value: Returns whether or not the menu item has been realized
+ * yet or not.
+ */
gboolean
dbusmenu_menuitem_realized (DbusmenuMenuitem * mi)
{
@@ -500,12 +548,12 @@ dbusmenu_menuitem_realized (DbusmenuMenuitem * mi)
}
/**
- dbusmenu_menuitem_set_realized:
- @mi: #DbusmenuMenuitem to realize
-
- Sets the internal variable tracking whether it's been realized and
- signals the DbusmenuMenuitem::realized event.
-*/
+ * dbusmenu_menuitem_set_realized:
+ * @mi: #DbusmenuMenuitem to realize
+ *
+ * Sets the internal variable tracking whether it's been realized and
+ * signals the DbusmenuMenuitem::realized event.
+ */
void
dbusmenu_menuitem_set_realized (DbusmenuMenuitem * mi)
{
@@ -520,15 +568,15 @@ dbusmenu_menuitem_set_realized (DbusmenuMenuitem * mi)
}
/**
- dbusmenu_menuitem_get_children:
- @mi: The #DbusmenuMenuitem to query.
-
- Returns simply the list of children that this menu item
- has. The list is valid until another child related function
- is called, where it might be changed.
-
- Return value: A #GList of pointers to #DbusmenuMenuitem objects.
-*/
+ * dbusmenu_menuitem_get_children:
+ * @mi: The #DbusmenuMenuitem to query.
+ *
+ * Returns simply the list of children that this menu item
+ * has. The list is valid until another child related function
+ * is called, where it might be changed.
+ *
+ * Return value: (transfer none): A #GList of pointers to #DbusmenuMenuitem objects.
+ */
GList *
dbusmenu_menuitem_get_children (DbusmenuMenuitem * mi)
{
@@ -541,28 +589,29 @@ dbusmenu_menuitem_get_children (DbusmenuMenuitem * mi)
/* For all the taken children we need to signal
that they were removed */
static void
-take_children_signal (gpointer data, gpointer user_data)
+take_children_helper (gpointer data, gpointer user_data)
{
#ifdef MASSIVEDEBUGGING
g_debug("Menuitem %d (%s) signalling child removed %d (%s)", ID(user_data), LABEL(user_data), ID(data), LABEL(data));
#endif
+ dbusmenu_menuitem_unparent(DBUSMENU_MENUITEM(data));
g_signal_emit(G_OBJECT(user_data), signals[CHILD_REMOVED], 0, DBUSMENU_MENUITEM(data), TRUE);
return;
}
/**
- dbusmenu_menuitem_take_children:
- @mi: The #DbusmenMenuitem to take the children from.
-
- While the name sounds devious that's exactly what this function
- does. It takes the list of children from the @mi and clears the
- internal list. The calling function is now in charge of the ref's
- on the children it has taken. A lot of responsibility involved
- in taking children.
-
- Return value: (transfer full) (array) (element-type Dbusmenu.Menuitem)
- A #GList of pointers to #DbusmenuMenuitem objects.
-*/
+ * dbusmenu_menuitem_take_children:
+ * @mi: The #DbusmenMenuitem to take the children from.
+ *
+ * While the name sounds devious that's exactly what this function
+ * does. It takes the list of children from the @mi and clears the
+ * internal list. The calling function is now in charge of the ref's
+ * on the children it has taken. A lot of responsibility involved
+ * in taking children.
+ *
+ * Return value: (transfer full) (element-type Dbusmenu.Menuitem):
+ * A #GList of pointers to #DbusmenuMenuitem objects.
+ */
GList *
dbusmenu_menuitem_take_children (DbusmenuMenuitem * mi)
{
@@ -571,7 +620,7 @@ dbusmenu_menuitem_take_children (DbusmenuMenuitem * mi)
DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
GList * children = priv->children;
priv->children = NULL;
- g_list_foreach(children, take_children_signal, mi);
+ g_list_foreach(children, take_children_helper, mi);
dbusmenu_menuitem_property_remove(mi, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY);
@@ -579,16 +628,16 @@ dbusmenu_menuitem_take_children (DbusmenuMenuitem * mi)
}
/**
- dbusmenu_menuitem_get_position:
- @mi: The #DbusmenuMenuitem to find the position of
- @parent: The #DbusmenuMenuitem who's children contain @mi
-
- This function returns the position of the menu item @mi
- in the children of @parent. It will return zero if the
- menu item can't be found.
-
- Return value: The position of @mi in the children of @parent.
-*/
+ * dbusmenu_menuitem_get_position:
+ * @mi: The #DbusmenuMenuitem to find the position of
+ * @parent: The #DbusmenuMenuitem who's children contain @mi
+ *
+ * This function returns the position of the menu item @mi
+ * in the children of @parent. It will return zero if the
+ * menu item can't be found.
+ *
+ * Return value: The position of @mi in the children of @parent.
+ */
guint
dbusmenu_menuitem_get_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent)
{
@@ -618,15 +667,15 @@ dbusmenu_menuitem_get_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent
}
/**
- dbusmenu_menuitem_get_position_realized:
- @mi: The #DbusmenuMenuitem to find the position of
- @parent: The #DbusmenuMenuitem who's children contain @mi
-
- This function is very similar to #dbusmenu_menuitem_get_position
- except that it only counts in the children that have been realized.
-
- Return value: The position of @mi in the realized children of @parent.
-*/
+ * dbusmenu_menuitem_get_position_realized:
+ * @mi: The #DbusmenuMenuitem to find the position of
+ * @parent: The #DbusmenuMenuitem who's children contain @mi
+ *
+ * This function is very similar to #dbusmenu_menuitem_get_position
+ * except that it only counts in the children that have been realized.
+ *
+ * Return value: The position of @mi in the realized children of @parent.
+ */
guint
dbusmenu_menuitem_get_position_realized (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent)
{
@@ -662,15 +711,15 @@ dbusmenu_menuitem_get_position_realized (DbusmenuMenuitem * mi, DbusmenuMenuitem
}
/**
- dbusmenu_menuitem_child_append:
- @mi: The #DbusmenuMenuitem which will become a new parent
- @child: The #DbusmenMenuitem that will be a child
-
- This function adds @child to the list of children on @mi at
- the end of that list.
-
- Return value: Whether the child has been added successfully.
-*/
+ * dbusmenu_menuitem_child_append:
+ * @mi: The #DbusmenuMenuitem which will become a new parent
+ * @child: The #DbusmenMenuitem that will be a child
+ *
+ * This function adds @child to the list of children on @mi at
+ * the end of that list.
+ *
+ * Return value: Whether the child has been added successfully.
+ */
gboolean
dbusmenu_menuitem_child_append (DbusmenuMenuitem * mi, DbusmenuMenuitem * child)
{
@@ -680,6 +729,10 @@ dbusmenu_menuitem_child_append (DbusmenuMenuitem * mi, DbusmenuMenuitem * child)
DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
g_return_val_if_fail(g_list_find(priv->children, child) == NULL, FALSE);
+ if (!dbusmenu_menuitem_set_parent(child, mi)) {
+ return FALSE;
+ }
+
if (priv->children == NULL && !dbusmenu_menuitem_property_exist(mi, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY)) {
dbusmenu_menuitem_property_set(mi, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY, DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU);
}
@@ -694,15 +747,15 @@ dbusmenu_menuitem_child_append (DbusmenuMenuitem * mi, DbusmenuMenuitem * child)
}
/**
- dbusmenu_menuitem_child_prepend:
- @mi: The #DbusmenuMenuitem which will become a new parent
- @child: The #DbusmenMenuitem that will be a child
-
- This function adds @child to the list of children on @mi at
- the beginning of that list.
-
- Return value: Whether the child has been added successfully.
-*/
+ * dbusmenu_menuitem_child_prepend:
+ * @mi: The #DbusmenuMenuitem which will become a new parent
+ * @child: The #DbusmenMenuitem that will be a child
+ *
+ * This function adds @child to the list of children on @mi at
+ * the beginning of that list.
+ *
+ * Return value: Whether the child has been added successfully.
+ */
gboolean
dbusmenu_menuitem_child_prepend (DbusmenuMenuitem * mi, DbusmenuMenuitem * child)
{
@@ -712,6 +765,10 @@ dbusmenu_menuitem_child_prepend (DbusmenuMenuitem * mi, DbusmenuMenuitem * child
DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
g_return_val_if_fail(g_list_find(priv->children, child) == NULL, FALSE);
+ if (!dbusmenu_menuitem_set_parent(child, mi)) {
+ return FALSE;
+ }
+
if (priv->children == NULL && !dbusmenu_menuitem_property_exist(mi, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY)) {
dbusmenu_menuitem_property_set(mi, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY, DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU);
}
@@ -726,24 +783,30 @@ dbusmenu_menuitem_child_prepend (DbusmenuMenuitem * mi, DbusmenuMenuitem * child
}
/**
- dbusmenu_menuitem_child_delete:
- @mi: The #DbusmenuMenuitem which has @child as a child
- @child: The child #DbusmenuMenuitem that you want to no longer
- be a child of @mi.
-
- This function removes @child from the children list of @mi. It does
- not call #g_object_unref on @child.
-
- Return value: If we were able to delete @child.
-*/
+ * dbusmenu_menuitem_child_delete:
+ * @mi: The #DbusmenuMenuitem which has @child as a child
+ * @child: The child #DbusmenuMenuitem that you want to no longer
+ * be a child of @mi.
+ *
+ * This function removes @child from the children list of @mi. It does
+ * not call #g_object_unref on @child.
+ *
+ * Return value: If we were able to delete @child.
+ */
gboolean
dbusmenu_menuitem_child_delete (DbusmenuMenuitem * mi, DbusmenuMenuitem * child)
{
g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), FALSE);
g_return_val_if_fail(DBUSMENU_IS_MENUITEM(child), FALSE);
+ if (dbusmenu_menuitem_get_parent(child) != mi) {
+ g_warning("Trying to remove a child that doesn't believe we're it's parent.");
+ return FALSE;
+ }
+
DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
priv->children = g_list_remove(priv->children, child);
+ dbusmenu_menuitem_unparent(child);
#ifdef MASSIVEDEBUGGING
g_debug("Menuitem %d (%s) signalling child removed %d (%s)", ID(mi), LABEL(mi), ID(child), LABEL(child));
#endif
@@ -758,17 +821,17 @@ dbusmenu_menuitem_child_delete (DbusmenuMenuitem * mi, DbusmenuMenuitem * child)
}
/**
- dbusmenu_menuitem_child_add_position:
- @mi: The #DbusmenuMenuitem that we're adding the child @child to.
- @child: The #DbusmenuMenuitem to make a child of @mi.
- @position: Where in @mi object's list of chidren @child should be placed.
-
- Puts @child in the list of children for @mi at the location
- specified in @position. If there is not enough entires available
- then @child will be placed at the end of the list.
-
- Return value: Whether @child was added successfully.
-*/
+ * dbusmenu_menuitem_child_add_position:
+ * @mi: The #DbusmenuMenuitem that we're adding the child @child to.
+ * @child: The #DbusmenuMenuitem to make a child of @mi.
+ * @position: Where in @mi object's list of chidren @child should be placed.
+ *
+ * Puts @child in the list of children for @mi at the location
+ * specified in @position. If there is not enough entires available
+ * then @child will be placed at the end of the list.
+ *
+ * Return value: Whether @child was added successfully.
+ */
gboolean
dbusmenu_menuitem_child_add_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position)
{
@@ -778,6 +841,10 @@ dbusmenu_menuitem_child_add_position (DbusmenuMenuitem * mi, DbusmenuMenuitem *
DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
g_return_val_if_fail(g_list_find(priv->children, child) == NULL, FALSE);
+ if (!dbusmenu_menuitem_set_parent(child, mi)) {
+ return FALSE;
+ }
+
if (priv->children == NULL && !dbusmenu_menuitem_property_exist(mi, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY)) {
dbusmenu_menuitem_property_set(mi, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY, DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU);
}
@@ -792,17 +859,17 @@ dbusmenu_menuitem_child_add_position (DbusmenuMenuitem * mi, DbusmenuMenuitem *
}
/**
- dbusmenu_menuitem_child_reorder:
- @base: The #DbusmenuMenuitem that has children needing realignment
- @child: The #DbusmenuMenuitem that is a child needing to be moved
- @position: The position in the list to place it in
-
- This function moves a child on the list of children. It is
- for a child that is already in the list, but simply needs a
- new location.
-
- Return value: Whether the move was successful.
-*/
+ * dbusmenu_menuitem_child_reorder:
+ * @mi: The #DbusmenuMenuitem that has children needing realignment
+ * @child: The #DbusmenuMenuitem that is a child needing to be moved
+ * @position: The position in the list to place it in
+ *
+ * This function moves a child on the list of children. It is
+ * for a child that is already in the list, but simply needs a
+ * new location.
+ *
+ * Return value: Whether the move was successful.
+ */
gboolean
dbusmenu_menuitem_child_reorder(DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position)
{
@@ -832,16 +899,16 @@ dbusmenu_menuitem_child_reorder(DbusmenuMenuitem * mi, DbusmenuMenuitem * child,
}
/**
- dbusmenu_menuitem_child_find:
- @mi: The #DbusmenuMenuitem who's children to look on
- @id: The ID of the child that we're looking for.
-
- Search the children of @mi to find one with the ID of @id.
- If it doesn't exist then we return #NULL.
-
- Return value: The menu item with the ID @id or #NULL if it
- can't be found.
-*/
+ * dbusmenu_menuitem_child_find:
+ * @mi: The #DbusmenuMenuitem who's children to look on
+ * @id: The ID of the child that we're looking for.
+ *
+ * Search the children of @mi to find one with the ID of @id.
+ * If it doesn't exist then we return #NULL.
+ *
+ * Return value: (transfer none): The menu item with the ID @id or #NULL if it
+ * can't be found.
+ */
DbusmenuMenuitem *
dbusmenu_menuitem_child_find (DbusmenuMenuitem * mi, gint id)
{
@@ -885,18 +952,18 @@ find_id_helper (gpointer in_mi, gpointer in_find_id)
}
/**
- dbusmenu_menuitem_find_id:
- @mi: #DbusmenuMenuitem at the top of the tree to search
- @id: ID of the #DbusmenuMenuitem to search for
-
- This function searchs the whole tree of children that
- are attached to @mi. This could be quite a few nodes, all
- the way down the tree. It is a depth first search.
-
- Return value: The #DbusmenuMenuitem with the ID of @id
- or #NULL if there isn't such a menu item in the tree
- represented by @mi.
-*/
+ * dbusmenu_menuitem_find_id:
+ * @mi: #DbusmenuMenuitem at the top of the tree to search
+ * @id: ID of the #DbusmenuMenuitem to search for
+ *
+ * This function searchs the whole tree of children that
+ * are attached to @mi. This could be quite a few nodes, all
+ * the way down the tree. It is a depth first search.
+ *
+ * Return value: (transfer none): The #DbusmenuMenuitem with the ID of @id
+ * or #NULL if there isn't such a menu item in the tree
+ * represented by @mi.
+ */
DbusmenuMenuitem *
dbusmenu_menuitem_find_id (DbusmenuMenuitem * mi, gint id)
{
@@ -913,20 +980,98 @@ dbusmenu_menuitem_find_id (DbusmenuMenuitem * mi, gint id)
}
/**
- dbusmenu_menuitem_property_set:
- @mi: The #DbusmenuMenuitem to set the property on.
- @property: Name of the property to set.
- @value: The value of the property.
-
- Takes the pair of @property and @value and places them as a
- property on @mi. If a property already exists by that name,
- then the value is set to the new value. If not, the property
- is added. If the value is changed or the property was previously
- unset then the signal #DbusmenuMenuitem::prop-changed will be
- emitted by this function.
-
- Return value: A boolean representing if the property value was set.
-*/
+ * dbusmenu_menuitem_set_parent:
+ * @mi: The #DbusmenuMenuitem for which to set the parent
+ * @parent: The new parent #DbusmenuMenuitem
+ *
+ * Sets the parent of @mi to @parent. If @mi already
+ * has a parent, then this call will fail. The parent will
+ * be set automatically when using the usual methods to add a
+ * child menuitem, so this function should not normally be
+ * called directly
+ *
+ * Return value: Whether the parent was set successfully
+ */
+gboolean
+dbusmenu_menuitem_set_parent (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent)
+{
+ g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), FALSE);
+ g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), FALSE);
+
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+
+ if (priv->parent != NULL) {
+ g_warning ("Menu item already has a parent");
+ return FALSE;
+ }
+
+ priv->parent = parent;
+ g_object_add_weak_pointer(G_OBJECT(priv->parent), (gpointer *)&priv->parent);
+
+ return TRUE;
+}
+
+/**
+ * dbusmenu_menuitem_unparent:
+ * @mi: The #DbusmenuMenuitem to unparent
+ *
+ * Unparents the menu item @mi. If @mi doesn't have a
+ * parent, then this call will fail. The menuitem will
+ * be unparented automatically when using the usual methods
+ * to delete a child menuitem, so this function should not
+ * normally be called directly
+ *
+ * Return value: Whether the menu item was unparented successfully
+ */
+gboolean
+dbusmenu_menuitem_unparent (DbusmenuMenuitem * mi)
+{
+ g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), FALSE);
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+
+ if (priv->parent == NULL) {
+ g_warning("Menu item doesn't have a parent");
+ return FALSE;
+ }
+
+ g_object_remove_weak_pointer(G_OBJECT(priv->parent), (gpointer *)&priv->parent);
+ priv->parent = NULL;
+
+ return TRUE;
+}
+
+/**
+ * dbusmenu_menuitem_get_parent:
+ * @mi: The #DbusmenuMenuitem for which to inspect the parent
+ *
+ * This function looks up the parent of @mi
+ *
+ * Return value: (transfer none): The parent of this menu item
+ */
+DbusmenuMenuitem *
+dbusmenu_menuitem_get_parent (DbusmenuMenuitem * mi)
+{
+ g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), NULL);
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+
+ return priv->parent;
+}
+
+/**
+ * dbusmenu_menuitem_property_set:
+ * @mi: The #DbusmenuMenuitem to set the property on.
+ * @property: Name of the property to set.
+ * @value: The value of the property.
+ *
+ * Takes the pair of @property and @value and places them as a
+ * property on @mi. If a property already exists by that name,
+ * then the value is set to the new value. If not, the property
+ * is added. If the value is changed or the property was previously
+ * unset then the signal #DbusmenuMenuitem::prop-changed will be
+ * emitted by this function.
+ *
+ * Return value: A boolean representing if the property value was set.
+ */
gboolean
dbusmenu_menuitem_property_set (DbusmenuMenuitem * mi, const gchar * property, const gchar * value)
{
@@ -938,20 +1083,20 @@ dbusmenu_menuitem_property_set (DbusmenuMenuitem * mi, const gchar * property, c
}
/**
- dbusmenu_menuitem_property_set_bool:
- @mi: The #DbusmenuMenuitem to set the property on.
- @property: Name of the property to set.
- @value: The value of the property.
-
- Takes a boolean @value and sets it on @property as a
- property on @mi. If a property already exists by that name,
- then the value is set to the new value. If not, the property
- is added. If the value is changed or the property was previously
- unset then the signal #DbusmenuMenuitem::prop-changed will be
- emitted by this function.
-
- Return value: A boolean representing if the property value was set.
-*/
+ * dbusmenu_menuitem_property_set_bool:
+ * @mi: The #DbusmenuMenuitem to set the property on.
+ * @property: Name of the property to set.
+ * @value: The value of the property.
+ *
+ * Takes a boolean @value and sets it on @property as a
+ * property on @mi. If a property already exists by that name,
+ * then the value is set to the new value. If not, the property
+ * is added. If the value is changed or the property was previously
+ * unset then the signal #DbusmenuMenuitem::prop-changed will be
+ * emitted by this function.
+ *
+ * Return value: A boolean representing if the property value was set.
+ */
gboolean
dbusmenu_menuitem_property_set_bool (DbusmenuMenuitem * mi, const gchar * property, const gboolean value)
{
@@ -960,20 +1105,20 @@ dbusmenu_menuitem_property_set_bool (DbusmenuMenuitem * mi, const gchar * proper
}
/**
- dbusmenu_menuitem_property_set_int:
- @mi: The #DbusmenuMenuitem to set the property on.
- @property: Name of the property to set.
- @value: The value of the property.
-
- Takes a boolean @value and sets it on @property as a
- property on @mi. If a property already exists by that name,
- then the value is set to the new value. If not, the property
- is added. If the value is changed or the property was previously
- unset then the signal #DbusmenuMenuitem::prop-changed will be
- emitted by this function.
-
- Return value: A boolean representing if the property value was set.
-*/
+ * dbusmenu_menuitem_property_set_int:
+ * @mi: The #DbusmenuMenuitem to set the property on.
+ * @property: Name of the property to set.
+ * @value: The value of the property.
+ *
+ * Takes a boolean @value and sets it on @property as a
+ * property on @mi. If a property already exists by that name,
+ * then the value is set to the new value. If not, the property
+ * is added. If the value is changed or the property was previously
+ * unset then the signal #DbusmenuMenuitem::prop-changed will be
+ * emitted by this function.
+ *
+ * Return value: A boolean representing if the property value was set.
+ */
gboolean
dbusmenu_menuitem_property_set_int (DbusmenuMenuitem * mi, const gchar * property, const gint value)
{
@@ -982,20 +1127,20 @@ dbusmenu_menuitem_property_set_int (DbusmenuMenuitem * mi, const gchar * propert
}
/**
- dbusmenu_menuitem_property_set_variant:
- @mi: The #DbusmenuMenuitem to set the property on.
- @property: Name of the property to set.
- @value: The value of the property.
-
- Takes the pair of @property and @value and places them as a
- property on @mi. If a property already exists by that name,
- then the value is set to the new value. If not, the property
- is added. If the value is changed or the property was previously
- unset then the signal #DbusmenuMenuitem::prop-changed will be
- emitted by this function.
-
- Return value: A boolean representing if the property value was set.
-*/
+ * dbusmenu_menuitem_property_set_variant:
+ * @mi: The #DbusmenuMenuitem to set the property on.
+ * @property: Name of the property to set.
+ * @value: The value of the property.
+ *
+ * Takes the pair of @property and @value and places them as a
+ * property on @mi. If a property already exists by that name,
+ * then the value is set to the new value. If not, the property
+ * is added. If the value is changed or the property was previously
+ * unset then the signal #DbusmenuMenuitem::prop-changed will be
+ * emitted by this function.
+ *
+ * Return value: A boolean representing if the property value was set.
+ */
gboolean
dbusmenu_menuitem_property_set_variant (DbusmenuMenuitem * mi, const gchar * property, GVariant * value)
{
@@ -1003,18 +1148,53 @@ dbusmenu_menuitem_property_set_variant (DbusmenuMenuitem * mi, const gchar * pro
g_return_val_if_fail(property != NULL, FALSE);
DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+ GVariant * default_value = NULL;
+
+ if (value != NULL) {
+ const gchar * type = menuitem_get_type(mi);
+
+ /* Check the expected type to see if we want to have a warning */
+ GVariantType * default_type = dbusmenu_defaults_default_get_type(priv->defaults, type, property);
+ if (default_type != NULL) {
+ /* If we have an expected type we should check to see if
+ the value we've been given is of the same type and generate
+ a warning if it isn't */
+ if (!g_variant_is_of_type(value, default_type)) {
+ g_warning("Setting menuitem property '%s' with value of type '%s' when expecting '%s'", property, g_variant_get_type_string(value), g_variant_type_peek_string(default_type));
+ }
+ }
+
+ /* Check the defaults database to see if we have a default
+ for this property. */
+ default_value = dbusmenu_defaults_default_get(priv->defaults, type, property);
+ if (default_value != NULL) {
+ /* Now see if we're setting this to the same value as the
+ default. If we are then we just want to swallow this variant
+ and make the function behave like we're clearing it. */
+ if (g_variant_equal(default_value, value)) {
+ g_variant_ref_sink(value);
+ g_variant_unref(value);
+ value = NULL;
+ }
+ }
+ }
gboolean replaced = FALSE;
gpointer currentval = g_hash_table_lookup(priv->properties, property);
if (value != NULL) {
- gchar * lprop = g_strdup(property);
- g_variant_ref_sink(value);
-
+ /* NOTE: We're only marking this as replaced if this is true
+ but we're actually replacing it no matter. This is so that
+ the variant passed in sticks around which the caller may
+ expect. They shouldn't, but it's low cost to remove bugs. */
if (currentval == NULL || !g_variant_equal((GVariant*)currentval, value)) {
- g_hash_table_replace(priv->properties, lprop, value);
replaced = TRUE;
}
+
+ gchar * lprop = g_strdup(property);
+ g_variant_ref_sink(value);
+
+ g_hash_table_replace(priv->properties, lprop, value);
} else {
if (currentval != NULL) {
g_hash_table_remove(priv->properties, property);
@@ -1027,25 +1207,33 @@ dbusmenu_menuitem_property_set_variant (DbusmenuMenuitem * mi, const gchar * pro
table. But the fact that there was a value is
the imporant part. */
if (currentval == NULL || replaced) {
- g_signal_emit(G_OBJECT(mi), signals[PROPERTY_CHANGED], 0, property, value, TRUE);
+ GVariant * signalval = value;
+
+ if (signalval == NULL) {
+ /* Might also be NULL, but if it is we're definitely
+ clearing this thing. */
+ signalval = default_value;
+ }
+
+ g_signal_emit(G_OBJECT(mi), signals[PROPERTY_CHANGED], 0, property, signalval, TRUE);
}
return TRUE;
}
/**
- dbusmenu_menuitem_property_get:
- @mi: The #DbusmenuMenuitem to look for the property on.
- @property: The property to grab.
-
- Look up a property on @mi and return the value of it if
- it exits. #NULL will be returned if the property doesn't
- exist.
-
- Return value: A string with the value of the property
- that shouldn't be free'd. Or #NULL if the property
- is not set or is not a string.
-*/
+ * dbusmenu_menuitem_property_get:
+ * @mi: The #DbusmenuMenuitem to look for the property on.
+ * @property: The property to grab.
+ *
+ * Look up a property on @mi and return the value of it if
+ * it exits. #NULL will be returned if the property doesn't
+ * exist.
+ *
+ * Return value: (transfer none): A string with the value of the property
+ * that shouldn't be free'd. Or #NULL if the property
+ * is not set or is not a string.
+ */
const gchar *
dbusmenu_menuitem_property_get (DbusmenuMenuitem * mi, const gchar * property)
{
@@ -1056,16 +1244,16 @@ dbusmenu_menuitem_property_get (DbusmenuMenuitem * mi, const gchar * property)
}
/**
- dbusmenu_menuitem_property_get_variant:
- @mi: The #DbusmenuMenuitem to look for the property on.
- @property: The property to grab.
-
- Look up a property on @mi and return the value of it if
- it exits. #NULL will be returned if the property doesn't
- exist.
-
- Return value: A GVariant for the property.
-*/
+ * dbusmenu_menuitem_property_get_variant:
+ * @mi: The #DbusmenuMenuitem to look for the property on.
+ * @property: The property to grab.
+ *
+ * Look up a property on @mi and return the value of it if
+ * it exits. #NULL will be returned if the property doesn't
+ * exist.
+ *
+ * Return value: (transfer none): A GVariant for the property.
+ */
GVariant *
dbusmenu_menuitem_property_get_variant (DbusmenuMenuitem * mi, const gchar * property)
{
@@ -1074,19 +1262,25 @@ dbusmenu_menuitem_property_get_variant (DbusmenuMenuitem * mi, const gchar * pro
DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
- return (GVariant *)g_hash_table_lookup(priv->properties, property);
-}
+ GVariant * currentval = (GVariant *)g_hash_table_lookup(priv->properties, property);
-/**
- dbusmenu_menuitem_property_get_bool:
- @mi: The #DbusmenuMenuitem to look for the property on.
- @property: The property to grab.
+ if (currentval == NULL) {
+ currentval = dbusmenu_defaults_default_get(priv->defaults, menuitem_get_type(mi), property);
+ }
- Look up a property on @mi and return the value of it if
- it exits. Returns #FALSE if the property doesn't exist.
+ return currentval;
+}
- Return value: The value of the property or #FALSE.
-*/
+/**
+ * dbusmenu_menuitem_property_get_bool:
+ * @mi: The #DbusmenuMenuitem to look for the property on.
+ * @property: The property to grab.
+ *
+ * Look up a property on @mi and return the value of it if
+ * it exits. Returns #FALSE if the property doesn't exist.
+ *
+ * Return value: The value of the property or #FALSE.
+ */
gboolean
dbusmenu_menuitem_property_get_bool (DbusmenuMenuitem * mi, const gchar * property)
{
@@ -1112,15 +1306,15 @@ dbusmenu_menuitem_property_get_bool (DbusmenuMenuitem * mi, const gchar * proper
}
/**
- dbusmenu_menuitem_property_get_int:
- @mi: The #DbusmenuMenuitem to look for the property on.
- @property: The property to grab.
-
- Look up a property on @mi and return the value of it if
- it exits. Returns zero if the property doesn't exist.
-
- Return value: The value of the property or zero.
-*/
+ * dbusmenu_menuitem_property_get_int:
+ * @mi: The #DbusmenuMenuitem to look for the property on.
+ * @property: The property to grab.
+ *
+ * Look up a property on @mi and return the value of it if
+ * it exits. Returns zero if the property doesn't exist.
+ *
+ * Return value: The value of the property or zero.
+ */
gint
dbusmenu_menuitem_property_get_int (DbusmenuMenuitem * mi, const gchar * property)
{
@@ -1142,15 +1336,15 @@ dbusmenu_menuitem_property_get_int (DbusmenuMenuitem * mi, const gchar * propert
/**
- dbusmenu_menuitem_property_exit:
- @mi: The #DbusmenuMenuitem to look for the property on.
- @property: The property to look for.
-
- Checkes to see if a particular property exists on @mi and
- returns #TRUE if so.
-
- Return value: A boolean checking to see if the property is available
-*/
+ * dbusmenu_menuitem_property_exist:
+ * @mi: The #DbusmenuMenuitem to look for the property on.
+ * @property: The property to look for.
+ *
+ * Checkes to see if a particular property exists on @mi and
+ * returns #TRUE if so.
+ *
+ * Return value: A boolean checking to see if the property is available
+ */
gboolean
dbusmenu_menuitem_property_exist (DbusmenuMenuitem * mi, const gchar * property)
{
@@ -1165,12 +1359,12 @@ dbusmenu_menuitem_property_exist (DbusmenuMenuitem * mi, const gchar * property)
}
/**
- dbusmenu_menuitem_property_remove:
- @mi: The #DbusmenuMenuitem to remove the property on.
- @property: The property to look for.
-
- Removes a property from the menuitem.
-*/
+ * dbusmenu_menuitem_property_remove:
+ * @mi: The #DbusmenuMenuitem to remove the property on.
+ * @property: The property to look for.
+ *
+ * Removes a property from the menuitem.
+ */
void
dbusmenu_menuitem_property_remove (DbusmenuMenuitem * mi, const gchar * property)
{
@@ -1185,15 +1379,16 @@ dbusmenu_menuitem_property_remove (DbusmenuMenuitem * mi, const gchar * property
}
/**
- dbusmenu_menuitem_properties_list:
- @mi: #DbusmenuMenuitem to list the properties on
-
- This functiong gets a list of the names of all the properties
- that are set on this menu item. This data on the list is owned
- by the menuitem but the list is not and should be freed using
- g_list_free() when the calling function is done with it.
-
- Return value: A list of strings or NULL if there are none.
+ * dbusmenu_menuitem_properties_list:
+ * @mi: #DbusmenuMenuitem to list the properties on
+ *
+ * This functiong gets a list of the names of all the properties
+ * that are set on this menu item. This data on the list is owned
+ * by the menuitem but the list is not and should be freed using
+ * g_list_free() when the calling function is done with it.
+ *
+ * Return value: (transfer container): A list of strings or NULL if there are
+ * none.
*/
GList *
dbusmenu_menuitem_properties_list (DbusmenuMenuitem * mi)
@@ -1219,18 +1414,18 @@ copy_helper (gpointer in_key, gpointer in_value, gpointer in_data)
}
/**
- dbusmenu_menuitem_properties_copy:
- @mi: #DbusmenuMenuitem that we're interested in the properties of
-
- This function takes the properties of a #DbusmenuMenuitem
- and puts them into a #GHashTable that is referenced by the
- key of a string and has the value of a string. The hash
- table may not have any entries if there aren't any or there
- is an error in processing. It is the caller's responsibility
- to destroy the created #GHashTable.
-
- Return value: A brand new #GHashTable that contains all of the
- properties that are on this #DbusmenuMenuitem @mi.
+ * dbusmenu_menuitem_properties_copy:
+ * @mi: #DbusmenuMenuitem that we're interested in the properties of
+ *
+ * This function takes the properties of a #DbusmenuMenuitem
+ * and puts them into a #GHashTable that is referenced by the
+ * key of a string and has the value of a string. The hash
+ * table may not have any entries if there aren't any or there
+ * is an error in processing. It is the caller's responsibility
+ * to destroy the created #GHashTable.
+ *
+ * Return value: (transfer full): A brand new #GHashTable that contains all of
+ * theroperties that are on this #DbusmenuMenuitem @mi.
*/
GHashTable *
dbusmenu_menuitem_properties_copy (DbusmenuMenuitem * mi)
@@ -1257,14 +1452,14 @@ variant_helper (gpointer in_key, gpointer in_value, gpointer user_data)
}
/**
- dbusmenu_menuitem_properties_variant:
- @mi: #DbusmenuMenuitem to get properties from
-
- Grabs the properties of the menuitem as a GVariant with the
- type "a{sv}".
-
- Return Value: A GVariant of type "a{sv}" or NULL on error.
-*/
+ * dbusmenu_menuitem_properties_variant:
+ * @mi: #DbusmenuMenuitem to get properties from
+ *
+ * Grabs the properties of the menuitem as a GVariant with the
+ * type "a{sv}".
+ *
+ * Return Value: (transfer full): A GVariant of type "a{sv}" or NULL on error.
+ */
GVariant *
dbusmenu_menuitem_properties_variant (DbusmenuMenuitem * mi, const gchar ** properties)
{
@@ -1274,7 +1469,7 @@ dbusmenu_menuitem_properties_variant (DbusmenuMenuitem * mi, const gchar ** prop
GVariant * final_variant = NULL;
- if (g_hash_table_size(priv->properties) > 0) {
+ if ((properties == NULL || properties[0] == NULL) && g_hash_table_size(priv->properties) > 0) {
GVariantBuilder builder;
g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);
@@ -1283,19 +1478,46 @@ dbusmenu_menuitem_properties_variant (DbusmenuMenuitem * mi, const gchar ** prop
final_variant = g_variant_builder_end(&builder);
}
+ if (properties != NULL) {
+ GVariantBuilder builder;
+ gboolean builder_init = FALSE;
+ int i = 0; const gchar * prop;
+
+ for (prop = properties[i]; prop != NULL; prop = properties[++i]) {
+ GVariant * propvalue = dbusmenu_menuitem_property_get_variant(mi, prop);
+
+ if (propvalue == NULL) {
+ continue;
+ }
+
+ if (!builder_init) {
+ builder_init = TRUE;
+ g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);
+ }
+
+ GVariant * dict = g_variant_new_dict_entry(g_variant_new_string((gchar *)prop),
+ g_variant_new_variant((GVariant *)propvalue));
+ g_variant_builder_add_value(&builder, dict);
+ }
+
+ if (builder_init) {
+ final_variant = g_variant_builder_end(&builder);
+ }
+ }
+
return final_variant;
}
/**
- dbusmenu_menuitem_set_root:
- @mi: #DbusmenuMenuitem to set whether it's root
- @root: Whether @mi is a root node or not
-
- This function sets the internal value of whether this is a
- root node or not.
-
- Return value: None
-*/
+ * dbusmenu_menuitem_set_root:
+ * @mi: #DbusmenuMenuitem to set whether it's root
+ * @root: Whether @mi is a root node or not
+ *
+ * This function sets the internal value of whether this is a
+ * root node or not.
+ *
+ * Return value: None
+ */
void
dbusmenu_menuitem_set_root (DbusmenuMenuitem * mi, gboolean root)
{
@@ -1306,14 +1528,14 @@ dbusmenu_menuitem_set_root (DbusmenuMenuitem * mi, gboolean root)
}
/**
- dbusmenu_menuitem_get_root:
- @mi: #DbusmenuMenuitem to see whether it's root
-
- This function returns the internal value of whether this is a
- root node or not.
-
- Return value: #TRUE if this is a root node
-*/
+ * dbusmenu_menuitem_get_root:
+ * @mi: #DbusmenuMenuitem to see whether it's root
+ *
+ * This function returns the internal value of whether this is a
+ * root node or not.
+ *
+ * Return value: #TRUE if this is a root node
+ */
gboolean
dbusmenu_menuitem_get_root (DbusmenuMenuitem * mi)
{
@@ -1324,20 +1546,24 @@ dbusmenu_menuitem_get_root (DbusmenuMenuitem * mi)
/**
- dbusmenu_menuitem_buildvariant:
- @mi: #DbusmenuMenuitem to represent in XML
- @array: (element-type utf8): A list of string that will be turned into an XML file
-
- This function will add strings to the array @array. It will put
- at least one entry if this menu item has no children. If it has
- children it will put two for this entry, one representing the
- start tag and one that is a closing tag. It will allow it's
- children to place their own tags in the array in between those two.
+ * dbusmenu_menuitem_buildvariant:
+ * @mi: #DbusmenuMenuitem to represent in a variant
+ * @properties: (element-type utf8): A list of string that will be put into
+ * a variant
+ *
+ * This function will put at least one entry if this menu item has no children.
+ * If it has children it will put two for this entry, one representing the
+ * start tag and one that is a closing tag. It will allow it's
+ * children to place their own tags in the array in between those two.
+ *
+ * Return value: (transfer full): Variant representing @properties
*/
GVariant *
dbusmenu_menuitem_build_variant (DbusmenuMenuitem * mi, const gchar ** properties, gint recurse)
{
g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), NULL);
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+ priv->exposed = TRUE;
gint id = 0;
if (!dbusmenu_menuitem_get_root(mi)) {
@@ -1362,7 +1588,7 @@ dbusmenu_menuitem_build_variant (DbusmenuMenuitem * mi, const gchar ** propertie
/* Pillage the children */
GList * children = dbusmenu_menuitem_get_children(mi);
- if (children == NULL && recurse != 0) {
+ if (children == NULL || recurse == 0) {
g_variant_builder_add_value(&tupleb, g_variant_new_array(G_VARIANT_TYPE_VARIANT, NULL, 0));
} else {
GVariantBuilder childrenbuilder;
@@ -1393,15 +1619,15 @@ foreach_helper (gpointer data, gpointer user_data)
}
/**
- dbusmenu_menuitem_foreach:
- @mi: The #DbusmenItem to start from
- @func: Function to call on every node in the tree
- @data: (closure): User data to pass to the function
-
- This calls the function @func on this menu item and all
- of the children of this item. And their children. And
- their children. And... you get the point. It will get
- called on the whole tree.
+ * dbusmenu_menuitem_foreach:
+ * @mi: The #DbusmenItem to start from
+ * @func: Function to call on every node in the tree
+ * @data: (closure): User data to pass to the function
+ *
+ * This calls the function @func on this menu item and all
+ * of the children of this item. And their children. And
+ * their children. And... you get the point. It will get
+ * called on the whole tree.
*/
void
dbusmenu_menuitem_foreach (DbusmenuMenuitem * mi, void (*func) (DbusmenuMenuitem * mi, gpointer data), gpointer data)
@@ -1417,23 +1643,23 @@ dbusmenu_menuitem_foreach (DbusmenuMenuitem * mi, void (*func) (DbusmenuMenuitem
}
/**
- dbusmenu_menuitem_handle_event:
- @mi: The #DbusmenuMenuitem to send the signal on.
- @name: The name of the signal
- @variant: A value that could be set for the event
- @timestamp: The timestamp of when the event happened
-
- This function is called to create an event. It is likely
- to be overrided by subclasses. The default menu item
- will respond to the activate signal and do:
-
- Emits the #DbusmenuMenuitem::item-activate signal on this
- menu item. Called by server objects when they get the
- appropriate DBus signals from the client.
-
- If you subclass this function you should really think
- about calling the parent function unless you have a good
- reason not to.
+ * dbusmenu_menuitem_handle_event:
+ * @mi: The #DbusmenuMenuitem to send the signal on.
+ * @name: The name of the signal
+ * @variant: A value that could be set for the event
+ * @timestamp: The timestamp of when the event happened
+ *
+ * This function is called to create an event. It is likely
+ * to be overrided by subclasses. The default menu item
+ * will respond to the activate signal and do:
+ *
+ * Emits the #DbusmenuMenuitem::item-activate signal on this
+ * menu item. Called by server objects when they get the
+ * appropriate DBus signals from the client.
+ *
+ * If you subclass this function you should really think
+ * about calling the parent function unless you have a good
+ * reason not to.
*/
void
dbusmenu_menuitem_handle_event (DbusmenuMenuitem * mi, const gchar * name, GVariant * variant, guint timestamp)
@@ -1444,23 +1670,27 @@ dbusmenu_menuitem_handle_event (DbusmenuMenuitem * mi, const gchar * name, GVari
#endif
DbusmenuMenuitemClass * class = DBUSMENU_MENUITEM_GET_CLASS(mi);
- if (class->handle_event != NULL) {
+ gboolean handled = FALSE;
+ g_signal_emit(G_OBJECT(mi), signals[EVENT], g_quark_from_string(name), name, variant, timestamp, &handled);
+
+ if (!handled && class->handle_event != NULL) {
return class->handle_event(mi, name, variant, timestamp);
}
+
return;
}
/**
- dbusmenu_menuitem_send_about_to_show:
- @mi: The #DbusmenuMenuitem to send the signal on.
- @cb: Callback to call when the call has returned.
- @cb_data: (closure): Data to pass to the callback.
-
- This function is used to send the even that the submenu
- of this item is about to be shown. Callers to this event
- should delay showing the menu until their callback is
- called if possible.
-*/
+ * dbusmenu_menuitem_send_about_to_show:
+ * @mi: The #DbusmenuMenuitem to send the signal on.
+ * @cb: Callback to call when the call has returned.
+ * @cb_data: (closure): Data to pass to the callback.
+ *
+ * This function is used to send the even that the submenu
+ * of this item is about to be shown. Callers to this event
+ * should delay showing the menu until their callback is
+ * called if possible.
+ */
void
dbusmenu_menuitem_send_about_to_show (DbusmenuMenuitem * mi, void (*cb) (DbusmenuMenuitem * mi, gpointer user_data), gpointer cb_data)
{
@@ -1480,14 +1710,14 @@ dbusmenu_menuitem_send_about_to_show (DbusmenuMenuitem * mi, void (*cb) (Dbusmen
}
/**
- dbusmenu_menuitem_show_to_user:
- @mi: #DbusmenuMenuitem to show
- @timestamp: The time that the user requested it to be shown
-
- Signals that this menu item should be shown to the user. If this is
- server side the server will then take it and send it over the
- bus.
-*/
+ * dbusmenu_menuitem_show_to_user:
+ * @mi: #DbusmenuMenuitem to show
+ * @timestamp: The time that the user requested it to be shown
+ *
+ * Signals that this menu item should be shown to the user. If this is
+ * server side the server will then take it and send it over the
+ * bus.
+ */
void
dbusmenu_menuitem_show_to_user (DbusmenuMenuitem * mi, guint timestamp)
{
@@ -1500,10 +1730,33 @@ dbusmenu_menuitem_show_to_user (DbusmenuMenuitem * mi, guint timestamp)
/* Checks to see if the value of this property is unique or just the
default value. */
-/* TODO: Implement this */
gboolean
dbusmenu_menuitem_property_is_default (DbusmenuMenuitem * mi, const gchar * property)
{
- /* No defaults system yet */
+ g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), FALSE);
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+
+ GVariant * currentval = (GVariant *)g_hash_table_lookup(priv->properties, property);
+ if (currentval != NULL) {
+ /* If we're storing it locally, then it shouldn't be a default */
+ return FALSE;
+ }
+
+ currentval = dbusmenu_defaults_default_get(priv->defaults, menuitem_get_type(mi), property);
+ if (currentval != NULL) {
+ return TRUE;
+ }
+
+ g_warn_if_reached();
return FALSE;
}
+
+/* Check to see if this menu item has been sent into the bus yet or
+ not. If no one cares we can give less info */
+gboolean
+dbusmenu_menuitem_exposed (DbusmenuMenuitem * mi)
+{
+ g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), FALSE);
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+ return priv->exposed;
+}
diff --git a/libdbusmenu-glib/menuitem.h b/libdbusmenu-glib/menuitem.h
index c36e0e9..f4eb989 100644
--- a/libdbusmenu-glib/menuitem.h
+++ b/libdbusmenu-glib/menuitem.h
@@ -42,47 +42,237 @@ G_BEGIN_DECLS
#define DBUSMENU_MENUITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DBUSMENU_TYPE_MENUITEM, DbusmenuMenuitemClass))
+/**
+ * DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED:
+ *
+ * String to attach to signal #DbusmenuServer::property-changed
+ */
#define DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED "property-changed"
+/**
+ * DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED:
+ *
+ * String to attach to signal #DbusmenuServer::item-activated
+ */
#define DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED "item-activated"
+/**
+ * DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED:
+ *
+ * String to attach to signal #DbusmenuServer::child-added
+ */
#define DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED "child-added"
+/**
+ * DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED:
+ *
+ * String to attach to signal #DbusmenuServer::child-removed
+ */
#define DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED "child-removed"
+/**
+ * DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED:
+ *
+ * String to attach to signal #DbusmenuServer::child-moved
+ */
#define DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED "child-moved"
+/**
+ * DBUSMENU_MENUITEM_SIGNAL_REALIZED:
+ *
+ * String to attach to signal #DbusmenuServer::realized
+ */
#define DBUSMENU_MENUITEM_SIGNAL_REALIZED "realized"
+/**
+ * DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID:
+ *
+ * ID to attach to signal #DbusmenuServer::realized
+ */
#define DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID (g_signal_lookup(DBUSMENU_MENUITEM_SIGNAL_REALIZED, DBUSMENU_TYPE_MENUITEM))
+/**
+ * DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER:
+ *
+ * String to attach to signal #DbusmenuServer::show-to-user
+ */
#define DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER "show-to-user"
+/**
+ * DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW:
+ *
+ * String to attach to signal #DbusmenuServer::about-to-show
+ */
#define DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW "about-to-show"
+/**
+ * DBUSMENU_MENUITEM_SIGNAL_EVENT:
+ *
+ * String to attach to signal #DbusmenuServer::event
+ */
+#define DBUSMENU_MENUITEM_SIGNAL_EVENT "event"
+/**
+ * DBUSMENU_MENUITEM_PROP_TYPE:
+ *
+ * #DbusmenuMenuitem property used to represent what type of menuitem
+ * this object represents. Type: #G_VARIANT_TYPE_STRING.
+ */
#define DBUSMENU_MENUITEM_PROP_TYPE "type"
+/**
+ * DBUSMENU_MENUITEM_PROP_VISIBLE:
+ *
+ * #DbusmenuMenuitem property used to represent whether the menuitem
+ * should be shown or not. Type: #G_VARIANT_TYPE_BOOLEAN.
+ */
#define DBUSMENU_MENUITEM_PROP_VISIBLE "visible"
+/**
+ * DBUSMENU_MENUITEM_PROP_ENABLED:
+ *
+ * #DbusmenuMenuitem property used to represent whether the menuitem
+ * is clickable or not. Type: #G_VARIANT_TYPE_BOOLEAN.
+ */
#define DBUSMENU_MENUITEM_PROP_ENABLED "enabled"
+/**
+ * DBUSMENU_MENUITEM_PROP_LABEL:
+ *
+ * #DbusmenuMenuitem property used for the text on the menu item.
+ * Type: #G_VARIANT_TYPE_STRING
+ */
#define DBUSMENU_MENUITEM_PROP_LABEL "label"
+/**
+ * DBUSMENU_MENUITEM_PROP_ICON_NAME:
+ *
+ * #DbusmenuMenuitem property that is the name of the icon under the
+ * Freedesktop.org icon naming spec. Type: #G_VARIANT_TYPE_STRING
+ */
#define DBUSMENU_MENUITEM_PROP_ICON_NAME "icon-name"
+/**
+ * DBUSMENU_MENUITEM_PROP_ICON_DATA:
+ *
+ * #DbusmenuMenuitem property that is the raw data of a custom icon
+ * used in the application. Type: #G_VARIANT_TYPE_VARIANT
+ *
+ * It is recommended that this is not set directly but instead the
+ * libdbusmenu-gtk library is used with the function dbusmenu_menuitem_property_set_image()
+ */
#define DBUSMENU_MENUITEM_PROP_ICON_DATA "icon-data"
+/**
+ * DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE:
+ *
+ * #DbusmenuMenuitem property that says what type of toggle entry should
+ * be shown in the menu. Should be either #DBUSMENU_MENUITEM_TOGGLE_CHECK
+ * or #DBUSMENU_MENUITEM_TOGGLE_RADIO. Type: #G_VARIANT_TYPE_STRING
+ */
#define DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE "toggle-type"
+/**
+ * DBUSMENU_MENUITEM_PROP_TOGGLE_STATE:
+ *
+ * #DbusmenuMenuitem property that says what state a toggle entry should
+ * be shown as the menu. Should be either #DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED
+ * #DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED or #DBUSMENU_MENUITEM_TOGGLE_STATUE_UNKNOWN.
+ * Type: #G_VARIANT_TYPE_INT32
+ */
#define DBUSMENU_MENUITEM_PROP_TOGGLE_STATE "toggle-state"
+/**
+ * DBUSMENU_MENUITEM_PROP_SHORTCUT:
+ *
+ * #DbusmenuMenuitem property that is the entries that represent a shortcut
+ * to activate the menuitem. It is an array of arrays of strings.
+ * Type: #G_VARIANT_TYPE_ARRAY
+ *
+ * It is recommended that this is not set directly but instead the
+ * libdbusmenu-gtk library is used with the function dbusmenu_menuitem_property_set_shortcut()
+ */
#define DBUSMENU_MENUITEM_PROP_SHORTCUT "shortcut"
+/**
+ * DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY:
+ *
+ * #DbusmenuMenuitem property that tells how the children of this menuitem
+ * should be displayed. Most likely this will be unset or of the value
+ * #DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU. Type: #G_VARIANT_TYPE_STRING
+ */
#define DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY "children-display"
+/**
+ * DBUSMENU_MENUITEM_TOGGLE_CHECK:
+ *
+ * Used to set #DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE to be a standard
+ * check mark item.
+ */
#define DBUSMENU_MENUITEM_TOGGLE_CHECK "checkmark"
+/**
+ * DBUSMENU_MENUITEM_TOGGLE_RADIO:
+ *
+ * Used to set #DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE to be a standard
+ * radio item.
+ */
#define DBUSMENU_MENUITEM_TOGGLE_RADIO "radio"
+/**
+ * DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED:
+ *
+ * Used to set #DBUSMENU_MENUITEM_PROP_TOGGLE_STATE so that the menu's
+ * toggle item is empty.
+ */
#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED 0
+/**
+ * DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED:
+ *
+ * Used to set #DBUSMENU_MENUITEM_PROP_TOGGLE_STATE so that the menu's
+ * toggle item is filled.
+ */
#define DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED 1
+/**
+ * DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN:
+ *
+ * Used to set #DBUSMENU_MENUITEM_PROP_TOGGLE_STATE so that the menu's
+ * toggle item is undecided.
+ */
#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN -1
+/**
+ * DBUSMENU_MENUITEM_ICON_NAME_BLANK:
+ *
+ * Used to set #DBUSMENU_MENUITEM_PROP_TOGGLE_STATE so that the menu's
+ * toggle item is undecided.
+ */
#define DBUSMENU_MENUITEM_ICON_NAME_BLANK "blank-icon"
+/**
+ * DBUSMENU_MENUITEM_SHORTCUT_CONTROL:
+ *
+ * Used in #DBUSMENU_MENUITEM_PROP_SHORTCUT to represent the
+ * control key.
+ */
#define DBUSMENU_MENUITEM_SHORTCUT_CONTROL "Control"
+/**
+ * DBUSMENU_MENUITEM_SHORTCUT_ALT:
+ *
+ * Used in #DBUSMENU_MENUITEM_PROP_SHORTCUT to represent the
+ * alternate key.
+ */
#define DBUSMENU_MENUITEM_SHORTCUT_ALT "Alt"
+/**
+ * DBUSMENU_MENUITEM_SHORTCUT_SHIFT:
+ *
+ * Used in #DBUSMENU_MENUITEM_PROP_SHORTCUT to represent the
+ * shift key.
+ */
#define DBUSMENU_MENUITEM_SHORTCUT_SHIFT "Shift"
+/**
+ * DBUSMENU_MENUITEM_SHORTCUT_SUPER:
+ *
+ * Used in #DBUSMENU_MENUITEM_PROP_SHORTCUT to represent the
+ * super key.
+ */
#define DBUSMENU_MENUITEM_SHORTCUT_SUPER "Super"
+/**
+ * DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU:
+ *
+ * Used in #DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY to have the
+ * subitems displayed as a submenu.
+ */
#define DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU "submenu"
typedef struct _DbusmenuMenuitemPrivate DbusmenuMenuitemPrivate;
/**
* DbusmenuMenuitem:
+ * @parent: Parent object
+ * @priv: Private data
*
* This is the #GObject based object that represents a menu
* item. It gets created the same on both the client and
@@ -113,16 +303,18 @@ typedef void (*dbusmenu_menuitem_about_to_show_cb) (DbusmenuMenuitem * mi, gpoin
/**
* dbusmenu_menuitem_buildvariant_slot_t:
* @mi: (in): Menu item that should be built from
+ * @properties: (allow-none): A list of properties that should be the only ones in the resulting variant structure
*
* This is the function that is called to represent this menu item
* as a variant. Should call it's own children.
*
- * Return value: (transfer full) A variant representing this item and it's children
+ * Return value: (transfer full): A variant representing this item and it's children
*/
typedef GVariant * (*dbusmenu_menuitem_buildvariant_slot_t) (DbusmenuMenuitem * mi, gchar ** properties);
/**
* DbusmenuMenuitemClass:
+ * @parent_class: Functions and signals from our parent
* @property_changed: Slot for #DbusmenuMenuitem::property-changed.
* @item_activated: Slot for #DbusmenuMenuitem::item-activated.
* @child_added: Slot for #DbusmenuMenuitem::child-added.
@@ -130,17 +322,19 @@ typedef GVariant * (*dbusmenu_menuitem_buildvariant_slot_t) (DbusmenuMenuitem *
* @child_moved: Slot for #DbusmenuMenuitem::child-moved.
* @realized: Slot for #DbusmenuMenuitem::realized.
* @about_to_show: Slot for #DbusmenuMenuitem::about-to-show.
- * @buildxml: Virtual function that appends the strings required to represent this menu item in the menu XML file.
+ * @buildvariant: Virtual function that appends the strings required to represent this menu item in the menu variant.
* @handle_event: This function is to override how events are handled by subclasses. Look at #dbusmenu_menuitem_handle_event for lots of good information.
* @send_about_to_show: Virtual function that notifies server that the client is about to show a menu.
* @show_to_user: Slot for #DbusmenuMenuitem::show-to-user.
- *
+ * @event: Slot for #DbsumenuMenuitem::event.
* @reserved1: Reserved for future use.
* @reserved2: Reserved for future use.
* @reserved3: Reserved for future use.
* @reserved4: Reserved for future use.
* @reserved5: Reserved for future use.
- * @reserved6: Reserved for future use.
+ *
+ * Functions and signals that every menuitem should know something
+ * about.
*/
typedef struct _DbusmenuMenuitemClass DbusmenuMenuitemClass;
struct _DbusmenuMenuitemClass
@@ -157,19 +351,20 @@ struct _DbusmenuMenuitemClass
/* Virtual functions */
dbusmenu_menuitem_buildvariant_slot_t buildvariant;
- void (*handle_event) (DbusmenuMenuitem * mi, const gchar * name, GVariant * value, guint timestamp);
+ void (*handle_event) (DbusmenuMenuitem * mi, const gchar * name, GVariant * variant, guint timestamp);
void (*send_about_to_show) (DbusmenuMenuitem * mi, void (*cb) (DbusmenuMenuitem * mi, gpointer user_data), gpointer cb_data);
void (*show_to_user) (DbusmenuMenuitem * mi, guint timestamp, gpointer cb_data);
gboolean (*about_to_show) (void);
+ void (*event) (const gchar * name, GVariant * value, guint timestamp);
+
/*< Private >*/
void (*reserved1) (void);
void (*reserved2) (void);
void (*reserved3) (void);
void (*reserved4) (void);
void (*reserved5) (void);
- void (*reserved6) (void);
};
GType dbusmenu_menuitem_get_type (void);
@@ -191,6 +386,10 @@ gboolean dbusmenu_menuitem_child_reorder (DbusmenuMenuitem * mi, DbusmenuMenuite
DbusmenuMenuitem * dbusmenu_menuitem_child_find (DbusmenuMenuitem * mi, gint id);
DbusmenuMenuitem * dbusmenu_menuitem_find_id (DbusmenuMenuitem * mi, gint id);
+gboolean dbusmenu_menuitem_set_parent (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent);
+gboolean dbusmenu_menuitem_unparent (DbusmenuMenuitem *mi);
+DbusmenuMenuitem * dbusmenu_menuitem_get_parent (DbusmenuMenuitem * mi);
+
gboolean dbusmenu_menuitem_property_set (DbusmenuMenuitem * mi, const gchar * property, const gchar * value);
gboolean dbusmenu_menuitem_property_set_variant (DbusmenuMenuitem * mi, const gchar * property, GVariant * value);
gboolean dbusmenu_menuitem_property_set_bool (DbusmenuMenuitem * mi, const gchar * property, const gboolean value);
@@ -208,7 +407,7 @@ void dbusmenu_menuitem_set_root (DbusmenuMenuitem * mi, gboolean root);
gboolean dbusmenu_menuitem_get_root (DbusmenuMenuitem * mi);
void dbusmenu_menuitem_foreach (DbusmenuMenuitem * mi, void (*func) (DbusmenuMenuitem * mi, gpointer data), gpointer data);
-void dbusmenu_menuitem_handle_event (DbusmenuMenuitem * mi, const gchar * name, GVariant * value, guint timestamp);
+void dbusmenu_menuitem_handle_event (DbusmenuMenuitem * mi, const gchar * name, GVariant * variant, guint timestamp);
void dbusmenu_menuitem_send_about_to_show (DbusmenuMenuitem * mi, void (*cb) (DbusmenuMenuitem * mi, gpointer user_data), gpointer cb_data);
void dbusmenu_menuitem_show_to_user (DbusmenuMenuitem * mi, guint timestamp);
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c
index aa39991..056d6cb 100644
--- a/libdbusmenu-glib/server.c
+++ b/libdbusmenu-glib/server.c
@@ -30,11 +30,13 @@ License version 3 and version 2.1 along with this program. If not, see
#include "config.h"
#endif
+#include <glib/gi18n.h>
#include <gio/gio.h>
#include "menuitem-private.h"
#include "server.h"
#include "server-marshal.h"
+#include "enum-types.h"
#include "dbus-menu-clean.xml.h"
@@ -55,6 +57,9 @@ struct _DbusmenuServerPrivate
GCancellable * bus_lookup;
guint dbus_registration;
+ DbusmenuTextDirection text_direction;
+ DbusmenuStatus status;
+
GArray * prop_array;
guint property_idle;
};
@@ -77,7 +82,9 @@ enum {
PROP_0,
PROP_DBUS_OBJECT,
PROP_ROOT_NODE,
- PROP_VERSION
+ PROP_VERSION,
+ PROP_TEXT_DIRECTION,
+ PROP_STATUS
};
/* Errors */
@@ -124,6 +131,7 @@ static void get_property (GObject * obj,
guint id,
GValue * value,
GParamSpec * pspec);
+static void default_text_direction (DbusmenuServer * server);
static void register_object (DbusmenuServer * server);
static void bus_got_cb (GObject * obj,
GAsyncResult * result,
@@ -289,6 +297,16 @@ dbusmenu_server_class_init (DbusmenuServerClass *class)
"The version of the DBusmenu API that we're implementing.",
DBUSMENU_VERSION_NUMBER, DBUSMENU_VERSION_NUMBER, DBUSMENU_VERSION_NUMBER,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_TEXT_DIRECTION,
+ g_param_spec_enum(DBUSMENU_SERVER_PROP_TEXT_DIRECTION, "The default direction of text",
+ "The object that represents this set of menus on DBus",
+ DBUSMENU_TYPE_TEXT_DIRECTION, DBUSMENU_TEXT_DIRECTION_NONE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_STATUS,
+ g_param_spec_enum(DBUSMENU_SERVER_PROP_STATUS, "Status of viewing the menus",
+ "Exports over DBus whether the menus should be given special visuals",
+ DBUSMENU_TYPE_STATUS, DBUSMENU_STATUS_NORMAL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
if (dbusmenu_node_info == NULL) {
GError * error = NULL;
@@ -348,6 +366,9 @@ dbusmenu_server_init (DbusmenuServer *self)
priv->bus_lookup = NULL;
priv->dbus_registration = 0;
+ default_text_direction(self);
+ priv->status = DBUSMENU_STATUS_NORMAL;
+
return;
}
@@ -463,6 +484,64 @@ set_property (GObject * obj, guint id, const GValue * value, GParamSpec * pspec)
}
layout_update_signal(DBUSMENU_SERVER(obj));
break;
+ case PROP_TEXT_DIRECTION: {
+ DbusmenuTextDirection indir = g_value_get_enum(value);
+ DbusmenuTextDirection olddir = priv->text_direction;
+
+ /* If being set to none we need to go back to default, otherwise
+ we'll set things the way that we've been told */
+ if (indir == DBUSMENU_TEXT_DIRECTION_NONE) {
+ default_text_direction(DBUSMENU_SERVER(obj));
+ } else {
+ priv->text_direction = indir;
+ }
+
+ /* If the value has changed we need to signal that on DBus */
+ if (priv->text_direction != olddir && priv->bus != NULL && priv->dbusobject != NULL) {
+ GVariantBuilder params;
+ g_variant_builder_init(&params, G_VARIANT_TYPE_ARRAY);
+ g_variant_builder_add_value(&params, g_variant_new_string(DBUSMENU_INTERFACE));
+ GVariant * dict = g_variant_new_dict_entry(g_variant_new_string("text-direction"), g_variant_new_string(dbusmenu_text_direction_get_nick(priv->text_direction)));
+ g_variant_builder_add_value(&params, g_variant_new_array(NULL, &dict, 1));
+ g_variant_builder_add_value(&params, g_variant_new_array(G_VARIANT_TYPE_STRING, NULL, 0));
+ GVariant * vparams = g_variant_builder_end(&params);
+
+ g_dbus_connection_emit_signal(priv->bus,
+ NULL,
+ priv->dbusobject,
+ "org.freedesktop.DBus.Properties",
+ "PropertiesChanged",
+ vparams,
+ NULL);
+ }
+
+ break;
+ }
+ case PROP_STATUS: {
+ DbusmenuStatus instatus = g_value_get_enum(value);
+
+ /* If the value has changed we need to signal that on DBus */
+ if (priv->status != instatus && priv->bus != NULL && priv->dbusobject != NULL) {
+ GVariantBuilder params;
+ g_variant_builder_init(&params, G_VARIANT_TYPE_ARRAY);
+ g_variant_builder_add_value(&params, g_variant_new_string(DBUSMENU_INTERFACE));
+ GVariant * dict = g_variant_new_dict_entry(g_variant_new_string("status"), g_variant_new_string(dbusmenu_status_get_nick(instatus)));
+ g_variant_builder_add_value(&params, g_variant_new_array(NULL, &dict, 1));
+ g_variant_builder_add_value(&params, g_variant_new_array(G_VARIANT_TYPE_STRING, NULL, 0));
+ GVariant * vparams = g_variant_builder_end(&params);
+
+ g_dbus_connection_emit_signal(priv->bus,
+ NULL,
+ priv->dbusobject,
+ "org.freedesktop.DBus.Properties",
+ "PropertiesChanged",
+ vparams,
+ NULL);
+ }
+
+ priv->status = instatus;
+ break;
+ }
default:
g_return_if_reached();
break;
@@ -486,6 +565,12 @@ get_property (GObject * obj, guint id, GValue * value, GParamSpec * pspec)
case PROP_VERSION:
g_value_set_uint(value, DBUSMENU_VERSION_NUMBER);
break;
+ case PROP_TEXT_DIRECTION:
+ g_value_set_enum(value, priv->text_direction);
+ break;
+ case PROP_STATUS:
+ g_value_set_enum(value, priv->status);
+ break;
default:
g_return_if_reached();
break;
@@ -494,6 +579,49 @@ get_property (GObject * obj, guint id, GValue * value, GParamSpec * pspec)
return;
}
+/* Determines the default text direction */
+static void
+default_text_direction (DbusmenuServer * server)
+{
+ DbusmenuTextDirection dir = DBUSMENU_TEXT_DIRECTION_NONE;
+ DbusmenuServerPrivate * priv = DBUSMENU_SERVER_GET_PRIVATE(server);
+
+ const gchar * env = g_getenv("DBUSMENU_TEXT_DIRECTION");
+ if (env != NULL) {
+ if (g_strcmp0(env, "ltr") == 0) {
+ dir = DBUSMENU_TEXT_DIRECTION_LTR;
+ } else if (g_strcmp0(env, "rtl") == 0) {
+ dir = DBUSMENU_TEXT_DIRECTION_RTL;
+ } else {
+ g_warning("Value of 'DBUSMENU_TEXT_DIRECTION' is '%s' which is not one of 'rtl' or 'ltr'", env);
+ }
+ }
+
+ if (dir == DBUSMENU_TEXT_DIRECTION_NONE) {
+ /* TRANSLATORS: This is the direction of the text and can
+ either be the value 'ltr' for left-to-right text (English)
+ or 'rtl' for right-to-left (Arabic). */
+ const gchar * default_dir = C_("default text direction", "ltr");
+
+ if (g_strcmp0(default_dir, "ltr") == 0) {
+ dir = DBUSMENU_TEXT_DIRECTION_LTR;
+ } else if (g_strcmp0(default_dir, "rtl") == 0) {
+ dir = DBUSMENU_TEXT_DIRECTION_RTL;
+ } else {
+ g_warning("Translation has an invalid value '%s' for default text direction. Defaulting to left-to-right.", default_dir);
+ dir = DBUSMENU_TEXT_DIRECTION_LTR;
+ }
+ }
+
+ /* Shouldn't happen, but incase future patches make a mistake
+ this'll catch them */
+ g_return_if_fail(dir != DBUSMENU_TEXT_DIRECTION_NONE);
+
+ priv->text_direction = dir;
+
+ return;
+}
+
/* Register the object on the dbus bus */
static void
register_object (DbusmenuServer * server)
@@ -611,9 +739,18 @@ bus_get_prop (GDBusConnection * connection, const gchar * sender, const gchar *
/* None of these should happen */
g_return_val_if_fail(g_strcmp0(interface, DBUSMENU_INTERFACE) == 0, NULL);
g_return_val_if_fail(g_strcmp0(path, priv->dbusobject) == 0, NULL);
- g_return_val_if_fail(g_strcmp0(property, "version") == 0, NULL);
- return g_variant_new_uint32(DBUSMENU_VERSION_NUMBER);
+ if (g_strcmp0(property, "version") == 0) {
+ return g_variant_new_uint32(DBUSMENU_VERSION_NUMBER);
+ } else if (g_strcmp0(property, "text-direction") == 0) {
+ return g_variant_new_string(dbusmenu_text_direction_get_nick(priv->text_direction));
+ } else if (g_strcmp0(property, "status") == 0) {
+ return g_variant_new_string(dbusmenu_status_get_nick(priv->status));
+ } else {
+ g_warning("Unknown property '%s'", property);
+ }
+
+ return NULL;
}
/* Handle actually signalling in the idle loop. This way we collect all
@@ -656,7 +793,7 @@ layout_update_signal (DbusmenuServer * server)
typedef struct _prop_idle_item_t prop_idle_item_t;
struct _prop_idle_item_t {
- gint id;
+ DbusmenuMenuitem * mi;
GArray * array;
};
@@ -686,6 +823,7 @@ prop_array_teardown (GArray * prop_array)
}
}
+ g_object_unref(G_OBJECT(iitem->mi));
g_array_free(iitem->array, TRUE);
}
@@ -719,6 +857,12 @@ menuitem_property_idle (gpointer user_data)
for (i = 0; i < priv->prop_array->len; i++) {
prop_idle_item_t * iitem = &g_array_index(priv->prop_array, prop_idle_item_t, i);
+ /* if it's not exposed we're going to block it's properties
+ from getting into the dbus message */
+ if (dbusmenu_menuitem_exposed(iitem->mi) == FALSE) {
+ continue;
+ }
+
GVariantBuilder dictbuilder;
gboolean dictinit = FALSE;
@@ -756,7 +900,7 @@ menuitem_property_idle (gpointer user_data)
GVariantBuilder tuplebuilder;
g_variant_builder_init(&tuplebuilder, G_VARIANT_TYPE_TUPLE);
- g_variant_builder_add_value(&tuplebuilder, g_variant_new_int32(iitem->id));
+ g_variant_builder_add_value(&tuplebuilder, g_variant_new_int32(dbusmenu_menuitem_get_id(iitem->mi)));
g_variant_builder_add_value(&tuplebuilder, g_variant_builder_end(&dictbuilder));
if (!item_init) {
@@ -773,7 +917,7 @@ menuitem_property_idle (gpointer user_data)
GVariantBuilder tuplebuilder;
g_variant_builder_init(&tuplebuilder, G_VARIANT_TYPE_TUPLE);
- g_variant_builder_add_value(&tuplebuilder, g_variant_new_int32(iitem->id));
+ g_variant_builder_add_value(&tuplebuilder, g_variant_new_int32(dbusmenu_menuitem_get_id(iitem->mi)));
g_variant_builder_add_value(&tuplebuilder, g_variant_builder_end(&removedictbuilder));
if (!removeitem_init) {
@@ -786,9 +930,11 @@ menuitem_property_idle (gpointer user_data)
}
GVariant * megadata[2];
+ gboolean gotsomething = FALSE;
if (item_init) {
megadata[0] = g_variant_builder_end(&itembuilder);
+ gotsomething = TRUE;
} else {
GError * error = NULL;
megadata[0] = g_variant_parse(G_VARIANT_TYPE("a(ia{sv})"), "[ ]", NULL, NULL, &error);
@@ -801,6 +947,7 @@ menuitem_property_idle (gpointer user_data)
if (removeitem_init) {
megadata[1] = g_variant_builder_end(&removeitembuilder);
+ gotsomething = TRUE;
} else {
GError * error = NULL;
megadata[1] = g_variant_parse(G_VARIANT_TYPE("a(ia(s))"), "[ ]", NULL, NULL, &error);
@@ -811,7 +958,7 @@ menuitem_property_idle (gpointer user_data)
}
}
- if (priv->dbusobject != NULL && priv->bus != NULL) {
+ if (gotsomething && priv->dbusobject != NULL && priv->bus != NULL) {
g_dbus_connection_emit_signal(priv->bus,
NULL,
priv->dbusobject,
@@ -854,7 +1001,7 @@ menuitem_property_changed (DbusmenuMenuitem * mi, gchar * property, GVariant * v
prop_idle_item_t * item = NULL;
for (i = 0; i < priv->prop_array->len; i++) {
prop_idle_item_t * iitem = &g_array_index(priv->prop_array, prop_idle_item_t, i);
- if (iitem->id == item_id) {
+ if (iitem->mi == mi) {
item = iitem;
break;
}
@@ -864,7 +1011,8 @@ menuitem_property_changed (DbusmenuMenuitem * mi, gchar * property, GVariant * v
/* If not, we'll need to build ourselves one */
if (item == NULL) {
prop_idle_item_t myitem;
- myitem.id = item_id;
+ myitem.mi = mi;
+ g_object_ref(G_OBJECT(mi));
myitem.array = g_array_new(FALSE, FALSE, sizeof(prop_idle_prop_t));
g_array_append_val(priv->prop_array, myitem);
@@ -892,7 +1040,9 @@ menuitem_property_changed (DbusmenuMenuitem * mi, gchar * property, GVariant * v
/* If so, we need to swap the value */
if (prop != NULL) {
- g_variant_unref(prop->variant);
+ if (prop->variant != NULL) {
+ g_variant_unref(prop->variant);
+ }
prop->variant = variant;
} else {
/* else we need to add it */
@@ -1458,5 +1608,97 @@ dbusmenu_server_set_root (DbusmenuServer * self, DbusmenuMenuitem * root)
return;
}
+/**
+ dbusmenu_server_get_text_direction:
+ @server: The #DbusmenuServer object to get the text direction from
+
+ Returns the value of the text direction that is being exported
+ over DBus for this server. It should relate to the direction
+ of the labels and other text fields that are being exported by
+ this server.
+
+ Return value: Text direction exported for this server.
+*/
+DbusmenuTextDirection
+dbusmenu_server_get_text_direction (DbusmenuServer * server)
+{
+ g_return_val_if_fail(DBUSMENU_IS_SERVER(server), DBUSMENU_TEXT_DIRECTION_NONE);
+
+ GValue val = {0};
+ g_value_init(&val, DBUSMENU_TYPE_TEXT_DIRECTION);
+ g_object_get_property(G_OBJECT(server), DBUSMENU_SERVER_PROP_TEXT_DIRECTION, &val);
+
+ DbusmenuTextDirection retval = g_value_get_enum(&val);
+ g_value_unset(&val);
+ return retval;
+}
+
+/**
+ dbusmenu_server_set_text_direction:
+ @server: The #DbusmenuServer object to set the text direction on
+ @dir: Direction of the text
+
+ Sets the text direction that should be exported over DBus for
+ this server. If the value is set to #DBUSMENU_TEXT_DIRECTION_NONE
+ the default detection will be used for setting the value and
+ exported over DBus.
+*/
+void
+dbusmenu_server_set_text_direction (DbusmenuServer * server, DbusmenuTextDirection dir)
+{
+ g_return_if_fail(DBUSMENU_IS_SERVER(server));
+ g_return_if_fail(dir == DBUSMENU_TEXT_DIRECTION_NONE || dir == DBUSMENU_TEXT_DIRECTION_LTR || dir == DBUSMENU_TEXT_DIRECTION_RTL);
+
+ GValue newval = {0};
+ g_value_init(&newval, DBUSMENU_TYPE_TEXT_DIRECTION);
+ g_value_set_enum(&newval, dir);
+ g_object_set_property(G_OBJECT(server), DBUSMENU_SERVER_PROP_TEXT_DIRECTION, &newval);
+ g_value_unset(&newval);
+ return;
+}
+/**
+ dbusmenu_server_get_status:
+ @server: The #DbusmenuServer to get the status from
+
+ Gets the current statust hat the server is sending out over
+ DBus.
+
+ Return value: The current status the server is sending
+*/
+DbusmenuStatus
+dbusmenu_server_get_status (DbusmenuServer * server)
+{
+ g_return_val_if_fail(DBUSMENU_IS_SERVER(server), DBUSMENU_STATUS_NORMAL);
+
+ GValue val = {0};
+ g_value_init(&val, DBUSMENU_TYPE_STATUS);
+ g_object_get_property(G_OBJECT(server), DBUSMENU_SERVER_PROP_STATUS, &val);
+
+ DbusmenuStatus retval = g_value_get_enum(&val);
+ g_value_unset(&val);
+
+ return retval;
+}
+
+/**
+ dbusmenu_server_set_status:
+ @server: The #DbusmenuServer to set the status on
+ @status: Status value to set on the server
+
+ Changes the status of the server.
+*/
+void
+dbusmenu_server_set_status (DbusmenuServer * server, DbusmenuStatus status)
+{
+ g_return_if_fail(DBUSMENU_IS_SERVER(server));
+
+ GValue val = {0};
+ g_value_init(&val, DBUSMENU_TYPE_STATUS);
+ g_value_set_enum(&val, status);
+ g_object_set_property(G_OBJECT(server), DBUSMENU_SERVER_PROP_STATUS, &val);
+ g_value_unset(&val);
+
+ return;
+}
diff --git a/libdbusmenu-glib/server.h b/libdbusmenu-glib/server.h
index 5668258..80b7abb 100644
--- a/libdbusmenu-glib/server.h
+++ b/libdbusmenu-glib/server.h
@@ -33,6 +33,7 @@ License version 3 and version 2.1 along with this program. If not, see
#include <glib-object.h>
#include "menuitem.h"
+#include "types.h"
G_BEGIN_DECLS
@@ -43,15 +44,67 @@ G_BEGIN_DECLS
#define DBUSMENU_IS_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DBUSMENU_TYPE_SERVER))
#define DBUSMENU_SERVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DBUSMENU_TYPE_SERVER, DbusmenuServerClass))
+/**
+ * DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE:
+ *
+ * String to attach to signal #DbusmenuServer::item-property-updated
+ */
#define DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE "item-property-updated"
+/**
+ * DBUSMENU_SERVER_SIGNAL_ID_UPDATE:
+ *
+ * String to attach to signal #DbusmenuServer::item-updated
+ */
#define DBUSMENU_SERVER_SIGNAL_ID_UPDATE "item-updated"
+/**
+ * DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED:
+ *
+ * String to attach to signal #DbusmenuServer::layout-updated
+ */
#define DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED "layout-updated"
+/**
+ * DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION:
+ *
+ * String to attach to signal #DbusmenuServer::item-activation-requested
+ */
#define DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION "item-activation-requested"
+/**
+ * DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE:
+ *
+ * String to attach to signal #DbusmenuServer::layout-updated
+ */
#define DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED
+/**
+ * DBUSMENU_SERVER_PROP_DBUS_OBJECT:
+ *
+ * String to access property #DbusmenuServer:dbus-object
+ */
#define DBUSMENU_SERVER_PROP_DBUS_OBJECT "dbus-object"
+/**
+ * DBUSMENU_SERVER_PROP_ROOT_NODE:
+ *
+ * String to access property #DbusmenuServer:root-node
+ */
#define DBUSMENU_SERVER_PROP_ROOT_NODE "root-node"
+/**
+ * DBUSMENU_SERVER_PROP_VERSION:
+ *
+ * String to access property #DbusmenuServer:version
+ */
#define DBUSMENU_SERVER_PROP_VERSION "version"
+/**
+ * DBUSMENU_SERVER_PROP_TEXT_DIRECTION:
+ *
+ * String to access property #DbusmenuServer:text-direction
+ */
+#define DBUSMENU_SERVER_PROP_TEXT_DIRECTION "text-direction"
+/**
+ * DBUSMENU_SERVER_PROP_STATUS:
+ *
+ * String to access property #DbusmenuServer:status
+ */
+#define DBUSMENU_SERVER_PROP_STATUS "status"
typedef struct _DbusmenuServerPrivate DbusmenuServerPrivate;
@@ -61,8 +114,7 @@ typedef struct _DbusmenuServerPrivate DbusmenuServerPrivate;
@id_prop_update: Slot for #DbusmenuServer::id-prop-update.
@id_update: Slot for #DbusmenuServer::id-update.
@layout_updated: Slot for #DbusmenuServer::layout-update.
- @item_activation_requested: Slot for #DbusmenuServer::item-activation-requested.
-
+ @item_activation: Slot for #DbusmenuServer::item-activation-requested.
@reserved1: Reserved for future use.
@reserved2: Reserved for future use.
@reserved3: Reserved for future use.
@@ -93,7 +145,6 @@ struct _DbusmenuServerClass {
/**
DbusmenuServer:
- @parent: #GObject
A server which represents a sharing of a set of
#DbusmenuMenuitems across DBus to a #DbusmenuClient.
@@ -106,12 +157,19 @@ struct _DbusmenuServer {
DbusmenuServerPrivate * priv;
};
-GType dbusmenu_server_get_type (void);
-DbusmenuServer * dbusmenu_server_new (const gchar * object);
-void dbusmenu_server_set_root (DbusmenuServer * server, DbusmenuMenuitem * root);
+GType dbusmenu_server_get_type (void);
+DbusmenuServer * dbusmenu_server_new (const gchar * object);
+void dbusmenu_server_set_root (DbusmenuServer * self,
+ DbusmenuMenuitem * root);
+DbusmenuTextDirection dbusmenu_server_get_text_direction (DbusmenuServer * server);
+void dbusmenu_server_set_text_direction (DbusmenuServer * server,
+ DbusmenuTextDirection dir);
+DbusmenuStatus dbusmenu_server_get_status (DbusmenuServer * server);
+void dbusmenu_server_set_status (DbusmenuServer * server,
+ DbusmenuStatus status);
/**
- SECIONT:server
+ SECTION:server
@short_description: The server signals changed and
updates on a tree of #DbusmenuMenuitem objecs.
@stability: Unstable
diff --git a/libdbusmenu-glib/types.h b/libdbusmenu-glib/types.h
new file mode 100644
index 0000000..03ae801
--- /dev/null
+++ b/libdbusmenu-glib/types.h
@@ -0,0 +1,76 @@
+/*
+Types that are used in several objects.
+
+Copyright 2011 Canonical Ltd.
+
+Authors:
+ Ted Gould <ted@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the
+Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by
+the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the applicable version of the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public
+License version 3 and version 2.1 along with this program. If not, see
+<http://www.gnu.org/licenses/>
+*/
+
+#ifndef __DBUSMENU_TYPES_H__
+#define __DBUSMENU_TYPES_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/**
+ DbusmenuTextDirection:
+ @DBUSMENU_TEXT_DIRECTION_NONE: Unspecified text direction
+ @DBUSMENU_TEXT_DIRECTION_LTR: Left-to-right text direction
+ @DBUSMENU_TEXT_DIRECTION_RTL: Right-to-left text direction
+
+ The direction of text that the strings that this server
+ will be sending strings as.
+*/
+typedef enum { /*< prefix=DBUSMENU_TEXT_DIRECTION >*/
+ DBUSMENU_TEXT_DIRECTION_NONE, /*< nick=none >*/
+ DBUSMENU_TEXT_DIRECTION_LTR, /*< nick=ltr >*/
+ DBUSMENU_TEXT_DIRECTION_RTL /*< nick=rtl >*/
+} DbusmenuTextDirection;
+
+/**
+ DbusmenuStatus:
+ @DBUSMENU_STATUS_NORMAL: Everything is normal
+ @DBUSMENU_STATUS_NOTICE: The menus should be shown at a higher priority
+
+ Tracks how the menus should be presented to the user.
+*/
+typedef enum { /*< prefix=DBUSMENU_STATUS >*/
+ DBUSMENU_STATUS_NORMAL, /*< nick=normal >*/
+ DBUSMENU_STATUS_NOTICE /*< nick=notice >*/
+} DbusmenuStatus;
+
+/**
+ SECTION:types
+ @short_description: Types that are used by both client and
+ server.
+ @stability: Unstable
+ @include: libdbusmenu-glib/types.h
+
+ Enums that are used to describe states of the server across the
+ bus. They are sent over dbus using their nicks but then turned
+ back into enums by the client.
+*/
+G_END_DECLS
+
+#endif /* __DBUSMENU_TYPES_H__ */
+
diff --git a/libdbusmenu-gtk/Makefile.am b/libdbusmenu-gtk/Makefile.am
index f66f1f5..50a8f2c 100644
--- a/libdbusmenu-gtk/Makefile.am
+++ b/libdbusmenu-gtk/Makefile.am
@@ -78,21 +78,21 @@ if INTROSPECTION_TEN
INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) \
--warn-all \
--add-include-path=$(top_builddir)/libdbusmenu-glib \
- $(addprefix --c-include=libdbusmenu-gtk/, $(introspection_sources)) \
+ $(addprefix --c-include=libdbusmenu-gtk/, $(libdbusmenu_gtkinclude_HEADERS)) \
--symbol-prefix=dbusmenu \
--identifier-prefix=DbusmenuGtk
else
INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) \
--warn-all \
--add-include-path=$(top_builddir)/libdbusmenu-glib \
- $(addprefix --c-include=libdbusmenu-gtk/, $(introspection_sources))
+ $(addprefix --c-include=libdbusmenu-gtk/, $(libdbusmenu_gtkinclude_HEADERS))
endif
INTROSPECTION_COMPILER_ARGS = --includedir=$(builddir) --includedir=$(top_builddir)/libdbusmenu-glib
if HAVE_INTROSPECTION
-introspection_sources = $(libdbusmenu_gtkinclude_HEADERS)
+introspection_sources = $(filter-out genericmenuitem.%, $(libdbusmenu_gtkinclude_HEADERS) $(libdbusmenu_gtk_la_SOURCES))
DbusmenuGtk$(VER)-0.4.gir: libdbusmenu-gtk$(VER).la
DbusmenuGtk_0_4_gir_INCLUDES = \
diff --git a/libdbusmenu-gtk/Makefile.in b/libdbusmenu-gtk/Makefile.in
index 6ea746d..64abec5 100644
--- a/libdbusmenu-gtk/Makefile.in
+++ b/libdbusmenu-gtk/Makefile.in
@@ -191,6 +191,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
@@ -385,17 +386,17 @@ INTROSPECTION_GIRS = $(am__append_1)
@INTROSPECTION_TEN_FALSE@INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) \
@INTROSPECTION_TEN_FALSE@ --warn-all \
@INTROSPECTION_TEN_FALSE@ --add-include-path=$(top_builddir)/libdbusmenu-glib \
-@INTROSPECTION_TEN_FALSE@ $(addprefix --c-include=libdbusmenu-gtk/, $(introspection_sources))
+@INTROSPECTION_TEN_FALSE@ $(addprefix --c-include=libdbusmenu-gtk/, $(libdbusmenu_gtkinclude_HEADERS))
@INTROSPECTION_TEN_TRUE@INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) \
@INTROSPECTION_TEN_TRUE@ --warn-all \
@INTROSPECTION_TEN_TRUE@ --add-include-path=$(top_builddir)/libdbusmenu-glib \
-@INTROSPECTION_TEN_TRUE@ $(addprefix --c-include=libdbusmenu-gtk/, $(introspection_sources)) \
+@INTROSPECTION_TEN_TRUE@ $(addprefix --c-include=libdbusmenu-gtk/, $(libdbusmenu_gtkinclude_HEADERS)) \
@INTROSPECTION_TEN_TRUE@ --symbol-prefix=dbusmenu \
@INTROSPECTION_TEN_TRUE@ --identifier-prefix=DbusmenuGtk
INTROSPECTION_COMPILER_ARGS = --includedir=$(builddir) --includedir=$(top_builddir)/libdbusmenu-glib
-@HAVE_INTROSPECTION_TRUE@introspection_sources = $(libdbusmenu_gtkinclude_HEADERS)
+@HAVE_INTROSPECTION_TRUE@introspection_sources = $(filter-out genericmenuitem.%, $(libdbusmenu_gtkinclude_HEADERS) $(libdbusmenu_gtk_la_SOURCES))
@HAVE_INTROSPECTION_TRUE@DbusmenuGtk_0_4_gir_INCLUDES = \
@HAVE_INTROSPECTION_TRUE@ GObject-2.0 \
@HAVE_INTROSPECTION_TRUE@ $(GTKGIR) \
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c
index 7ab2fe9..50978ff 100644
--- a/libdbusmenu-gtk/client.c
+++ b/libdbusmenu-gtk/client.c
@@ -219,13 +219,13 @@ refresh_shortcut (DbusmenuGtkClient * client, DbusmenuMenuitem * mi)
/**
- dbusmenu_gtkclient_set_accel_group:
- @client: To set the group on
- @agroup: The new acceleration group
-
- Sets the acceleration group for the menu items with accelerators
- on this client.
-*/
+ * dbusmenu_gtkclient_set_accel_group:
+ * @client: To set the group on
+ * @agroup: The new acceleration group
+ *
+ * Sets the acceleration group for the menu items with accelerators
+ * on this client.
+ */
void
dbusmenu_gtkclient_set_accel_group (DbusmenuGtkClient * client, GtkAccelGroup * agroup)
{
@@ -256,14 +256,14 @@ dbusmenu_gtkclient_set_accel_group (DbusmenuGtkClient * client, GtkAccelGroup *
}
/**
- dbusmenu_gtkclient_get_accel_group:
- @client: Client to query for an accelerator group
-
- Gets the accel group for this client.
-
- Return value: Either a valid group or #NULL on error or
- none set.
-*/
+ * dbusmenu_gtkclient_get_accel_group:
+ * @client: Client to query for an accelerator group
+ *
+ * Gets the accel group for this client.
+ *
+ * Return value: (transfer none): Either a valid group or #NULL on error or
+ * none set.
+ */
GtkAccelGroup *
dbusmenu_gtkclient_get_accel_group (DbusmenuGtkClient * client)
{
@@ -493,21 +493,21 @@ destroy_gmi (GtkMenuItem * gmi, DbusmenuMenuitem * mi)
#endif
/**
- dbusmenu_gtkclient_newitem_base:
- @client: The client handling everything on this connection
- @item: The #DbusmenuMenuitem to attach the GTK-isms to
- @gmi: A #GtkMenuItem representing the GTK world's view of this menuitem
- @parent: The parent #DbusmenuMenuitem
-
- This function provides some of the basic connectivity for being in
- the GTK world. Things like visibility and sensitivity of the item are
- handled here so that the subclasses don't have to. If you're building
- your on GTK menu item you can use this function to apply those basic
- attributes so that you don't have to deal with them either.
-
- This also handles passing the "activate" signal back to the
- #DbusmenuMenuitem side of thing.
-*/
+ * dbusmenu_gtkclient_newitem_base:
+ * @client: The client handling everything on this connection
+ * @item: The #DbusmenuMenuitem to attach the GTK-isms to
+ * @gmi: A #GtkMenuItem representing the GTK world's view of this menuitem
+ * @parent: The parent #DbusmenuMenuitem
+ *
+ * This function provides some of the basic connectivity for being in
+ * the GTK world. Things like visibility and sensitivity of the item are
+ * handled here so that the subclasses don't have to. If you're building
+ * your on GTK menu item you can use this function to apply those basic
+ * attributes so that you don't have to deal with them either.
+ *
+ * This also handles passing the "activate" signal back to the
+ * #DbusmenuMenuitem side of thing.
+ */
void
dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * item, GtkMenuItem * gmi, DbusmenuMenuitem * parent)
{
@@ -617,15 +617,15 @@ move_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint new, guint ol
/* Public API */
/**
- dbusmenu_gtkclient_new:
- @dbus_name: Name of the #DbusmenuServer on DBus
- @dbus_name: Name of the object on the #DbusmenuServer
-
- Creates a new #DbusmenuGtkClient object and creates a #DbusmenuClient
- that connects across DBus to a #DbusmenuServer.
-
- Return value: A new #DbusmenuGtkClient sync'd with a server
-*/
+ * dbusmenu_gtkclient_new:
+ * @dbus_name: Name of the #DbusmenuServer on DBus
+ * @dbus_object: Name of the object on the #DbusmenuServer
+ *
+ * Creates a new #DbusmenuGtkClient object and creates a #DbusmenuClient
+ * that connects across DBus to a #DbusmenuServer.
+ *
+ * Return value: A new #DbusmenuGtkClient sync'd with a server
+ */
DbusmenuGtkClient *
dbusmenu_gtkclient_new (gchar * dbus_name, gchar * dbus_object)
{
@@ -636,15 +636,15 @@ dbusmenu_gtkclient_new (gchar * dbus_name, gchar * dbus_object)
}
/**
- dbusmenu_gtkclient_menuitem_get:
- @client: A #DbusmenuGtkClient with the item in it.
- @item: #DbusmenuMenuitem to get associated #GtkMenuItem on.
-
- This grabs the #GtkMenuItem that is associated with the
- #DbusmenuMenuitem.
-
- Return value: The #GtkMenuItem that can be played with.
-*/
+ * dbusmenu_gtkclient_menuitem_get:
+ * @client: A #DbusmenuGtkClient with the item in it.
+ * @item: #DbusmenuMenuitem to get associated #GtkMenuItem on.
+ *
+ * This grabs the #GtkMenuItem that is associated with the
+ * #DbusmenuMenuitem.
+ *
+ * Return value: (transfer none): The #GtkMenuItem that can be played with.
+ */
GtkMenuItem *
dbusmenu_gtkclient_menuitem_get (DbusmenuGtkClient * client, DbusmenuMenuitem * item)
{
@@ -660,13 +660,13 @@ dbusmenu_gtkclient_menuitem_get (DbusmenuGtkClient * client, DbusmenuMenuitem *
}
/**
- dbusmenu_gtkclient_menuitem_get_submenu:
- @client: A #DbusmenuGtkClient with the item in it.
- @item: #DbusmenuMenuitem to get associated #GtkMenu on.
-
- This grabs the submenu associated with the menuitem.
-
- Return value: The #GtkMenu if there is one.
+ * dbusmenu_gtkclient_menuitem_get_submenu:
+ * @client: A #DbusmenuGtkClient with the item in it.
+ * @item: #DbusmenuMenuitem to get associated #GtkMenu on.
+ *
+ * This grabs the submenu associated with the menuitem.
+ *
+ * Return value: (transfer none): The #GtkMenu if there is one.
*/
GtkMenu *
dbusmenu_gtkclient_menuitem_get_submenu (DbusmenuGtkClient * client, DbusmenuMenuitem * item)
diff --git a/libdbusmenu-gtk/client.h b/libdbusmenu-gtk/client.h
index c986a5d..75b59a0 100644
--- a/libdbusmenu-gtk/client.h
+++ b/libdbusmenu-gtk/client.h
@@ -41,20 +41,28 @@ G_BEGIN_DECLS
#define DBUSMENU_IS_GTKCLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DBUSMENU_GTKCLIENT_TYPE))
#define DBUSMENU_GTKCLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DBUSMENU_GTKCLIENT_TYPE, DbusmenuGtkClientClass))
+/**
+ * DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED:
+ *
+ * String to attach to signal #DbusmenuClient::root-changed
+ */
#define DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED
typedef struct _DbusmenuGtkClientPrivate DbusmenuGtkClientPrivate;
/**
- DbusmenuGtkClientClass:
- @parent_class: #GtkMenuClass
- @reserved1: Reserved for future use.
- @reserved2: Reserved for future use.
- @reserved3: Reserved for future use.
- @reserved4: Reserved for future use.
- @reserved5: Reserved for future use.
- @reserved6: Reserved for future use.
-*/
+ * DbusmenuGtkClientClass:
+ * @parent_class: #GtkMenuClass
+ * @root_changed: Slot for signal #DbusmenuGtkClient::root-changed
+ * @reserved1: Reserved for future use.
+ * @reserved2: Reserved for future use.
+ * @reserved3: Reserved for future use.
+ * @reserved4: Reserved for future use.
+ * @reserved5: Reserved for future use.
+ * @reserved6: Reserved for future use.
+ *
+ * Functions and signal slots for using a #DbusmenuGtkClient
+ */
typedef struct _DbusmenuGtkClientClass DbusmenuGtkClientClass;
struct _DbusmenuGtkClientClass {
DbusmenuClientClass parent_class;
@@ -72,9 +80,11 @@ struct _DbusmenuGtkClientClass {
};
/**
- DbusmenuGtkClient:
- @parent: #GtkMenu
-*/
+ * DbusmenuGtkClient:
+ *
+ * A subclass of #DbusmenuClient to add functionality with regarding
+ * building GTK items out of the abstract tree.
+ */
typedef struct _DbusmenuGtkClient DbusmenuGtkClient;
struct _DbusmenuGtkClient {
DbusmenuClient parent;
@@ -94,10 +104,10 @@ GtkAccelGroup * dbusmenu_gtkclient_get_accel_group (DbusmenuGtkClient * client);
void dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * item, GtkMenuItem * gmi, DbusmenuMenuitem * parent);
/**
- SECTION:gtkmenu
- @short_description: A GTK Menu Object that syncronizes over DBus
+ SECTION:client
+ @short_description: A subclass of #DbusmenuClient adding GTK level features
@stability: Unstable
- @include: libdbusmenu-gtk/menu.h
+ @include: libdbusmenu-gtk/client.h
In general, this is just a #GtkMenu, why else would you care? Oh,
because this menu is created by someone else on a server that exists
@@ -115,8 +125,6 @@ void dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuit
number of entries change, the menus change, if they change thier
properties change, they update in the items. All of this should
be handled transparently to the user of this object.
-
- TODO: Document properties.
*/
G_END_DECLS
diff --git a/libdbusmenu-gtk/genericmenuitem.c b/libdbusmenu-gtk/genericmenuitem.c
index 2af70f3..3652ceb 100644
--- a/libdbusmenu-gtk/genericmenuitem.c
+++ b/libdbusmenu-gtk/genericmenuitem.c
@@ -32,7 +32,7 @@ License version 3 and version 2.1 along with this program. If not, see
#include "genericmenuitem.h"
-/**
+/*
GenericmenuitemPrivate:
@check_type: What type of check we have, or none at all.
@state: What the state of our check is.
@@ -278,12 +278,12 @@ activate (GtkMenuItem * menu_item)
}
/**
- genericmenuitem_set_check_type:
- @item: #Genericmenuitem to set the type on
- @check_type: Which type of check should be displayed
-
- This function changes the type of the checkmark that
- appears in the left hand gutter for the menuitem.
+ * genericmenuitem_set_check_type:
+ * @item: #Genericmenuitem to set the type on
+ * @check_type: Which type of check should be displayed
+ *
+ * This function changes the type of the checkmark that
+ * appears in the left hand gutter for the menuitem.
*/
void
genericmenuitem_set_check_type (Genericmenuitem * item, GenericmenuitemCheckType check_type)
@@ -317,14 +317,14 @@ genericmenuitem_set_check_type (Genericmenuitem * item, GenericmenuitemCheckType
}
/**
- genericmenuitem_set_state:
- @item: #Genericmenuitem to set the type on
- @check_type: What is the state of the check
-
- Sets the state of the check in the menu item. It does
- not require, but isn't really useful if the type of
- check that the menuitem is set to #GENERICMENUITEM_CHECK_TYPE_NONE.
-*/
+ * genericmenuitem_set_state:
+ * @item: #Genericmenuitem to set the type on
+ * @check_type: What is the state of the check
+ *
+ * Sets the state of the check in the menu item. It does
+ * not require, but isn't really useful if the type of
+ * check that the menuitem is set to #GENERICMENUITEM_CHECK_TYPE_NONE.
+ */
void
genericmenuitem_set_state (Genericmenuitem * item, GenericmenuitemState state)
{
@@ -377,11 +377,11 @@ set_image_helper (GtkWidget * widget, gpointer data)
}
/**
- genericmenuitem_set_image:
- @item: A #Genericmenuitem
- @image: The image to set as the image of @item
-
- Sets the image of the menu item.
+ * genericmenuitem_set_image:
+ * @item: A #Genericmenuitem
+ * @image: The image to set as the image of @item
+ *
+ * Sets the image of the menu item.
*/
void
genericmenuitem_set_image (Genericmenuitem * menu_item, GtkWidget * image)
@@ -439,13 +439,13 @@ genericmenuitem_set_image (Genericmenuitem * menu_item, GtkWidget * image)
}
/**
- genericmenuitem_get_image:
- @item: A #Genericmenuitem
-
- Returns the image if there is one.
-
- Return value: A pointer to the image of the item or #NULL
- if there isn't one.
+ * genericmenuitem_get_image:
+ * @item: A #Genericmenuitem
+ *
+ * Returns the image if there is one.
+ *
+ * Return value: (transfer none): A pointer to the image of the item or #NULL
+ * if there isn't one.
*/
GtkWidget *
genericmenuitem_get_image (Genericmenuitem * menu_item)
diff --git a/libdbusmenu-gtk/genericmenuitem.h b/libdbusmenu-gtk/genericmenuitem.h
index 3c4af0c..5e3c640 100644
--- a/libdbusmenu-gtk/genericmenuitem.h
+++ b/libdbusmenu-gtk/genericmenuitem.h
@@ -48,7 +48,7 @@ typedef struct _GenericmenuitemPrivate GenericmenuitemPrivate;
typedef enum _GenericmenuitemCheckType GenericmenuitemCheckType;
typedef enum _GenericmenuitemState GenericmenuitemState;
-/**
+/*
GenericmenuitemClass:
@parent_class: Our parent #GtkCheckMenuItemClass
*/
@@ -56,7 +56,7 @@ struct _GenericmenuitemClass {
GtkCheckMenuItemClass parent_class;
};
-/**
+/*
Genericmenuitem:
@parent: Our parent #GtkCheckMenuItem
*/
diff --git a/libdbusmenu-gtk/menu.c b/libdbusmenu-gtk/menu.c
index 2a27fe2..0b31069 100644
--- a/libdbusmenu-gtk/menu.c
+++ b/libdbusmenu-gtk/menu.c
@@ -103,7 +103,7 @@ menu_focus_cb(DbusmenuGtkMenu * menu, gpointer userdata)
if (priv->client != NULL) {
/* TODO: We should stop the display of the menu
until the about to show call returns. */
- dbusmenu_client_send_about_to_show(DBUSMENU_CLIENT(priv->client), 0, NULL, NULL);
+ dbusmenu_menuitem_send_about_to_show(priv->root, NULL, NULL);
}
return;
}
@@ -398,15 +398,15 @@ build_client (DbusmenuGtkMenu * self)
/* Public API */
/**
- dbusmenu_gtkmenu_new:
- @dbus_name: Name of the #DbusmenuServer on DBus
- @dbus_name: Name of the object on the #DbusmenuServer
-
- Creates a new #DbusmenuGtkMenu object and creates a #DbusmenuClient
- that connects across DBus to a #DbusmenuServer.
-
- Return value: A new #DbusmenuGtkMenu sync'd with a server
-*/
+ * dbusmenu_gtkmenu_new:
+ * @dbus_name: Name of the #DbusmenuServer on DBus
+ * @dbus_object: Name of the object on the #DbusmenuServer
+ *
+ * Creates a new #DbusmenuGtkMenu object and creates a #DbusmenuClient
+ * that connects across DBus to a #DbusmenuServer.
+ *
+ * Return value: A new #DbusmenuGtkMenu sync'd with a server
+ */
DbusmenuGtkMenu *
dbusmenu_gtkmenu_new (gchar * dbus_name, gchar * dbus_object)
{
@@ -417,14 +417,14 @@ dbusmenu_gtkmenu_new (gchar * dbus_name, gchar * dbus_object)
}
/**
- dbusmenu_gtkmenu_get_client:
- @menu: The #DbusmenuGtkMenu to get the client from
-
- An accessor for the client that this menu is using to
- communicate with the server.
-
- Return value: A valid #DbusmenuGtkClient or NULL on error.
-*/
+ * dbusmenu_gtkmenu_get_client:
+ * @menu: The #DbusmenuGtkMenu to get the client from
+ *
+ * An accessor for the client that this menu is using to
+ * communicate with the server.
+ *
+ * Return value: (transfer none): A valid #DbusmenuGtkClient or NULL on error.
+ */
DbusmenuGtkClient *
dbusmenu_gtkmenu_get_client (DbusmenuGtkMenu * menu)
{
diff --git a/libdbusmenu-gtk/menu.h b/libdbusmenu-gtk/menu.h
index 896e466..c413ab8 100644
--- a/libdbusmenu-gtk/menu.h
+++ b/libdbusmenu-gtk/menu.h
@@ -45,15 +45,18 @@ G_BEGIN_DECLS
typedef struct _DbusmenuGtkMenuPrivate DbusmenuGtkMenuPrivate;
/**
- DbusmenuGtkMenuClass:
- @parent_class: #GtkMenuClass
- @reserved1: Reserved for future use.
- @reserved2: Reserved for future use.
- @reserved3: Reserved for future use.
- @reserved4: Reserved for future use.
- @reserved5: Reserved for future use.
- @reserved6: Reserved for future use.
-*/
+ * DbusmenuGtkMenuClass:
+ * @parent_class: #GtkMenuClass
+ * @reserved1: Reserved for future use.
+ * @reserved2: Reserved for future use.
+ * @reserved3: Reserved for future use.
+ * @reserved4: Reserved for future use.
+ * @reserved5: Reserved for future use.
+ * @reserved6: Reserved for future use.
+ *
+ * All of the subclassable functions and signal slots for a
+ * #DbusmenuGtkMenu.
+ */
typedef struct _DbusmenuGtkMenuClass DbusmenuGtkMenuClass;
struct _DbusmenuGtkMenuClass {
GtkMenuClass parent_class;
@@ -68,9 +71,11 @@ struct _DbusmenuGtkMenuClass {
};
/**
- DbusmenuGtkMenu:
- @parent: #GtkMenu
-*/
+ * DbusmenuGtkMenu:
+ *
+ * A #GtkMenu that is built using an abstract tree built from
+ * a #DbusmenuGtkClient.
+ */
typedef struct _DbusmenuGtkMenu DbusmenuGtkMenu;
struct _DbusmenuGtkMenu {
GtkMenu parent;
@@ -84,7 +89,7 @@ DbusmenuGtkMenu * dbusmenu_gtkmenu_new (gchar * dbus_name, gchar * dbus_object);
DbusmenuGtkClient * dbusmenu_gtkmenu_get_client (DbusmenuGtkMenu * menu);
/**
- SECTION:gtkmenu
+ SECTION:menu
@short_description: A GTK Menu Object that syncronizes over DBus
@stability: Unstable
@include: libdbusmenu-gtk/menu.h
@@ -105,8 +110,6 @@ DbusmenuGtkClient * dbusmenu_gtkmenu_get_client (DbusmenuGtkMenu * menu);
number of entries change, the menus change, if they change thier
properties change, they update in the items. All of this should
be handled transparently to the user of this object.
-
- TODO: Document properties.
*/
G_END_DECLS
diff --git a/libdbusmenu-gtk/menuitem.c b/libdbusmenu-gtk/menuitem.c
index fa5eb89..508b43f 100644
--- a/libdbusmenu-gtk/menuitem.c
+++ b/libdbusmenu-gtk/menuitem.c
@@ -31,17 +31,17 @@ License version 3 and version 2.1 along with this program. If not, see
#include <gtk/gtk.h>
/**
- dbusmenu_menuitem_property_set_image:
- @menuitem: The #DbusmenuMenuitem to set the property on.
- @property: Name of the property to set.
- @data: The image to place on the property.
-
- This function takes the pixbuf that is stored in @data and
- turns it into a base64 encoded PNG so that it can be placed
- onto a standard #DbusmenuMenuitem property.
-
- Return value: Whether the function was able to set the property
- or not.
+ * dbusmenu_menuitem_property_set_image:
+ * @menuitem: The #DbusmenuMenuitem to set the property on.
+ * @property: Name of the property to set.
+ * @data: The image to place on the property.
+ *
+ * This function takes the pixbuf that is stored in @data and
+ * turns it into a base64 encoded PNG so that it can be placed
+ * onto a standard #DbusmenuMenuitem property.
+ *
+ * Return value: Whether the function was able to set the property
+ * or not.
*/
gboolean
dbusmenu_menuitem_property_set_image (DbusmenuMenuitem * menuitem, const gchar * property, const GdkPixbuf * data)
@@ -77,17 +77,17 @@ dbusmenu_menuitem_property_set_image (DbusmenuMenuitem * menuitem, const gchar *
}
/**
- dbusmenu_menuitem_property_get_image:
- @menuitem: The #DbusmenuMenuite to look for the property on
- @property: The name of the property to look for.
-
- This function looks on the menu item for a property by the
- name of @property. If one exists it tries to turn it into
- a #GdkPixbuf. It assumes that the property is a base64 encoded
- PNG file like the one created by #dbusmenu_menuite_property_set_image.
-
- Return value: A pixbuf or #NULL to signal error.
-*/
+ * dbusmenu_menuitem_property_get_image:
+ * @menuitem: The #DbusmenuMenuitem to look for the property on
+ * @property: The name of the property to look for.
+ *
+ * This function looks on the menu item for a property by the
+ * name of @property. If one exists it tries to turn it into
+ * a #GdkPixbuf. It assumes that the property is a base64 encoded
+ * PNG file like the one created by #dbusmenu_menuite_property_set_image.
+ *
+ * Return value: (transfer full): A pixbuf or #NULL to signal error.
+ */
GdkPixbuf *
dbusmenu_menuitem_property_get_image (DbusmenuMenuitem * menuitem, const gchar * property)
{
@@ -131,16 +131,16 @@ dbusmenu_menuitem_property_get_image (DbusmenuMenuitem * menuitem, const gchar *
}
/**
- dbusmenu_menuitem_property_set_shortcut_string:
- @menuitem: The #DbusmenuMenuitem to set the shortcut on
- @shortcut: String describing the shortcut
-
- This function takes a GTK shortcut string as defined in
- #gtk_accelerator_parse and turns that into the information
- required to send it over DBusmenu.
-
- Return value: Whether it was successful at setting the property.
-*/
+ * dbusmenu_menuitem_property_set_shortcut_string:
+ * @menuitem: The #DbusmenuMenuitem to set the shortcut on
+ * @shortcut: String describing the shortcut
+ *
+ * This function takes a GTK shortcut string as defined in
+ * #gtk_accelerator_parse and turns that into the information
+ * required to send it over DBusmenu.
+ *
+ * Return value: Whether it was successful at setting the property.
+ */
gboolean
dbusmenu_menuitem_property_set_shortcut_string (DbusmenuMenuitem * menuitem, const gchar * shortcut)
{
@@ -161,16 +161,16 @@ dbusmenu_menuitem_property_set_shortcut_string (DbusmenuMenuitem * menuitem, con
}
/**
- dbusmenu_menuitem_property_set_shortcut:
- @menuitem: The #DbusmenuMenuitem to set the shortcut on
- @key: The keycode of the key to send
- @modifier: A bitmask of modifiers used to activate the item
-
- Takes the modifer described by @key and @modifier and places that into
- the format sending across Dbus for shortcuts.
-
- Return value: Whether it was successful at setting the property.
-*/
+ * dbusmenu_menuitem_property_set_shortcut:
+ * @menuitem: The #DbusmenuMenuitem to set the shortcut on
+ * @key: The keycode of the key to send
+ * @modifier: A bitmask of modifiers used to activate the item
+ *
+ * Takes the modifer described by @key and @modifier and places that into
+ * the format sending across Dbus for shortcuts.
+ *
+ * Return value: Whether it was successful at setting the property.
+ */
gboolean
dbusmenu_menuitem_property_set_shortcut (DbusmenuMenuitem * menuitem, guint key, GdkModifierType modifier)
{
@@ -213,16 +213,16 @@ find_closure (GtkAccelKey * key, GClosure * closure, gpointer user_data)
}
/**
- dbusmenu_menuitem_property_set_shortcut_menuitem:
- @menuitem: The #DbusmenuMenuitem to set the shortcut on
- @gmi: A menu item to steal the shortcut off of
-
- Takes the shortcut that is installed on a menu item and calls
- #dbusmenu_menuitem_property_set_shortcut with it. It also sets
- up listeners to watch it change.
-
- Return value: Whether it was successful at setting the property.
-*/
+ * dbusmenu_menuitem_property_set_shortcut_menuitem:
+ * @menuitem: The #DbusmenuMenuitem to set the shortcut on
+ * @gmi: A menu item to steal the shortcut off of
+ *
+ * Takes the shortcut that is installed on a menu item and calls
+ * #dbusmenu_menuitem_property_set_shortcut with it. It also sets
+ * up listeners to watch it change.
+ *
+ * Return value: Whether it was successful at setting the property.
+ */
gboolean
dbusmenu_menuitem_property_set_shortcut_menuitem (DbusmenuMenuitem * menuitem, const GtkMenuItem * gmi)
{
@@ -260,14 +260,14 @@ dbusmenu_menuitem_property_set_shortcut_menuitem (DbusmenuMenuitem * menuitem, c
}
/**
- dbusmenu_menuitem_property_get_shortcut:
- @menuitem: The #DbusmenuMenuitem to get the shortcut off
- @key: Location to put the key value
- @modifier: Location to put the modifier mask
-
- This function gets a GTK shortcut as a key and a mask
- for use to set the accelerators.
-*/
+ * dbusmenu_menuitem_property_get_shortcut:
+ * @menuitem: The #DbusmenuMenuitem to get the shortcut off
+ * @key: (out): Location to put the key value
+ * @modifier: (out): Location to put the modifier mask
+ *
+ * This function gets a GTK shortcut as a key and a mask
+ * for use to set the accelerators.
+ */
void
dbusmenu_menuitem_property_get_shortcut (DbusmenuMenuitem * menuitem, guint * key, GdkModifierType * modifier)
{
diff --git a/libdbusmenu-gtk/menuitem.h b/libdbusmenu-gtk/menuitem.h
index 4fc42f9..41f2187 100644
--- a/libdbusmenu-gtk/menuitem.h
+++ b/libdbusmenu-gtk/menuitem.h
@@ -43,8 +43,19 @@ GdkPixbuf * dbusmenu_menuitem_property_get_image (DbusmenuMenuitem * menuitem, c
gboolean dbusmenu_menuitem_property_set_shortcut (DbusmenuMenuitem * menuitem, guint key, GdkModifierType modifier);
gboolean dbusmenu_menuitem_property_set_shortcut_string (DbusmenuMenuitem * menuitem, const gchar * shortcut);
gboolean dbusmenu_menuitem_property_set_shortcut_menuitem (DbusmenuMenuitem * menuitem, const GtkMenuItem * gmi);
-void dbusmenu_menuitem_property_get_shortcut (DbusmenuMenuitem * menuitem, guint * key, GdkModifierType * modifiers);
-
+void dbusmenu_menuitem_property_get_shortcut (DbusmenuMenuitem * menuitem, guint * key, GdkModifierType * modifier);
+
+/**
+ SECTION:menuitem
+ @short_description: Helpers for #DbusmenuMenuitem properties that require a GTK dependency
+ @stability: Unstable
+ @include: libdbusmenu-gtk/menuitem.h
+
+ Some property helpers can't be done without picking up a GTK+
+ dependency. So those sit in libdbusmenu-gtk but have very similar
+ prototypes to the code in libdbusmenu-glib so your code will
+ look consistent, just with the extra depedency.
+*/
G_END_DECLS
#endif
diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c
index 8aa2837..97f7979 100644
--- a/libdbusmenu-gtk/parser.c
+++ b/libdbusmenu-gtk/parser.c
@@ -85,16 +85,16 @@ static void menuitem_notify_cb (GtkWidget * widget,
gpointer data);
/**
- dbusmenu_gtk_parse_menu_structure:
- @widget: A #GtkMenuItem or #GtkMenuShell to turn into a #DbusmenuMenuitem
-
- Goes through the GTK structures and turns them into the appropraite
- Dbusmenu structures along with setting up all the relationships
- between the objects. It also stores the dbusmenu items as a cache
- on the GTK items so that they'll be reused if necissary.
-
- Return value: A dbusmenu item representing the menu structure
-*/
+ * dbusmenu_gtk_parse_menu_structure:
+ * @widget: A #GtkMenuItem or #GtkMenuShell to turn into a #DbusmenuMenuitem
+ *
+ * Goes through the GTK structures and turns them into the appropraite
+ * Dbusmenu structures along with setting up all the relationships
+ * between the objects. It also stores the dbusmenu items as a cache
+ * on the GTK items so that they'll be reused if necissary.
+ *
+ * Return value: (transfer full): A dbusmenu item representing the menu structure
+ */
DbusmenuMenuitem *
dbusmenu_gtk_parse_menu_structure (GtkWidget * widget)
{
@@ -109,56 +109,62 @@ dbusmenu_gtk_parse_menu_structure (GtkWidget * widget)
return recurse.parent;
}
-/* Called when the dbusmenu item that we're keeping around
- is finalized */
static void
-dbusmenu_cache_freed (gpointer data, GObject * obj)
+parse_data_free (gpointer data)
{
- /* If the dbusmenu item is killed we don't need to remove
- the weak ref as well. */
- g_object_steal_data(G_OBJECT(data), CACHED_MENUITEM);
-
- ParserData *pdata = (ParserData *)g_object_get_data(G_OBJECT(obj), PARSER_DATA);
+ ParserData *pdata = (ParserData *)data;
if (pdata != NULL && pdata->label != NULL) {
- g_signal_handlers_disconnect_by_func(pdata->label, G_CALLBACK(label_notify_cb), obj);
+ g_signal_handlers_disconnect_matched(pdata->label, (GSignalMatchType)G_SIGNAL_MATCH_FUNC,
+ 0, 0, NULL, G_CALLBACK(label_notify_cb), NULL);
g_object_remove_weak_pointer(G_OBJECT(pdata->label), (gpointer*)&pdata->label);
}
if (pdata != NULL && pdata->action != NULL) {
- g_signal_handlers_disconnect_by_func(pdata->action, G_CALLBACK(action_notify_cb), obj);
+ g_signal_handlers_disconnect_matched(pdata->action, (GSignalMatchType)G_SIGNAL_MATCH_FUNC,
+ 0, 0, NULL, G_CALLBACK(action_notify_cb), NULL);
g_object_remove_weak_pointer(G_OBJECT(pdata->action), (gpointer*)&pdata->action);
}
if (pdata != NULL && pdata->widget != NULL) {
- g_signal_handlers_disconnect_by_func(pdata->widget, G_CALLBACK(widget_notify_cb), obj);
+ g_signal_handlers_disconnect_matched(pdata->widget, (GSignalMatchType)G_SIGNAL_MATCH_FUNC,
+ 0, 0, NULL, G_CALLBACK(widget_notify_cb), NULL);
g_object_remove_weak_pointer(G_OBJECT(pdata->widget), (gpointer*)&pdata->widget);
}
if (pdata != NULL && pdata->shell != NULL) {
- g_signal_handlers_disconnect_by_func(pdata->shell, G_CALLBACK(child_added_cb), obj);
+ g_signal_handlers_disconnect_matched(pdata->shell, (GSignalMatchType)G_SIGNAL_MATCH_FUNC,
+ 0, 0, NULL, G_CALLBACK(child_added_cb), NULL);
g_object_remove_weak_pointer(G_OBJECT(pdata->shell), (gpointer*)&pdata->shell);
}
if (pdata != NULL && pdata->image != NULL) {
- g_signal_handlers_disconnect_by_func(pdata->image, G_CALLBACK(image_notify_cb), obj);
+ g_signal_handlers_disconnect_matched(pdata->image, (GSignalMatchType)G_SIGNAL_MATCH_FUNC,
+ 0, 0, NULL, G_CALLBACK(image_notify_cb), NULL);
g_object_remove_weak_pointer(G_OBJECT(pdata->image), (gpointer*)&pdata->image);
}
+ g_free(pdata);
+
return;
}
-/* Called if we replace the cache on the object with a new
- dbusmenu menuitem */
+/* Called when the dbusmenu item that we're keeping around
+ is finalized */
static void
-object_cache_freed (gpointer data)
+dbusmenu_item_freed (gpointer data, GObject * obj)
{
- // TODO: make this have access to both data and obj so we can call these
- //if (!G_IS_OBJECT(obj)) return;
- //g_object_weak_unref(G_OBJECT(obj), dbusmenu_cache_freed, data);
- //dbusmenu_cache_freed(data, obj);
+ ParserData *pdata = (ParserData *)g_object_get_data(G_OBJECT(obj), PARSER_DATA);
- g_signal_handlers_disconnect_by_func(gtk_icon_theme_get_default(), G_CALLBACK(theme_changed_cb), data);
+ if (pdata != NULL && pdata->widget != NULL) {
+ g_object_steal_data(G_OBJECT(pdata->widget), CACHED_MENUITEM);
+ }
+}
+
+static void
+widget_freed (gpointer data, GObject * obj)
+{
+ g_signal_handlers_disconnect_by_func(gtk_icon_theme_get_default(), G_CALLBACK(theme_changed_cb), obj);
return;
}
@@ -198,10 +204,13 @@ new_menuitem (GtkWidget * widget)
DbusmenuMenuitem * item = dbusmenu_menuitem_new();
ParserData *pdata = g_new0 (ParserData, 1);
- g_object_set_data_full(G_OBJECT(item), PARSER_DATA, pdata, g_free);
+ g_object_set_data_full(G_OBJECT(item), PARSER_DATA, pdata, parse_data_free);
+
+ g_object_weak_ref(G_OBJECT(item), dbusmenu_item_freed, NULL);
+ g_object_weak_ref(G_OBJECT(widget), widget_freed, NULL);
- g_object_set_data_full(G_OBJECT(widget), CACHED_MENUITEM, item, object_cache_freed);
- g_object_weak_ref(G_OBJECT(item), dbusmenu_cache_freed, widget);
+ pdata->widget = widget;
+ g_object_add_weak_pointer(G_OBJECT (widget), (gpointer*)&pdata->widget);
return item;
}
@@ -237,16 +246,16 @@ parse_menu_structure_helper (GtkWidget * widget, RecurseContext * recurse)
if (recurse->parent == NULL) {
recurse->parent = new_menuitem(widget);
- }
- ParserData *pdata = (ParserData *)g_object_get_data(G_OBJECT(recurse->parent), PARSER_DATA);
+ ParserData *pdata = (ParserData *)g_object_get_data(G_OBJECT(recurse->parent), PARSER_DATA);
- pdata->shell = widget;
- g_signal_connect (G_OBJECT (widget),
- "child-added",
- G_CALLBACK (child_added_cb),
- recurse->parent);
- g_object_add_weak_pointer(G_OBJECT (widget), (gpointer*)&pdata->shell);
+ pdata->shell = widget;
+ g_signal_connect (G_OBJECT (widget),
+ "child-added",
+ G_CALLBACK (child_added_cb),
+ recurse->parent);
+ g_object_add_weak_pointer(G_OBJECT (widget), (gpointer*)&pdata->shell);
+ }
gtk_container_foreach (GTK_CONTAINER (widget),
(GtkCallback)parse_menu_structure_helper,
@@ -294,10 +303,6 @@ parse_menu_structure_helper (GtkWidget * widget, RecurseContext * recurse)
/* Oops, let's tell our parents about us */
if (peek == NULL) {
- /* TODO: Should we set a weak ref on the parent? */
- g_object_set_data (G_OBJECT (thisitem),
- "dbusmenu-parent",
- recurse->parent);
gint pos = get_child_position (widget);
if (pos >= 0)
dbusmenu_menuitem_child_add_position (recurse->parent,
@@ -472,12 +477,10 @@ construct_dbusmenu_for_widget (GtkWidget * widget)
DBUSMENU_MENUITEM_PROP_ENABLED,
sensitive);
- pdata->widget = widget;
g_signal_connect (widget,
"notify",
G_CALLBACK (widget_notify_cb),
mi);
- g_object_add_weak_pointer(G_OBJECT (widget), (gpointer*)&pdata->widget);
return mi;
}
@@ -750,30 +753,34 @@ widget_notify_cb (GtkWidget *widget,
gpointer data)
{
DbusmenuMenuitem *child = (DbusmenuMenuitem *)data;
+ GValue prop_value = {0};
+
+ g_value_init (&prop_value, pspec->value_type);
+ g_object_get_property (G_OBJECT (widget), pspec->name, &prop_value);
if (pspec->name == g_intern_static_string ("sensitive"))
{
dbusmenu_menuitem_property_set_bool (child,
DBUSMENU_MENUITEM_PROP_ENABLED,
- gtk_widget_get_sensitive (widget));
+ g_value_get_boolean (&prop_value));
}
else if (pspec->name == g_intern_static_string ("label"))
{
dbusmenu_menuitem_property_set (child,
DBUSMENU_MENUITEM_PROP_LABEL,
- gtk_menu_item_get_label (GTK_MENU_ITEM (widget)));
+ g_value_get_string (&prop_value));
}
else if (pspec->name == g_intern_static_string ("visible"))
{
dbusmenu_menuitem_property_set_bool (child,
DBUSMENU_MENUITEM_PROP_VISIBLE,
- gtk_widget_get_visible (widget));
+ g_value_get_boolean (&prop_value));
}
else if (pspec->name == g_intern_static_string ("image") ||
pspec->name == g_intern_static_string ("always-show-image"))
{
GtkWidget *image;
- image = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (widget));
+ image = GTK_WIDGET (g_value_get_object (&prop_value));
update_icon (child, GTK_IMAGE (image));
}
else if (pspec->name == g_intern_static_string ("parent"))
@@ -782,13 +789,13 @@ widget_notify_cb (GtkWidget *widget,
* We probably should have added a 'remove' method to the
* UbuntuMenuProxy early on, but it's late in the cycle now.
*/
- if (gtk_widget_get_parent (widget) == NULL)
+ if (GTK_WIDGET (g_value_get_object (&prop_value)) == NULL)
{
g_signal_handlers_disconnect_by_func (widget,
G_CALLBACK (widget_notify_cb),
child);
- DbusmenuMenuitem *parent = g_object_get_data (G_OBJECT (child), "dbusmenu-parent");
+ DbusmenuMenuitem *parent = dbusmenu_menuitem_get_parent (child);
if (DBUSMENU_IS_MENUITEM (parent) && DBUSMENU_IS_MENUITEM (child))
{
@@ -818,7 +825,7 @@ widget_notify_cb (GtkWidget *widget,
recurse.parent = item;
if (item != NULL) {
- GtkWidget * menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
+ GtkWidget * menu = GTK_WIDGET (g_value_get_object (&prop_value));
parse_menu_structure_helper(menu, &recurse);
} else {
/* Note: it would be really odd that we wouldn't have a cached
@@ -827,6 +834,7 @@ widget_notify_cb (GtkWidget *widget,
g_object_unref(G_OBJECT(recurse.parent));
}
}
+ g_value_unset (&prop_value);
}
/* A child item was added to a menu we're watching. Let's try to integrate it. */
diff --git a/libdbusmenu-gtk/parser.h b/libdbusmenu-gtk/parser.h
index a40d709..8187a8e 100644
--- a/libdbusmenu-gtk/parser.h
+++ b/libdbusmenu-gtk/parser.h
@@ -32,6 +32,20 @@ License version 3 and version 2.1 along with this program. If not, see
#include <libdbusmenu-glib/menuitem.h>
#include <gtk/gtk.h>
+G_BEGIN_DECLS
+
DbusmenuMenuitem * dbusmenu_gtk_parse_menu_structure (GtkWidget * widget);
+/**
+ SECTION:parser
+ @short_description: A parser of in-memory GTK menu trees
+ @stability: Unstable
+ @include: libdbusmenu-gtk/parser.h
+
+ The parser will take a GTK menu tree and attach it to a Dbusmenu menu
+ tree. Along with setting up all the signals for updates and destruction.
+ The returned item would be the root item of the given tree.
+*/
+G_END_DECLS
+
#endif /* DBUSMENU_GTK_PARSER_H__ */
diff --git a/libdbusmenu-gtk/serializablemenuitem.c b/libdbusmenu-gtk/serializablemenuitem.c
index cfd864d..29f83a8 100644
--- a/libdbusmenu-gtk/serializablemenuitem.c
+++ b/libdbusmenu-gtk/serializablemenuitem.c
@@ -33,7 +33,7 @@ License version 3 and version 2.1 along with this program. If not, see
#include "client.h"
#include "serializablemenuitem.h"
-/**
+/*
DbusmenuGtkSerializableMenuItemPrivate:
@mi: Menuitem to watch the property changes from
*/
@@ -166,18 +166,18 @@ get_property (GObject * obj, guint id, GValue * value, GParamSpec * pspec)
}
/**
- dbusmenu_gtk_serializable_menu_item_build_menuitem:
- @smi: #DbusmenuGtkSerializableMenuItem to build a #DbusmenuMenuitem mirroring
-
- This function is for menu items that are instanciated from
- GTK and have their properites set using GTK functions. This
- builds a #DbusmenuMenuitem that then has the properties that
- should be sent over the bus to create a new item of this
- type on the other side.
-
- Return value: (transfer full) A #DbusmenuMenuitem who's values will be
- set by this object.
-*/
+ * dbusmenu_gtk_serializable_menu_item_build_menuitem:
+ * @smi: #DbusmenuGtkSerializableMenuItem to build a #DbusmenuMenuitem mirroring
+ *
+ * This function is for menu items that are instanciated from
+ * GTK and have their properites set using GTK functions. This
+ * builds a #DbusmenuMenuitem that then has the properties that
+ * should be sent over the bus to create a new item of this
+ * type on the other side.
+ *
+ * Return value: (transfer full): A #DbusmenuMenuitem who's values will be
+ * set by this object.
+ */
DbusmenuMenuitem *
dbusmenu_gtk_serializable_menu_item_build_menuitem (DbusmenuGtkSerializableMenuItem * smi)
{
@@ -225,15 +225,15 @@ type_destroy_handler (DbusmenuClient * client, const gchar * type, gpointer user
}
/**
- dbusmenu_gtk_serializable_menu_item_register_to_client:
- @client: #DbusmenuClient that we should register a type at.
- @item_type: The #GType of a class that is a subclass of #DbusmenuGtkSerializableMenuItem
-
- Registers a generic handler for dealing with all subclasses of
- #DbusmenuGtkSerializableMenuItem. This handler responds to the callback,
- creates a new object and attaches it to the appropriate #DbusmenuMenuitem
- object.
-*/
+ * dbusmenu_gtk_serializable_menu_item_register_to_client:
+ * @client: #DbusmenuClient that we should register a type at.
+ * @item_type: The #GType of a class that is a subclass of #DbusmenuGtkSerializableMenuItem
+ *
+ * Registers a generic handler for dealing with all subclasses of
+ * #DbusmenuGtkSerializableMenuItem. This handler responds to the callback,
+ * creates a new object and attaches it to the appropriate #DbusmenuMenuitem
+ * object.
+ */
void
dbusmenu_gtk_serializable_menu_item_register_to_client (DbusmenuClient * client, GType item_type)
{
@@ -265,16 +265,16 @@ dbusmenu_gtk_serializable_menu_item_register_to_client (DbusmenuClient * client,
}
/**
- dbusmenu_gtk_serializable_menu_item_set_menuitem:
- @smi: #DbusmenuGtkSerializableMenuItem to set the @DbusmenuGtkSerializableMenuItem::dbusmenu-menuitem of
- @mi: Menuitem to get the properties from
-
- This function is used on the server side to signal to the object
- that it should get its' property change events from @mi instead
- of expecting calls to its' API. A call to this function sets the
- property and subclasses should listen to the notify signal to
- pick up this property being set.
-*/
+ * dbusmenu_gtk_serializable_menu_item_set_menuitem:
+ * @smi: #DbusmenuGtkSerializableMenuItem to set the @DbusmenuGtkSerializableMenuItem::dbusmenu-menuitem of
+ * @mi: Menuitem to get the properties from
+ *
+ * This function is used on the server side to signal to the object
+ * that it should get its' property change events from @mi instead
+ * of expecting calls to its' API. A call to this function sets the
+ * property and subclasses should listen to the notify signal to
+ * pick up this property being set.
+ */
void
dbusmenu_gtk_serializable_menu_item_set_menuitem (DbusmenuGtkSerializableMenuItem * smi, DbusmenuMenuitem * mi)
{
diff --git a/libdbusmenu-gtk/serializablemenuitem.h b/libdbusmenu-gtk/serializablemenuitem.h
index db28a24..9bea89f 100644
--- a/libdbusmenu-gtk/serializablemenuitem.h
+++ b/libdbusmenu-gtk/serializablemenuitem.h
@@ -44,6 +44,11 @@ G_BEGIN_DECLS
#define DBUSMENU_IS_GTK_SERIALIZABLE_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DBUSMENU_TYPE_GTK_SERIALIZABLE_MENU_ITEM))
#define DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DBUSMENU_TYPE_GTK_SERIALIZABLE_MENU_ITEM, DbusmenuGtkSerializableMenuItemClass))
+/**
+ * DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM:
+ *
+ * String to access property #DbusmenuGtkSerializableMenuItem:dbusmenu-menuitem
+ */
#define DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM_PROP_MENUITEM "dbusmenu-menuitem"
typedef struct _DbusmenuGtkSerializableMenuItem DbusmenuGtkSerializableMenuItem;
@@ -62,6 +67,8 @@ typedef struct _DbusmenuGtkSerializableMenuItemPrivate DbusmenuGtkSerializableMe
@_dbusmenu_gtk_serializable_menu_item_reserved4: Reserved for future use.
@_dbusmenu_gtk_serializable_menu_item_reserved5: Reserved for future use.
@_dbusmenu_gtk_serializable_menu_item_reserved6: Reserved for future use.
+
+ Signals and functions for #DbusmenuGtkSerializableMenuItem.
*/
struct _DbusmenuGtkSerializableMenuItemClass {
GtkMenuItemClass parent_class;
@@ -110,6 +117,17 @@ DbusmenuMenuitem * dbusmenu_gtk_serializable_menu_item_build_menuitem (Dbusmenu
void dbusmenu_gtk_serializable_menu_item_register_to_client (DbusmenuClient * client, GType item_type);
void dbusmenu_gtk_serializable_menu_item_set_menuitem (DbusmenuGtkSerializableMenuItem * smi, DbusmenuMenuitem * mi);
+/**
+ SECTION:serializablemenuitem
+ @short_description: A way to build #GtkMenuItems that can be sent over Dbusmenu
+ @stability: Unstable
+ @include: libdbusmenu-gtk/serializablemenuitem.h
+
+ Menuitems can subclass from this instead of #GtkMenuItem and
+ by providing the appropriate functions Dbusmenu will be able
+ to parse them and send them over the bus.
+*/
+
G_END_DECLS
#endif
diff --git a/po/POTFILES.in b/po/POTFILES.in
index e69de29..d6ac240 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -0,0 +1,2 @@
+libdbusmenu-glib/defaults.c
+libdbusmenu-glib/server.c
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 32c8437..61b3e69 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -3,6 +3,7 @@ DBUS_RUNNER=dbus-test-runner
CLEANFILES=
DISTCLEANFILES=
+EXTRA_DIST =
TESTS = \
test-glib-objects-test \
@@ -16,9 +17,11 @@ TESTS = \
test-gtk-objects-test \
test-gtk-label \
test-gtk-shortcut \
+ test-gtk-shortcut-python \
test-gtk-reorder \
test-gtk-submenu \
- test-gtk-parser-test
+ test-gtk-parser-test \
+ test-glib-simple-items.py
check_PROGRAMS = \
glib-server-nomenu \
@@ -49,6 +52,9 @@ check_PROGRAMS = \
XVFB_RUN=". $(srcdir)/run-xvfb.sh"
+# for the GI tests, prefer/use the typelibs from the local build tree
+TESTS_ENVIRONMENT = env GI_TYPELIB_PATH=$(top_builddir)/libdbusmenu-glib:$(top_builddir)/libdbusmenu-gtk:$(GI_TYPELIB_PATH)
+
######################
# JSON Loader lib
######################
@@ -361,6 +367,8 @@ test_glib_simple_items_LDADD = \
../libdbusmenu-glib/libdbusmenu-glib.la \
$(DBUSMENUGLIB_LIBS)
+EXTRA_DIST += test-glib-simple-items.py
+
######################
# Test GTK Object
######################
@@ -503,6 +511,19 @@ test_gtk_shortcut_client_LDADD = \
$(DBUSMENUTESTS_LIBS)
#########################
+# Test GTK Shortcut Python
+#########################
+
+test-gtk-shortcut-python: test-gtk-shortcut-server test-gtk-shortcut-client.py Makefile.am
+ @echo "#!/bin/bash" > $@
+ @echo $(XVFB_RUN) >> $@
+ @echo $(DBUS_RUNNER) --task $(srcdir)/test-gtk-shortcut-client.py --task-name Client --task ./test-gtk-shortcut-server --task-name Server --ignore-return >> $@
+ @chmod +x $@
+
+EXTRA_DIST += test-gtk-shortcut-client.py
+CLEANFILES += test-gtk-shortcut-client.pyc
+
+#########################
# Test GTK Reorder
#########################
@@ -596,7 +617,7 @@ jsondir = $(datadir)/${PACKAGE}/json/
json_DATA = \
test-gtk-label.json
-EXTRA_DIST = \
+EXTRA_DIST += \
$(examples_DATA) \
run-xvfb.sh \
$(json_DATA) \
@@ -629,5 +650,5 @@ distclean-local:
-rm -rf $(builddir)/mago.results
DISTCLEANFILES += \
- $(TESTS)
+ $(filter-out %.py, $(TESTS))
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 160d0ae..1645591 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -40,7 +40,8 @@ TESTS = test-glib-objects-test test-glib-events test-glib-layout \
test-glib-properties test-glib-proxy \
test-glib-simple-items$(EXEEXT) test-glib-submenu test-json \
test-gtk-objects-test test-gtk-label test-gtk-shortcut \
- test-gtk-reorder test-gtk-submenu test-gtk-parser-test
+ test-gtk-shortcut-python test-gtk-reorder test-gtk-submenu \
+ test-gtk-parser-test test-glib-simple-items.py
check_PROGRAMS = glib-server-nomenu$(EXEEXT) \
test-glib-objects$(EXEEXT) test-glib-events-client$(EXEEXT) \
test-glib-events-server$(EXEEXT) \
@@ -492,6 +493,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
@@ -622,12 +624,36 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
DBUS_RUNNER = dbus-test-runner
-CLEANFILES = test-json-01.output.json \
+CLEANFILES = test-json-01.output.json test-gtk-shortcut-client.pyc \
dbusmenu-gtk/mago_tests/dbusmenu.pyc
DISTCLEANFILES = $(OBJECT_XML_REPORT) $(GTK_OBJECT_XML_REPORT) \
- $(GTK_PARSER_XML_REPORT) $(TESTS)
+ $(GTK_PARSER_XML_REPORT) $(filter-out %.py, $(TESTS))
+EXTRA_DIST = test-glib-simple-items.py test-gtk-shortcut-client.py \
+ $(examples_DATA) run-xvfb.sh $(json_DATA) test-gtk-objects.jpg \
+ dbusmenu-gtk/dbusMenuTest dbusmenu-gtk/mago_tests/dbusmenu.xml \
+ dbusmenu-gtk/mago_tests/dbusmenu.py \
+ dbusmenu-gtk/mago_tests/data/blank_label_2levels.json \
+ dbusmenu-gtk/mago_tests/data/blank_label.json \
+ dbusmenu-gtk/mago_tests/data/blank_submenus.json \
+ dbusmenu-gtk/mago_tests/data/dynamic.json \
+ dbusmenu-gtk/mago_tests/data/long_label.json \
+ dbusmenu-gtk/mago_tests/data/no_id.json \
+ dbusmenu-gtk/mago_tests/data/no_label.json \
+ dbusmenu-gtk/mago_tests/data/sameid_submenus_diff_sizes.json \
+ dbusmenu-gtk/mago_tests/data/sameid_submenus.json \
+ dbusmenu-gtk/mago_tests/data/sameid_top_and_submenus.json \
+ dbusmenu-gtk/mago_tests/data/sameid_topmenu.json \
+ dbusmenu-gtk/mago_tests/data/several_submenus.json \
+ dbusmenu-gtk/mago_tests/data/several_submenus_recursive.json \
+ dbusmenu-gtk/mago_tests/data/several_submenus_utf8.json \
+ dbusmenu-gtk/mago_tests/data/static.json \
+ dbusmenu-gtk/mago_tests/data/test-gtk-label.json \
+ test-json-01.json
XVFB_RUN = ". $(srcdir)/run-xvfb.sh"
+# for the GI tests, prefer/use the typelibs from the local build tree
+TESTS_ENVIRONMENT = env GI_TYPELIB_PATH=$(top_builddir)/libdbusmenu-glib:$(top_builddir)/libdbusmenu-gtk:$(GI_TYPELIB_PATH)
+
######################
# JSON Loader lib
######################
@@ -1025,32 +1051,6 @@ jsondir = $(datadir)/${PACKAGE}/json/
json_DATA = \
test-gtk-label.json
-EXTRA_DIST = \
- $(examples_DATA) \
- run-xvfb.sh \
- $(json_DATA) \
- test-gtk-objects.jpg \
- dbusmenu-gtk/dbusMenuTest \
- dbusmenu-gtk/mago_tests/dbusmenu.xml \
- dbusmenu-gtk/mago_tests/dbusmenu.py \
- dbusmenu-gtk/mago_tests/data/blank_label_2levels.json \
- dbusmenu-gtk/mago_tests/data/blank_label.json \
- dbusmenu-gtk/mago_tests/data/blank_submenus.json \
- dbusmenu-gtk/mago_tests/data/dynamic.json \
- dbusmenu-gtk/mago_tests/data/long_label.json \
- dbusmenu-gtk/mago_tests/data/no_id.json \
- dbusmenu-gtk/mago_tests/data/no_label.json \
- dbusmenu-gtk/mago_tests/data/sameid_submenus_diff_sizes.json \
- dbusmenu-gtk/mago_tests/data/sameid_submenus.json \
- dbusmenu-gtk/mago_tests/data/sameid_top_and_submenus.json \
- dbusmenu-gtk/mago_tests/data/sameid_topmenu.json \
- dbusmenu-gtk/mago_tests/data/several_submenus.json \
- dbusmenu-gtk/mago_tests/data/several_submenus_recursive.json \
- dbusmenu-gtk/mago_tests/data/several_submenus_utf8.json \
- dbusmenu-gtk/mago_tests/data/static.json \
- dbusmenu-gtk/mago_tests/data/test-gtk-label.json \
- test-json-01.json
-
all: all-am
.SUFFIXES:
@@ -2164,6 +2164,16 @@ test-gtk-shortcut: test-gtk-shortcut-client test-gtk-shortcut-server Makefile.am
@chmod +x $@
#########################
+# Test GTK Shortcut Python
+#########################
+
+test-gtk-shortcut-python: test-gtk-shortcut-server test-gtk-shortcut-client.py Makefile.am
+ @echo "#!/bin/bash" > $@
+ @echo $(XVFB_RUN) >> $@
+ @echo $(DBUS_RUNNER) --task $(srcdir)/test-gtk-shortcut-client.py --task-name Client --task ./test-gtk-shortcut-server --task-name Server --ignore-return >> $@
+ @chmod +x $@
+
+#########################
# Test GTK Reorder
#########################
diff --git a/tests/test-glib-simple-items.py b/tests/test-glib-simple-items.py
new file mode 100755
index 0000000..d7ad7d7
--- /dev/null
+++ b/tests/test-glib-simple-items.py
@@ -0,0 +1,35 @@
+#!/usr/bin/python
+# This is the Python GI version of test-glib-simple-items.c
+
+import gobject
+from gi.repository import Dbusmenu
+
+dummies = ['Bob', 'Jim', 'Alvin', 'Mary']
+
+def dummy_users(root):
+ count = 0
+ for user in dummies:
+ mi = Dbusmenu.Menuitem()
+ print 'Creating item: %d %s' % (mi.get_id(), user)
+ print '\tRoot ID:', root.get_id()
+ mi.property_set('label', user)
+ root.child_add_position(mi, count)
+ assert mi.property_get('label') == user
+ count += 1
+
+def quititall(mainloop):
+ mainloop.quit()
+ return False
+
+# main
+
+server = Dbusmenu.Server.new('/test/object')
+root_menuitem = Dbusmenu.Menuitem()
+server.set_root(root_menuitem)
+print 'Root ID:', root_menuitem.get_id()
+
+dummy_users(root_menuitem)
+
+mainloop = gobject.MainLoop()
+gobject.timeout_add_seconds(1, quititall, mainloop)
+mainloop.run()
diff --git a/tests/test-gtk-label.json b/tests/test-gtk-label.json
index 755bd44..0189fbe 100644
--- a/tests/test-gtk-label.json
+++ b/tests/test-gtk-label.json
@@ -45,7 +45,7 @@
"label": "value27"},
{"id": 28, "type": "standard",
"label": "value28"},
- {"id": 29, "type": "standard", "visible": "false",
+ {"id": 29, "type": "standard", "visible": false,
"label": "value29"}
]
},
@@ -54,45 +54,45 @@
"submenu": [
{"id": 40,
"type": "standard",
- "enabled": "true",
+ "enabled": true,
"label": "value40"},
{"id": 41,
"type": "standard",
- "enabled": "false",
+ "enabled": false,
"label": "value41"},
{"id": 42,
"type": "standard",
- "enabled": "true",
+ "enabled": true,
"label": "value42"},
{"id": 43,
"type": "standard",
- "enabled": "false",
+ "enabled": false,
"label": "value43"},
{"id": 44,
"type": "standard",
- "enabled": "true",
+ "enabled": true,
"label": "value44"},
{"id": 45,
"type": "standard",
- "enabled": "false",
+ "enabled": false,
"label": "value45"},
{"id": 46,
"type": "standard",
- "enabled": "true",
+ "enabled": true,
"label": "value46"},
{"id": 47,
"type": "standard",
- "enabled": "false",
+ "enabled": false,
"label": "value47"},
{"id": 48,
"type": "standard",
- "enabled": "true",
+ "enabled": true,
"label": "value48"},
{"id": 49,
"type": "standard",
- "visible": "false",
- "enabled": "false",
- "label": "value49"}
+ "visible": false,
+ "enabled": false,
+ "label": "value49 - hidden"}
]
},
{"id": 3, "type": "standard",
diff --git a/tests/test-gtk-shortcut-client.py b/tests/test-gtk-shortcut-client.py
new file mode 100755
index 0000000..885d227
--- /dev/null
+++ b/tests/test-gtk-shortcut-client.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+
+# A test for libdbusmenu to ensure its quality. This is the Python GI version
+# of test-gtk-shortcut-client.c
+#
+# Copyright 2011 Canonical Ltd.
+# Authors:
+# Martin Pitt <martin.pitt@ubuntu.com>
+
+import sys
+import gobject
+from gi.repository import Gtk, DbusmenuGtk
+Gtk.require_version('2.0')
+
+passed = True
+main_loop = gobject.MainLoop()
+
+def timer_func(data):
+ passed = True
+ main_loop.quit()
+ return False
+
+# main
+print 'Building Window'
+window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL)
+menubar = Gtk.MenuBar()
+menuitem = Gtk.MenuItem(label='Test')
+
+dmenu = DbusmenuGtk.Menu(dbus_name='glib.label.test', dbus_object='/org/test')
+dclient = dmenu.get_client()
+agroup = Gtk.AccelGroup()
+dclient.set_accel_group(agroup)
+
+menuitem.set_submenu(dmenu)
+menuitem.show()
+menubar.append(menuitem)
+menubar.show()
+window.add(menubar)
+window.set_title('libdbusmenu-gtk test')
+window.add_accel_group(agroup)
+window.show_all()
+
+gobject.timeout_add_seconds(10, timer_func, window)
+
+print 'Entering Mainloop'
+main_loop.run()
+
+if passed:
+ print 'Quiting'
+else:
+ print "Quiting as we're a failure"
+ sys.exit(1)
diff --git a/tests/test-json-01.json b/tests/test-json-01.json
index b626d20..e3b1e17 100644
--- a/tests/test-json-01.json
+++ b/tests/test-json-01.json
@@ -5,30 +5,22 @@
{
"id": 5,
"children-display": 'submenu',
- "enabled": true,
"label": 'File',
- "visible": true,
"submenu": [
{
"id": 6,
- "enabled": true,
"label": 'Quit',
- "shortcut": [['Control', 'q']],
- "visible": true
+ "shortcut": [['Control', 'q']]
},
{
"id": 7,
- "enabled": true,
"label": 'Close all',
- "shortcut": [['Control', 'Shift', 'w']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'w']]
},
{
"id": 8,
- "enabled": true,
"label": 'Close',
- "shortcut": [['Control', 'w']],
- "visible": true
+ "shortcut": [['Control', 'w']]
},
{
"id": 9,
@@ -36,22 +28,16 @@
},
{
"id": 10,
- "enabled": true,
- "label": 'Send by Email...',
- "visible": true
+ "label": 'Send by Email...'
},
{
"id": 11,
- "enabled": true,
"label": 'Print...',
- "shortcut": [['Control', 'p']],
- "visible": true
+ "shortcut": [['Control', 'p']]
},
{
"id": 12,
- "enabled": true,
- "label": 'Page Setup',
- "visible": true
+ "label": 'Page Setup'
},
{
"id": 13,
@@ -59,35 +45,25 @@
},
{
"id": 14,
- "enabled": true,
- "label": 'Revert',
- "visible": true
+ "label": 'Revert'
},
{
"id": 15,
- "enabled": true,
- "label": 'Save as Template...',
- "visible": true
+ "label": 'Save as Template...'
},
{
"id": 16,
- "enabled": true,
- "label": 'Save a Copy...',
- "visible": true
+ "label": 'Save a Copy...'
},
{
"id": 17,
- "enabled": true,
"label": 'Save As...',
- "shortcut": [['Control', 'Shift', 's']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 's']]
},
{
"id": 18,
- "enabled": true,
"label": 'Save',
- "shortcut": [['Control', 's']],
- "visible": true
+ "shortcut": [['Control', 's']]
},
{
"id": 19,
@@ -96,15 +72,11 @@
{
"id": 20,
"children-display": 'submenu',
- "enabled": true,
"label": 'Open Recent',
- "visible": true,
"submenu": [
{
"id": 21,
- "enabled": true,
- "label": 'Document History',
- "visible": true
+ "label": 'Document History'
},
{
"id": 22,
@@ -112,168 +84,118 @@
},
{
"id": 23,
- "enabled": true,
"label": 'giggity.jpg',
- "shortcut": [['Control', '2']],
- "visible": true
+ "shortcut": [['Control', '2']]
},
{
"id": 24,
- "enabled": true,
"label": 'Icon Height.svg',
- "shortcut": [['Control', '1']],
- "visible": true
+ "shortcut": [['Control', '1']]
}
]
},
{
"id": 25,
- "enabled": true,
- "label": 'Open Location...',
- "visible": true
+ "label": 'Open Location...'
},
{
"id": 26,
- "enabled": true,
"label": 'Open as Layers...',
- "shortcut": [['Control', 'Alt', 'o']],
- "visible": true
+ "shortcut": [['Control', 'Alt', 'o']]
},
{
"id": 27,
- "enabled": true,
"label": 'Open...',
- "shortcut": [['Control', 'o']],
- "visible": true
+ "shortcut": [['Control', 'o']]
},
{
"id": 28,
"children-display": 'submenu',
- "enabled": true,
"label": 'Create',
- "visible": true,
"submenu": [
{
"id": 29,
"children-display": 'submenu',
- "enabled": true,
"label": 'Web Page Themes',
- "visible": true,
"submenu": [
{
"id": 30,
"children-display": 'submenu',
- "enabled": true,
"label": 'Classic.Gimp.Org',
- "visible": true,
"submenu": [
{
"id": 31,
- "enabled": true,
- "label": 'Tube Sub-Sub-Button Label...',
- "visible": true
+ "label": 'Tube Sub-Sub-Button Label...'
},
{
"id": 32,
- "enabled": true,
- "label": 'Tube Sub-Button Label...',
- "visible": true
+ "label": 'Tube Sub-Button Label...'
},
{
"id": 33,
- "enabled": true,
- "label": 'Tube Button Label...',
- "visible": true
+ "label": 'Tube Button Label...'
},
{
"id": 34,
- "enabled": true,
- "label": 'Small Header...',
- "visible": true
+ "label": 'Small Header...'
},
{
"id": 35,
- "enabled": true,
- "label": 'General Tube Labels...',
- "visible": true
+ "label": 'General Tube Labels...'
},
{
"id": 36,
- "enabled": true,
- "label": 'Big Header...',
- "visible": true
+ "label": 'Big Header...'
}
]
},
{
"id": 37,
"children-display": 'submenu',
- "enabled": true,
"label": 'Beveled Pattern',
- "visible": true,
"submenu": [
{
"id": 38,
- "enabled": true,
- "label": 'Hrule...',
- "visible": true
+ "label": 'Hrule...'
},
{
"id": 39,
- "enabled": true,
- "label": 'Heading...',
- "visible": true
+ "label": 'Heading...'
},
{
"id": 40,
- "enabled": true,
- "label": 'Button...',
- "visible": true
+ "label": 'Button...'
},
{
"id": 41,
- "enabled": true,
- "label": 'Bullet...',
- "visible": true
+ "label": 'Bullet...'
},
{
"id": 42,
- "enabled": true,
- "label": 'Arrow...',
- "visible": true
+ "label": 'Arrow...'
}
]
},
{
"id": 43,
"children-display": 'submenu',
- "enabled": true,
"label": 'Alien Glow',
- "visible": true,
"submenu": [
{
"id": 44,
- "enabled": true,
- "label": 'Hrule...',
- "visible": true
+ "label": 'Hrule...'
},
{
"id": 45,
- "enabled": true,
- "label": 'Button...',
- "visible": true
+ "label": 'Button...'
},
{
"id": 46,
- "enabled": true,
- "label": 'Bullet...',
- "visible": true
+ "label": 'Bullet...'
},
{
"id": 47,
- "enabled": true,
- "label": 'Arrow...',
- "visible": true
+ "label": 'Arrow...'
}
]
}
@@ -282,255 +204,173 @@
{
"id": 48,
"children-display": 'submenu',
- "enabled": true,
"label": 'Patterns',
- "visible": true,
"submenu": [
{
"id": 49,
- "enabled": true,
- "label": 'Truchet...',
- "visible": true
+ "label": 'Truchet...'
},
{
"id": 50,
- "enabled": true,
- "label": 'Swirly...',
- "visible": true
+ "label": 'Swirly...'
},
{
"id": 51,
- "enabled": true,
- "label": 'Swirl-Tile...',
- "visible": true
+ "label": 'Swirl-Tile...'
},
{
"id": 52,
- "enabled": true,
- "label": 'Render Map...',
- "visible": true
+ "label": 'Render Map...'
},
{
"id": 53,
- "enabled": true,
- "label": 'Land...',
- "visible": true
+ "label": 'Land...'
},
{
"id": 54,
- "enabled": true,
- "label": 'Flatland...',
- "visible": true
+ "label": 'Flatland...'
},
{
"id": 55,
- "enabled": true,
- "label": 'Camouflage...',
- "visible": true
+ "label": 'Camouflage...'
},
{
"id": 56,
- "enabled": true,
- "label": '3D Truchet...',
- "visible": true
+ "label": '3D Truchet...'
}
]
},
{
"id": 57,
"children-display": 'submenu',
- "enabled": true,
"label": 'Logos',
- "visible": true,
"submenu": [
{
"id": 58,
- "enabled": true,
- "label": 'Web Title Header...',
- "visible": true
+ "label": 'Web Title Header...'
},
{
"id": 59,
- "enabled": true,
- "label": 'Textured...',
- "visible": true
+ "label": 'Textured...'
},
{
"id": 60,
- "enabled": true,
- "label": 'Text Circle...',
- "visible": true
+ "label": 'Text Circle...'
},
{
"id": 61,
- "enabled": true,
- "label": 'Starscape...',
- "visible": true
+ "label": 'Starscape...'
},
{
"id": 62,
- "enabled": true,
- "label": 'Speed Text...',
- "visible": true
+ "label": 'Speed Text...'
},
{
"id": 63,
- "enabled": true,
- "label": 'SOTA Chrome...',
- "visible": true
+ "label": 'SOTA Chrome...'
},
{
"id": 64,
- "enabled": true,
- "label": 'Particle Trace...',
- "visible": true
+ "label": 'Particle Trace...'
},
{
"id": 65,
- "enabled": true,
- "label": 'Newsprint Text...',
- "visible": true
+ "label": 'Newsprint Text...'
},
{
"id": 66,
- "enabled": true,
- "label": 'Neon...',
- "visible": true
+ "label": 'Neon...'
},
{
"id": 67,
- "enabled": true,
- "label": 'Imigre-26...',
- "visible": true
+ "label": 'Imigre-26...'
},
{
"id": 68,
- "enabled": true,
- "label": 'Gradient Bevel...',
- "visible": true
+ "label": 'Gradient Bevel...'
},
{
"id": 69,
- "enabled": true,
- "label": 'Glowing Hot...',
- "visible": true
+ "label": 'Glowing Hot...'
},
{
"id": 70,
- "enabled": true,
- "label": 'Glossy...',
- "visible": true
+ "label": 'Glossy...'
},
{
"id": 71,
- "enabled": true,
- "label": 'Frosty...',
- "visible": true
+ "label": 'Frosty...'
},
{
"id": 72,
- "enabled": true,
- "label": 'Crystal...',
- "visible": true
+ "label": 'Crystal...'
},
{
"id": 73,
- "enabled": true,
- "label": 'Cool Metal...',
- "visible": true
+ "label": 'Cool Metal...'
},
{
"id": 74,
- "enabled": true,
- "label": 'Comic Book...',
- "visible": true
+ "label": 'Comic Book...'
},
{
"id": 75,
- "enabled": true,
- "label": 'Chrome...',
- "visible": true
+ "label": 'Chrome...'
},
{
"id": 76,
- "enabled": true,
- "label": 'Chip Away...',
- "visible": true
+ "label": 'Chip Away...'
},
{
"id": 77,
- "enabled": true,
- "label": 'Chalk...',
- "visible": true
+ "label": 'Chalk...'
},
{
"id": 78,
- "enabled": true,
- "label": 'Carved...',
- "visible": true
+ "label": 'Carved...'
},
{
"id": 79,
- "enabled": true,
- "label": 'Bovination...',
- "visible": true
+ "label": 'Bovination...'
},
{
"id": 80,
- "enabled": true,
- "label": 'Blended...',
- "visible": true
+ "label": 'Blended...'
},
{
"id": 81,
- "enabled": true,
- "label": 'Basic I...',
- "visible": true
+ "label": 'Basic I...'
},
{
"id": 82,
- "enabled": true,
- "label": 'Basic II...',
- "visible": true
+ "label": 'Basic II...'
},
{
"id": 83,
- "enabled": true,
- "label": 'Alien Neon...',
- "visible": true
+ "label": 'Alien Neon...'
},
{
"id": 84,
- "enabled": true,
- "label": 'Alien Glow...',
- "visible": true
+ "label": 'Alien Glow...'
},
{
"id": 85,
- "enabled": true,
- "label": '3D Outline...',
- "visible": true
+ "label": '3D Outline...'
}
]
},
{
"id": 86,
"children-display": 'submenu',
- "enabled": true,
"label": 'Buttons',
- "visible": true,
"submenu": [
{
"id": 87,
- "enabled": true,
- "label": 'Simple Beveled Button...',
- "visible": true
+ "label": 'Simple Beveled Button...'
},
{
"id": 88,
- "enabled": true,
- "label": 'Round Button...',
- "visible": true
+ "label": 'Round Button...'
}
]
},
@@ -541,72 +381,53 @@
{
"id": 90,
"children-display": 'submenu',
- "enabled": true,
"label": 'xscanimage',
- "visible": true,
"submenu": [
{
"id": 91,
"enabled": false,
- "label": 'Device dialog...',
- "visible": true
+ "label": 'Device dialog...'
}
]
},
{
"id": 92,
- "enabled": true,
- "label": 'Screenshot...',
- "visible": true
+ "label": 'Screenshot...'
},
{
"id": 93,
- "enabled": true,
"label": 'From Clipboard',
- "shortcut": [['Control', 'Shift', 'v']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'v']]
}
]
},
{
"id": 94,
- "enabled": true,
"label": 'New...',
- "shortcut": [['Control', 'n']],
- "visible": true
+ "shortcut": [['Control', 'n']]
}
]
},
{
"id": 95,
"children-display": 'submenu',
- "enabled": true,
"label": 'Edit',
- "visible": true,
"submenu": [
{
"id": 96,
- "enabled": true,
- "label": 'Units',
- "visible": true
+ "label": 'Units'
},
{
"id": 97,
- "enabled": true,
- "label": 'Modules',
- "visible": true
+ "label": 'Modules'
},
{
"id": 98,
- "enabled": true,
- "label": 'Keyboard Shortcuts',
- "visible": true
+ "label": 'Keyboard Shortcuts'
},
{
"id": 99,
- "enabled": true,
- "label": 'Preferences',
- "visible": true
+ "label": 'Preferences'
},
{
"id": 100,
@@ -615,42 +436,32 @@
{
"id": 101,
"enabled": false,
- "label": 'Stroke Path...',
- "visible": true
+ "label": 'Stroke Path...'
},
{
"id": 102,
"enabled": false,
- "label": 'Stroke Selection...',
- "visible": true
+ "label": 'Stroke Selection...'
},
{
"id": 103,
- "enabled": true,
"label": 'Fill with Pattern',
- "shortcut": [['Control', 'semicolon']],
- "visible": true
+ "shortcut": [['Control', 'semicolon']]
},
{
"id": 104,
- "enabled": true,
"label": 'Fill with BG Color',
- "shortcut": [['Control', 'period']],
- "visible": true
+ "shortcut": [['Control', 'period']]
},
{
"id": 105,
- "enabled": true,
"label": 'Fill with FG Color',
- "shortcut": [['Control', 'comma']],
- "visible": true
+ "shortcut": [['Control', 'comma']]
},
{
"id": 106,
- "enabled": true,
"label": 'Clear',
- "shortcut": [['Delete']],
- "visible": true
+ "shortcut": [['Delete']]
},
{
"id": 107,
@@ -659,103 +470,73 @@
{
"id": 108,
"children-display": 'submenu',
- "enabled": true,
"label": 'Buffer',
- "visible": true,
"submenu": [
{
"id": 109,
- "enabled": true,
- "label": 'Paste Named...',
- "visible": true
+ "label": 'Paste Named...'
},
{
"id": 110,
- "enabled": true,
- "label": 'Copy Visible Named...',
- "visible": true
+ "label": 'Copy Visible Named...'
},
{
"id": 111,
- "enabled": true,
- "label": 'Copy Named...',
- "visible": true
+ "label": 'Copy Named...'
},
{
"id": 112,
- "enabled": true,
- "label": 'Cut Named...',
- "visible": true
+ "label": 'Cut Named...'
}
]
},
{
"id": 113,
"children-display": 'submenu',
- "enabled": true,
"label": 'Paste as',
- "visible": true,
"submenu": [
{
"id": 114,
- "enabled": true,
- "label": 'New Pattern...',
- "visible": true
+ "label": 'New Pattern...'
},
{
"id": 115,
- "enabled": true,
- "label": 'New Brush...',
- "visible": true
+ "label": 'New Brush...'
},
{
"id": 116,
- "enabled": true,
- "label": 'New Layer',
- "visible": true
+ "label": 'New Layer'
},
{
"id": 117,
- "enabled": true,
"label": 'New Image',
- "shortcut": [['Control', 'Shift', 'v']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'v']]
}
]
},
{
"id": 118,
- "enabled": true,
- "label": 'Paste Into',
- "visible": true
+ "label": 'Paste Into'
},
{
"id": 119,
- "enabled": true,
"label": 'Paste',
- "shortcut": [['Control', 'v']],
- "visible": true
+ "shortcut": [['Control', 'v']]
},
{
"id": 120,
- "enabled": true,
"label": 'Copy Visible',
- "shortcut": [['Control', 'Shift', 'c']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'c']]
},
{
"id": 121,
- "enabled": true,
"label": 'Copy',
- "shortcut": [['Control', 'c']],
- "visible": true
+ "shortcut": [['Control', 'c']]
},
{
"id": 122,
- "enabled": true,
"label": 'Cut',
- "shortcut": [['Control', 'x']],
- "visible": true
+ "shortcut": [['Control', 'x']]
},
{
"id": 123,
@@ -763,59 +544,47 @@
},
{
"id": 124,
- "enabled": true,
- "label": 'Undo History',
- "visible": true
+ "label": 'Undo History'
},
{
"id": 3,
"enabled": false,
- "label": '_Fade...',
- "visible": true
+ "label": '_Fade...'
},
{
"id": 2,
"enabled": false,
"label": '_Redo',
- "shortcut": [['Control', 'y']],
- "visible": true
+ "shortcut": [['Control', 'y']]
},
{
"id": 1,
"enabled": false,
"label": '_Undo',
- "shortcut": [['Control', 'z']],
- "visible": true
+ "shortcut": [['Control', 'z']]
}
]
},
{
"id": 125,
"children-display": 'submenu',
- "enabled": true,
"label": 'Select',
- "visible": true,
"submenu": [
{
"id": 126,
"enabled": false,
- "label": 'To Path',
- "visible": true
+ "label": 'To Path'
},
{
"id": 127,
- "enabled": true,
- "label": 'Save to Channel',
- "visible": true
+ "label": 'Save to Channel'
},
{
"id": 128,
- "enabled": true,
"label": 'Toggle Quick Mask',
"shortcut": [['Shift', 'q']],
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 129,
@@ -823,39 +592,32 @@
},
{
"id": 130,
- "enabled": true,
- "label": 'Distort...',
- "visible": true
+ "label": 'Distort...'
},
{
"id": 131,
"enabled": false,
- "label": 'Border...',
- "visible": true
+ "label": 'Border...'
},
{
"id": 132,
"enabled": false,
- "label": 'Grow...',
- "visible": true
+ "label": 'Grow...'
},
{
"id": 133,
"enabled": false,
- "label": 'Shrink...',
- "visible": true
+ "label": 'Shrink...'
},
{
"id": 134,
"enabled": false,
- "label": 'Sharpen',
- "visible": true
+ "label": 'Sharpen'
},
{
"id": 135,
"enabled": false,
- "label": 'Feather...',
- "visible": true
+ "label": 'Feather...'
},
{
"id": 136,
@@ -863,106 +625,81 @@
},
{
"id": 137,
- "enabled": true,
- "label": 'Selection Editor',
- "visible": true
+ "label": 'Selection Editor'
},
{
"id": 138,
"enabled": false,
"label": 'From Path',
- "shortcut": [['Shift', 'v']],
- "visible": true
+ "shortcut": [['Shift', 'v']]
},
{
"id": 139,
- "enabled": true,
"label": 'By Color',
- "shortcut": [['Shift', 'o']],
- "visible": true
+ "shortcut": [['Shift', 'o']]
},
{
"id": 140,
"enabled": false,
"label": 'Float',
- "shortcut": [['Control', 'Shift', 'l']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'l']]
},
{
"id": 141,
- "enabled": true,
"label": 'Invert',
- "shortcut": [['Control', 'i']],
- "visible": true
+ "shortcut": [['Control', 'i']]
},
{
"id": 142,
"enabled": false,
"label": 'None',
- "shortcut": [['Control', 'Shift', 'a']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'a']]
},
{
"id": 143,
- "enabled": true,
"label": 'All',
- "shortcut": [['Control', 'a']],
- "visible": true
+ "shortcut": [['Control', 'a']]
}
]
},
{
"id": 144,
"children-display": 'submenu',
- "enabled": true,
"label": 'View',
- "visible": true,
"submenu": [
{
"id": 145,
- "enabled": true,
"label": 'Show Statusbar',
"toggle-state": 1,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 146,
- "enabled": true,
"label": 'Show Scrollbars',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 147,
- "enabled": true,
"label": 'Show Rulers',
"shortcut": [['Control', 'Shift', 'r']],
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 148,
- "enabled": true,
"label": 'Show Menubar',
"toggle-state": 1,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 149,
"children-display": 'submenu',
- "enabled": true,
"label": 'Padding Color',
- "visible": true,
"submenu": [
{
"id": 150,
- "enabled": true,
- "label": 'As in Preferences',
- "visible": true
+ "label": 'As in Preferences'
},
{
"id": 151,
@@ -970,27 +707,19 @@
},
{
"id": 152,
- "enabled": true,
- "label": 'Select Custom Color...',
- "visible": true
+ "label": 'Select Custom Color...'
},
{
"id": 153,
- "enabled": true,
- "label": 'Dark Check Color',
- "visible": true
+ "label": 'Dark Check Color'
},
{
"id": 154,
- "enabled": true,
- "label": 'Light Check Color',
- "visible": true
+ "label": 'Light Check Color'
},
{
"id": 155,
- "enabled": true,
- "label": 'From Theme',
- "visible": true
+ "label": 'From Theme'
}
]
},
@@ -1000,35 +729,27 @@
},
{
"id": 157,
- "enabled": true,
"label": 'Snap to Active Path',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 158,
- "enabled": true,
"label": 'Snap to Canvas Edges',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 159,
- "enabled": true,
"label": 'Snap to Grid',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 160,
- "enabled": true,
"label": 'Snap to Guides',
"toggle-state": 1,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 161,
@@ -1036,45 +757,35 @@
},
{
"id": 162,
- "enabled": true,
"label": 'Show Sample Points',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 163,
- "enabled": true,
"label": 'Show Grid',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 164,
- "enabled": true,
"label": 'Show Guides',
"shortcut": [['Control', 'Shift', 't']],
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 165,
- "enabled": true,
"label": 'Show Layer Boundary',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 166,
- "enabled": true,
"label": 'Show Selection',
"shortcut": [['Control', 't']],
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 167,
@@ -1082,15 +793,11 @@
},
{
"id": 168,
- "enabled": true,
- "label": 'Display Filters...',
- "visible": true
+ "label": 'Display Filters...'
},
{
"id": 169,
- "enabled": true,
- "label": 'Navigation Window',
- "visible": true
+ "label": 'Navigation Window'
},
{
"id": 170,
@@ -1099,27 +806,21 @@
{
"id": 171,
"children-display": 'submenu',
- "enabled": true,
"label": 'Fullscreen',
"shortcut": [['F11']],
"toggle-state": 0,
"toggle-type": 'checkmark',
- "visible": true,
"submenu": [
{
"id": 172,
- "enabled": true,
- "label": 'Open Display...',
- "visible": true
+ "label": 'Open Display...'
}
]
},
{
"id": 173,
- "enabled": true,
"label": 'Shrink Wrap',
- "shortcut": [['Control', 'e']],
- "visible": true
+ "shortcut": [['Control', 'e']]
},
{
"id": 174,
@@ -1128,17 +829,13 @@
{
"id": 175,
"children-display": 'submenu',
- "enabled": true,
"label": '_Zoom (67%)',
- "visible": true,
"submenu": [
{
"id": 176,
- "enabled": true,
"label": 'Othe_r (67%)...',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 177,
@@ -1146,76 +843,58 @@
},
{
"id": 178,
- "enabled": true,
"label": '1:16 (6.25%)',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 179,
- "enabled": true,
"label": '1:8 (12.5%)',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 180,
- "enabled": true,
"label": '1:4 (25%)',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 181,
- "enabled": true,
"label": '1:2 (50%)',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 182,
- "enabled": true,
"label": '1:1 (100%)',
"shortcut": [['1']],
"toggle-state": 1,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 183,
- "enabled": true,
"label": '2:1 (200%)',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 184,
- "enabled": true,
"label": '4:1 (400%)',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 185,
- "enabled": true,
"label": '8:1 (800%)',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 186,
- "enabled": true,
"label": '16:1 (1600%)',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 187,
@@ -1223,106 +902,76 @@
},
{
"id": 188,
- "enabled": true,
- "label": 'Fill Window',
- "visible": true
+ "label": 'Fill Window'
},
{
"id": 189,
- "enabled": true,
"label": 'Fit Image in Window',
- "shortcut": [['Control', 'Shift', 'e']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'e']]
},
{
"id": 190,
- "enabled": true,
"label": 'Zoom In',
- "shortcut": [['plus']],
- "visible": true
+ "shortcut": [['plus']]
},
{
"id": 191,
- "enabled": true,
"label": 'Zoom Out',
- "shortcut": [['minus']],
- "visible": true
+ "shortcut": [['minus']]
},
{
"id": 4,
- "enabled": true,
"label": 'Re_vert Zoom (67%)',
- "shortcut": [['grave']],
- "visible": true
+ "shortcut": [['grave']]
}
]
},
{
"id": 192,
- "enabled": true,
"label": 'Dot for Dot',
"toggle-state": 1,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 193,
- "enabled": true,
- "label": 'New View',
- "visible": true
+ "label": 'New View'
}
]
},
{
"id": 194,
"children-display": 'submenu',
- "enabled": true,
"label": 'Image',
- "visible": true,
"submenu": [
{
"id": 195,
- "enabled": true,
"label": 'Image Properties',
- "shortcut": [['Alt', 'Return']],
- "visible": true
+ "shortcut": [['Alt', 'Return']]
},
{
"id": 196,
- "enabled": true,
- "label": 'Configure Grid...',
- "visible": true
+ "label": 'Configure Grid...'
},
{
"id": 197,
"children-display": 'submenu',
- "enabled": true,
"label": 'Guides',
- "visible": true,
"submenu": [
{
"id": 198,
- "enabled": true,
- "label": 'Remove all Guides',
- "visible": true
+ "label": 'Remove all Guides'
},
{
"id": 199,
- "enabled": true,
- "label": 'New Guides from Selection',
- "visible": true
+ "label": 'New Guides from Selection'
},
{
"id": 200,
- "enabled": true,
- "label": 'New Guide...',
- "visible": true
+ "label": 'New Guide...'
},
{
"id": 201,
- "enabled": true,
- "label": 'New Guide (by Percent)...',
- "visible": true
+ "label": 'New Guide (by Percent)...'
}
]
},
@@ -1332,22 +981,16 @@
},
{
"id": 203,
- "enabled": true,
- "label": 'Align Visible Layers...',
- "visible": true
+ "label": 'Align Visible Layers...'
},
{
"id": 204,
- "enabled": true,
- "label": 'Flatten Image',
- "visible": true
+ "label": 'Flatten Image'
},
{
"id": 205,
- "enabled": true,
"label": 'Merge Visible Layers...',
- "shortcut": [['Control', 'm']],
- "visible": true
+ "shortcut": [['Control', 'm']]
},
{
"id": 206,
@@ -1355,21 +998,16 @@
},
{
"id": 207,
- "enabled": true,
- "label": 'Zealous Crop',
- "visible": true
+ "label": 'Zealous Crop'
},
{
"id": 208,
- "enabled": true,
- "label": 'Autocrop Image',
- "visible": true
+ "label": 'Autocrop Image'
},
{
"id": 209,
"enabled": false,
- "label": 'Crop to Selection',
- "visible": true
+ "label": 'Crop to Selection'
},
{
"id": 210,
@@ -1377,33 +1015,24 @@
},
{
"id": 211,
- "enabled": true,
- "label": 'Scale Image...',
- "visible": true
+ "label": 'Scale Image...'
},
{
"id": 212,
- "enabled": true,
- "label": 'Print Size...',
- "visible": true
+ "label": 'Print Size...'
},
{
"id": 213,
"enabled": false,
- "label": 'Fit Canvas to Selection',
- "visible": true
+ "label": 'Fit Canvas to Selection'
},
{
"id": 214,
- "enabled": true,
- "label": 'Fit Canvas to Layers',
- "visible": true
+ "label": 'Fit Canvas to Layers'
},
{
"id": 215,
- "enabled": true,
- "label": 'Canvas Size...',
- "visible": true
+ "label": 'Canvas Size...'
},
{
"id": 216,
@@ -1412,15 +1041,11 @@
{
"id": 217,
"children-display": 'submenu',
- "enabled": true,
"label": 'Transform',
- "visible": true,
"submenu": [
{
"id": 218,
- "enabled": true,
- "label": 'Guillotine',
- "visible": true
+ "label": 'Guillotine'
},
{
"id": 219,
@@ -1428,21 +1053,15 @@
},
{
"id": 220,
- "enabled": true,
- "label": 'Rotate 180?',
- "visible": true
+ "label": 'Rotate 180?'
},
{
"id": 221,
- "enabled": true,
- "label": 'Rotate 90? counter-clockwise',
- "visible": true
+ "label": 'Rotate 90? counter-clockwise'
},
{
"id": 222,
- "enabled": true,
- "label": 'Rotate 90? clockwise',
- "visible": true
+ "label": 'Rotate 90? clockwise'
},
{
"id": 223,
@@ -1450,36 +1069,26 @@
},
{
"id": 224,
- "enabled": true,
- "label": 'Flip Vertically',
- "visible": true
+ "label": 'Flip Vertically'
},
{
"id": 225,
- "enabled": true,
- "label": 'Flip Horizontally',
- "visible": true
+ "label": 'Flip Horizontally'
}
]
},
{
"id": 226,
"children-display": 'submenu',
- "enabled": true,
"label": 'Mode',
- "visible": true,
"submenu": [
{
"id": 227,
- "enabled": true,
- "label": 'Convert to Color Profile...',
- "visible": true
+ "label": 'Convert to Color Profile...'
},
{
"id": 228,
- "enabled": true,
- "label": 'Assign Color Profile...',
- "visible": true
+ "label": 'Assign Color Profile...'
},
{
"id": 229,
@@ -1487,75 +1096,56 @@
},
{
"id": 230,
- "enabled": true,
"label": 'Indexed...',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 231,
- "enabled": true,
"label": 'Grayscale',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 232,
- "enabled": true,
"label": 'RGB',
"toggle-state": 1,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
}
]
},
{
"id": 233,
- "enabled": true,
"label": 'Duplicate',
- "shortcut": [['Control', 'd']],
- "visible": true
+ "shortcut": [['Control', 'd']]
}
]
},
{
"id": 234,
"children-display": 'submenu',
- "enabled": true,
"label": 'Layer',
- "visible": true,
"submenu": [
{
"id": 235,
- "enabled": true,
- "label": 'Autocrop Layer',
- "visible": true
+ "label": 'Autocrop Layer'
},
{
"id": 236,
"enabled": false,
- "label": 'Crop to Selection',
- "visible": true
+ "label": 'Crop to Selection'
},
{
"id": 237,
- "enabled": true,
- "label": 'Scale Layer...',
- "visible": true
+ "label": 'Scale Layer...'
},
{
"id": 238,
- "enabled": true,
- "label": 'Layer to Image Size',
- "visible": true
+ "label": 'Layer to Image Size'
},
{
"id": 239,
- "enabled": true,
- "label": 'Layer Boundary Size...',
- "visible": true
+ "label": 'Layer Boundary Size...'
},
{
"id": 240,
@@ -1564,16 +1154,12 @@
{
"id": 241,
"children-display": 'submenu',
- "enabled": true,
"label": 'Transform',
- "visible": true,
"submenu": [
{
"id": 242,
- "enabled": true,
"label": 'Offset...',
- "shortcut": [['Control', 'Shift', 'o']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'o']]
},
{
"id": 243,
@@ -1581,27 +1167,19 @@
},
{
"id": 244,
- "enabled": true,
- "label": 'Arbitrary Rotation...',
- "visible": true
+ "label": 'Arbitrary Rotation...'
},
{
"id": 245,
- "enabled": true,
- "label": 'Rotate 180?',
- "visible": true
+ "label": 'Rotate 180?'
},
{
"id": 246,
- "enabled": true,
- "label": 'Rotate 90? counter-clockwise',
- "visible": true
+ "label": 'Rotate 90? counter-clockwise'
},
{
"id": 247,
- "enabled": true,
- "label": 'Rotate 90? clockwise',
- "visible": true
+ "label": 'Rotate 90? clockwise'
},
{
"id": 248,
@@ -1609,48 +1187,34 @@
},
{
"id": 249,
- "enabled": true,
- "label": 'Flip Vertically',
- "visible": true
+ "label": 'Flip Vertically'
},
{
"id": 250,
- "enabled": true,
- "label": 'Flip Horizontally',
- "visible": true
+ "label": 'Flip Horizontally'
}
]
},
{
"id": 251,
"children-display": 'submenu',
- "enabled": true,
"label": 'Transparency',
- "visible": true,
"submenu": [
{
"id": 252,
- "enabled": true,
- "label": 'Intersect with Selection',
- "visible": true
+ "label": 'Intersect with Selection'
},
{
"id": 253,
- "enabled": true,
- "label": 'Subtract from Selection',
- "visible": true
+ "label": 'Subtract from Selection'
},
{
"id": 254,
- "enabled": true,
- "label": 'Add to Selection',
- "visible": true
+ "label": 'Add to Selection'
},
{
"id": 255,
- "enabled": true,
- "label": 'Alpha to Selection',
- "visible": true
+ "label": 'Alpha to Selection'
},
{
"id": 256,
@@ -1658,66 +1222,51 @@
},
{
"id": 257,
- "enabled": true,
- "label": 'Threshold Alpha...',
- "visible": true
+ "label": 'Threshold Alpha...'
},
{
"id": 258,
- "enabled": true,
- "label": 'Semi-Flatten',
- "visible": true
+ "label": 'Semi-Flatten'
},
{
"id": 259,
- "enabled": true,
- "label": 'Color to Alpha...',
- "visible": true
+ "label": 'Color to Alpha...'
},
{
"id": 260,
- "enabled": true,
- "label": 'Remove Alpha Channel',
- "visible": true
+ "label": 'Remove Alpha Channel'
},
{
"id": 261,
"enabled": false,
- "label": 'Add Alpha Channel',
- "visible": true
+ "label": 'Add Alpha Channel'
}
]
},
{
"id": 262,
"children-display": 'submenu',
- "enabled": true,
"label": 'Mask',
- "visible": true,
"submenu": [
{
"id": 263,
"enabled": false,
- "label": 'Intersect with Selection',
- "visible": true
+ "label": 'Intersect with Selection'
},
{
"id": 264,
"enabled": false,
- "label": 'Subtract from Selection',
- "visible": true
+ "label": 'Subtract from Selection'
},
{
"id": 265,
"enabled": false,
- "label": 'Add to Selection',
- "visible": true
+ "label": 'Add to Selection'
},
{
"id": 266,
"enabled": false,
- "label": 'Mask to Selection',
- "visible": true
+ "label": 'Mask to Selection'
},
{
"id": 267,
@@ -1728,24 +1277,21 @@
"enabled": false,
"label": 'Disable Layer Mask',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 269,
"enabled": false,
"label": 'Edit Layer Mask',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 270,
"enabled": false,
"label": 'Show Layer Mask',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 271,
@@ -1754,35 +1300,27 @@
{
"id": 272,
"enabled": false,
- "label": 'Delete Layer Mask',
- "visible": true
+ "label": 'Delete Layer Mask'
},
{
"id": 273,
"enabled": false,
- "label": 'Apply Layer Mask',
- "visible": true
+ "label": 'Apply Layer Mask'
},
{
"id": 274,
- "enabled": true,
- "label": 'Add Layer Mask...',
- "visible": true
+ "label": 'Add Layer Mask...'
}
]
},
{
"id": 275,
"children-display": 'submenu',
- "enabled": true,
"label": 'Stack',
- "visible": true,
"submenu": [
{
"id": 276,
- "enabled": true,
- "label": 'Reverse Layer Order',
- "visible": true
+ "label": 'Reverse Layer Order'
},
{
"id": 277,
@@ -1791,26 +1329,22 @@
{
"id": 278,
"enabled": false,
- "label": 'Layer to Bottom',
- "visible": true
+ "label": 'Layer to Bottom'
},
{
"id": 279,
"enabled": false,
- "label": 'Layer to Top',
- "visible": true
+ "label": 'Layer to Top'
},
{
"id": 280,
"enabled": false,
- "label": 'Lower Layer',
- "visible": true
+ "label": 'Lower Layer'
},
{
"id": 281,
"enabled": false,
- "label": 'Raise Layer',
- "visible": true
+ "label": 'Raise Layer'
},
{
"id": 282,
@@ -1820,29 +1354,25 @@
"id": 283,
"enabled": false,
"label": 'Select Bottom Layer',
- "shortcut": [['End']],
- "visible": true
+ "shortcut": [['End']]
},
{
"id": 284,
"enabled": false,
"label": 'Select Top Layer',
- "shortcut": [['Home']],
- "visible": true
+ "shortcut": [['Home']]
},
{
"id": 285,
"enabled": false,
"label": 'Select Next Layer',
- "shortcut": [['Page_Down']],
- "visible": true
+ "shortcut": [['Page_Down']]
},
{
"id": 286,
"enabled": false,
"label": 'Select Previous Layer',
- "shortcut": [['Page_Up']],
- "visible": true
+ "shortcut": [['Page_Up']]
}
]
},
@@ -1854,94 +1384,70 @@
{
"id": 288,
"enabled": false,
- "label": 'Empty',
- "visible": true
+ "label": 'Empty'
}
]
},
{
"id": 289,
- "enabled": true,
- "label": 'Delete Layer',
- "visible": true
+ "label": 'Delete Layer'
},
{
"id": 290,
"enabled": false,
- "label": 'Merge Down',
- "visible": true
+ "label": 'Merge Down'
},
{
"id": 291,
"enabled": false,
"label": 'Anchor Layer',
- "shortcut": [['Control', 'h']],
- "visible": true
+ "shortcut": [['Control', 'h']]
},
{
"id": 292,
- "enabled": true,
"label": 'Duplicate Layer',
- "shortcut": [['Control', 'Shift', 'd']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'd']]
},
{
"id": 293,
- "enabled": true,
- "label": 'New from Visible',
- "visible": true
+ "label": 'New from Visible'
},
{
"id": 294,
- "enabled": true,
"label": 'New Layer...',
- "shortcut": [['Control', 'Shift', 'n']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'n']]
}
]
},
{
"id": 295,
"children-display": 'submenu',
- "enabled": true,
"label": 'Colors',
- "visible": true,
"submenu": [
{
"id": 296,
- "enabled": true,
- "label": 'Retinex...',
- "visible": true
+ "label": 'Retinex...'
},
{
"id": 297,
- "enabled": true,
- "label": 'Maximum RGB...',
- "visible": true
+ "label": 'Maximum RGB...'
},
{
"id": 298,
"enabled": false,
- "label": 'Hot...',
- "visible": true
+ "label": 'Hot...'
},
{
"id": 299,
- "enabled": true,
- "label": 'Filter Pack...',
- "visible": true
+ "label": 'Filter Pack...'
},
{
"id": 300,
- "enabled": true,
- "label": 'Color to Alpha...',
- "visible": true
+ "label": 'Color to Alpha...'
},
{
"id": 301,
- "enabled": true,
- "label": 'Colorify...',
- "visible": true
+ "label": 'Colorify...'
},
{
"id": 302,
@@ -1950,78 +1456,54 @@
{
"id": 303,
"children-display": 'submenu',
- "enabled": true,
"label": 'Info',
- "visible": true,
"submenu": [
{
"id": 304,
- "enabled": true,
- "label": 'Smooth Palette...',
- "visible": true
+ "label": 'Smooth Palette...'
},
{
"id": 305,
- "enabled": true,
- "label": 'Colorcube Analysis...',
- "visible": true
+ "label": 'Colorcube Analysis...'
},
{
"id": 306,
- "enabled": true,
- "label": 'Border Average...',
- "visible": true
+ "label": 'Border Average...'
},
{
"id": 307,
- "enabled": true,
- "label": 'Histogram',
- "visible": true
+ "label": 'Histogram'
}
]
},
{
"id": 308,
"children-display": 'submenu',
- "enabled": true,
"label": 'Map',
- "visible": true,
"submenu": [
{
"id": 309,
- "enabled": true,
- "label": 'Sample Colorize...',
- "visible": true
+ "label": 'Sample Colorize...'
},
{
"id": 310,
- "enabled": true,
- "label": 'Rotate Colors...',
- "visible": true
+ "label": 'Rotate Colors...'
},
{
"id": 311,
- "enabled": true,
- "label": 'Palette Map',
- "visible": true
+ "label": 'Palette Map'
},
{
"id": 312,
- "enabled": true,
- "label": 'Gradient Map',
- "visible": true
+ "label": 'Gradient Map'
},
{
"id": 313,
- "enabled": true,
- "label": 'Color Exchange...',
- "visible": true
+ "label": 'Color Exchange...'
},
{
"id": 314,
- "enabled": true,
- "label": 'Alien Map...',
- "visible": true
+ "label": 'Alien Map...'
},
{
"id": 315,
@@ -2030,92 +1512,68 @@
{
"id": 316,
"enabled": false,
- "label": 'Set Colormap...',
- "visible": true
+ "label": 'Set Colormap...'
},
{
"id": 317,
"enabled": false,
- "label": 'Rearrange Colormap...',
- "visible": true
+ "label": 'Rearrange Colormap...'
}
]
},
{
"id": 318,
"children-display": 'submenu',
- "enabled": true,
"label": 'Components',
- "visible": true,
"submenu": [
{
"id": 319,
"enabled": false,
- "label": 'Recompose',
- "visible": true
+ "label": 'Recompose'
},
{
"id": 320,
- "enabled": true,
- "label": 'Decompose...',
- "visible": true
+ "label": 'Decompose...'
},
{
"id": 321,
"enabled": false,
- "label": 'Compose...',
- "visible": true
+ "label": 'Compose...'
},
{
"id": 322,
- "enabled": true,
- "label": 'Channel Mixer...',
- "visible": true
+ "label": 'Channel Mixer...'
}
]
},
{
"id": 323,
"children-display": 'submenu',
- "enabled": true,
"label": 'Auto',
- "visible": true,
"submenu": [
{
"id": 324,
- "enabled": true,
- "label": 'Stretch HSV',
- "visible": true
+ "label": 'Stretch HSV'
},
{
"id": 325,
- "enabled": true,
- "label": 'Stretch Contrast',
- "visible": true
+ "label": 'Stretch Contrast'
},
{
"id": 326,
- "enabled": true,
- "label": 'Normalize',
- "visible": true
+ "label": 'Normalize'
},
{
"id": 327,
- "enabled": true,
- "label": 'Color Enhance',
- "visible": true
+ "label": 'Color Enhance'
},
{
"id": 328,
- "enabled": true,
- "label": 'White Balance',
- "visible": true
+ "label": 'White Balance'
},
{
"id": 329,
- "enabled": true,
- "label": 'Equalize',
- "visible": true
+ "label": 'Equalize'
}
]
},
@@ -2125,11 +1583,9 @@
},
{
"id": 331,
- "enabled": true,
"label": 'Use GEGL',
"toggle-state": 0,
- "toggle-type": 'checkmark',
- "visible": true
+ "toggle-type": 'checkmark'
},
{
"id": 332,
@@ -2137,15 +1593,11 @@
},
{
"id": 333,
- "enabled": true,
- "label": 'Value Invert',
- "visible": true
+ "label": 'Value Invert'
},
{
"id": 334,
- "enabled": true,
- "label": 'Invert',
- "visible": true
+ "label": 'Invert'
},
{
"id": 335,
@@ -2153,87 +1605,61 @@
},
{
"id": 336,
- "enabled": true,
- "label": 'Desaturate...',
- "visible": true
+ "label": 'Desaturate...'
},
{
"id": 337,
- "enabled": true,
- "label": 'Posterize...',
- "visible": true
+ "label": 'Posterize...'
},
{
"id": 338,
- "enabled": true,
- "label": 'Curves...',
- "visible": true
+ "label": 'Curves...'
},
{
"id": 339,
- "enabled": true,
- "label": 'Levels...',
- "visible": true
+ "label": 'Levels...'
},
{
"id": 340,
- "enabled": true,
- "label": 'Threshold...',
- "visible": true
+ "label": 'Threshold...'
},
{
"id": 341,
- "enabled": true,
- "label": 'Brightness-Contrast...',
- "visible": true
+ "label": 'Brightness-Contrast...'
},
{
"id": 342,
- "enabled": true,
- "label": 'Colorize...',
- "visible": true
+ "label": 'Colorize...'
},
{
"id": 343,
- "enabled": true,
- "label": 'Hue-Saturation...',
- "visible": true
+ "label": 'Hue-Saturation...'
},
{
"id": 344,
- "enabled": true,
- "label": 'Color Balance...',
- "visible": true
+ "label": 'Color Balance...'
}
]
},
{
"id": 345,
"children-display": 'submenu',
- "enabled": true,
"label": 'Tools',
- "visible": true,
"submenu": [
{
"id": 346,
- "enabled": true,
"label": 'Swap Colors',
- "shortcut": [['x']],
- "visible": true
+ "shortcut": [['x']]
},
{
"id": 347,
- "enabled": true,
"label": 'Default Colors',
- "shortcut": [['d']],
- "visible": true
+ "shortcut": [['d']]
},
{
"id": 348,
- "enabled": true,
"label": 'Toolbox',
- "shortcut": [['Control', 'b']],
- "visible": true
+ "shortcut": [['Control', 'b']]
},
{
"id": 349,
@@ -2241,326 +1667,232 @@
},
{
"id": 350,
- "enabled": true,
- "label": 'GEGL Operation...',
- "visible": true
+ "label": 'GEGL Operation...'
},
{
"id": 351,
- "enabled": true,
"label": 'Text',
- "shortcut": [['t']],
- "visible": true
+ "shortcut": [['t']]
},
{
"id": 352,
- "enabled": true,
"label": 'Measure',
- "shortcut": [['Shift', 'm']],
- "visible": true
+ "shortcut": [['Shift', 'm']]
},
{
"id": 353,
- "enabled": true,
"label": 'Zoom',
- "shortcut": [['z']],
- "visible": true
+ "shortcut": [['z']]
},
{
"id": 354,
- "enabled": true,
"label": 'Color Picker',
- "shortcut": [['o']],
- "visible": true
+ "shortcut": [['o']]
},
{
"id": 355,
- "enabled": true,
"label": 'Paths',
- "shortcut": [['b']],
- "visible": true
+ "shortcut": [['b']]
},
{
"id": 356,
"children-display": 'submenu',
- "enabled": true,
"label": 'Color Tools',
- "visible": true,
"submenu": [
{
"id": 357,
- "enabled": true,
- "label": 'Desaturate...',
- "visible": true
+ "label": 'Desaturate...'
},
{
"id": 358,
- "enabled": true,
- "label": 'Posterize...',
- "visible": true
+ "label": 'Posterize...'
},
{
"id": 359,
- "enabled": true,
- "label": 'Curves...',
- "visible": true
+ "label": 'Curves...'
},
{
"id": 360,
- "enabled": true,
- "label": 'Levels...',
- "visible": true
+ "label": 'Levels...'
},
{
"id": 361,
- "enabled": true,
- "label": 'Threshold...',
- "visible": true
+ "label": 'Threshold...'
},
{
"id": 362,
- "enabled": true,
- "label": 'Brightness-Contrast...',
- "visible": true
+ "label": 'Brightness-Contrast...'
},
{
"id": 363,
- "enabled": true,
- "label": 'Colorize...',
- "visible": true
+ "label": 'Colorize...'
},
{
"id": 364,
- "enabled": true,
- "label": 'Hue-Saturation...',
- "visible": true
+ "label": 'Hue-Saturation...'
},
{
"id": 365,
- "enabled": true,
- "label": 'Color Balance...',
- "visible": true
+ "label": 'Color Balance...'
}
]
},
{
"id": 366,
"children-display": 'submenu',
- "enabled": true,
"label": 'Transform Tools',
- "visible": true,
"submenu": [
{
"id": 367,
- "enabled": true,
"label": 'Flip',
- "shortcut": [['Shift', 'f']],
- "visible": true
+ "shortcut": [['Shift', 'f']]
},
{
"id": 368,
- "enabled": true,
"label": 'Perspective',
- "shortcut": [['Shift', 'p']],
- "visible": true
+ "shortcut": [['Shift', 'p']]
},
{
"id": 369,
- "enabled": true,
"label": 'Shear',
- "shortcut": [['Shift', 's']],
- "visible": true
+ "shortcut": [['Shift', 's']]
},
{
"id": 370,
- "enabled": true,
"label": 'Scale',
- "shortcut": [['Shift', 't']],
- "visible": true
+ "shortcut": [['Shift', 't']]
},
{
"id": 371,
- "enabled": true,
"label": 'Rotate',
- "shortcut": [['Shift', 'r']],
- "visible": true
+ "shortcut": [['Shift', 'r']]
},
{
"id": 372,
- "enabled": true,
"label": 'Crop',
- "shortcut": [['Shift', 'c']],
- "visible": true
+ "shortcut": [['Shift', 'c']]
},
{
"id": 373,
- "enabled": true,
"label": 'Move',
- "shortcut": [['m']],
- "visible": true
+ "shortcut": [['m']]
},
{
"id": 374,
- "enabled": true,
"label": 'Align',
- "shortcut": [['q']],
- "visible": true
+ "shortcut": [['q']]
}
]
},
{
"id": 375,
"children-display": 'submenu',
- "enabled": true,
"label": 'Paint Tools',
- "visible": true,
"submenu": [
{
"id": 376,
- "enabled": true,
"label": 'Dodge / Burn',
- "shortcut": [['Shift', 'd']],
- "visible": true
+ "shortcut": [['Shift', 'd']]
},
{
"id": 377,
- "enabled": true,
"label": 'Smudge',
- "shortcut": [['s']],
- "visible": true
+ "shortcut": [['s']]
},
{
"id": 378,
- "enabled": true,
"label": 'Blur / Sharpen',
- "shortcut": [['Shift', 'u']],
- "visible": true
+ "shortcut": [['Shift', 'u']]
},
{
"id": 379,
- "enabled": true,
- "label": 'Perspective Clone',
- "visible": true
+ "label": 'Perspective Clone'
},
{
"id": 380,
- "enabled": true,
"label": 'Heal',
- "shortcut": [['h']],
- "visible": true
+ "shortcut": [['h']]
},
{
"id": 381,
- "enabled": true,
"label": 'Clone',
- "shortcut": [['c']],
- "visible": true
+ "shortcut": [['c']]
},
{
"id": 382,
- "enabled": true,
"label": 'Ink',
- "shortcut": [['k']],
- "visible": true
+ "shortcut": [['k']]
},
{
"id": 383,
- "enabled": true,
"label": 'Airbrush',
- "shortcut": [['a']],
- "visible": true
+ "shortcut": [['a']]
},
{
"id": 384,
- "enabled": true,
"label": 'Eraser',
- "shortcut": [['Shift', 'e']],
- "visible": true
+ "shortcut": [['Shift', 'e']]
},
{
"id": 385,
- "enabled": true,
"label": 'Paintbrush',
- "shortcut": [['p']],
- "visible": true
+ "shortcut": [['p']]
},
{
"id": 386,
- "enabled": true,
"label": 'Pencil',
- "shortcut": [['n']],
- "visible": true
+ "shortcut": [['n']]
},
{
"id": 387,
- "enabled": true,
"label": 'Blend',
- "shortcut": [['l']],
- "visible": true
+ "shortcut": [['l']]
},
{
"id": 388,
- "enabled": true,
"label": 'Bucket Fill',
- "shortcut": [['Shift', 'b']],
- "visible": true
+ "shortcut": [['Shift', 'b']]
}
]
},
{
"id": 389,
"children-display": 'submenu',
- "enabled": true,
"label": 'Selection Tools',
- "visible": true,
"submenu": [
{
"id": 390,
- "enabled": true,
"label": 'Intelligent Scissors',
- "shortcut": [['i']],
- "visible": true
+ "shortcut": [['i']]
},
{
"id": 391,
- "enabled": true,
"label": 'By Color Select',
- "shortcut": [['Shift', 'o']],
- "visible": true
+ "shortcut": [['Shift', 'o']]
},
{
"id": 392,
- "enabled": true,
"label": 'Fuzzy Select',
- "shortcut": [['u']],
- "visible": true
+ "shortcut": [['u']]
},
{
"id": 393,
- "enabled": true,
- "label": 'Foreground Select',
- "visible": true
+ "label": 'Foreground Select'
},
{
"id": 394,
- "enabled": true,
"label": 'Free Select',
- "shortcut": [['f']],
- "visible": true
+ "shortcut": [['f']]
},
{
"id": 395,
- "enabled": true,
"label": 'Ellipse Select',
- "shortcut": [['e']],
- "visible": true
+ "shortcut": [['e']]
},
{
"id": 396,
- "enabled": true,
"label": 'Rectangle Select',
- "shortcut": [['r']],
- "visible": true
+ "shortcut": [['r']]
}
]
}
@@ -2569,49 +1901,35 @@
{
"id": 397,
"children-display": 'submenu',
- "enabled": true,
"label": 'Filters',
- "visible": true,
"submenu": [
{
"id": 398,
"children-display": 'submenu',
- "enabled": true,
"label": 'Script-Fu',
- "visible": true,
"submenu": [
{
"id": 399,
- "enabled": true,
- "label": 'Start Server...',
- "visible": true
+ "label": 'Start Server...'
},
{
"id": 400,
- "enabled": true,
- "label": 'Refresh Scripts',
- "visible": true
+ "label": 'Refresh Scripts'
},
{
"id": 401,
- "enabled": true,
- "label": 'Console',
- "visible": true
+ "label": 'Console'
}
]
},
{
"id": 402,
"children-display": 'submenu',
- "enabled": true,
"label": 'Python-Fu',
- "visible": true,
"submenu": [
{
"id": 403,
- "enabled": true,
- "label": 'Console',
- "visible": true
+ "label": 'Console'
}
]
},
@@ -2622,123 +1940,83 @@
{
"id": 405,
"children-display": 'submenu',
- "enabled": true,
"label": 'Alpha to Logo',
- "visible": true,
"submenu": [
{
"id": 406,
- "enabled": true,
- "label": 'Textured...',
- "visible": true
+ "label": 'Textured...'
},
{
"id": 407,
- "enabled": true,
- "label": 'Particle Trace...',
- "visible": true
+ "label": 'Particle Trace...'
},
{
"id": 408,
- "enabled": true,
- "label": 'Neon...',
- "visible": true
+ "label": 'Neon...'
},
{
"id": 409,
- "enabled": true,
- "label": 'Gradient Bevel...',
- "visible": true
+ "label": 'Gradient Bevel...'
},
{
"id": 410,
- "enabled": true,
- "label": 'Glowing Hot...',
- "visible": true
+ "label": 'Glowing Hot...'
},
{
"id": 411,
- "enabled": true,
- "label": 'Glossy...',
- "visible": true
+ "label": 'Glossy...'
},
{
"id": 412,
- "enabled": true,
- "label": 'Frosty...',
- "visible": true
+ "label": 'Frosty...'
},
{
"id": 413,
- "enabled": true,
- "label": 'Cool Metal...',
- "visible": true
+ "label": 'Cool Metal...'
},
{
"id": 414,
- "enabled": true,
- "label": 'Comic Book...',
- "visible": true
+ "label": 'Comic Book...'
},
{
"id": 415,
- "enabled": true,
- "label": 'Chrome...',
- "visible": true
+ "label": 'Chrome...'
},
{
"id": 416,
- "enabled": true,
- "label": 'Chip Away...',
- "visible": true
+ "label": 'Chip Away...'
},
{
"id": 417,
- "enabled": true,
- "label": 'Chalk...',
- "visible": true
+ "label": 'Chalk...'
},
{
"id": 418,
- "enabled": true,
- "label": 'Bovination...',
- "visible": true
+ "label": 'Bovination...'
},
{
"id": 419,
- "enabled": true,
- "label": 'Blended...',
- "visible": true
+ "label": 'Blended...'
},
{
"id": 420,
- "enabled": true,
- "label": 'Basic I...',
- "visible": true
+ "label": 'Basic I...'
},
{
"id": 421,
- "enabled": true,
- "label": 'Basic II...',
- "visible": true
+ "label": 'Basic II...'
},
{
"id": 422,
- "enabled": true,
- "label": 'Alien Neon...',
- "visible": true
+ "label": 'Alien Neon...'
},
{
"id": 423,
- "enabled": true,
- "label": 'Alien Glow...',
- "visible": true
+ "label": 'Alien Glow...'
},
{
"id": 424,
- "enabled": true,
- "label": '3D Outline...',
- "visible": true
+ "label": '3D Outline...'
}
]
},
@@ -2749,33 +2027,23 @@
{
"id": 426,
"children-display": 'submenu',
- "enabled": true,
"label": 'Animation',
- "visible": true,
"submenu": [
{
"id": 427,
- "enabled": true,
- "label": 'Unoptimize',
- "visible": true
+ "label": 'Unoptimize'
},
{
"id": 428,
- "enabled": true,
- "label": 'Playback...',
- "visible": true
+ "label": 'Playback...'
},
{
"id": 429,
- "enabled": true,
- "label": 'Optimize (for GIF)',
- "visible": true
+ "label": 'Optimize (for GIF)'
},
{
"id": 430,
- "enabled": true,
- "label": 'Optimize (Difference)',
- "visible": true
+ "label": 'Optimize (Difference)'
},
{
"id": 431,
@@ -2783,111 +2051,77 @@
},
{
"id": 432,
- "enabled": true,
- "label": 'Waves...',
- "visible": true
+ "label": 'Waves...'
},
{
"id": 433,
- "enabled": true,
- "label": 'Spinning Globe...',
- "visible": true
+ "label": 'Spinning Globe...'
},
{
"id": 434,
- "enabled": true,
- "label": 'Rippling...',
- "visible": true
+ "label": 'Rippling...'
},
{
"id": 435,
- "enabled": true,
- "label": 'Burn-In...',
- "visible": true
+ "label": 'Burn-In...'
},
{
"id": 436,
- "enabled": true,
- "label": 'Blend...',
- "visible": true
+ "label": 'Blend...'
}
]
},
{
"id": 437,
"children-display": 'submenu',
- "enabled": true,
"label": 'Web',
- "visible": true,
"submenu": [
{
"id": 438,
- "enabled": true,
- "label": 'Slice...',
- "visible": true
+ "label": 'Slice...'
},
{
"id": 439,
- "enabled": true,
- "label": 'Semi-Flatten',
- "visible": true
+ "label": 'Semi-Flatten'
},
{
"id": 440,
- "enabled": true,
- "label": 'Image Map...',
- "visible": true
+ "label": 'Image Map...'
}
]
},
{
"id": 441,
"children-display": 'submenu',
- "enabled": true,
"label": 'Render',
- "visible": true,
"submenu": [
{
"id": 442,
- "enabled": true,
- "label": 'Spyrogimp...',
- "visible": true
+ "label": 'Spyrogimp...'
},
{
"id": 443,
- "enabled": true,
- "label": 'Sphere Designer...',
- "visible": true
+ "label": 'Sphere Designer...'
},
{
"id": 444,
- "enabled": true,
- "label": 'Line Nova...',
- "visible": true
+ "label": 'Line Nova...'
},
{
"id": 445,
- "enabled": true,
- "label": 'Lava...',
- "visible": true
+ "label": 'Lava...'
},
{
"id": 446,
- "enabled": true,
- "label": 'Gfig...',
- "visible": true
+ "label": 'Gfig...'
},
{
"id": 447,
- "enabled": true,
- "label": 'Fractal Explorer...',
- "visible": true
+ "label": 'Fractal Explorer...'
},
{
"id": 448,
- "enabled": true,
- "label": 'Circuit...',
- "visible": true
+ "label": 'Circuit...'
},
{
"id": 449,
@@ -2896,111 +2130,77 @@
{
"id": 450,
"children-display": 'submenu',
- "enabled": true,
"label": 'Pattern',
- "visible": true,
"submenu": [
{
"id": 451,
- "enabled": true,
- "label": 'Sinus...',
- "visible": true
+ "label": 'Sinus...'
},
{
"id": 452,
- "enabled": true,
- "label": 'Qbist...',
- "visible": true
+ "label": 'Qbist...'
},
{
"id": 453,
- "enabled": true,
- "label": 'Maze...',
- "visible": true
+ "label": 'Maze...'
},
{
"id": 454,
- "enabled": true,
- "label": 'Jigsaw...',
- "visible": true
+ "label": 'Jigsaw...'
},
{
"id": 455,
- "enabled": true,
- "label": 'Grid...',
- "visible": true
+ "label": 'Grid...'
},
{
"id": 456,
- "enabled": true,
- "label": 'Diffraction Patterns...',
- "visible": true
+ "label": 'Diffraction Patterns...'
},
{
"id": 457,
- "enabled": true,
- "label": 'CML Explorer...',
- "visible": true
+ "label": 'CML Explorer...'
},
{
"id": 458,
- "enabled": true,
- "label": 'Checkerboard...',
- "visible": true
+ "label": 'Checkerboard...'
}
]
},
{
"id": 459,
"children-display": 'submenu',
- "enabled": true,
"label": 'Nature',
- "visible": true,
"submenu": [
{
"id": 460,
- "enabled": true,
- "label": 'IFS Fractal...',
- "visible": true
+ "label": 'IFS Fractal...'
},
{
"id": 461,
- "enabled": true,
- "label": 'Flame...',
- "visible": true
+ "label": 'Flame...'
}
]
},
{
"id": 462,
"children-display": 'submenu',
- "enabled": true,
"label": 'Clouds',
- "visible": true,
"submenu": [
{
"id": 463,
- "enabled": true,
- "label": 'Solid Noise...',
- "visible": true
+ "label": 'Solid Noise...'
},
{
"id": 464,
- "enabled": true,
- "label": 'Plasma...',
- "visible": true
+ "label": 'Plasma...'
},
{
"id": 465,
- "enabled": true,
- "label": 'Fog...',
- "visible": true
+ "label": 'Fog...'
},
{
"id": 466,
- "enabled": true,
- "label": 'Difference Clouds...',
- "visible": true
+ "label": 'Difference Clouds...'
}
]
}
@@ -3009,360 +2209,252 @@
{
"id": 467,
"children-display": 'submenu',
- "enabled": true,
"label": 'Map',
- "visible": true,
"submenu": [
{
"id": 468,
- "enabled": true,
- "label": 'Warp...',
- "visible": true
+ "label": 'Warp...'
},
{
"id": 469,
- "enabled": true,
- "label": 'Tile...',
- "visible": true
+ "label": 'Tile...'
},
{
"id": 470,
- "enabled": true,
- "label": 'Small Tiles...',
- "visible": true
+ "label": 'Small Tiles...'
},
{
"id": 471,
- "enabled": true,
- "label": 'Paper Tile...',
- "visible": true
+ "label": 'Paper Tile...'
},
{
"id": 472,
- "enabled": true,
- "label": 'Map Object...',
- "visible": true
+ "label": 'Map Object...'
},
{
"id": 473,
- "enabled": true,
- "label": 'Make Seamless',
- "visible": true
+ "label": 'Make Seamless'
},
{
"id": 474,
- "enabled": true,
- "label": 'Illusion...',
- "visible": true
+ "label": 'Illusion...'
},
{
"id": 475,
- "enabled": true,
- "label": 'Fractal Trace...',
- "visible": true
+ "label": 'Fractal Trace...'
},
{
"id": 476,
- "enabled": true,
- "label": 'Displace...',
- "visible": true
+ "label": 'Displace...'
},
{
"id": 477,
- "enabled": true,
- "label": 'Bump Map...',
- "visible": true
+ "label": 'Bump Map...'
}
]
},
{
"id": 478,
"children-display": 'submenu',
- "enabled": true,
"label": 'Decor',
- "visible": true,
"submenu": [
{
"id": 479,
"enabled": false,
- "label": 'Stencil Chrome...',
- "visible": true
+ "label": 'Stencil Chrome...'
},
{
"id": 480,
"enabled": false,
- "label": 'Stencil Carve...',
- "visible": true
+ "label": 'Stencil Carve...'
},
{
"id": 481,
"enabled": false,
- "label": 'Slide...',
- "visible": true
+ "label": 'Slide...'
},
{
"id": 482,
"enabled": false,
- "label": 'Round Corners...',
- "visible": true
+ "label": 'Round Corners...'
},
{
"id": 483,
- "enabled": true,
- "label": 'Old Photo...',
- "visible": true
+ "label": 'Old Photo...'
},
{
"id": 484,
- "enabled": true,
- "label": 'Fuzzy Border...',
- "visible": true
+ "label": 'Fuzzy Border...'
},
{
"id": 485,
- "enabled": true,
- "label": 'Coffee Stain...',
- "visible": true
+ "label": 'Coffee Stain...'
},
{
"id": 486,
- "enabled": true,
- "label": 'Add Border...',
- "visible": true
+ "label": 'Add Border...'
},
{
"id": 487,
- "enabled": true,
- "label": 'Add Bevel...',
- "visible": true
+ "label": 'Add Bevel...'
}
]
},
{
"id": 488,
"children-display": 'submenu',
- "enabled": true,
"label": 'Artistic',
- "visible": true,
"submenu": [
{
"id": 489,
- "enabled": true,
- "label": 'Weave...',
- "visible": true
+ "label": 'Weave...'
},
{
"id": 490,
- "enabled": true,
- "label": 'Van Gogh (LIC)...',
- "visible": true
+ "label": 'Van Gogh (LIC)...'
},
{
"id": 491,
- "enabled": true,
- "label": 'Softglow...',
- "visible": true
+ "label": 'Softglow...'
},
{
"id": 492,
- "enabled": true,
- "label": 'Predator...',
- "visible": true
+ "label": 'Predator...'
},
{
"id": 493,
- "enabled": true,
- "label": 'Photocopy...',
- "visible": true
+ "label": 'Photocopy...'
},
{
"id": 494,
- "enabled": true,
- "label": 'Oilify...',
- "visible": true
+ "label": 'Oilify...'
},
{
"id": 495,
- "enabled": true,
- "label": 'GIMPressionist...',
- "visible": true
+ "label": 'GIMPressionist...'
},
{
"id": 496,
- "enabled": true,
- "label": 'Cubism...',
- "visible": true
+ "label": 'Cubism...'
},
{
"id": 497,
- "enabled": true,
- "label": 'Clothify...',
- "visible": true
+ "label": 'Clothify...'
},
{
"id": 498,
- "enabled": true,
- "label": 'Cartoon...',
- "visible": true
+ "label": 'Cartoon...'
},
{
"id": 499,
- "enabled": true,
- "label": 'Apply Canvas...',
- "visible": true
+ "label": 'Apply Canvas...'
}
]
},
{
"id": 500,
"children-display": 'submenu',
- "enabled": true,
"label": 'Combine',
- "visible": true,
"submenu": [
{
"id": 501,
- "enabled": true,
- "label": 'Filmstrip...',
- "visible": true
+ "label": 'Filmstrip...'
},
{
"id": 502,
- "enabled": true,
- "label": 'Depth Merge...',
- "visible": true
+ "label": 'Depth Merge...'
}
]
},
{
"id": 503,
"children-display": 'submenu',
- "enabled": true,
"label": 'Generic',
- "visible": true,
"submenu": [
{
"id": 504,
- "enabled": true,
- "label": 'Erode',
- "visible": true
+ "label": 'Erode'
},
{
"id": 505,
- "enabled": true,
- "label": 'Dilate',
- "visible": true
+ "label": 'Dilate'
},
{
"id": 506,
- "enabled": true,
- "label": 'Convolution Matrix...',
- "visible": true
+ "label": 'Convolution Matrix...'
}
]
},
{
"id": 507,
"children-display": 'submenu',
- "enabled": true,
"label": 'Edge-Detect',
- "visible": true,
"submenu": [
{
"id": 508,
- "enabled": true,
- "label": 'Sobel...',
- "visible": true
+ "label": 'Sobel...'
},
{
"id": 509,
- "enabled": true,
- "label": 'Neon...',
- "visible": true
+ "label": 'Neon...'
},
{
"id": 510,
- "enabled": true,
- "label": 'Laplace',
- "visible": true
+ "label": 'Laplace'
},
{
"id": 511,
- "enabled": true,
- "label": 'Edge...',
- "visible": true
+ "label": 'Edge...'
},
{
"id": 512,
- "enabled": true,
- "label": 'Difference of Gaussians...',
- "visible": true
+ "label": 'Difference of Gaussians...'
}
]
},
{
"id": 513,
"children-display": 'submenu',
- "enabled": true,
"label": 'Noise',
- "visible": true,
"submenu": [
{
"id": 514,
- "enabled": true,
- "label": 'Spread...',
- "visible": true
+ "label": 'Spread...'
},
{
"id": 515,
- "enabled": true,
- "label": 'Slur...',
- "visible": true
+ "label": 'Slur...'
},
{
"id": 516,
- "enabled": true,
- "label": 'RGB Noise...',
- "visible": true
+ "label": 'RGB Noise...'
},
{
"id": 517,
- "enabled": true,
- "label": 'Pick...',
- "visible": true
+ "label": 'Pick...'
},
{
"id": 518,
- "enabled": true,
- "label": 'Hurl...',
- "visible": true
+ "label": 'Hurl...'
},
{
"id": 519,
- "enabled": true,
- "label": 'HSV Noise...',
- "visible": true
+ "label": 'HSV Noise...'
}
]
},
{
"id": 520,
"children-display": 'submenu',
- "enabled": true,
"label": 'Light and Shadow',
- "visible": true,
"submenu": [
{
"id": 521,
- "enabled": true,
- "label": 'Glass Tile...',
- "visible": true
+ "label": 'Glass Tile...'
},
{
"id": 522,
- "enabled": true,
- "label": 'Apply Lens...',
- "visible": true
+ "label": 'Apply Lens...'
},
{
"id": 523,
@@ -3370,21 +2462,15 @@
},
{
"id": 524,
- "enabled": true,
- "label": 'Xach-Effect...',
- "visible": true
+ "label": 'Xach-Effect...'
},
{
"id": 525,
- "enabled": true,
- "label": 'Perspective...',
- "visible": true
+ "label": 'Perspective...'
},
{
"id": 526,
- "enabled": true,
- "label": 'Drop Shadow...',
- "visible": true
+ "label": 'Drop Shadow...'
},
{
"id": 527,
@@ -3392,252 +2478,173 @@
},
{
"id": 528,
- "enabled": true,
- "label": 'Supernova...',
- "visible": true
+ "label": 'Supernova...'
},
{
"id": 529,
- "enabled": true,
- "label": 'Sparkle...',
- "visible": true
+ "label": 'Sparkle...'
},
{
"id": 530,
- "enabled": true,
- "label": 'Lighting Effects...',
- "visible": true
+ "label": 'Lighting Effects...'
},
{
"id": 531,
- "enabled": true,
- "label": 'Lens Flare...',
- "visible": true
+ "label": 'Lens Flare...'
},
{
"id": 532,
- "enabled": true,
- "label": 'Gradient Flare...',
- "visible": true
+ "label": 'Gradient Flare...'
}
]
},
{
"id": 533,
"children-display": 'submenu',
- "enabled": true,
"label": 'Distorts',
- "visible": true,
"submenu": [
{
"id": 534,
- "enabled": true,
- "label": 'Wind...',
- "visible": true
+ "label": 'Wind...'
},
{
"id": 535,
- "enabled": true,
- "label": 'Whirl and Pinch...',
- "visible": true
+ "label": 'Whirl and Pinch...'
},
{
"id": 536,
- "enabled": true,
- "label": 'Waves...',
- "visible": true
+ "label": 'Waves...'
},
{
"id": 537,
- "enabled": true,
- "label": 'Video...',
- "visible": true
+ "label": 'Video...'
},
{
"id": 538,
- "enabled": true,
- "label": 'Value Propagate...',
- "visible": true
+ "label": 'Value Propagate...'
},
{
"id": 539,
- "enabled": true,
- "label": 'Shift...',
- "visible": true
+ "label": 'Shift...'
},
{
"id": 540,
- "enabled": true,
- "label": 'Ripple...',
- "visible": true
+ "label": 'Ripple...'
},
{
"id": 541,
- "enabled": true,
- "label": 'Polar Coordinates...',
- "visible": true
+ "label": 'Polar Coordinates...'
},
{
"id": 542,
- "enabled": true,
- "label": 'Pagecurl...',
- "visible": true
+ "label": 'Pagecurl...'
},
{
"id": 543,
- "enabled": true,
- "label": 'Newsprint...',
- "visible": true
+ "label": 'Newsprint...'
},
{
"id": 544,
- "enabled": true,
- "label": 'Mosaic...',
- "visible": true
+ "label": 'Mosaic...'
},
{
"id": 545,
- "enabled": true,
- "label": 'Lens Distortion...',
- "visible": true
+ "label": 'Lens Distortion...'
},
{
"id": 546,
- "enabled": true,
- "label": 'IWarp...',
- "visible": true
+ "label": 'IWarp...'
},
{
"id": 547,
- "enabled": true,
- "label": 'Erase Every Other Row...',
- "visible": true
+ "label": 'Erase Every Other Row...'
},
{
"id": 548,
- "enabled": true,
- "label": 'Engrave...',
- "visible": true
+ "label": 'Engrave...'
},
{
"id": 549,
- "enabled": true,
- "label": 'Emboss...',
- "visible": true
+ "label": 'Emboss...'
},
{
"id": 550,
- "enabled": true,
- "label": 'Curve Bend...',
- "visible": true
+ "label": 'Curve Bend...'
},
{
"id": 551,
- "enabled": true,
- "label": 'Blinds...',
- "visible": true
+ "label": 'Blinds...'
}
]
},
{
"id": 552,
"children-display": 'submenu',
- "enabled": true,
"label": 'Enhance',
- "visible": true,
"submenu": [
{
"id": 553,
- "enabled": true,
- "label": 'Unsharp Mask...',
- "visible": true
+ "label": 'Unsharp Mask...'
},
{
"id": 554,
- "enabled": true,
- "label": 'Sharpen...',
- "visible": true
+ "label": 'Sharpen...'
},
{
"id": 555,
- "enabled": true,
- "label": 'Red Eye Removal...',
- "visible": true
+ "label": 'Red Eye Removal...'
},
{
"id": 556,
"enabled": false,
- "label": 'NL Filter...',
- "visible": true
+ "label": 'NL Filter...'
},
{
"id": 557,
- "enabled": true,
- "label": 'Destripe...',
- "visible": true
+ "label": 'Destripe...'
},
{
"id": 558,
- "enabled": true,
- "label": 'Despeckle...',
- "visible": true
+ "label": 'Despeckle...'
},
{
"id": 559,
- "enabled": true,
- "label": 'Deinterlace...',
- "visible": true
+ "label": 'Deinterlace...'
},
{
"id": 560,
- "enabled": true,
- "label": 'Antialias',
- "visible": true
+ "label": 'Antialias'
}
]
},
{
"id": 561,
"children-display": 'submenu',
- "enabled": true,
"label": 'Blur',
- "visible": true,
"submenu": [
{
"id": 562,
- "enabled": true,
- "label": 'Tileable Blur...',
- "visible": true
+ "label": 'Tileable Blur...'
},
{
"id": 563,
- "enabled": true,
- "label": 'Selective Gaussian Blur...',
- "visible": true
+ "label": 'Selective Gaussian Blur...'
},
{
"id": 564,
- "enabled": true,
- "label": 'Pixelize...',
- "visible": true
+ "label": 'Pixelize...'
},
{
"id": 565,
- "enabled": true,
- "label": 'Motion Blur...',
- "visible": true
+ "label": 'Motion Blur...'
},
{
"id": 566,
- "enabled": true,
- "label": 'Gaussian Blur...',
- "visible": true
+ "label": 'Gaussian Blur...'
},
{
"id": 567,
- "enabled": true,
- "label": 'Blur',
- "visible": true
+ "label": 'Blur'
}
]
},
@@ -3647,9 +2654,7 @@
},
{
"id": 569,
- "enabled": true,
- "label": 'Reset all Filters',
- "visible": true
+ "label": 'Reset all Filters'
},
{
"id": 570,
@@ -3657,13 +2662,11 @@
"enabled": false,
"label": 'Re-Show Last',
"shortcut": [['Control', 'Shift', 'f']],
- "visible": true,
"submenu": [
{
"id": 571,
"enabled": false,
- "label": 'Empty',
- "visible": true
+ "label": 'Empty'
}
]
},
@@ -3671,24 +2674,19 @@
"id": 572,
"enabled": false,
"label": 'Repeat Last',
- "shortcut": [['Control', 'f']],
- "visible": true
+ "shortcut": [['Control', 'f']]
}
]
},
{
"id": 573,
"children-display": 'submenu',
- "enabled": true,
"label": 'Windows',
- "visible": true,
"submenu": [
{
"id": 574,
- "enabled": true,
"label": 'Toolbox',
- "shortcut": [['Control', 'b']],
- "visible": true
+ "shortcut": [['Control', 'b']]
},
{
"id": 575,
@@ -3697,39 +2695,27 @@
{
"id": 576,
"children-display": 'submenu',
- "enabled": true,
"label": 'Dockable Dialogs',
- "visible": true,
"submenu": [
{
"id": 577,
- "enabled": true,
- "label": 'Error Console',
- "visible": true
+ "label": 'Error Console'
},
{
"id": 578,
- "enabled": true,
- "label": 'Tools',
- "visible": true
+ "label": 'Tools'
},
{
"id": 579,
- "enabled": true,
- "label": 'Templates',
- "visible": true
+ "label": 'Templates'
},
{
"id": 580,
- "enabled": true,
- "label": 'Document History',
- "visible": true
+ "label": 'Document History'
},
{
"id": 581,
- "enabled": true,
- "label": 'Images',
- "visible": true
+ "label": 'Images'
},
{
"id": 582,
@@ -3737,48 +2723,34 @@
},
{
"id": 583,
- "enabled": true,
- "label": 'Buffers',
- "visible": true
+ "label": 'Buffers'
},
{
"id": 584,
- "enabled": true,
- "label": 'Fonts',
- "visible": true
+ "label": 'Fonts'
},
{
"id": 585,
- "enabled": true,
- "label": 'Palettes',
- "visible": true
+ "label": 'Palettes'
},
{
"id": 586,
- "enabled": true,
"label": 'Gradients',
- "shortcut": [['Control', 'g']],
- "visible": true
+ "shortcut": [['Control', 'g']]
},
{
"id": 587,
- "enabled": true,
"label": 'Patterns',
- "shortcut": [['Control', 'Shift', 'p']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'p']]
},
{
"id": 588,
- "enabled": true,
"label": 'Brushes',
- "shortcut": [['Control', 'Shift', 'b']],
- "visible": true
+ "shortcut": [['Control', 'Shift', 'b']]
},
{
"id": 589,
- "enabled": true,
- "label": 'Colors',
- "visible": true
+ "label": 'Colors'
},
{
"id": 590,
@@ -3786,64 +2758,44 @@
},
{
"id": 591,
- "enabled": true,
- "label": 'Sample Points',
- "visible": true
+ "label": 'Sample Points'
},
{
"id": 592,
- "enabled": true,
- "label": 'Pointer',
- "visible": true
+ "label": 'Pointer'
},
{
"id": 593,
- "enabled": true,
- "label": 'Undo History',
- "visible": true
+ "label": 'Undo History'
},
{
"id": 594,
- "enabled": true,
- "label": 'Navigation',
- "visible": true
+ "label": 'Navigation'
},
{
"id": 595,
- "enabled": true,
- "label": 'Selection Editor',
- "visible": true
+ "label": 'Selection Editor'
},
{
"id": 596,
- "enabled": true,
- "label": 'Histogram',
- "visible": true
+ "label": 'Histogram'
},
{
"id": 597,
- "enabled": true,
- "label": 'Colormap',
- "visible": true
+ "label": 'Colormap'
},
{
"id": 598,
- "enabled": true,
- "label": 'Paths',
- "visible": true
+ "label": 'Paths'
},
{
"id": 599,
- "enabled": true,
- "label": 'Channels',
- "visible": true
+ "label": 'Channels'
},
{
"id": 600,
- "enabled": true,
"label": 'Layers',
- "shortcut": [['Control', 'l']],
- "visible": true
+ "shortcut": [['Control', 'l']]
},
{
"id": 601,
@@ -3851,30 +2803,23 @@
},
{
"id": 602,
- "enabled": true,
- "label": 'Device Status',
- "visible": true
+ "label": 'Device Status'
},
{
"id": 603,
- "enabled": true,
- "label": 'Tool Options',
- "visible": true
+ "label": 'Tool Options'
}
]
},
{
"id": 604,
"children-display": 'submenu',
- "enabled": true,
"label": 'Recently Closed Docks',
- "visible": true,
"submenu": [
{
"id": 605,
"enabled": false,
- "label": 'Empty',
- "visible": true
+ "label": 'Empty'
}
]
}
@@ -3883,91 +2828,63 @@
{
"id": 606,
"children-display": 'submenu',
- "enabled": true,
"label": 'Help',
- "visible": true,
"submenu": [
{
"id": 607,
"children-display": 'submenu',
- "enabled": true,
"label": 'User Manual',
- "visible": true,
"submenu": [
{
"id": 608,
- "enabled": true,
- "label": 'Working with Digital Camera Photos',
- "visible": true
+ "label": 'Working with Digital Camera Photos'
},
{
"id": 609,
- "enabled": true,
- "label": 'Using Paths',
- "visible": true
+ "label": 'Using Paths'
},
{
"id": 610,
- "enabled": true,
- "label": 'Preparing your Images for the Web',
- "visible": true
+ "label": 'Preparing your Images for the Web'
},
{
"id": 611,
- "enabled": true,
- "label": 'How to Use Dialogs',
- "visible": true
+ "label": 'How to Use Dialogs'
},
{
"id": 612,
- "enabled": true,
- "label": 'Drawing Simple Objects',
- "visible": true
+ "label": 'Drawing Simple Objects'
},
{
"id": 613,
- "enabled": true,
- "label": 'Create, Open and Save Files',
- "visible": true
+ "label": 'Create, Open and Save Files'
},
{
"id": 614,
- "enabled": true,
- "label": 'Basic Concepts',
- "visible": true
+ "label": 'Basic Concepts'
}
]
},
{
"id": 615,
"children-display": 'submenu',
- "enabled": true,
"label": 'GIMP Online',
- "visible": true,
"submenu": [
{
"id": 616,
- "enabled": true,
- "label": 'User Manual Web Site',
- "visible": true
+ "label": 'User Manual Web Site'
},
{
"id": 617,
- "enabled": true,
- "label": 'Plug-in Registry',
- "visible": true
+ "label": 'Plug-in Registry'
},
{
"id": 618,
- "enabled": true,
- "label": 'Main Web Site',
- "visible": true
+ "label": 'Main Web Site'
},
{
"id": 619,
- "enabled": true,
- "label": 'Developer Web Site',
- "visible": true
+ "label": 'Developer Web Site'
}
]
},
@@ -3977,15 +2894,11 @@
},
{
"id": 621,
- "enabled": true,
- "label": 'Procedure Browser',
- "visible": true
+ "label": 'Procedure Browser'
},
{
"id": 622,
- "enabled": true,
- "label": 'Plug-In Browser',
- "visible": true
+ "label": 'Plug-In Browser'
},
{
"id": 623,
@@ -3993,29 +2906,21 @@
},
{
"id": 624,
- "enabled": true,
- "label": 'About',
- "visible": true
+ "label": 'About'
},
{
"id": 625,
- "enabled": true,
- "label": 'Tip of the Day',
- "visible": true
+ "label": 'Tip of the Day'
},
{
"id": 626,
- "enabled": true,
"label": 'Context Help',
- "shortcut": [['Shift', 'F1']],
- "visible": true
+ "shortcut": [['Shift', 'F1']]
},
{
"id": 627,
- "enabled": true,
"label": 'Help',
- "shortcut": [['F1']],
- "visible": true
+ "shortcut": [['F1']]
}
]
}
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 7d48bd7..64c2fa5 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -200,6 +200,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
diff --git a/tools/testapp/Makefile.in b/tools/testapp/Makefile.in
index 387c6bb..ae9b152 100644
--- a/tools/testapp/Makefile.in
+++ b/tools/testapp/Makefile.in
@@ -136,6 +136,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@