[gnome-control-center] wacom: Fix tablet layout problems for "screen" type



commit 81ad77908417ffdcdba0cd735c0a198f7119403a
Author: Bastien Nocera <hadess hadess net>
Date:   Mon Jan 30 16:50:03 2012 +0000

    wacom: Fix tablet layout problems for "screen" type

 panels/wacom/cc-wacom-page.c           |   85 +++++++++++++++++++++++++++-----
 panels/wacom/gnome-wacom-properties.ui |    5 +-
 2 files changed, 75 insertions(+), 15 deletions(-)
---
diff --git a/panels/wacom/cc-wacom-page.c b/panels/wacom/cc-wacom-page.c
index a4ed691..1e166f0 100644
--- a/panels/wacom/cc-wacom-page.c
+++ b/panels/wacom/cc-wacom-page.c
@@ -31,6 +31,7 @@
 #include <string.h>
 
 #define WID(x) (GtkWidget *) gtk_builder_get_object (priv->builder, x)
+#define CWID(x) (GtkContainer *) gtk_builder_get_object (priv->builder, x)
 
 G_DEFINE_TYPE (CcWacomPage, cc_wacom_page, GTK_TYPE_BOX)
 
@@ -442,6 +443,65 @@ add_styli (CcWacomPage *page)
 	/*FIXME: Set the page with the last used item */
 }
 
+/* Different types of layout for the tablet config */
+enum {
+	LAYOUT_NORMAL,        /* tracking mode, button mapping */
+	LAYOUT_REVERSIBLE,    /* tracking mode, button mapping, left-hand orientation */
+	LAYOUT_SCREEN        /* button mapping, calibration, display resolution */
+};
+
+static void
+remove_left_handed (CcWacomPagePrivate *priv)
+{
+	gtk_widget_destroy (WID ("label-left-handed"));
+	gtk_widget_destroy (WID ("switch-left-handed"));
+}
+
+static void
+remove_display_link (CcWacomPagePrivate *priv)
+{
+	gtk_widget_destroy (WID ("display-link"));
+}
+
+static void
+update_tablet_ui (CcWacomPage *page,
+		  int          layout)
+{
+	CcWacomPagePrivate *priv;
+
+	priv = page->priv;
+
+	switch (layout) {
+	case LAYOUT_NORMAL:
+		remove_left_handed (page->priv);
+		remove_display_link (page->priv);
+		break;
+	case LAYOUT_REVERSIBLE:
+		remove_display_link (page->priv);
+		break;
+	case LAYOUT_SCREEN:
+		remove_left_handed (page->priv);
+
+		gtk_widget_destroy (WID ("combo-tabletmode"));
+		gtk_widget_destroy (WID ("label-trackingmode"));
+
+		gtk_widget_show (WID ("button-calibrate"));
+		gtk_widget_show (WID ("display-link"));
+
+		gtk_container_child_set (CWID ("main-grid"),
+					 WID ("tablet-buttons-box"),
+					 "left_attach", 1,
+					 "top_attach", 1, NULL);
+		gtk_container_child_set (CWID ("main-grid"),
+					 WID ("display-link"),
+					 "left_attach", 1,
+					 "top_attach", 2, NULL);
+		break;
+	default:
+		g_assert_not_reached ();
+	}
+}
+
 GtkWidget *
 cc_wacom_page_new (CcWacomPanel   *panel,
 		   GsdWacomDevice *stylus,
@@ -449,6 +509,7 @@ cc_wacom_page_new (CcWacomPanel   *panel,
 {
 	CcWacomPage *page;
 	CcWacomPagePrivate *priv;
+	int layout;
 
 	g_return_val_if_fail (GSD_IS_WACOM_DEVICE (stylus), NULL);
 	g_return_val_if_fail (gsd_wacom_device_get_device_type (stylus) == WACOM_TYPE_STYLUS, NULL);
@@ -470,21 +531,19 @@ cc_wacom_page_new (CcWacomPanel   *panel,
 	/* Tablet name */
 	gtk_label_set_text (GTK_LABEL (WID ("label-tabletmodel")), gsd_wacom_device_get_name (stylus));
 
+	/* Type of layout */
+	if (gsd_wacom_device_is_screen_tablet (stylus))
+		layout = LAYOUT_SCREEN;
+	else if (gsd_wacom_device_reversible (stylus))
+		layout = LAYOUT_REVERSIBLE;
+	else
+		layout = LAYOUT_NORMAL;
+
+	update_tablet_ui (page, layout);
+
 	/* Left-handedness */
-	if (gsd_wacom_device_reversible (stylus) == FALSE) {
-		gtk_widget_hide (WID ("label-left-handed"));
-		gtk_widget_hide (WID ("switch-left-handed"));
-	} else {
+	if (gsd_wacom_device_reversible (stylus))
 		set_left_handed_from_gsettings (page);
-	}
-
-	/* Calibration for screen tablets */
-	if (gsd_wacom_device_is_screen_tablet (stylus) != FALSE) {
-		gtk_widget_show (WID ("button-calibrate"));
-		gtk_widget_hide (WID ("combo-tabletmode"));
-		gtk_widget_hide (WID ("label-trackingmode"));
-		gtk_widget_show (WID ("display-link"));
-	}
 
 	/* Tablet icon */
 	set_icon_name (page, "image-tablet", gsd_wacom_device_get_icon_name (stylus));
diff --git a/panels/wacom/gnome-wacom-properties.ui b/panels/wacom/gnome-wacom-properties.ui
index 415dcbd..4c229b6 100644
--- a/panels/wacom/gnome-wacom-properties.ui
+++ b/panels/wacom/gnome-wacom-properties.ui
@@ -175,7 +175,7 @@
                     <property name="left_attach">0</property>
                     <property name="top_attach">1</property>
                     <property name="width">1</property>
-                    <property name="height">3</property>
+                    <property name="height">4</property>
                   </packing>
                 </child>
                 <child>
@@ -291,11 +291,12 @@
                    <property name="has_tooltip">True</property>
                    <property name="use_action_appearance">False</property>
                    <property name="relief">none</property>
+                   <property name="halign">start</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="top_attach">4</property>
-                    <property name="width">2</property>
+                    <property name="width">1</property>
                     <property name="height">1</property>
                   </packing>
                 </child>



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