diff options
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r-- | libdbusmenu-glib/client.c | 10 | ||||
-rw-r--r-- | libdbusmenu-glib/dbus-menu.xml | 115 | ||||
-rw-r--r-- | libdbusmenu-glib/server.c | 6 |
3 files changed, 96 insertions, 35 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index c0ea0d7..eb3b42b 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -352,7 +352,7 @@ id_update (DBusGProxy * proxy, guint id, DbusmenuClient * client) DbusmenuMenuitem * menuitem = dbusmenu_menuitem_find_id(priv->root, id); g_return_if_fail(menuitem != NULL); - org_freedesktop_dbusmenu_get_properties_async(proxy, id, menuitem_get_properties_cb, menuitem); + org_ayatana_dbusmenu_get_properties_async(proxy, id, menuitem_get_properties_cb, menuitem); return; } @@ -473,7 +473,7 @@ build_proxies (DbusmenuClient * client) priv->menuproxy = dbus_g_proxy_new_for_name_owner(priv->session_bus, priv->dbus_name, priv->dbus_object, - "org.freedesktop.dbusmenu", + "org.ayatana.dbusmenu", &error); if (error != NULL) { g_warning("Unable to get dbusmenu proxy for %s on %s: %s", priv->dbus_name, priv->dbus_object, error->message); @@ -648,7 +648,7 @@ static void menuitem_activate (DbusmenuMenuitem * mi, DbusmenuClient * client) { DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client); - org_freedesktop_dbusmenu_call_async (priv->menuproxy, dbusmenu_menuitem_get_id(mi), menuitem_call_cb, mi); + org_ayatana_dbusmenu_call_async (priv->menuproxy, dbusmenu_menuitem_get_id(mi), menuitem_call_cb, mi); return; } @@ -690,7 +690,7 @@ parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * it propdata->item = item; propdata->parent = parent; - org_freedesktop_dbusmenu_get_properties_async(proxy, id, menuitem_get_properties_new_cb, propdata); + org_ayatana_dbusmenu_get_properties_async(proxy, id, menuitem_get_properties_new_cb, propdata); } else { g_warning("Unable to allocate memory to get properties for menuitem. This menuitem will never be realized."); } @@ -830,7 +830,7 @@ update_layout (DbusmenuClient * client) update_layout_cb, client, NULL, - G_TYPE_STRING, "org.freedesktop.dbusmenu", + G_TYPE_STRING, "org.ayatana.dbusmenu", G_TYPE_STRING, "layout", G_TYPE_INVALID, G_TYPE_VALUE, G_TYPE_INVALID); diff --git a/libdbusmenu-glib/dbus-menu.xml b/libdbusmenu-glib/dbus-menu.xml index a198554..e2d872b 100644 --- a/libdbusmenu-glib/dbus-menu.xml +++ b/libdbusmenu-glib/dbus-menu.xml @@ -28,12 +28,26 @@ License version 3 and version 2.1 along with this program. If not, see <http://www.gnu.org/licenses/> --> <node name="/"> - <interface name="org.freedesktop.dbusmenu"> + <interface name="org.ayatana.dbusmenu"> <!-- Properties --> <!-- +Provides the version of the DBusmenu API that this API is +implementing. +--> + <property name="version" type="u" access="read"/> + +<!-- Functions --> + +<!-- Provides an XML representation of the menu hierarchy +@param parentId The ID of the parent node for the layout. For + grabbing the layout from the root node use zero. +@param revision The revision number of the layout. For matching + with layoutUpdated signals. +@param layout The layout as an XML string of IDs. + XML syntax: <menu id="1" revision="2"> # Root container @@ -48,76 +62,123 @@ XML syntax: ... </menu> --> + <method name="GetLayout"> + <arg type="u" name="parentId" direction="in" /> + <arg type="u" name="revision" direction="out" /> + <arg type="s" name="layout" direction="out" /> + </method> - <property name="layout" type="s" access="read"/> +<!-- +Returns the list of items which are children of @a parentId. - <property name="version" type="u" access="read"/> +@param Ids A list of ids that we should be finding the properties + on. If the list is empty, all menu items should be sent. +@param propertyNames list of string the list of item properties we + are interested in. If there are no entries in the list all of + the properties will be sent. -<!-- Functions --> +An item is represented as a struct following this format: +@li id unsigned the item id +@li properties map(string => variant) the requested item properties + +--> + <method name="GetGroupProperties"> + <arg type="au" name="Ids" direction="in" /> + <arg type="as" name="propertyNames" direction="in" /> + <arg type="a(ua{sv})" name="properties" direction="out" /> + </method> <!-- Each menu item has a set of properties. Property keys are in menuitem.h: -- visible -- sensitive -- label -- icon -- icon-data -- type - -"type" property is an enum which can take the following values (client.h): - -- menuitem -- separator -- imageitem +@li type string Type of the item (see below) +@li label string Text of the item +@li icon-data binary Raw data of the icon (TODO: define format) +@li icon string Icon name of the item, following icon spec +@li sensitive boolean Whether the item can be activated or not +@li visible boolean Whether the item is visible or not (XXX: Is this necessary?) +@li checked boolean Whether a checkbox or radio item is checked +@li shortcut string The keyboard shortcut + +@c type property is an enum which can take the following values (client.h): + +@li action An item which can be clicked to trigger an action +@li checkbox An item which can be checked or unchecked +@li radio An item which can be checked or unchecked as part of a group +@li separator A separator +@li menu An item which contains more items --> <method name="GetProperty"> <arg type="u" name="id" direction="in" /> - <arg type="s" name="property" direction="in" /> + <arg type="s" name="name" direction="in" /> <arg type="v" name="value" direction="out" /> </method> <!-- -Convenience method to retrieve all properties in one call (more efficient) +Returns multiple properties in one call. This is more efficient than +GetProperty. + +@param id unsigned the item whose properties we want to retrieve. +@param propertyNames list of string name of the properties we want. If the list contains no entries, all properties are sent. --> <method name="GetProperties"> + <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QVariantMap"/> <arg type="u" name="id" direction="in" /> + <arg type="as" name="propertyNames" direction="in" /> <arg type="a{sv}" name="properties" direction="out" /> </method> <!-- -This is called by the display to notify the application it should trigger -the action associated with a specific menu id +This is called by the applet to notify the application an event happened on a +menu item. + +@param id the id of the item which received the event +@param type the type of event +@param data event-specific data + +@a type can be one of the following: + +@li "clicked" +@li "hovered" + +Vendor specific events can be added by prefixing them with "x-<vendor>-" --> - <method name="Call"> + <method name="Event"> <arg type="u" name="id" direction="in" /> + <arg type="s" name="eventId" direction="in" /> + <arg type="v" name="data" direction="in" /> </method> <!-- Signals --> <!-- -Triggered by the application to notify display that the property prop from menu id -as changed to value. +Triggered by the application to notify the applet that the property @a property +from item @a id has changed to @a value. --> - <signal name="IdPropUpdate"> + <signal name="ItemPropertyUpdated"> <arg type="u" name="id" direction="out" /> <arg type="s" name="prop" direction="out" /> <arg type="v" name="value" direction="out" /> </signal> <!-- -Triggered by the application to notify display that all properties of menu id -should be considered outdated +Triggered by the application to notify the applet that all properties of item +@a id should be considered outdated --> - <signal name="IdUpdate"> + <signal name="ItemUpdated"> <arg type="u" name="id" direction="out" /> </signal> <!-- Triggered by the application to notify display of a layout update, up to revision +@param revsion The revision of the layout that we're currently on +@param parent If the layout update is only of a subtree, this is the parent + item for the entries that have changed. It is zero if the + whole layout should be considered invalid. --> <signal name="LayoutUpdate"> <arg type="i" name="revision" direction="out" /> + <arg type="u" name="parent" direction="out" /> </signal> <!-- End of interesting stuff --> diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c index 38ff7fa..7ad9c46 100644 --- a/libdbusmenu-glib/server.c +++ b/libdbusmenu-glib/server.c @@ -162,7 +162,7 @@ dbusmenu_server_class_init (DbusmenuServerClass *class) g_object_class_install_property (object_class, PROP_DBUS_OBJECT, g_param_spec_string(DBUSMENU_SERVER_PROP_DBUS_OBJECT, "DBus object path", "The object that represents this set of menus on DBus", - "/org/freedesktop/dbusmenu", + "/org/ayatana/dbusmenu", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (object_class, PROP_ROOT_NODE, g_param_spec_object(DBUSMENU_SERVER_PROP_ROOT_NODE, "Root menu node", @@ -473,7 +473,7 @@ _dbusmenu_server_call (DbusmenuServer * server, guint id, GError ** error) Creates a new #DbusmenuServer object with a specific object path on DBus. If @object is set to NULL the default object - name of "/org/freedesktop/dbusmenu" will be used. + name of "/org/ayatana/dbusmenu" will be used. Return value: A brand new #DbusmenuServer */ @@ -481,7 +481,7 @@ DbusmenuServer * dbusmenu_server_new (const gchar * object) { if (object == NULL) { - object = "/org/freedesktop/dbusmenu"; + object = "/org/ayatana/dbusmenu"; } DbusmenuServer * self = g_object_new(DBUSMENU_TYPE_SERVER, |