[gnome-control-center] color: Use GtkTemplate



commit 5ea7632b833ce745120dbf6ee2a7a6cfdf80e880
Author: Robert Ancell <robert ancell canonical com>
Date:   Wed May 30 16:27:46 2018 +1200

    color: Use GtkTemplate

 panels/color/cc-color-panel.c | 423 +++++++++++++++++-------------------------
 panels/color/color.ui         | 416 +++++++++++++++++++++--------------------
 2 files changed, 379 insertions(+), 460 deletions(-)
---
diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c
index eb0fc5887..1d18b3fd5 100644
--- a/panels/color/cc-color-panel.c
+++ b/panels/color/cc-color-panel.c
@@ -35,8 +35,6 @@
 #include "cc-color-device.h"
 #include "cc-color-profile.h"
 
-#define WID(b, w) (GtkWidget *) gtk_builder_get_object (b, w)
-
 struct _CcColorPanel
 {
   CcPanel        parent_instance;
@@ -48,10 +46,43 @@ struct _CcColorPanel
   GCancellable  *cancellable;
   GSettings     *settings;
   GSettings     *settings_colord;
-  GtkBuilder    *builder;
   GtkWidget     *assistant_calib;
+  GtkWidget     *box_calib_brightness;
+  GtkWidget     *box_calib_kind;
+  GtkWidget     *box_calib_quality;
+  GtkWidget     *box_calib_sensor;
+  GtkWidget     *box_calib_summary;
+  GtkWidget     *box_calib_temp;
+  GtkWidget     *box_calib_title;
+  GtkWidget     *box_devices;
+  GtkWidget     *button_assign_cancel;
+  GtkWidget     *button_assign_import;
+  GtkWidget     *button_assign_ok;
+  GtkWidget     *button_calib_export;
+  GtkWidget     *button_calib_upload;
   GtkWidget     *dialog_assign;
+  GtkWidget     *entry_calib_title;
+  GtkWidget     *frame_devices;
+  GtkWidget     *label_assign_warning;
+  GtkWidget     *label_calib_summary_message;
+  GtkWidget     *label_calib_upload_location;
+  GtkWidget     *label_no_devices;
+  GtkTreeModel  *liststore_assign;
+  GtkTreeModel  *liststore_calib_kind;
+  GtkTreeModel  *liststore_calib_sensor;
   GtkWidget     *main_window;
+  GtkWidget     *toolbar_devices;
+  GtkWidget     *toolbutton_device_calibrate;
+  GtkWidget     *toolbutton_device_default;
+  GtkWidget     *toolbutton_device_enable;
+  GtkWidget     *toolbutton_profile_add;
+  GtkWidget     *toolbutton_profile_remove;
+  GtkWidget     *toolbutton_profile_view;
+  GtkWidget     *treeview_assign;
+  GtkWidget     *treeview_calib_kind;
+  GtkWidget     *treeview_calib_quality;
+  GtkWidget     *treeview_calib_sensor;
+  GtkWidget     *treeview_calib_temp;
   CcColorCalibrate *calibrate;
   GtkListBox    *list_box;
   gchar         *list_box_filter;
@@ -114,7 +145,6 @@ gcm_prefs_combobox_add_profile (CcColorPanel *prefs,
   const gchar *id;
   GtkTreeIter iter_tmp;
   g_autoptr(GString) string = NULL;
-  GtkListStore *list_store;
   gchar *escaped = NULL;
   guint kind = 0;
   const gchar *warning = NULL;
@@ -164,10 +194,8 @@ gcm_prefs_combobox_add_profile (CcColorPanel *prefs,
 #endif
 
   escaped = g_markup_escape_text (string->str, -1);
-  list_store = GTK_LIST_STORE(gtk_builder_get_object (prefs->builder,
-                                                      "liststore_assign"));
-  gtk_list_store_append (list_store, iter);
-  gtk_list_store_set (list_store, iter,
+  gtk_list_store_append (GTK_LIST_STORE (prefs->liststore_assign), iter);
+  gtk_list_store_set (GTK_LIST_STORE (prefs->liststore_assign), iter,
                       GCM_PREFS_COMBO_COLUMN_TEXT, escaped,
                       GCM_PREFS_COMBO_COLUMN_PROFILE, profile,
                       GCM_PREFS_COMBO_COLUMN_TYPE, kind,
@@ -253,12 +281,9 @@ gcm_prefs_calib_delayed_complete_cb (gpointer user_data)
 {
   CcColorPanel *panel = CC_COLOR_PANEL (user_data);
   GtkAssistant *assistant;
-  GtkWidget *widget;
 
   assistant = GTK_ASSISTANT (panel->assistant_calib);
-  widget = GTK_WIDGET (gtk_builder_get_object (panel->builder,
-                                               "box_calib_brightness"));
-  gtk_assistant_set_page_complete (assistant, widget, TRUE);
+  gtk_assistant_set_page_complete (assistant, panel->box_calib_brightness, TRUE);
   return FALSE;
 }
 
@@ -267,14 +292,10 @@ gcm_prefs_calib_prepare_cb (GtkAssistant *assistant,
                             GtkWidget    *page,
                             CcColorPanel *panel)
 {
-  GtkWidget *widget;
-
   /* give the user the indication they should actually manually set the
    * desired brightness rather than clicking blindly by delaying the
    * "Next" button deliberately for a second or so */
-  widget = GTK_WIDGET (gtk_builder_get_object (panel->builder,
-                                               "box_calib_brightness"));
-  if (widget == page)
+  if (page == panel->box_calib_brightness)
   {
     g_timeout_add_seconds (1, gcm_prefs_calib_delayed_complete_cb, panel);
     return;
@@ -282,7 +303,7 @@ gcm_prefs_calib_prepare_cb (GtkAssistant *assistant,
 
   /* disable the brightness page as we don't want to show a 'Finished'
    * button if the user goes back at any point */
-  gtk_assistant_set_page_complete (assistant, widget, FALSE);
+  gtk_assistant_set_page_complete (assistant, panel->box_calib_brightness, FALSE);
 }
 
 static void
@@ -293,9 +314,7 @@ gcm_prefs_calib_apply_cb (GtkWidget *widget, CcColorPanel *prefs)
   GtkWindow *window = NULL;
 
   /* setup the calibration object with items that can fail */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "button_calib_upload"));
-  gtk_widget_show (widget);
+  gtk_widget_show (prefs->button_calib_upload);
   ret = cc_color_calibrate_setup (prefs->calibrate,
                                   &error);
   if (!ret)
@@ -339,16 +358,13 @@ gcm_prefs_calib_temp_treeview_clicked_cb (GtkTreeSelection *selection,
   gboolean ret;
   GtkTreeIter iter;
   GtkTreeModel *model;
-  GtkWidget *widget;
   guint target_whitepoint;
   GtkAssistant *assistant;
 
   /* check to see if anything is selected */
   ret = gtk_tree_selection_get_selected (selection, &model, &iter);
   assistant = GTK_ASSISTANT (prefs->assistant_calib);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "box_calib_temp"));
-  gtk_assistant_set_page_complete (assistant, widget, ret);
+  gtk_assistant_set_page_complete (assistant, prefs->box_calib_temp, ret);
   if (!ret)
     return;
 
@@ -366,15 +382,12 @@ gcm_prefs_calib_kind_treeview_clicked_cb (GtkTreeSelection *selection,
   gboolean ret;
   GtkTreeIter iter;
   GtkTreeModel *model;
-  GtkWidget *widget;
   GtkAssistant *assistant;
 
   /* check to see if anything is selected */
   ret = gtk_tree_selection_get_selected (selection, &model, &iter);
   assistant = GTK_ASSISTANT (prefs->assistant_calib);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "box_calib_kind"));
-  gtk_assistant_set_page_complete (assistant, widget, ret);
+  gtk_assistant_set_page_complete (assistant, prefs->box_calib_kind, ret);
   if (!ret)
     return;
 
@@ -394,14 +407,11 @@ gcm_prefs_calib_quality_treeview_clicked_cb (GtkTreeSelection *selection,
   GtkAssistant *assistant;
   GtkTreeIter iter;
   GtkTreeModel *model;
-  GtkWidget *widget;
 
   /* check to see if anything is selected */
   ret = gtk_tree_selection_get_selected (selection, &model, &iter);
   assistant = GTK_ASSISTANT (prefs->assistant_calib);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "box_calib_quality"));
-  gtk_assistant_set_page_complete (assistant, widget, ret);
+  gtk_assistant_set_page_complete (assistant, prefs->box_calib_quality, ret);
   if (!ret)
     return;
 
@@ -450,8 +460,6 @@ static void
 gcm_prefs_calib_set_sensor (CcColorPanel *prefs,
                             CdSensor *sensor)
 {
-  GtkTreeModel *model;
-  GtkWidget *page;
   guint64 caps;
   guint8 i;
 
@@ -459,19 +467,15 @@ gcm_prefs_calib_set_sensor (CcColorPanel *prefs,
   cc_color_calibrate_set_sensor (prefs->calibrate, sensor);
 
   /* hide display types the sensor does not support */
-  model = GTK_TREE_MODEL (gtk_builder_get_object (prefs->builder,
-                                                  "liststore_calib_kind"));
-  gtk_tree_model_foreach (model,
+  gtk_tree_model_foreach (prefs->liststore_calib_kind,
                           gcm_prefs_calib_set_sensor_cap_supported_cb,
                           sensor);
 
   /* if the sensor only supports one kind then do not show the panel at all */
-  page = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                             "box_calib_kind"));
   caps = cd_sensor_get_caps (sensor);
   if (_cd_bitfield_popcount (caps) == 1)
     {
-      gtk_widget_set_visible (page, FALSE);
+      gtk_widget_set_visible (prefs->box_calib_kind, FALSE);
       for (i = 0; i < CD_SENSOR_CAP_LAST; i++)
         {
           if (cd_bitfield_contain (caps, i))
@@ -481,7 +485,7 @@ gcm_prefs_calib_set_sensor (CcColorPanel *prefs,
   else
     {
       cc_color_calibrate_set_kind (prefs->calibrate, CD_SENSOR_CAP_UNKNOWN);
-      gtk_widget_set_visible (page, TRUE);
+      gtk_widget_set_visible (prefs->box_calib_kind, TRUE);
     }
 }
 
@@ -492,16 +496,13 @@ gcm_prefs_calib_sensor_treeview_clicked_cb (GtkTreeSelection *selection,
   gboolean ret;
   GtkTreeIter iter;
   GtkTreeModel *model;
-  GtkWidget *widget;
   g_autoptr(CdSensor) sensor = NULL;
   GtkAssistant *assistant;
 
   /* check to see if anything is selected */
   ret = gtk_tree_selection_get_selected (selection, &model, &iter);
   assistant = GTK_ASSISTANT (prefs->assistant_calib);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "box_calib_sensor"));
-  gtk_assistant_set_page_complete (assistant, widget, ret);
+  gtk_assistant_set_page_complete (assistant, prefs->box_calib_sensor, ret);
   if (!ret)
     return;
 
@@ -517,39 +518,32 @@ gcm_prefs_calibrate_display (CcColorPanel *prefs)
 {
   CdSensor *sensor_tmp;
   const gchar *tmp;
-  GtkListStore *liststore;
   GtkTreeIter iter;
-  GtkWidget *page;
-  GtkWidget *widget;
   guint i;
 
   /* set target device */
   cc_color_calibrate_set_device (prefs->calibrate, prefs->current_device);
 
   /* add sensors to list */
-  liststore = GTK_LIST_STORE (gtk_builder_get_object (prefs->builder,
-                                                      "liststore_calib_sensor"));
-  gtk_list_store_clear (liststore);
-  page = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                             "box_calib_sensor"));
+  gtk_list_store_clear (GTK_LIST_STORE (prefs->liststore_calib_sensor));
   if (prefs->sensors->len > 1)
     {
       for (i = 0; i < prefs->sensors->len; i++)
         {
           sensor_tmp = g_ptr_array_index (prefs->sensors, i);
-          gtk_list_store_append (liststore, &iter);
-          gtk_list_store_set (liststore, &iter,
+          gtk_list_store_append (GTK_LIST_STORE (prefs->liststore_calib_sensor), &iter);
+          gtk_list_store_set (GTK_LIST_STORE (prefs->liststore_calib_sensor), &iter,
                               COLUMN_CALIB_SENSOR_OBJECT, sensor_tmp,
                               COLUMN_CALIB_SENSOR_DESCRIPTION, cd_sensor_get_model (sensor_tmp),
                               -1);
         }
-      gtk_widget_set_visible (page, TRUE);
+      gtk_widget_set_visible (prefs->box_calib_sensor, TRUE);
     }
   else
     {
       sensor_tmp = g_ptr_array_index (prefs->sensors, 0);
       gcm_prefs_calib_set_sensor (prefs, sensor_tmp);
-      gtk_widget_set_visible (page, FALSE);
+      gtk_widget_set_visible (prefs->box_calib_sensor, FALSE);
     }
 
   /* set default profile title */
@@ -558,19 +552,16 @@ gcm_prefs_calibrate_display (CcColorPanel *prefs)
     tmp = cd_device_get_vendor (prefs->current_device);
   if (tmp == NULL)
     tmp = _("Screen");
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "entry_calib_title"));
-  gtk_entry_set_text (GTK_ENTRY (widget), tmp);
+  gtk_entry_set_text (GTK_ENTRY (prefs->entry_calib_title), tmp);
   cc_color_calibrate_set_title (prefs->calibrate, tmp);
 
   /* set the display whitepoint to D65 by default */
   //FIXME?
 
   /* show ui */
-  widget = GTK_WIDGET (prefs->assistant_calib);
-  gtk_window_set_transient_for (GTK_WINDOW (widget),
+  gtk_window_set_transient_for (GTK_WINDOW (prefs->assistant_calib),
                                 GTK_WINDOW (prefs->main_window));
-  gtk_widget_show (widget);
+  gtk_widget_show (prefs->assistant_calib);
 }
 
 static void
@@ -579,15 +570,12 @@ gcm_prefs_title_entry_changed_cb (GtkWidget *widget,
                                   CcColorPanel *prefs)
 {
   GtkAssistant *assistant;
-  GtkWidget *page;
   const gchar *value;
 
   assistant = GTK_ASSISTANT (prefs->assistant_calib);
-  page = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                             "box_calib_title"));
-  value = gtk_entry_get_text (GTK_ENTRY (widget));
+  value = gtk_entry_get_text (GTK_ENTRY (prefs->box_calib_title));
   cc_color_calibrate_set_title (prefs->calibrate, value);
-  gtk_assistant_set_page_complete (assistant, page, value[0] != '\0');
+  gtk_assistant_set_page_complete (assistant, prefs->box_calib_title, value[0] != '\0');
 }
 
 static void
@@ -729,24 +717,18 @@ gcm_prefs_add_profiles_suitable_for_devices (CcColorPanel *prefs,
   g_autoptr(GError) error = NULL;
   g_autoptr(GPtrArray) profile_array = NULL;
   GtkTreeIter iter;
-  GtkListStore *list_store;
-  GtkWidget *widget;
   guint i;
 
-  list_store = GTK_LIST_STORE(gtk_builder_get_object (prefs->builder,
-                                                      "liststore_assign"));
-  gtk_list_store_clear (list_store);
-  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store),
+  gtk_list_store_clear (GTK_LIST_STORE (prefs->liststore_assign));
+  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (prefs->liststore_assign),
                                         GCM_PREFS_COMBO_COLUMN_TEXT,
                                         GTK_SORT_ASCENDING);
-  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (list_store),
+  gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (prefs->liststore_assign),
                                    GCM_PREFS_COMBO_COLUMN_TEXT,
                                    gcm_prefs_combo_sort_func_cb,
-                                   list_store, NULL);
+                                   prefs->liststore_assign, NULL);
 
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "label_assign_warning"));
-  gtk_widget_hide (widget);
+  gtk_widget_hide (prefs->label_assign_warning);
 
   /* get profiles */
   profile_array = cd_client_get_profiles_sync (prefs->client,
@@ -860,18 +842,14 @@ gcm_prefs_calib_upload_cb (GtkWidget *widget, CcColorPanel *prefs)
   status_code = soup_session_send_message (session, msg);
   if (status_code != 201)
     {
-      widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                                   "label_calib_upload_location"));
       /* TRANSLATORS: this is when the upload of the profile failed */
       msg_result = g_strdup_printf (_("Failed to upload file: %s"), msg->reason_phrase),
-      gtk_label_set_label (GTK_LABEL (widget), msg_result);
-      gtk_widget_show (widget);
+      gtk_label_set_label (GTK_LABEL (prefs->label_calib_upload_location), msg_result);
+      gtk_widget_show (prefs->label_calib_upload_location);
       return;
     }
 
   /* show instructions to the user */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "label_calib_upload_location"));
   uri = soup_message_headers_get_one (msg->response_headers, "Location");
   msg_result = g_strdup_printf ("%s %s\n\n• %s\n• %s\n• %s",
                                 /* TRANSLATORS: these are instructions on how to recover
@@ -882,13 +860,11 @@ gcm_prefs_calib_upload_cb (GtkWidget *widget, CcColorPanel *prefs)
                                 _("Write down this URL."),
                                 _("Restart this computer and boot your normal operating system."),
                                 _("Type the URL into your browser to download and install the profile.")),
-  gtk_label_set_label (GTK_LABEL (widget), msg_result);
-  gtk_widget_show (widget);
+  gtk_label_set_label (GTK_LABEL (prefs->label_calib_upload_location), msg_result);
+  gtk_widget_show (prefs->label_calib_upload_location);
 
   /* hide the upload button as duplicate uploads will fail */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "button_calib_upload"));
-  gtk_widget_hide (widget);
+  gtk_widget_hide (prefs->button_calib_upload);
 }
 
 static void
@@ -961,14 +937,11 @@ gcm_prefs_profile_add_cb (GtkWidget *widget, CcColorPanel *prefs)
   gcm_prefs_add_profiles_suitable_for_devices (prefs, profiles);
 
   /* make insensitve until we have a selection */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "button_assign_ok"));
-  gtk_widget_set_sensitive (widget, FALSE);
+  gtk_widget_set_sensitive (prefs->button_assign_ok, FALSE);
 
   /* show the dialog */
-  widget = GTK_WIDGET (prefs->dialog_assign);
-  gtk_widget_show (widget);
-  gtk_window_set_transient_for (GTK_WINDOW (widget), GTK_WINDOW (prefs->main_window));
+  gtk_widget_show (prefs->dialog_assign);
+  gtk_window_set_transient_for (GTK_WINDOW (prefs->dialog_assign), GTK_WINDOW (prefs->main_window));
 }
 
 static void
@@ -1141,9 +1114,7 @@ gcm_prefs_button_assign_ok_cb (GtkWidget *widget, CcColorPanel *prefs)
   gtk_widget_hide (widget);
 
   /* get the selected profile */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "treeview_assign"));
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_assign));
   if (!gtk_tree_selection_get_selected (selection, &model, &iter))
     return;
   gtk_tree_model_get (model, &iter,
@@ -1229,7 +1200,6 @@ static void
 gcm_prefs_set_calibrate_button_sensitivity (CcColorPanel *prefs)
 {
   gboolean ret = FALSE;
-  GtkWidget *widget;
   const gchar *tooltip;
   CdDeviceKind kind;
   CdSensor *sensor_tmp;
@@ -1299,10 +1269,8 @@ gcm_prefs_set_calibrate_button_sensitivity (CcColorPanel *prefs)
     }
 out:
   /* control the tooltip and sensitivity of the button */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "toolbutton_device_calibrate"));
-  gtk_widget_set_tooltip_text (widget, tooltip);
-  gtk_widget_set_sensitive (widget, ret);
+  gtk_widget_set_tooltip_text (prefs->toolbutton_device_calibrate, tooltip);
+  gtk_widget_set_sensitive (prefs->toolbutton_device_calibrate, ret);
 }
 
 static void
@@ -1319,7 +1287,6 @@ gcm_prefs_device_clicked (CcColorPanel *prefs, CdDevice *device)
 static void
 gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *device)
 {
-  GtkWidget *widget;
   g_autofree gchar *s = NULL;
 
   /* get profile */
@@ -1327,20 +1294,17 @@ gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *de
      cd_profile_get_filename (profile));
 
   /* allow getting profile info */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-               "toolbutton_profile_view"));
   if (cd_profile_get_filename (profile) != NULL &&
       (s = g_find_program_in_path ("gcm-viewer")) != NULL)
-    gtk_widget_set_sensitive (widget, TRUE);
+    gtk_widget_set_sensitive (prefs->toolbutton_profile_view, TRUE);
   else
-    gtk_widget_set_sensitive (widget, FALSE);
+    gtk_widget_set_sensitive (prefs->toolbutton_profile_view, FALSE);
 }
 
 static void
 gcm_prefs_profiles_treeview_clicked_cb (GtkTreeSelection *selection,
                                         CcColorPanel *prefs)
 {
-  GtkWidget *widget;
   GtkTreeModel *model;
   GtkTreeIter iter;
   g_autoptr(CdProfile) profile = NULL;
@@ -1355,20 +1319,15 @@ gcm_prefs_profiles_treeview_clicked_cb (GtkTreeSelection *selection,
                       GCM_PREFS_COMBO_COLUMN_PROFILE, &profile,
                       -1);
 
-
   /* as soon as anything is selected, make the Add button sensitive */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "button_assign_ok"));
-  gtk_widget_set_sensitive (widget, TRUE);
+  gtk_widget_set_sensitive (prefs->button_assign_ok, TRUE);
 
   /* is the profile faulty */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "label_assign_warning"));
 #if CD_CHECK_VERSION(0,1,25)
   warnings = cd_profile_get_warnings (profile);
-  gtk_widget_set_visible (widget, warnings != NULL && warnings[0] != NULL);
+  gtk_widget_set_visible (prefs->label_assign_warning, warnings != NULL && warnings[0] != NULL);
 #else
-  gtk_widget_set_visible (widget, FALSE);
+  gtk_widget_set_visible (prefs->label_assign_warning, FALSE);
 #endif
 }
 
@@ -1731,18 +1690,13 @@ static void
 gcm_prefs_update_device_list_extra_entry (CcColorPanel *prefs)
 {
   g_autoptr(GList) device_widgets = NULL;
-  GtkWidget *widget;
   guint number_of_devices;
 
   /* any devices to show? */
   device_widgets = gtk_container_get_children (GTK_CONTAINER (prefs->list_box));
   number_of_devices = g_list_length (device_widgets);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "label_no_devices"));
-  gtk_widget_set_visible (widget, number_of_devices == 0);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "vbox3"));
-  gtk_widget_set_visible (widget, number_of_devices > 0);
+  gtk_widget_set_visible (prefs->label_no_devices, number_of_devices == 0);
+  gtk_widget_set_visible (prefs->box_devices, number_of_devices > 0);
 
   /* if we have only one device expand it by default */
   if (number_of_devices == 1)
@@ -1815,7 +1769,6 @@ static void
 gcm_prefs_refresh_toolbar_buttons (CcColorPanel *panel)
 {
   CdProfile *profile = NULL;
-  GtkWidget *widget;
   GtkListBoxRow *row;
   gboolean is_device;
 
@@ -1825,9 +1778,7 @@ gcm_prefs_refresh_toolbar_buttons (CcColorPanel *panel)
   is_device = CC_IS_COLOR_DEVICE (row);
 
   /* nothing selected */
-  widget = GTK_WIDGET (gtk_builder_get_object (panel->builder,
-                                               "toolbar_devices"));
-  gtk_widget_set_visible (widget, row != NULL);
+  gtk_widget_set_visible (panel->toolbar_devices, row != NULL);
   if (row == NULL)
     return;
 
@@ -1850,28 +1801,14 @@ gcm_prefs_refresh_toolbar_buttons (CcColorPanel *panel)
   else
     g_assert_not_reached ();
 
-  widget = GTK_WIDGET (gtk_builder_get_object (panel->builder,
-                                               "toolbutton_device_default"));
-  gtk_widget_set_visible (widget, !is_device && cc_color_profile_get_is_default (CC_COLOR_PROFILE (row)));
+  gtk_widget_set_visible (panel->toolbutton_device_default, !is_device && cc_color_profile_get_is_default 
(CC_COLOR_PROFILE (row)));
   if (profile)
-    gtk_widget_set_sensitive (widget, !cd_profile_get_is_system_wide (profile));
-
-  widget = GTK_WIDGET (gtk_builder_get_object (panel->builder,
-                                               "toolbutton_device_enable"));
-  gtk_widget_set_visible (widget, !is_device && !cc_color_profile_get_is_default (CC_COLOR_PROFILE (row)));
-
-  widget = GTK_WIDGET (gtk_builder_get_object (panel->builder,
-                                               "toolbutton_device_calibrate"));
-  gtk_widget_set_visible (widget, is_device);
-  widget = GTK_WIDGET (gtk_builder_get_object (panel->builder,
-                                               "toolbutton_profile_add"));
-  gtk_widget_set_visible (widget, is_device);
-  widget = GTK_WIDGET (gtk_builder_get_object (panel->builder,
-                                               "toolbutton_profile_view"));
-  gtk_widget_set_visible (widget, !is_device);
-  widget = GTK_WIDGET (gtk_builder_get_object (panel->builder,
-                                               "toolbutton_profile_remove"));
-  gtk_widget_set_visible (widget, !is_device);
+    gtk_widget_set_sensitive (panel->toolbutton_device_default, !cd_profile_get_is_system_wide (profile));
+  gtk_widget_set_visible (panel->toolbutton_device_enable, !is_device && !cc_color_profile_get_is_default 
(CC_COLOR_PROFILE (row)));
+  gtk_widget_set_visible (panel->toolbutton_device_calibrate, is_device);
+  gtk_widget_set_visible (panel->toolbutton_profile_add, is_device);
+  gtk_widget_set_visible (panel->toolbutton_profile_view, !is_device);
+  gtk_widget_set_visible (panel->toolbutton_profile_remove, !is_device);
 }
 
 static void
@@ -2022,7 +1959,6 @@ cc_color_panel_dispose (GObject *object)
   g_clear_object (&prefs->settings);
   g_clear_object (&prefs->settings_colord);
   g_clear_object (&prefs->cancellable);
-  g_clear_object (&prefs->builder);
   g_clear_object (&prefs->client);
   g_clear_object (&prefs->current_device);
   g_clear_object (&prefs->calibrate);
@@ -2044,6 +1980,7 @@ static void
 cc_color_panel_class_init (CcColorPanelClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
   CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
 
   panel_class->get_help_uri = cc_color_panel_get_help_uri;
@@ -2052,6 +1989,45 @@ cc_color_panel_class_init (CcColorPanelClass *klass)
   object_class->set_property = cc_color_panel_set_property;
   object_class->dispose = cc_color_panel_dispose;
   object_class->finalize = cc_color_panel_finalize;
+
+  gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/color/color.ui");
+
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, assistant_calib);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_brightness);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_kind);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_quality);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_sensor);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_summary);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_temp);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_calib_title);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, box_devices);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, button_assign_cancel);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, button_assign_import);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, button_assign_ok);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, button_calib_export);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, button_calib_upload);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, dialog_assign);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, entry_calib_title);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, frame_devices);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, label_assign_warning);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, label_calib_summary_message);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, label_calib_upload_location);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, label_no_devices);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, liststore_assign);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, liststore_calib_kind);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, liststore_calib_sensor);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbar_devices);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_device_calibrate);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_device_default);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_device_enable);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_profile_add);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_profile_remove);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, toolbutton_profile_view);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, treeview_assign);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, treeview_calib_kind);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, treeview_calib_quality);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, treeview_calib_sensor);
+  gtk_widget_class_bind_template_child (widget_class, CcColorPanel, treeview_calib_temp);
 }
 
 static gint
@@ -2110,27 +2086,16 @@ cc_color_panel_treeview_quality_default_cb (GtkTreeModel *model,
 static void
 cc_color_panel_init (CcColorPanel *prefs)
 {
-  g_autoptr(GError) error = NULL;
   GtkCellRenderer *renderer;
   GtkStyleContext *context;
   GtkTreeModel *model;
   GtkTreeModel *model_filter;
   GtkTreeSelection *selection;
   GtkTreeViewColumn *column;
-  GtkWidget *widget;
 
   g_resources_register (cc_color_get_resource ());
 
-  prefs->builder = gtk_builder_new ();
-  gtk_builder_add_from_resource (prefs->builder,
-                                 "/org/gnome/control-center/color/color.ui",
-                                 &error);
-
-  if (error != NULL)
-    {
-      g_warning ("Could not load interface file: %s", error->message);
-      return;
-    }
+  gtk_widget_init_template (GTK_WIDGET (prefs));
 
   prefs->cancellable = g_cancellable_new ();
   prefs->devices = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
@@ -2144,103 +2109,71 @@ cc_color_panel_init (CcColorPanel *prefs)
   prefs->settings_colord = g_settings_new (COLORD_SETTINGS_SCHEMA);
 
   /* assign buttons */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "toolbutton_profile_add"));
-  g_signal_connect (widget, "clicked",
+  g_signal_connect (prefs->toolbutton_profile_add, "clicked",
                     G_CALLBACK (gcm_prefs_profile_add_cb), prefs);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "toolbutton_profile_remove"));
-  g_signal_connect (widget, "clicked",
+  g_signal_connect (prefs->toolbutton_profile_remove, "clicked",
                     G_CALLBACK (gcm_prefs_profile_remove_cb), prefs);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "toolbutton_profile_view"));
-  g_signal_connect (widget, "clicked",
+  g_signal_connect (prefs->toolbutton_profile_view, "clicked",
                     G_CALLBACK (gcm_prefs_profile_view_cb), prefs);
 
   /* href */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "label_assign_warning"));
-  g_signal_connect (widget, "activate-link",
+  g_signal_connect (prefs->label_assign_warning, "activate-link",
                     G_CALLBACK (gcm_prefs_profile_assign_link_activate_cb), prefs);
 
   /* add columns to profile tree view */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "treeview_assign"));
-  gcm_prefs_add_profiles_columns (prefs, GTK_TREE_VIEW (widget));
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+  gcm_prefs_add_profiles_columns (prefs, GTK_TREE_VIEW (prefs->treeview_assign));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_assign));
   g_signal_connect (selection, "changed",
                     G_CALLBACK (gcm_prefs_profiles_treeview_clicked_cb),
                     prefs);
-  g_signal_connect (GTK_TREE_VIEW (widget), "row-activated",
+  g_signal_connect (GTK_TREE_VIEW (prefs->treeview_assign), "row-activated",
                     G_CALLBACK (gcm_prefs_profiles_row_activated_cb),
                     prefs);
 
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "toolbutton_device_default"));
-  g_signal_connect (widget, "clicked",
+  g_signal_connect (prefs->toolbutton_device_default, "clicked",
                     G_CALLBACK (gcm_prefs_default_cb), prefs);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "toolbutton_device_enable"));
-  g_signal_connect (widget, "clicked",
+  g_signal_connect (prefs->toolbutton_device_enable, "clicked",
                     G_CALLBACK (gcm_prefs_device_profile_enable_cb), prefs);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "toolbutton_device_calibrate"));
-  g_signal_connect (widget, "clicked",
+  g_signal_connect (prefs->toolbutton_device_calibrate, "clicked",
                     G_CALLBACK (gcm_prefs_calibrate_cb), prefs);
 
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "toolbar_devices"));
-  context = gtk_widget_get_style_context (widget);
+  context = gtk_widget_get_style_context (prefs->toolbar_devices);
   gtk_style_context_add_class (context, GTK_STYLE_CLASS_INLINE_TOOLBAR);
   gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP);
 
   /* set up assign dialog */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "dialog_assign"));
-  g_signal_connect (widget, "delete-event",
+  g_signal_connect (prefs->dialog_assign, "delete-event",
                     G_CALLBACK (gcm_prefs_profile_delete_event_cb), prefs);
-  prefs->dialog_assign = widget;
 
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "button_assign_cancel"));
-  g_signal_connect (widget, "clicked",
+  g_signal_connect (prefs->button_assign_cancel, "clicked",
                     G_CALLBACK (gcm_prefs_button_assign_cancel_cb), prefs);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "button_assign_ok"));
-  g_signal_connect (widget, "clicked",
+  g_signal_connect (prefs->button_assign_ok, "clicked",
                     G_CALLBACK (gcm_prefs_button_assign_ok_cb), prefs);
 
   /* setup icc profiles list */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "button_assign_import"));
-  g_signal_connect (widget, "clicked",
+  g_signal_connect (prefs->button_assign_import, "clicked",
                     G_CALLBACK (gcm_prefs_button_assign_import_cb), prefs);
 
   /* setup the calibration helper */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "assistant_calib"));
-  g_signal_connect (widget, "delete-event",
+  g_signal_connect (prefs->assistant_calib, "delete-event",
                     G_CALLBACK (gcm_prefs_calib_delete_event_cb),
                     prefs);
-  g_signal_connect (widget, "apply",
+  g_signal_connect (prefs->assistant_calib, "apply",
                     G_CALLBACK (gcm_prefs_calib_apply_cb),
                     prefs);
-  g_signal_connect (widget, "cancel",
+  g_signal_connect (prefs->assistant_calib, "cancel",
                     G_CALLBACK (gcm_prefs_calib_cancel_cb),
                     prefs);
-  g_signal_connect (widget, "close",
+  g_signal_connect (prefs->assistant_calib, "close",
                     G_CALLBACK (gcm_prefs_calib_cancel_cb),
                     prefs);
-  g_signal_connect (widget, "prepare",
+  g_signal_connect (prefs->assistant_calib, "prepare",
                     G_CALLBACK (gcm_prefs_calib_prepare_cb),
                     prefs);
-  prefs->assistant_calib = widget;
 
   /* setup the calibration helper ::TreeView */
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "treeview_calib_quality"));
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
-  model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_calib_quality));
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (prefs->treeview_calib_quality));
   gtk_tree_model_foreach (model,
                           cc_color_panel_treeview_quality_default_cb,
                           selection);
@@ -2257,7 +2190,7 @@ cc_color_panel_init (CcColorPanel *prefs)
   gtk_tree_view_column_add_attribute (column, renderer,
                                       "markup", COLUMN_CALIB_QUALITY_DESCRIPTION);
   gtk_tree_view_column_set_expand (column, TRUE);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (widget),
+  gtk_tree_view_append_column (GTK_TREE_VIEW (prefs->treeview_calib_quality),
                                GTK_TREE_VIEW_COLUMN (column));
   column = gtk_tree_view_column_new ();
   renderer = cc_color_cell_renderer_text_new ();
@@ -2270,12 +2203,10 @@ cc_color_panel_init (CcColorPanel *prefs)
   gtk_tree_view_column_add_attribute (column, renderer,
                                       "markup", COLUMN_CALIB_QUALITY_APPROX_TIME);
   gtk_tree_view_column_set_expand (column, FALSE);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (widget),
+  gtk_tree_view_append_column (GTK_TREE_VIEW (prefs->treeview_calib_quality),
                                GTK_TREE_VIEW_COLUMN (column));
 
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "treeview_calib_sensor"));
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_calib_sensor));
   g_signal_connect (selection, "changed",
                     G_CALLBACK (gcm_prefs_calib_sensor_treeview_clicked_cb),
                     prefs);
@@ -2289,12 +2220,10 @@ cc_color_panel_init (CcColorPanel *prefs)
   gtk_tree_view_column_add_attribute (column, renderer,
                                       "markup", COLUMN_CALIB_SENSOR_DESCRIPTION);
   gtk_tree_view_column_set_expand (column, TRUE);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (widget),
+  gtk_tree_view_append_column (GTK_TREE_VIEW (prefs->treeview_calib_sensor),
                                GTK_TREE_VIEW_COLUMN (column));
 
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "treeview_calib_kind"));
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_calib_kind));
   g_signal_connect (selection, "changed",
                     G_CALLBACK (gcm_prefs_calib_kind_treeview_clicked_cb),
                     prefs);
@@ -2307,19 +2236,17 @@ cc_color_panel_init (CcColorPanel *prefs)
   gtk_tree_view_column_pack_start (column, renderer, TRUE);
   gtk_tree_view_column_add_attribute (column, renderer,
                                       "markup", COLUMN_CALIB_KIND_DESCRIPTION);
-  model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (prefs->treeview_calib_kind));
   model_filter = gtk_tree_model_filter_new (model, NULL);
-  gtk_tree_view_set_model (GTK_TREE_VIEW (widget), model_filter);
+  gtk_tree_view_set_model (GTK_TREE_VIEW (prefs->treeview_calib_kind), model_filter);
   gtk_tree_model_filter_set_visible_column (GTK_TREE_MODEL_FILTER (model_filter),
                                             COLUMN_CALIB_KIND_VISIBLE);
 
   gtk_tree_view_column_set_expand (column, TRUE);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (widget),
+  gtk_tree_view_append_column (GTK_TREE_VIEW (prefs->treeview_calib_kind),
                                GTK_TREE_VIEW_COLUMN (column));
 
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "treeview_calib_temp"));
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (prefs->treeview_calib_temp));
   g_signal_connect (selection, "changed",
                     G_CALLBACK (gcm_prefs_calib_temp_treeview_clicked_cb),
                     prefs);
@@ -2333,11 +2260,9 @@ cc_color_panel_init (CcColorPanel *prefs)
   gtk_tree_view_column_add_attribute (column, renderer,
                                       "markup", COLUMN_CALIB_TEMP_DESCRIPTION);
   gtk_tree_view_column_set_expand (column, TRUE);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (widget),
+  gtk_tree_view_append_column (GTK_TREE_VIEW (prefs->treeview_calib_temp),
                                GTK_TREE_VIEW_COLUMN (column));
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "entry_calib_title"));
-  g_signal_connect (widget, "notify::text",
+  g_signal_connect (prefs->entry_calib_title, "notify::text",
         G_CALLBACK (gcm_prefs_title_entry_changed_cb), prefs);
 
   /* use a device client array */
@@ -2373,8 +2298,7 @@ cc_color_panel_init (CcColorPanel *prefs)
                     prefs);
   prefs->list_box_size = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
 
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder, "frame_devices"));
-  gtk_container_add (GTK_CONTAINER (widget), GTK_WIDGET (prefs->list_box));
+  gtk_container_add (GTK_CONTAINER (prefs->frame_devices), GTK_WIDGET (prefs->list_box));
   gtk_widget_show (GTK_WIDGET (prefs->list_box));
 
   /* connect to colord */
@@ -2396,26 +2320,15 @@ cc_color_panel_init (CcColorPanel *prefs)
 
   /* show the confirmation export page if we are running from a LiveCD */
   prefs->is_live_cd = gcm_prefs_is_livecd ();
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "box_calib_summary"));
-  gtk_widget_set_visible (widget, prefs->is_live_cd);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "button_calib_export"));
-  g_signal_connect (widget, "clicked",
+  gtk_widget_set_visible (prefs->box_calib_summary, prefs->is_live_cd);
+  g_signal_connect (prefs->button_calib_export, "clicked",
                     G_CALLBACK (gcm_prefs_calib_export_cb), prefs);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "button_calib_upload"));
-  g_signal_connect (widget, "clicked",
+  g_signal_connect (prefs->button_calib_upload, "clicked",
                     G_CALLBACK (gcm_prefs_calib_upload_cb), prefs);
-  widget = GTK_WIDGET (gtk_builder_get_object (prefs->builder,
-                                               "label_calib_summary_message"));
-  g_signal_connect (widget, "activate-link",
+  g_signal_connect (prefs->label_calib_summary_message, "activate-link",
                     G_CALLBACK (gcm_prefs_calib_export_link_cb), prefs);
 
-
-  widget = WID (prefs->builder, "dialog-vbox1");
-  gtk_container_add (GTK_CONTAINER (prefs), widget);
-  g_signal_connect (widget, "realize",
+  g_signal_connect (prefs, "realize",
                     G_CALLBACK (gcm_prefs_window_realize_cb),
                     prefs);
 }
diff --git a/panels/color/color.ui b/panels/color/color.ui
index 27b409865..5798d7c05 100644
--- a/panels/color/color.ui
+++ b/panels/color/color.ui
@@ -754,273 +754,279 @@
       <action-widget response="0">button_assign_ok</action-widget>
     </action-widgets>
   </object>
-  <object class="GtkScrolledWindow" id="dialog-vbox1">
+  <template class="CcColorPanel" parent="CcPanel">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <child>
-      <object class="GtkBox">
+      <object class="GtkScrolledWindow" id="dialog_scroll">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-
-        <!-- Stub boxes to make the content cover 1/3 of the screen -->
         <child>
           <object class="GtkBox">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
-          </object>
-        </child>
 
-        <child>
-          <object class="GtkBox">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
-          </object>
-          <packing>
-            <property name="pack_type">end</property>
-          </packing>
-        </child>
+            <!-- Stub boxes to make the content cover 1/3 of the screen -->
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+              </object>
+            </child>
 
-        <!-- Content -->
-        <child>
-          <object class="GtkBox">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="orientation">vertical</property>
-            <property name="spacing">12</property>
-            <property name="margin_top">32</property>
-            <property name="margin_bottom">32</property>
-            <property name="margin_left">24</property>
-            <property name="margin_right">24</property>
-            <property name="hexpand">True</property>
             <child>
-              <object class="GtkBox" id="hbox3">
+              <object class="GtkBox">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="spacing">9</property>
-                <child>
-                  <object class="GtkLabel" id="label_intro">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Each device needs an up to date color profile 
to be color managed.</property>
-                    <property name="wrap">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkLabel" id="label_padding">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkLinkButton" id="linkbutton_help">
-                    <property name="label" translatable="yes">Learn more</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="has_tooltip">True</property>
-                    <property name="tooltip_text" translatable="yes">Learn more about color 
management</property>
-                    <property name="relief">none</property>
-                    <property name="xalign">0.50999999046325684</property>
-                    <property name="uri">help:gnome-help/color-whyimportant</property>
-                    <accessibility>
-                      <relation type="labelled-by" target="label_intro"/>
-                    </accessibility>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
+                <property name="hexpand">True</property>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
+                <property name="pack_type">end</property>
               </packing>
             </child>
+
+            <!-- Content -->
             <child>
-              <object class="GtkBox" id="vbox3">
+              <object class="GtkBox">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="orientation">vertical</property>
+                <property name="spacing">12</property>
+                <property name="margin_top">32</property>
+                <property name="margin_bottom">32</property>
+                <property name="margin_left">24</property>
+                <property name="margin_right">24</property>
+                <property name="hexpand">True</property>
                 <child>
-                  <object class="GtkFrame" id="frame_devices">
+                  <object class="GtkBox" id="hbox3">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="shadow_type">in</property>
-                  </object>
-                </child>
-                <child>
-                  <object class="GtkToolbar" id="toolbar_devices">
-                    <property name="can_focus">True</property>
-                    <property name="show_arrow">False</property>
-                    <property name="icon_size">1</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">9</property>
                     <child>
-                      <object class="GtkToolItem" id="left_button_group">
+                      <object class="GtkLabel" id="label_intro">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkBox" id="left_button_group_box">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkButton" id="toolbutton_device_default">
-                                <property name="label" translatable="yes">_Set for all users</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="has_tooltip">True</property>
-                                <property name="tooltip_text" translatable="yes">Set this profile for all 
users on this computer</property>
-                                <property name="use_underline">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkButton" id="toolbutton_device_enable">
-                                <property name="label" translatable="yes">_Enable</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">True</property>
-                                <property name="has_tooltip">True</property>
-                                <property name="tooltip_markup" translatable="yes">Set this profile for all 
users on this computer</property>
-                                <property name="tooltip_text" translatable="yes">Set this profile for all 
users on this computer</property>
-                                <property name="use_underline">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Each device needs an up to date color 
profile to be color managed.</property>
+                        <property name="wrap">True</property>
                       </object>
                       <packing>
-                        <property name="expand">True</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkToolItem" id="right_button_group">
+                      <object class="GtkLabel" id="label_padding">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLinkButton" id="linkbutton_help">
+                        <property name="label" translatable="yes">Learn more</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="has_tooltip">True</property>
+                        <property name="tooltip_text" translatable="yes">Learn more about color 
management</property>
+                        <property name="relief">none</property>
+                        <property name="xalign">0.50999999046325684</property>
+                        <property name="uri">help:gnome-help/color-whyimportant</property>
+                        <accessibility>
+                          <relation type="labelled-by" target="label_intro"/>
+                        </accessibility>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkBox" id="box_devices">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkFrame" id="frame_devices">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="shadow_type">in</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkToolbar" id="toolbar_devices">
+                        <property name="can_focus">True</property>
+                        <property name="show_arrow">False</property>
+                        <property name="icon_size">1</property>
                         <child>
-                          <object class="GtkBox" id="right_button_group_box">
+                          <object class="GtkToolItem" id="left_button_group">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <child>
-                              <object class="GtkButton" id="toolbutton_profile_add">
-                                <property name="label" translatable="yes">_Add profile</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
+                              <object class="GtkBox" id="left_button_group_box">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkButton" id="toolbutton_device_default">
+                                    <property name="label" translatable="yes">_Set for all users</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="has_tooltip">True</property>
+                                    <property name="tooltip_text" translatable="yes">Set this profile for 
all users on this computer</property>
+                                    <property name="use_underline">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="toolbutton_device_enable">
+                                    <property name="label" translatable="yes">_Enable</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="has_tooltip">True</property>
+                                    <property name="tooltip_markup" translatable="yes">Set this profile for 
all users on this computer</property>
+                                    <property name="tooltip_text" translatable="yes">Set this profile for 
all users on this computer</property>
+                                    <property name="use_underline">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
                               </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkButton" id="toolbutton_device_calibrate">
-                                <property name="label" translatable="yes">_Calibrate…</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="has_tooltip">True</property>
-                                <property name="tooltip_text" translatable="yes">Calibrate the 
device</property>
-                                <property name="use_underline">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkButton" id="toolbutton_profile_remove">
-                                <property name="label" translatable="yes">_Remove profile</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">2</property>
-                              </packing>
                             </child>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkToolItem" id="right_button_group">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                             <child>
-                              <object class="GtkButton" id="toolbutton_profile_view">
-                                <property name="label" translatable="yes">_View details</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="use_underline">True</property>
+                              <object class="GtkBox" id="right_button_group_box">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkButton" id="toolbutton_profile_add">
+                                    <property name="label" translatable="yes">_Add profile</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_underline">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="toolbutton_device_calibrate">
+                                    <property name="label" translatable="yes">_Calibrate…</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="has_tooltip">True</property>
+                                    <property name="tooltip_text" translatable="yes">Calibrate the 
device</property>
+                                    <property name="use_underline">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="toolbutton_profile_remove">
+                                    <property name="label" translatable="yes">_Remove profile</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_underline">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="toolbutton_profile_view">
+                                    <property name="label" translatable="yes">_View details</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_underline">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">3</property>
+                                  </packing>
+                                </child>
                               </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">3</property>
-                              </packing>
                             </child>
                           </object>
+                          <packing>
+                            <property name="expand">False</property>
+                          </packing>
                         </child>
                       </object>
                       <packing>
                         <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
                       </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">False</property>
+                    <property name="expand">True</property>
                     <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkLabel" id="label_no_devices">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Unable to detect any devices that can be color 
managed</property>
+                    <style>
+                      <class name="dim-label"/>
+                    </style>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
               </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="label_no_devices">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Unable to detect any devices that can be color 
managed</property>
-                <style>
-                  <class name="dim-label"/>
-                </style>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">2</property>
-              </packing>
             </child>
           </object>
         </child>
       </object>
     </child>
-  </object>
+  </template>
   <object class="GtkListStore" id="liststore_assign">
     <columns>
       <!-- column-name title -->


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