[gtk+] inspector: Add style classes to the object list



commit bd031b89c154a4fc7cb9c11bdf17f1df226c1b97
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Oct 25 10:00:04 2014 -0400

    inspector: Add style classes to the object list
    
    We have a lot of space here now, so show some
    useful information.

 gtk/inspector/object-tree.c    |   35 ++++++++++++++++++++++++++---------
 gtk/inspector/object-tree.ui   |    3 +--
 gtk/inspector/object-tree.ui.h |    2 +-
 3 files changed, 28 insertions(+), 12 deletions(-)
---
diff --git a/gtk/inspector/object-tree.c b/gtk/inspector/object-tree.c
index da92055..bc6e78b 100644
--- a/gtk/inspector/object-tree.c
+++ b/gtk/inspector/object-tree.c
@@ -45,6 +45,7 @@
 #include "gtktreemodelsort.h"
 #include "gtktreemodelfilter.h"
 #include "gtkwidgetprivate.h"
+#include "gtkstylecontext.h"
 
 enum
 {
@@ -52,7 +53,7 @@ enum
   OBJECT_TYPE,
   OBJECT_NAME,
   OBJECT_LABEL,
-  OBJECT_ADDRESS,
+  OBJECT_CLASSES,
   SENSITIVE
 };
 
@@ -307,7 +308,7 @@ gtk_inspector_object_tree_append_object (GtkInspectorObjectTree *wt,
   GtkTreeIter iter;
   GtkTreePath *path;
   const gchar *class_name;
-  gchar *address;
+  gchar *classes;
   gboolean mapped;
   ObjectData *od;
   const gchar *label;
@@ -322,10 +323,28 @@ gtk_inspector_object_tree_append_object (GtkInspectorObjectTree *wt,
   if (GTK_IS_WIDGET (object))
     {
       const gchar *id;
+      GtkStyleContext *context;
+      GList *list, *l;
+      GString *string;
+
       id = gtk_widget_get_name (GTK_WIDGET (object));
-       if (name == NULL && id != NULL && g_strcmp0 (id, class_name) != 0)
-         name = id;
+      if (name == NULL && id != NULL && g_strcmp0 (id, class_name) != 0)
+        name = id;
+
+      context = gtk_widget_get_style_context (GTK_WIDGET (object));
+      string = g_string_new ("");
+      list = gtk_style_context_list_classes (context);
+      for (l = list; l; l = l->next)
+        {
+          if (string->len > 0)
+            g_string_append_c (string, ' ');
+          g_string_append (string, (gchar *)l->data);
+        }
+      classes = g_string_free (string, FALSE);
+      g_list_free (list);
     }
+  else
+    classes = g_strdup ("");
 
   if (GTK_IS_BUILDABLE (object))
     {
@@ -349,18 +368,18 @@ gtk_inspector_object_tree_append_object (GtkInspectorObjectTree *wt,
   else
     label = "";
 
-  address = g_strdup_printf ("%p", object);
-
   gtk_tree_store_append (wt->priv->model, &iter, parent_iter);
   gtk_tree_store_set (wt->priv->model, &iter,
                       OBJECT, object,
                       OBJECT_TYPE, class_name,
                       OBJECT_NAME, name,
                       OBJECT_LABEL, label,
-                      OBJECT_ADDRESS, address,
+                      OBJECT_CLASSES, classes,
                       SENSITIVE, mapped,
                       -1);
 
+  g_free (classes);
+
   od = g_new0 (ObjectData, 1);
   od->wt = wt;
   od->object = object;
@@ -371,8 +390,6 @@ gtk_inspector_object_tree_append_object (GtkInspectorObjectTree *wt,
   g_hash_table_insert (wt->priv->iters, object, od);
   g_object_weak_ref (object, gtk_object_tree_remove_dead_object, od);
 
-  g_free (address);
-
   if (GTK_IS_CONTAINER (object))
     {
       FindAllData data;
diff --git a/gtk/inspector/object-tree.ui b/gtk/inspector/object-tree.ui
index a5c8ffe..6478e98 100644
--- a/gtk/inspector/object-tree.ui
+++ b/gtk/inspector/object-tree.ui
@@ -79,12 +79,11 @@
             </child>
             <child>
               <object class="GtkTreeViewColumn">
-                <property name="title" translatable="yes">Address</property>
+                <property name="title" translatable="yes">Style Classes</property>
                 <property name="resizable">True</property>
                 <child>
                   <object class="GtkCellRendererText">
                     <property name="scale">0.8</property>
-                    <property name="family">monospace</property>
                   </object>
                   <attributes>
                     <attribute name="text">4</attribute>
diff --git a/gtk/inspector/object-tree.ui.h b/gtk/inspector/object-tree.ui.h
index 628c345..9127ff0 100644
--- a/gtk/inspector/object-tree.ui.h
+++ b/gtk/inspector/object-tree.ui.h
@@ -1,4 +1,4 @@
 N_("Object");
 N_("Name");
 N_("Label");
-N_("Address");
+N_("Style Classes");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]