2005-02-12 Havoc Pennington <hp@redhat.com>
authorHavoc Pennington <hp@redhat.com>
Sat, 12 Feb 2005 20:27:45 +0000 (20:27 +0000)
committerHavoc Pennington <hp@redhat.com>
Sat, 12 Feb 2005 20:27:45 +0000 (20:27 +0000)
* tools/dbus-tree-view.c (info_set_func_text): display more
details on args

* bus/driver.c (bus_driver_handle_list_services): list the bus
driver

* glib/dbus-gparser.c (parse_arg): generate an arg name if none is supplied

* glib/dbus-gidl.c (signal_info_get_n_args): new function
(method_info_get_n_args): new function

ChangeLog
bus/driver.c
glib/dbus-gidl.c
glib/dbus-gidl.h
glib/dbus-gparser.c
tools/dbus-tree-view.c

index d358180..ca582e1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2005-02-12  Havoc Pennington  <hp@redhat.com>
 
+       * tools/dbus-tree-view.c (info_set_func_text): display more
+       details on args
+
+       * bus/driver.c (bus_driver_handle_list_services): list the bus
+       driver
+
+       * glib/dbus-gparser.c (parse_arg): generate an arg name if none is supplied
+
+       * glib/dbus-gidl.c (signal_info_get_n_args): new function
+       (method_info_get_n_args): new function
+
+2005-02-12  Havoc Pennington  <hp@redhat.com>
+
        * bus/driver.c (bus_driver_handle_introspect): add introspection
        for bus driver
 
index 7a71682..9c1a47c 100644 (file)
@@ -409,6 +409,19 @@ bus_driver_handle_list_services (DBusConnection *connection,
       return FALSE;
     }
 
+  {
+    /* Include the bus driver in the list */
+    const char *v_STRING = DBUS_SERVICE_ORG_FREEDESKTOP_DBUS;
+    if (!dbus_message_iter_append_basic (&sub, DBUS_TYPE_STRING,
+                                         &v_STRING))
+      {
+        dbus_free_string_array (services);
+        dbus_message_unref (reply);
+        BUS_SET_OOM (error);
+        return FALSE;
+      }
+  }
+  
   i = 0;
   while (i < len)
     {
index 8e0dc0d..ec87414 100644 (file)
@@ -459,6 +459,12 @@ method_info_get_args (MethodInfo *info)
   return info->args;
 }
 
+int
+method_info_get_n_args (MethodInfo *info)
+{
+  return g_slist_length (info->args);
+}
+
 static int
 args_sort_by_direction (const void *a,
                         const void *b)
@@ -532,6 +538,12 @@ signal_info_get_args (SignalInfo *info)
   return info->args;
 }
 
+int
+signal_info_get_n_args (SignalInfo *info)
+{
+  return g_slist_length (info->args);
+}
+
 void
 signal_info_add_arg (SignalInfo    *info,
                      ArgInfo       *arg)
index 88d5c6e..a706c4d 100644 (file)
@@ -106,6 +106,7 @@ const char*         method_info_get_name          (MethodInfo          *info);
 GSList*             method_info_get_args          (MethodInfo          *info);
 void                method_info_add_arg           (MethodInfo          *info,
                                                    ArgInfo             *arg);
+int                 method_info_get_n_args        (MethodInfo          *info);
 SignalInfo*         signal_info_new               (const char          *name);
 SignalInfo*         signal_info_ref               (SignalInfo          *info);
 void                signal_info_unref             (SignalInfo          *info);
@@ -113,6 +114,7 @@ const char*         signal_info_get_name          (SignalInfo          *info);
 GSList*             signal_info_get_args          (SignalInfo          *info);
 void                signal_info_add_arg           (SignalInfo          *info,
                                                    ArgInfo             *arg);
+int                 signal_info_get_n_args        (SignalInfo          *info);
 PropertyInfo*       property_info_new             (const char          *name,
                                                    int                  type,
                                                    PropertyAccessFlags  access);
index 963a573..680d830 100644 (file)
@@ -620,6 +620,7 @@ parse_arg (Parser      *parser,
   ArgDirection dir;
   int t;
   ArgInfo *arg;
+  char *generated_name;
   
   if (!(parser->method || parser->signal) ||
       parser->node_stack == NULL ||
@@ -689,8 +690,16 @@ parse_arg (Parser      *parser,
   t = type_from_string (type, element_name, error);
   if (t == DBUS_TYPE_INVALID)
     return FALSE;
+
+  generated_name = NULL;
+  if (name == NULL)
+    generated_name = g_strdup_printf ("arg%d",
+                                      parser->method ?
+                                      method_info_get_n_args (parser->method) :
+                                      signal_info_get_n_args (parser->signal));
+                                      
   
-  arg = arg_info_new (name, dir, t);
+  arg = arg_info_new (name ? name : generated_name, dir, t);
   if (parser->method)
     method_info_add_arg (parser->method, arg);
   else if (parser->signal)
@@ -698,6 +707,8 @@ parse_arg (Parser      *parser,
   else
     g_assert_not_reached ();
 
+  g_free (generated_name);
+  
   arg_info_unref (arg);
 
   parser->arg = arg;
index d2898fb..f9342ee 100644 (file)
 #include "dbus-tree-view.h"
 #include <glib/gi18n.h>
 
+/* FIXME this function should just be in the library */
+static const char *
+type_to_string (int type)
+{
+  switch (type)
+    {
+    case DBUS_TYPE_INVALID:
+      return "invalid";
+    case DBUS_TYPE_BOOLEAN:
+      return "boolean";
+    case DBUS_TYPE_BYTE:
+      return "byte";
+    case DBUS_TYPE_INT16:
+      return "int16";
+    case DBUS_TYPE_UINT16:
+      return "uint16";
+    case DBUS_TYPE_INT32:
+      return "int32";
+    case DBUS_TYPE_UINT32:
+      return "uint32";
+    case DBUS_TYPE_DOUBLE:
+      return "double";
+    case DBUS_TYPE_STRING:
+      return "string";
+    case DBUS_TYPE_OBJECT_PATH:
+      return "object_path";
+    case DBUS_TYPE_SIGNATURE:
+      return "signature";
+    case DBUS_TYPE_STRUCT:
+      return "struct";
+    case DBUS_TYPE_ARRAY:
+      return "array";
+    case DBUS_TYPE_VARIANT:
+      return "variant";
+    case DBUS_STRUCT_BEGIN_CHAR:
+      return "begin_struct";
+    case DBUS_STRUCT_END_CHAR:
+      return "end_struct";
+    default:
+      return "unknown";
+    }
+}
+
 enum
 {
   MODEL_COLUMN_INFO,
@@ -292,7 +335,11 @@ info_set_func_text (GtkTreeViewColumn *tree_column,
       g_string_append (str, "<i>property</i>");
       break;
     case INFO_TYPE_ARG:
-      g_string_append (str, "<i>arg</i>");
+      g_string_append_printf (str, "<i>arg</i> %s",
+                              arg_info_get_direction ((ArgInfo*)info) == ARG_IN ?
+                              "in" : "out");
+      g_string_append_printf (str, " <b>%s</b>",
+                              type_to_string (arg_info_get_type ((ArgInfo*)info)));
       break;
     }