[gtk+] inspector: Show more device information



commit 455935a06aadd70d9301239955f2f6dbc7237f61
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Feb 25 00:49:17 2016 -0500

    inspector: Show more device information
    
    This adds vendor and product id and axes. This reveals that
    the GDK backends have quite different quality when it comes
    to returning meaningful information here.

 gtk/inspector/general.c |  138 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 135 insertions(+), 3 deletions(-)
---
diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c
index 1b06569..fc208de 100644
--- a/gtk/inspector/general.c
+++ b/gtk/inspector/general.c
@@ -352,6 +352,7 @@ add_device (GtkInspectorGeneral *gen,
   GtkWidget *row;
   char *text;
   GString *str;
+  int i;
 
   box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 40);
   g_object_set (box,
@@ -396,9 +397,6 @@ add_device (GtkInspectorGeneral *gen,
       break;
     }
 
-  if (gdk_device_get_mode (device) == GDK_MODE_DISABLED)
-    g_string_append (str, ", disabled");
-
   label = gtk_label_new (str->str);
   gtk_label_set_selectable (GTK_LABEL (label), TRUE);
   gtk_widget_set_halign (label, GTK_ALIGN_END);
@@ -413,6 +411,140 @@ add_device (GtkInspectorGeneral *gen,
   gtk_widget_show_all (row);
 
   gtk_list_box_insert (GTK_LIST_BOX (gen->priv->device_box), row, -1);
+
+  if (gdk_device_get_vendor_id (device))
+    {
+      box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 40);
+      g_object_set (box,
+                    "margin", 10,
+                    "margin-start", 30,
+                    NULL);
+
+      label = gtk_label_new ("Vendor");
+      gtk_widget_set_halign (label, GTK_ALIGN_START);
+      gtk_widget_set_valign (label, GTK_ALIGN_BASELINE);
+      gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+      gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
+
+      label = gtk_label_new (gdk_device_get_vendor_id (device));
+      gtk_label_set_selectable (GTK_LABEL (label), TRUE);
+      gtk_widget_set_halign (label, GTK_ALIGN_END);
+      gtk_widget_set_valign (label, GTK_ALIGN_BASELINE);
+      gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+      gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+
+      row = gtk_list_box_row_new ();
+      gtk_container_add (GTK_CONTAINER (row), box);
+      gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
+      gtk_widget_show_all (row);
+
+      gtk_list_box_insert (GTK_LIST_BOX (gen->priv->device_box), row, -1);
+    }
+
+  if (gdk_device_get_product_id (device))
+    {
+      box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 40);
+      g_object_set (box,
+                    "margin", 10,
+                    "margin-start", 30,
+                    NULL);
+
+      label = gtk_label_new ("Product");
+      gtk_widget_set_halign (label, GTK_ALIGN_START);
+      gtk_widget_set_valign (label, GTK_ALIGN_BASELINE);
+      gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+      gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
+
+      label = gtk_label_new (gdk_device_get_product_id (device));
+      gtk_label_set_selectable (GTK_LABEL (label), TRUE);
+      gtk_widget_set_halign (label, GTK_ALIGN_END);
+      gtk_widget_set_valign (label, GTK_ALIGN_BASELINE);
+      gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+      gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+
+      row = gtk_list_box_row_new ();
+      gtk_container_add (GTK_CONTAINER (row), box);
+      gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
+      gtk_widget_show_all (row);
+
+      gtk_list_box_insert (GTK_LIST_BOX (gen->priv->device_box), row, -1);
+    }
+
+  str = g_string_new ("");
+
+  if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD &&
+      gdk_device_get_n_axes (device) > 0)
+    {
+      for (i = 0; i < gdk_device_get_n_axes (device); i++)
+        {
+          switch (gdk_device_get_axis_use (device, i))
+            {
+            case GDK_AXIS_X:
+              if (str->len > 0)
+                g_string_append (str, ", ");
+              g_string_append (str, "X");
+              break;
+            case GDK_AXIS_Y:
+              if (str->len > 0)
+                g_string_append (str, ", ");
+              g_string_append (str, "Y");
+              break;
+            case GDK_AXIS_PRESSURE:
+              if (str->len > 0)
+                g_string_append (str, ", ");
+              g_string_append (str, "Pressure");
+              break;
+            case GDK_AXIS_XTILT:
+              if (str->len > 0)
+                g_string_append (str, ", ");
+              g_string_append (str, "X Tilt");
+              break;
+            case GDK_AXIS_YTILT:
+              if (str->len > 0)
+                g_string_append (str, ", ");
+              g_string_append (str, "Y Tilt");
+              break;
+            case GDK_AXIS_WHEEL:
+              if (str->len > 0)
+                g_string_append (str, ", ");
+              g_string_append (str, "Wheel");
+              break;
+            default:
+              break;
+            }
+        }
+    }
+
+  if (str->len > 0)
+    {
+      box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 40);
+      g_object_set (box,
+                    "margin", 10,
+                    "margin-start", 30,
+                    NULL);
+
+      label = gtk_label_new ("Axes");
+      gtk_widget_set_halign (label, GTK_ALIGN_START);
+      gtk_widget_set_valign (label, GTK_ALIGN_BASELINE);
+      gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+      gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
+
+      label = gtk_label_new (str->str);
+      gtk_label_set_selectable (GTK_LABEL (label), TRUE);
+      gtk_widget_set_halign (label, GTK_ALIGN_END);
+      gtk_widget_set_valign (label, GTK_ALIGN_BASELINE);
+      gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+      gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+
+      row = gtk_list_box_row_new ();
+      gtk_container_add (GTK_CONTAINER (row), box);
+      gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
+      gtk_widget_show_all (row);
+
+      gtk_list_box_insert (GTK_LIST_BOX (gen->priv->device_box), row, -1);
+    }
+
+  g_string_free (str, TRUE);
 }
 
 static void


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