mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-05 13:28:02 +02:00
2005-01-29 Havoc Pennington <hp@redhat.com>
* tools/dbus-tree-view.c: add support for displaying properties. (run dbus-viewer with an introspect xml file as arg, then resize the window so the tree elements show up, not sure what that is) * glib/dbus-gobject.c (handle_introspect): return org.freedesktop.Properties and org.freedesktop.Introspectable interfaces when we are introspected. * doc/dbus-specification.xml: allow empty interface name when Get/Set a property
This commit is contained in:
parent
fd3e49f249
commit
2922b0e88b
4 changed files with 54 additions and 2 deletions
13
ChangeLog
13
ChangeLog
|
|
@ -1,3 +1,16 @@
|
|||
2005-01-29 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* tools/dbus-tree-view.c: add support for displaying properties.
|
||||
(run dbus-viewer with an introspect xml file as arg, then resize
|
||||
the window so the tree elements show up, not sure what that is)
|
||||
|
||||
* glib/dbus-gobject.c (handle_introspect): return
|
||||
org.freedesktop.Properties and org.freedesktop.Introspectable
|
||||
interfaces when we are introspected.
|
||||
|
||||
* doc/dbus-specification.xml: allow empty interface name when
|
||||
Get/Set a property
|
||||
|
||||
2005-01-29 Havoc Pennington <hp@redhat.com>
|
||||
|
||||
* glib/Makefile.am: rename dbus-glib-tool to dbus-binding-tool;
|
||||
|
|
|
|||
|
|
@ -2147,6 +2147,13 @@
|
|||
by calling <literal>org.freedesktop.Introspectable.Introspect</literal>,
|
||||
see <xref linkend="standard-interfaces-introspectable"/>.
|
||||
</para>
|
||||
<para>
|
||||
An empty string may be provided for the interface name; in this case,
|
||||
if there are multiple properties on an object with the same name,
|
||||
the results are undefined (picking one by according to an arbitrary
|
||||
deterministic rule, or returning an error, are the reasonable
|
||||
possibilities).
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
|
|
|
|||
|
|
@ -290,6 +290,27 @@ handle_introspect (DBusConnection *connection,
|
|||
xml = g_string_new (NULL);
|
||||
|
||||
g_string_append (xml, "<node>\n");
|
||||
|
||||
/* We are introspectable, though I guess that was pretty obvious */
|
||||
g_string_append (xml, " <interface name=\"org.freedesktop.Introspectable\">\n");
|
||||
g_string_append (xml, " <method name=\"Introspect\">\n");
|
||||
g_string_append (xml, " <arg name=\"data\" direction=\"out\" type=\"string\"\"/>\n");
|
||||
g_string_append (xml, " </method>\n");
|
||||
g_string_append (xml, " </interface>\n");
|
||||
|
||||
/* We support get/set properties */
|
||||
g_string_append (xml, " <interface name=\"org.freedesktop.Properties\">\n");
|
||||
g_string_append (xml, " <method name=\"Get\">\n");
|
||||
g_string_append (xml, " <arg name=\"interface\" direction=\"in\" type=\"string\"\"/>\n");
|
||||
g_string_append (xml, " <arg name=\"propname\" direction=\"in\" type=\"string\"\"/>\n");
|
||||
g_string_append (xml, " <arg name=\"value\" direction=\"out\" type=\"variant\"\"/>\n");
|
||||
g_string_append (xml, " </method>\n");
|
||||
g_string_append (xml, " <method name=\"Set\">\n");
|
||||
g_string_append (xml, " <arg name=\"interface\" direction=\"in\" type=\"string\"\"/>\n");
|
||||
g_string_append (xml, " <arg name=\"propname\" direction=\"in\" type=\"string\"\"/>\n");
|
||||
g_string_append (xml, " <arg name=\"value\" direction=\"in\" type=\"variant\"\"/>\n");
|
||||
g_string_append (xml, " </method>\n");
|
||||
g_string_append (xml, " </interface>\n");
|
||||
|
||||
introspect_signals (G_OBJECT_TYPE (object), xml);
|
||||
introspect_properties (object, xml);
|
||||
|
|
@ -409,7 +430,7 @@ gobject_message_function (DBusConnection *connection,
|
|||
gboolean getter;
|
||||
char *s;
|
||||
const char *wincaps_propname;
|
||||
const char *wincaps_propiface;
|
||||
/* const char *wincaps_propiface; */
|
||||
DBusMessageIter iter;
|
||||
|
||||
object = G_OBJECT (user_data);
|
||||
|
|
@ -460,7 +481,10 @@ gobject_message_function (DBusConnection *connection,
|
|||
g_warning ("Property get or set does not have an interface string as first arg\n");
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
}
|
||||
dbus_message_iter_get_basic (&iter, &wincaps_propiface);
|
||||
/* We never use the interface name; if we did, we'd need to
|
||||
* remember that it can be empty string for "pick one for me"
|
||||
*/
|
||||
/* dbus_message_iter_get_basic (&iter, &wincaps_propiface); */
|
||||
dbus_message_iter_next (&iter);
|
||||
|
||||
if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_STRING)
|
||||
|
|
|
|||
|
|
@ -134,6 +134,8 @@ set_info (GtkTreeModel *model,
|
|||
interface_info_get_methods ((InterfaceInfo*)info));
|
||||
append_child_list (model, root,
|
||||
interface_info_get_signals ((InterfaceInfo*)info));
|
||||
append_child_list (model, root,
|
||||
interface_info_get_properties ((InterfaceInfo*)info));
|
||||
break;
|
||||
case INFO_TYPE_METHOD:
|
||||
append_child_list (model, root,
|
||||
|
|
@ -143,6 +145,9 @@ set_info (GtkTreeModel *model,
|
|||
append_child_list (model, root,
|
||||
signal_info_get_args ((SignalInfo*)info));
|
||||
break;
|
||||
case INFO_TYPE_PROPERTY:
|
||||
/* no children */
|
||||
break;
|
||||
case INFO_TYPE_ARG:
|
||||
/* no children */
|
||||
break;
|
||||
|
|
@ -292,6 +297,9 @@ info_set_func_text (GtkTreeViewColumn *tree_column,
|
|||
case INFO_TYPE_SIGNAL:
|
||||
g_string_append (str, "<i>signal</i>");
|
||||
break;
|
||||
case INFO_TYPE_PROPERTY:
|
||||
g_string_append (str, "<i>property</i>");
|
||||
break;
|
||||
case INFO_TYPE_ARG:
|
||||
g_string_append (str, "<i>arg</i>");
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue