aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2009-12-08 09:06:16 -0600
committerTed Gould <ted@gould.cx>2009-12-08 09:06:16 -0600
commit9f63aa6cf1a4369b9df11dabcfa8d179b30c04da (patch)
tree5c729c1d2dfcf23b0bbe38a9eca57f9885a6ae9f
parent6ecd6e2c2a559612d256c6214b31e2881721b240 (diff)
parent8983907f0c69451c3b7c94788467d532e1fdce1a (diff)
downloadlibdbusmenu-9f63aa6cf1a4369b9df11dabcfa8d179b30c04da.tar.gz
libdbusmenu-9f63aa6cf1a4369b9df11dabcfa8d179b30c04da.tar.bz2
libdbusmenu-9f63aa6cf1a4369b9df11dabcfa8d179b30c04da.zip
Updating to current trunk
-rw-r--r--libdbusmenu-glib/client.c10
-rw-r--r--libdbusmenu-glib/dbus-menu.xml59
-rw-r--r--libdbusmenu-glib/server.c6
-rw-r--r--tests/Makefile.am58
-rw-r--r--tests/run-xvfb.sh7
5 files changed, 107 insertions, 33 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index ab307bd..61f1ccf 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -351,7 +351,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;
}
@@ -472,7 +472,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);
@@ -647,7 +647,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;
}
@@ -689,7 +689,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.");
}
@@ -829,7 +829,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 cca9823..345c736 100644
--- a/libdbusmenu-glib/dbus-menu.xml
+++ b/libdbusmenu-glib/dbus-menu.xml
@@ -28,34 +28,91 @@ 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 an XML representation of the menu hierarchy
+
+XML syntax:
+
+<menu id="1" revision="2"> # Root container
+ <menu id="2" revision="2"> # First level menu, for example "File"
+ <menu id="3" revision="2"/> ~ Second level menu, for example "Open"
+ <menu id="4" revision="3"/>
+ ...
+ </menu>
+ <menu id="5" revision="2"> # Another first level menu, say "Edit"
+ ...
+ </menu>
+ ...
+</menu>
+-->
<property name="layout" type="s" access="read"/>
<!-- Functions -->
+
+<!--
+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
+-->
<method name="GetProperty">
<arg type="u" name="id" direction="in" />
<arg type="s" name="property" direction="in" />
<arg type="s" name="value" direction="out" />
</method>
+
+<!--
+Convenience method to retrieve all properties in one call (more efficient)
+-->
<method name="GetProperties">
<arg type="u" name="id" direction="in" />
<arg type="a{ss}" 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
+-->
<method name="Call">
<arg type="u" name="id" direction="in" />
</method>
<!-- Signals -->
+<!--
+Triggered by the application to notify display that the property prop from menu id
+as changed to value.
+-->
<signal name="IdPropUpdate">
<arg type="u" name="id" direction="out" />
<arg type="s" name="prop" direction="out" />
<arg type="s" name="value" direction="out" />
</signal>
+
+<!--
+Triggered by the application to notify display that all properties of menu id
+should be considered outdated
+-->
<signal name="IdUpdate">
<arg type="u" name="id" direction="out" />
</signal>
+
+<!--
+Triggered by the application to notify display of a layout update, up to
+revision
+-->
<signal name="LayoutUpdate">
<arg type="i" name="revision" direction="out" />
</signal>
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c
index 1ac1da6..84bfffe 100644
--- a/libdbusmenu-glib/server.c
+++ b/libdbusmenu-glib/server.c
@@ -161,7 +161,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",
@@ -472,7 +472,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
*/
@@ -480,7 +480,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,
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 10fe857..f54aa6b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -2,12 +2,12 @@
DBUS_RUNNER=dbus-test-runner --dbus-config /usr/share/dbus-test-runner/session.conf
TESTS = \
- test-mago \
test-glib-layout \
test-glib-properties \
- test-gtk-label \
test-glib-simple-items \
- test-gtk-reorder
+ test-gtk-label \
+ test-gtk-reorder \
+ test-mago
check_PROGRAMS = \
glib-server-nomenu \
@@ -20,6 +20,12 @@ check_PROGRAMS = \
test-glib-simple-items \
test-gtk-reorder-server
+XVFB_RUN=". $(srcdir)/run-xvfb.sh"
+
+######################
+# Test GLib server
+######################
+
glib_server_nomenu_SOURCES = \
glib-server-nomenu.c
@@ -36,9 +42,9 @@ glib_server_nomenu_LDADD = \
######################
test-glib-layout: test-glib-layout-client test-glib-layout-server Makefile.am
- @echo "#!/bin/sh" > test-glib-layout
- @echo $(DBUS_RUNNER) --task ./test-glib-layout-client --task-name Client --task ./test-glib-layout-server --task-name Server --ignore-return >> test-glib-layout
- @chmod +x test-glib-layout
+ @echo "#!/bin/bash" > $@
+ @echo $(DBUS_RUNNER) --task ./test-glib-layout-client --task-name Client --task ./test-glib-layout-server --task-name Server --ignore-return >> $@
+ @chmod +x $@
test_glib_layout_server_SOURCES = \
test-glib-layout.h \
@@ -70,9 +76,9 @@ test_glib_layout_client_LDADD = \
######################
test-glib-properties: test-glib-properties-client test-glib-properties-server Makefile.am
- @echo "#!/bin/sh" > test-glib-properties
- @echo $(DBUS_RUNNER) --task ./test-glib-properties-client --task-name Client --task ./test-glib-properties-server --task-name Server --ignore-return >> test-glib-properties
- @chmod +x test-glib-properties
+ @echo "#!/bin/bash" > $@
+ @echo $(DBUS_RUNNER) --task ./test-glib-properties-client --task-name Client --task ./test-glib-properties-server --task-name Server --ignore-return >> $@
+ @chmod +x $@
test_glib_properties_server_SOURCES = \
test-glib-properties.h \
@@ -118,9 +124,10 @@ test_glib_simple_items_LDADD = \
#########################
test-gtk-label: test-gtk-label-client test-gtk-label-server test-gtk-label.json Makefile.am
- @echo "#!/bin/sh" > test-gtk-label
- @echo $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-label-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return >> test-gtk-label
- @chmod +x test-gtk-label
+ @echo "#!/bin/bash" > $@
+ @echo $(XVFB_RUN) >> $@
+ @echo $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-label-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return >> $@
+ @chmod +x $@
test_gtk_label_server_SOURCES = \
test-gtk-label-server.c
@@ -157,9 +164,10 @@ test_gtk_label_client_LDADD = \
#########################
test-gtk-reorder: test-gtk-label-client test-gtk-reorder-server Makefile.am
- @echo "#!/bin/sh" > test-gtk-reorder
- @echo $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-reorder-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return >> test-gtk-reorder
- @chmod +x test-gtk-reorder
+ @echo "#!/bin/bash" > $@
+ @echo $(XVFB_RUN) >> $@
+ @echo $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-reorder-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return >> $@
+ @chmod +x $@
test_gtk_reorder_server_SOURCES = \
test-gtk-reorder-server.c
@@ -181,13 +189,15 @@ test_gtk_reorder_server_LDADD = \
#########################
test-mago: test-gtk-label-client test-gtk-label-server $(srcdir)/dbusmenu-gtk/mago_tests/dbusmenu.xml Makefile.am
- @echo "#!/bin/sh" > test-mago
- @echo cd $(srcdir)/dbusmenu-gtk >> test-mago
- @echo echo Mago Results dir: $(abs_builddir)/mago.results >> test-mago
- @echo echo PYTHONPATH=$(abs_srcdir)/dbusmenu-gtk/mago_tests >> test-mago
- @echo export INDICATOR_BUILD_DIR=$(abs_builddir) >> test-mago
- @echo PYTHONPATH=$(abs_srcdir)/dbusmenu-gtk/mago_tests mago -f dbusmenu.xml -t $(abs_builddir)/mago.results --log-level=debug >> test-mago
- @chmod +x test-mago
+ @echo "#!/bin/bash" > $@
+ @echo $(XVFB_RUN) >> $@
+ @echo cd $(srcdir)/dbusmenu-gtk >> $@
+ @echo /usr/lib/at-spi/at-spi-registryd \& >> $@
+ @echo echo Mago Results dir: $(abs_builddir)/mago.results >> $@
+ @echo echo PYTHONPATH=$(abs_srcdir)/dbusmenu-gtk/mago_tests >> $@
+ @echo export INDICATOR_BUILD_DIR=$(abs_builddir) >> $@
+ @echo PYTHONPATH=$(abs_srcdir)/dbusmenu-gtk/mago_tests mago -f dbusmenu.xml -t $(abs_builddir)/mago.results --log-level=debug >> $@
+ @chmod +x $@
#########################
# Other
@@ -200,6 +210,7 @@ examples_DATA = \
EXTRA_DIST = \
$(examples_DATA) \
+ run-xvfb.sh \
test-gtk-label.json \
dbusmenu-gtk/dbusMenuTest \
dbusmenu-gtk/mago_tests/dbusmenu.xml \
@@ -222,11 +233,10 @@ EXTRA_DIST = \
dbusmenu-gtk/mago_tests/data/test-gtk-label.json
CLEANFILES = \
- dbusmenu-gtk/mago_tests/dbusmenu.xml \
dbusmenu-gtk/mago_tests/dbusmenu.pyc
distclean-local:
- -rm -rf $(builddir)/dbusmenu-gtk/mago.results
+ -rm -rf $(builddir)/mago.results
DISTCLEANFILES = \
$(TESTS)
diff --git a/tests/run-xvfb.sh b/tests/run-xvfb.sh
new file mode 100644
index 0000000..3622dbf
--- /dev/null
+++ b/tests/run-xvfb.sh
@@ -0,0 +1,7 @@
+if [ "$DISPLAY" == "" ]; then
+Xvfb -ac -noreset -screen 0 800x600x16 -help 2>/dev/null 1>&2
+XID=`for id in 101 102 103 104 105 106 107 197 199 211 223 227 293 307 308 309 310 311 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 4703 4721 4723 4729 4733 4751 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 ; do test -e /tmp/.X$id-lock || { echo $id; exit 0; }; done; exit 1`
+{ Xvfb -ac -noreset -screen 0 800x600x16 :$XID -screen 0 800x600x16 -nolisten tcp -auth /dev/null >/dev/null 2>&1 & trap "kill -15 $! " 0 HUP INT QUIT TRAP USR1 PIPE TERM ; } || { echo "Gtk+Tests:ERROR: Failed to start Xvfb environment for X11 target tests."; exit 1; }
+DISPLAY=:$XID
+export DISPLAY
+fi