[gnome-control-center] [appearance] migrate appearance capplet to GtkBuilder



commit e5d8d840d5988546870468367d8491ac1ef146be
Author: Thomas Wood <thos gnome org>
Date:   Sat Jul 11 12:53:27 2009 +0100

    [appearance] migrate appearance capplet to GtkBuilder
    
    This removes the dependency on the deprecated libglade library.

 capplets/appearance/Makefile.am          |    6 +-
 capplets/appearance/appearance-desktop.c |   24 ++++---
 capplets/appearance/appearance-font.c    |  122 +++++++++++++++---------------
 capplets/appearance/appearance-main.c    |   43 ++++++----
 capplets/appearance/appearance-style.c   |   86 +++++++++++-----------
 capplets/appearance/appearance-themes.c  |   46 ++++++------
 capplets/appearance/appearance-ui.c      |   18 ++--
 capplets/appearance/appearance.h         |    8 +-
 capplets/appearance/data/Makefile.am     |    4 +-
 capplets/appearance/theme-save.c         |   26 ++++---
 10 files changed, 199 insertions(+), 184 deletions(-)
---
diff --git a/capplets/appearance/Makefile.am b/capplets/appearance/Makefile.am
index 27288cc..0ebe389 100644
--- a/capplets/appearance/Makefile.am
+++ b/capplets/appearance/Makefile.am
@@ -37,7 +37,7 @@ gnome_appearance_properties_SOURCES = \
 	caption-cellrenderer.c \
 	caption-cellrenderer.h
 
-gnome_appearance_properties_CFLAGS = -DGNOME_DESKTOP_USE_UNSTABLE_API
+AM_CFLAGS = -DGNOME_DESKTOP_USE_UNSTABLE_API
 
 gnome_appearance_properties_LDADD = \
 	$(top_builddir)/libwindow-settings/libgnome-window-settings.la \
@@ -47,7 +47,7 @@ gnome_appearance_properties_LDADD = \
 	$(METACITY_LIBS)
 gnome_appearance_properties_LDFLAGS = -export-dynamic
 
-gladedir = $(pkgdatadir)/glade
+gtkbuilderdir = $(pkgdatadir)/gtkbuilder
 pixmapdir = $(pkgdatadir)/pixmaps
 wallpaperdir = $(datadir)/gnome-background-properties
 
@@ -57,7 +57,7 @@ INCLUDES = \
 	$(FONT_CAPPLET_CFLAGS) \
 	-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
 	-DGNOMECC_DATA_DIR="\"$(pkgdatadir)\"" \
-	-DGNOMECC_GLADE_DIR="\"$(gladedir)\"" \
+	-DGNOMECC_GTKBUILDER_DIR="\"$(gtkbuilderdir)\"" \
 	-DGNOMECC_PIXMAP_DIR="\"$(pixmapdir)\"" \
 	-DWALLPAPER_DATADIR="\"$(wallpaperdir)\""
 
diff --git a/capplets/appearance/appearance-desktop.c b/capplets/appearance/appearance-desktop.c
index 3942690..cb27a18 100644
--- a/capplets/appearance/appearance-desktop.c
+++ b/capplets/appearance/appearance-desktop.c
@@ -211,10 +211,12 @@ wp_add_images (AppearanceData *data,
                GSList *images)
 {
   GdkWindow *window;
+  GtkWidget *w;
   GdkCursor *cursor;
   GnomeWPItem *item;
 
-  window = glade_xml_get_widget (data->xml, "appearance_window")->window;
+  w = appearance_capplet_get_widget (data, "appearance_window");
+  window = gtk_widget_get_window (w);
 
   item = NULL;
   cursor = gdk_cursor_new_for_display (gdk_display_get_default (),
@@ -627,7 +629,7 @@ wp_create_filechooser (AppearanceData *data)
 
   data->wp_filesel = GTK_FILE_CHOOSER (
   		     gtk_file_chooser_dialog_new_with_backend (_("Add Wallpaper"),
-                     GTK_WINDOW (glade_xml_get_widget (data->xml, "appearance_window")),
+                     GTK_WINDOW (appearance_capplet_get_widget (data, "appearance_window")),
                      GTK_FILE_CHOOSER_ACTION_OPEN,
                      "gtk+",
                      GTK_STOCK_CANCEL,
@@ -713,11 +715,13 @@ wp_drag_received (GtkWidget *widget,
     uris = g_uri_list_extract_uris ((gchar *) selection_data->data);
     if (uris != NULL)
     {
+      GtkWidget *w;
       GdkWindow *window;
       GdkCursor *cursor;
       gchar **uri;
 
-      window = glade_xml_get_widget (data->xml, "appearance_window")->window;
+      w = appearance_capplet_get_widget (data, "appearance_window");
+      window = gtk_widget_get_window (w);
 
       cursor = gdk_cursor_new_for_display (gdk_display_get_default (),
              GDK_WATCH);
@@ -1038,7 +1042,7 @@ desktop_init (AppearanceData *data,
                                                  G_TYPE_STRING,
                                                  G_TYPE_STRING));
 
-  data->wp_view = GTK_ICON_VIEW (glade_xml_get_widget (data->xml, "wp_view"));
+  data->wp_view = GTK_ICON_VIEW (appearance_capplet_get_widget (data, "wp_view"));
   gtk_icon_view_set_model (data->wp_view, GTK_TREE_MODEL (data->wp_model));
 
   g_signal_connect_after (data->wp_view, "realize",
@@ -1071,34 +1075,34 @@ desktop_init (AppearanceData *data,
   g_signal_connect (data->wp_view, "drag-data-get",
 		    (GCallback) wp_drag_get_data, data);
 
-  data->wp_style_menu = glade_xml_get_widget (data->xml, "wp_style_menu");
+  data->wp_style_menu = appearance_capplet_get_widget (data, "wp_style_menu");
 
   g_signal_connect (data->wp_style_menu, "changed",
                     (GCallback) wp_scale_type_changed, data);
 
-  data->wp_color_menu = glade_xml_get_widget (data->xml, "wp_color_menu");
+  data->wp_color_menu = appearance_capplet_get_widget (data, "wp_color_menu");
 
   g_signal_connect (data->wp_color_menu, "changed",
                     (GCallback) wp_shade_type_changed, data);
 
-  data->wp_scpicker = glade_xml_get_widget (data->xml, "wp_scpicker");
+  data->wp_scpicker = appearance_capplet_get_widget (data, "wp_scpicker");
 
   g_signal_connect (data->wp_scpicker, "color-set",
                     (GCallback) wp_scolor_changed, data);
 
-  data->wp_pcpicker = glade_xml_get_widget (data->xml, "wp_pcpicker");
+  data->wp_pcpicker = appearance_capplet_get_widget (data, "wp_pcpicker");
 
   g_signal_connect (data->wp_pcpicker, "color-set",
                     (GCallback) wp_scolor_changed, data);
 
-  add_button = glade_xml_get_widget (data->xml, "wp_add_button");
+  add_button = appearance_capplet_get_widget (data, "wp_add_button");
   gtk_button_set_image (GTK_BUTTON (add_button),
                         gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_BUTTON));
 
   g_signal_connect (add_button, "clicked",
                     (GCallback) wp_file_open_dialog, data);
 
-  data->wp_rem_button = glade_xml_get_widget (data->xml, "wp_rem_button");
+  data->wp_rem_button = appearance_capplet_get_widget (data, "wp_rem_button");
 
   g_signal_connect (data->wp_rem_button, "clicked",
                     (GCallback) wp_remove_wallpaper, data);
diff --git a/capplets/appearance/appearance-font.c b/capplets/appearance/appearance-font.c
index 97d4a61..f129773 100644
--- a/capplets/appearance/appearance-font.c
+++ b/capplets/appearance/appearance-font.c
@@ -429,7 +429,7 @@ setup_font_pair (GtkWidget    *radio,
 static void
 metacity_titlebar_load_sensitivity (AppearanceData *data)
 {
-  gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "window_title_font"),
+  gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "window_title_font"),
 			    !gconf_client_get_bool (data->client,
 						    WINDOW_TITLE_USES_SYSTEM_KEY,
 						    NULL));
@@ -820,12 +820,12 @@ cb_show_details (GtkWidget *button,
     GtkWidget *widget;
     EnumGroup *group;
 
-    data->font_details = glade_xml_get_widget (data->xml, "render_details");
+    data->font_details = appearance_capplet_get_widget (data, "render_details");
 
     gtk_window_set_transient_for (GTK_WINDOW (data->font_details),
-				  GTK_WINDOW (glade_xml_get_widget (data->xml, "appearance_window")));
+                                  GTK_WINDOW (appearance_capplet_get_widget (data, "appearance_window")));
 
-    widget = glade_xml_get_widget (data->xml, "dpi_spinner");
+    widget = appearance_capplet_get_widget (data, "dpi_spinner");
 
     /* pick a sensible maximum dpi */
     adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));
@@ -838,48 +838,46 @@ cb_show_details (GtkWidget *button,
     gconf_client_notify_add (data->client, FONT_DPI_KEY,
 			     dpi_changed, widget, NULL, NULL);
 
-    setup_font_sample (glade_xml_get_widget (data->xml, "antialias_none_sample"),      ANTIALIAS_NONE,      HINT_FULL);
-    setup_font_sample (glade_xml_get_widget (data->xml, "antialias_grayscale_sample"), ANTIALIAS_GRAYSCALE, HINT_FULL);
-    setup_font_sample (glade_xml_get_widget (data->xml, "antialias_subpixel_sample"),  ANTIALIAS_RGBA,      HINT_FULL);
+    setup_font_sample (appearance_capplet_get_widget (data, "antialias_none_sample"),      ANTIALIAS_NONE,      HINT_FULL);
+    setup_font_sample (appearance_capplet_get_widget (data, "antialias_grayscale_sample"), ANTIALIAS_GRAYSCALE, HINT_FULL);
+    setup_font_sample (appearance_capplet_get_widget (data, "antialias_subpixel_sample"),  ANTIALIAS_RGBA,      HINT_FULL);
 
     group = enum_group_create (
     	FONT_ANTIALIASING_KEY, antialias_enums, ANTIALIAS_GRAYSCALE,
-	glade_xml_get_widget (data->xml, "antialias_none_radio"),      ANTIALIAS_NONE,
-	glade_xml_get_widget (data->xml, "antialias_grayscale_radio"), ANTIALIAS_GRAYSCALE,
-	glade_xml_get_widget (data->xml, "antialias_subpixel_radio"),  ANTIALIAS_RGBA,
+	appearance_capplet_get_widget (data, "antialias_none_radio"),      ANTIALIAS_NONE,
+	appearance_capplet_get_widget (data, "antialias_grayscale_radio"), ANTIALIAS_GRAYSCALE,
+	appearance_capplet_get_widget (data, "antialias_subpixel_radio"),  ANTIALIAS_RGBA,
 	NULL);
     data->font_groups = g_slist_prepend (data->font_groups, group);
 
-    setup_font_sample (glade_xml_get_widget (data->xml, "hint_none_sample"),   ANTIALIAS_GRAYSCALE, HINT_NONE);
-    setup_font_sample (glade_xml_get_widget (data->xml, "hint_slight_sample"), ANTIALIAS_GRAYSCALE, HINT_SLIGHT);
-    setup_font_sample (glade_xml_get_widget (data->xml, "hint_medium_sample"), ANTIALIAS_GRAYSCALE, HINT_MEDIUM);
-    setup_font_sample (glade_xml_get_widget (data->xml, "hint_full_sample"),   ANTIALIAS_GRAYSCALE, HINT_FULL);
-
-    group = enum_group_create (
-    	FONT_HINTING_KEY, hint_enums, HINT_FULL,
-	glade_xml_get_widget (data->xml, "hint_none_radio"),   HINT_NONE,
-	glade_xml_get_widget (data->xml, "hint_slight_radio"), HINT_SLIGHT,
-	glade_xml_get_widget (data->xml, "hint_medium_radio"), HINT_MEDIUM,
-	glade_xml_get_widget (data->xml, "hint_full_radio"),   HINT_FULL,
-	NULL);
+    setup_font_sample (appearance_capplet_get_widget (data, "hint_none_sample"),   ANTIALIAS_GRAYSCALE, HINT_NONE);
+    setup_font_sample (appearance_capplet_get_widget (data, "hint_slight_sample"), ANTIALIAS_GRAYSCALE, HINT_SLIGHT);
+    setup_font_sample (appearance_capplet_get_widget (data, "hint_medium_sample"), ANTIALIAS_GRAYSCALE, HINT_MEDIUM);
+    setup_font_sample (appearance_capplet_get_widget (data, "hint_full_sample"),   ANTIALIAS_GRAYSCALE, HINT_FULL);
+
+    group = enum_group_create (FONT_HINTING_KEY, hint_enums, HINT_FULL,
+                               appearance_capplet_get_widget (data, "hint_none_radio"),   HINT_NONE,
+                               appearance_capplet_get_widget (data, "hint_slight_radio"), HINT_SLIGHT,
+                               appearance_capplet_get_widget (data, "hint_medium_radio"), HINT_MEDIUM,
+                               appearance_capplet_get_widget (data, "hint_full_radio"),   HINT_FULL,
+                               NULL);
     data->font_groups = g_slist_prepend (data->font_groups, group);
 
-    gtk_image_set_from_file (GTK_IMAGE (glade_xml_get_widget (data->xml, "subpixel_rgb_image")),
-			     GNOMECC_PIXMAP_DIR "/subpixel-rgb.png");
-    gtk_image_set_from_file (GTK_IMAGE (glade_xml_get_widget (data->xml, "subpixel_bgr_image")),
-			     GNOMECC_PIXMAP_DIR "/subpixel-bgr.png");
-    gtk_image_set_from_file (GTK_IMAGE (glade_xml_get_widget (data->xml, "subpixel_vrgb_image")),
-			     GNOMECC_PIXMAP_DIR "/subpixel-vrgb.png");
-    gtk_image_set_from_file (GTK_IMAGE (glade_xml_get_widget (data->xml, "subpixel_vbgr_image")),
-			     GNOMECC_PIXMAP_DIR "/subpixel-vbgr.png");
-
-    group = enum_group_create (
-    	FONT_RGBA_ORDER_KEY, rgba_order_enums, RGBA_RGB,
-	glade_xml_get_widget (data->xml, "subpixel_rgb_radio"),  RGBA_RGB,
-	glade_xml_get_widget (data->xml, "subpixel_bgr_radio"),  RGBA_BGR,
-	glade_xml_get_widget (data->xml, "subpixel_vrgb_radio"), RGBA_VRGB,
-	glade_xml_get_widget (data->xml, "subpixel_vbgr_radio"), RGBA_VBGR,
-	NULL);
+    gtk_image_set_from_file (GTK_IMAGE (appearance_capplet_get_widget (data, "subpixel_rgb_image")),
+                             GNOMECC_PIXMAP_DIR "/subpixel-rgb.png");
+    gtk_image_set_from_file (GTK_IMAGE (appearance_capplet_get_widget (data, "subpixel_bgr_image")),
+                             GNOMECC_PIXMAP_DIR "/subpixel-bgr.png");
+    gtk_image_set_from_file (GTK_IMAGE (appearance_capplet_get_widget (data, "subpixel_vrgb_image")),
+                             GNOMECC_PIXMAP_DIR "/subpixel-vrgb.png");
+    gtk_image_set_from_file (GTK_IMAGE (appearance_capplet_get_widget (data, "subpixel_vbgr_image")),
+                             GNOMECC_PIXMAP_DIR "/subpixel-vbgr.png");
+
+    group = enum_group_create (FONT_RGBA_ORDER_KEY, rgba_order_enums, RGBA_RGB,
+                               appearance_capplet_get_widget (data, "subpixel_rgb_radio"),  RGBA_RGB,
+                               appearance_capplet_get_widget (data, "subpixel_bgr_radio"),  RGBA_BGR,
+                               appearance_capplet_get_widget (data, "subpixel_vrgb_radio"), RGBA_VRGB,
+                               appearance_capplet_get_widget (data, "subpixel_vbgr_radio"), RGBA_VBGR,
+                               NULL);
     data->font_groups = g_slist_prepend (data->font_groups, group);
 
     g_signal_connect (G_OBJECT (data->font_details),
@@ -914,7 +912,7 @@ font_init (AppearanceData *data)
 			GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
 #endif  /* HAVE_XFT2 */
 
-  widget = glade_xml_get_widget (data->xml, "application_font");
+  widget = appearance_capplet_get_widget (data, "application_font");
   peditor = gconf_peditor_new_font (NULL, GTK_FONT_KEY,
 				    widget,
 				    "conv-from-widget-cb", application_font_to_gconf,
@@ -925,20 +923,20 @@ font_init (AppearanceData *data)
   application_font_changed (widget);
 
   peditor = gconf_peditor_new_font (NULL, DOCUMENT_FONT_KEY,
-				    glade_xml_get_widget (data->xml, "document_font"),
-				    NULL);
+                                    appearance_capplet_get_widget (data, "document_font"),
+                                    NULL);
 
   peditor = gconf_peditor_new_font (NULL, DESKTOP_FONT_KEY,
-				    glade_xml_get_widget (data->xml, "desktop_font"),
-				    NULL);
+                                    appearance_capplet_get_widget (data, "desktop_font"),
+                                    NULL);
 
   peditor = gconf_peditor_new_font (NULL, WINDOW_TITLE_FONT_KEY,
-				    glade_xml_get_widget (data->xml, "window_title_font"),
-				    NULL);
+                                    appearance_capplet_get_widget (data, "window_title_font"),
+                                    NULL);
 
   peditor = gconf_peditor_new_font (NULL, MONOSPACE_FONT_KEY,
-				    glade_xml_get_widget (data->xml, "monospace_font"),
-				    NULL);
+                                    appearance_capplet_get_widget (data, "monospace_font"),
+                                    NULL);
 
   gconf_client_notify_add (data->client, WINDOW_TITLE_USES_SYSTEM_KEY,
 			   metacity_changed,
@@ -947,18 +945,18 @@ font_init (AppearanceData *data)
   metacity_titlebar_load_sensitivity (data);
 
 #ifdef HAVE_XFT2
-  setup_font_pair (glade_xml_get_widget (data->xml, "monochrome_radio"),
-		   glade_xml_get_widget (data->xml, "monochrome_sample"),
-		   ANTIALIAS_NONE, HINT_FULL);
-  setup_font_pair (glade_xml_get_widget (data->xml, "best_shapes_radio"),
-		   glade_xml_get_widget (data->xml, "best_shapes_sample"),
-		   ANTIALIAS_GRAYSCALE, HINT_MEDIUM);
-  setup_font_pair (glade_xml_get_widget (data->xml, "best_contrast_radio"),
-		   glade_xml_get_widget (data->xml, "best_contrast_sample"),
-		   ANTIALIAS_GRAYSCALE, HINT_FULL);
-  setup_font_pair (glade_xml_get_widget (data->xml, "subpixel_radio"),
-		   glade_xml_get_widget (data->xml, "subpixel_sample"),
-		   ANTIALIAS_RGBA, HINT_FULL);
+  setup_font_pair (appearance_capplet_get_widget (data, "monochrome_radio"),
+                   appearance_capplet_get_widget (data, "monochrome_sample"),
+                   ANTIALIAS_NONE, HINT_FULL);
+  setup_font_pair (appearance_capplet_get_widget (data, "best_shapes_radio"),
+                   appearance_capplet_get_widget (data, "best_shapes_sample"),
+                   ANTIALIAS_GRAYSCALE, HINT_MEDIUM);
+  setup_font_pair (appearance_capplet_get_widget (data, "best_contrast_radio"),
+                   appearance_capplet_get_widget (data, "best_contrast_sample"),
+                   ANTIALIAS_GRAYSCALE, HINT_FULL);
+  setup_font_pair (appearance_capplet_get_widget (data, "subpixel_radio"),
+                   appearance_capplet_get_widget (data, "subpixel_sample"),
+                   ANTIALIAS_RGBA, HINT_FULL);
 
   font_render_load (data->client);
 
@@ -966,10 +964,10 @@ font_init (AppearanceData *data)
 			   font_render_changed,
 			   data->client, NULL, NULL);
 
-  g_signal_connect (glade_xml_get_widget (data->xml, "details_button"),
-		    "clicked", G_CALLBACK (cb_show_details), data);
+  g_signal_connect (appearance_capplet_get_widget (data, "details_button"),
+                    "clicked", G_CALLBACK (cb_show_details), data);
 #else /* !HAVE_XFT2 */
-  gtk_widget_hide (glade_xml_get_widget (data->xml, "font_render_frame"));
+  gtk_widget_hide (appearance_capplet_get_widget (data, "font_render_frame"));
 #endif /* HAVE_XFT2 */
 }
 
diff --git a/capplets/appearance/appearance-main.c b/capplets/appearance/appearance-main.c
index 75d7d1f..99faeee 100644
--- a/capplets/appearance/appearance-main.c
+++ b/capplets/appearance/appearance-main.c
@@ -34,8 +34,9 @@ static AppearanceData *
 init_appearance_data (int *argc, char ***argv, GOptionContext *context)
 {
   AppearanceData *data = NULL;
-  gchar *gladefile;
-  GladeXML *ui;
+  gchar *uifile;
+  GtkBuilder *ui;
+  GError *err = NULL;
 
   g_thread_init (NULL);
   theme_thumbnail_factory_init (*argc, *argv);
@@ -43,16 +44,24 @@ init_appearance_data (int *argc, char ***argv, GOptionContext *context)
   activate_settings_daemon ();
 
   /* set up the data */
-  gladefile = g_build_filename (GNOMECC_GLADE_DIR, "appearance.glade", NULL);
-  ui = glade_xml_new (gladefile, NULL, NULL);
-  g_free (gladefile);
-
-  if (ui) {
-    data = g_new (AppearanceData, 1);
-    data->client = gconf_client_get_default ();
-    data->xml = ui;
-    data->thumb_factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL);
-  }
+  uifile = g_build_filename (GNOMECC_GTKBUILDER_DIR, "appearance.ui",
+                             NULL);
+  ui = gtk_builder_new();
+  gtk_builder_add_from_file (ui, uifile, &err);
+  g_free (uifile);
+
+  if (err)
+    {
+      g_warning (_("Could not load user interface file: %s"), err->message);
+      g_error_free (err);
+    }
+  else
+    {
+      data = g_new (AppearanceData, 1);
+      data->client = gconf_client_get_default ();
+      data->ui = ui;
+      data->thumb_factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL);
+    }
 
   return data;
 }
@@ -74,14 +83,14 @@ main_window_response (GtkWidget *widget,
 
     g_object_unref (data->thumb_factory);
     g_object_unref (data->client);
-    g_object_unref (data->xml);
+    g_object_unref (data->ui);
   }
   else if (response_id == GTK_RESPONSE_HELP)
   {
       GtkNotebook *nb;
       gint pindex;
 
-      nb = GTK_NOTEBOOK (glade_xml_get_widget (data->xml, "main_notebook"));
+      nb = GTK_NOTEBOOK (appearance_capplet_get_widget (data, "main_notebook"));
       pindex = gtk_notebook_get_current_page (nb);
 
       switch (pindex)
@@ -165,7 +174,7 @@ main (int argc, char **argv)
   ui_init (data);
 
   /* prepare the main window */
-  w = glade_xml_get_widget (data->xml, "appearance_window");
+  w = appearance_capplet_get_widget (data, "appearance_window");
   capplet_set_icon (w, "preferences-desktop-theme");
   gtk_widget_show_all (w);
 
@@ -182,12 +191,12 @@ main (int argc, char **argv)
     page_name = g_strconcat (start_page, "_vbox", NULL);
     g_free (start_page);
 
-    w = glade_xml_get_widget (data->xml, page_name);
+    w = appearance_capplet_get_widget (data, page_name);
     if (w != NULL) {
       GtkNotebook *nb;
       gint pindex;
 
-      nb = GTK_NOTEBOOK (glade_xml_get_widget (data->xml, "main_notebook"));
+      nb = GTK_NOTEBOOK (appearance_capplet_get_widget (data, "main_notebook"));
       pindex = gtk_notebook_page_num (nb, w);
       if (pindex != -1)
         gtk_notebook_set_current_page (nb, pindex);
diff --git a/capplets/appearance/appearance-style.c b/capplets/appearance/appearance-style.c
index 859d7af..ae95d90 100644
--- a/capplets/appearance/appearance-style.c
+++ b/capplets/appearance/appearance-style.c
@@ -247,7 +247,7 @@ update_message_area (AppearanceData *data)
     gtk_widget_show_all (data->style_message_area);
     gtk_widget_set_no_show_all (data->style_message_area, TRUE);
 
-    parent = glade_xml_get_widget (data->xml, "gtk_themes_vbox");
+    parent = appearance_capplet_get_widget (data, "gtk_themes_vbox");
     gtk_box_pack_start (GTK_BOX (parent), data->style_message_area, FALSE, FALSE, 0);
   }
 
@@ -282,7 +282,7 @@ update_color_buttons_from_string (const gchar *color_scheme, AppearanceData *dat
 
   /* now set all the buttons to the correct settings */
   for (i = 0; i < NUM_SYMBOLIC_COLORS; ++i) {
-    widget = glade_xml_get_widget (data->xml, symbolic_names[i]);
+    widget = appearance_capplet_get_widget (data, symbolic_names[i]);
     gtk_color_button_set_color (GTK_COLOR_BUTTON (widget), &colors[i]);
   }
 }
@@ -297,7 +297,7 @@ update_color_buttons_from_settings (GtkSettings *settings,
   g_object_get (settings, "gtk-color-scheme", &setting, NULL);
 
   if (scheme == NULL || strcmp (scheme, "") == 0)
-    gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "color_scheme_defaults_button"), FALSE);
+    gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "color_scheme_defaults_button"), FALSE);
 
   g_free (scheme);
   update_color_buttons_from_string (setting, data);
@@ -333,7 +333,7 @@ check_color_schemes_enabled (GtkSettings *settings,
     gboolean found;
 
     found = (g_slist_find_custom (symbolic_colors, symbolic_names[i], (GCompareFunc) strcmp) != NULL);
-    gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, symbolic_names[i]), found);
+    gtk_widget_set_sensitive (appearance_capplet_get_widget (data, symbolic_names[i]), found);
 
     enable_colors |= found;
   }
@@ -341,13 +341,13 @@ check_color_schemes_enabled (GtkSettings *settings,
   g_slist_foreach (symbolic_colors, (GFunc) g_free, NULL);
   g_slist_free (symbolic_colors);
 
-  gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "color_scheme_table"), enable_colors);
-  gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "color_scheme_defaults_button"), enable_colors);
+  gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "color_scheme_table"), enable_colors);
+  gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "color_scheme_defaults_button"), enable_colors);
 
   if (enable_colors)
-    gtk_widget_hide (glade_xml_get_widget (data->xml, "color_scheme_message_hbox"));
+    gtk_widget_hide (appearance_capplet_get_widget (data, "color_scheme_message_hbox"));
   else
-    gtk_widget_show (glade_xml_get_widget (data->xml, "color_scheme_message_hbox"));
+    gtk_widget_show (appearance_capplet_get_widget (data, "color_scheme_message_hbox"));
 }
 
 static void
@@ -361,7 +361,7 @@ color_button_clicked_cb (GtkWidget *colorbutton, AppearanceData *data)
   gint i;
 
   for (i = 0; i < NUM_SYMBOLIC_COLORS; ++i) {
-    widget = glade_xml_get_widget (data->xml, symbolic_names[i]);
+    widget = appearance_capplet_get_widget (data, symbolic_names[i]);
     gtk_color_button_get_color (GTK_COLOR_BUTTON (widget), &color);
 
     colstr = gdk_color_to_string (&color);
@@ -377,7 +377,7 @@ color_button_clicked_cb (GtkWidget *colorbutton, AppearanceData *data)
   if (!gnome_theme_color_scheme_equal (old_scheme, scheme->str)) {
     gconf_client_set_string (data->client, COLOR_SCHEME_KEY, scheme->str, NULL);
 
-    gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "color_scheme_defaults_button"), TRUE);
+    gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "color_scheme_defaults_button"), TRUE);
   }
   g_free (old_scheme);
   g_string_free (scheme, TRUE);
@@ -387,7 +387,7 @@ static void
 color_scheme_defaults_button_clicked_cb (GtkWidget *button, AppearanceData *data)
 {
   gconf_client_unset (data->client, COLOR_SCHEME_KEY, NULL);
-  gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "color_scheme_defaults_button"), FALSE);
+  gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "color_scheme_defaults_button"), FALSE);
 }
 
 static void
@@ -431,7 +431,7 @@ gtk_theme_changed (GConfPropertyEditor *peditor,
     update_color_buttons_from_settings (settings, data);
   }
 
-  gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "gtk_themes_delete"),
+  gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "gtk_themes_delete"),
 			    theme_is_writable (theme));
 }
 
@@ -447,7 +447,7 @@ window_theme_changed (GConfPropertyEditor *peditor,
   if (value && (name = gconf_value_get_string (value)))
     theme = gnome_theme_info_find (name);
 
-  gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "window_themes_delete"),
+  gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "window_themes_delete"),
 			    theme_is_writable (theme));
 }
 
@@ -463,7 +463,7 @@ icon_theme_changed (GConfPropertyEditor *peditor,
   if (value && (name = gconf_value_get_string (value)))
     theme = gnome_theme_icon_info_find (name);
 
-  gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "icon_themes_delete"),
+  gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "icon_themes_delete"),
 			    theme_is_writable (theme));
 }
 
@@ -508,10 +508,10 @@ update_cursor_size_scale (GnomeThemeCursorInfo *theme,
   gboolean sensitive;
   gint size, gconf_size;
 
-  cursor_size_scale = glade_xml_get_widget (data->xml, "cursor_size_scale");
-  cursor_size_label = glade_xml_get_widget (data->xml, "cursor_size_label");
-  cursor_size_small_label = glade_xml_get_widget (data->xml, "cursor_size_small_label");
-  cursor_size_large_label = glade_xml_get_widget (data->xml, "cursor_size_large_label");
+  cursor_size_scale = appearance_capplet_get_widget (data, "cursor_size_scale");
+  cursor_size_label = appearance_capplet_get_widget (data, "cursor_size_label");
+  cursor_size_small_label = appearance_capplet_get_widget (data, "cursor_size_small_label");
+  cursor_size_large_label = appearance_capplet_get_widget (data, "cursor_size_large_label");
 
   sensitive = theme && theme->sizes->len > 1;
   gtk_widget_set_sensitive (cursor_size_scale, sensitive);
@@ -585,7 +585,7 @@ cursor_theme_changed (GConfPropertyEditor *peditor,
 
   update_cursor_size_scale (theme, data);
 
-  gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "cursor_themes_delete"),
+  gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "cursor_themes_delete"),
 			    theme_is_writable (theme));
 
 }
@@ -593,7 +593,7 @@ cursor_theme_changed (GConfPropertyEditor *peditor,
 static void
 generic_theme_delete (const gchar *tv_name, ThemeType type, AppearanceData *data)
 {
-  GtkTreeView *treeview = GTK_TREE_VIEW (glade_xml_get_widget (data->xml, tv_name));
+  GtkTreeView *treeview = GTK_TREE_VIEW (appearance_capplet_get_widget (data, tv_name));
   GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview);
   GtkTreeModel *model;
   GtkTreeIter iter;
@@ -661,7 +661,7 @@ add_to_treeview (const gchar *tv_name,
   GtkTreeView *treeview;
   GtkListStore *model;
 
-  treeview = GTK_TREE_VIEW (glade_xml_get_widget (data->xml, tv_name));
+  treeview = GTK_TREE_VIEW (appearance_capplet_get_widget (data, tv_name));
   model = GTK_LIST_STORE (
           gtk_tree_model_sort_get_model (
           GTK_TREE_MODEL_SORT (gtk_tree_view_get_model (treeview))));
@@ -682,7 +682,7 @@ remove_from_treeview (const gchar *tv_name,
   GtkListStore *model;
   GtkTreeIter iter;
 
-  treeview = GTK_TREE_VIEW (glade_xml_get_widget (data->xml, tv_name));
+  treeview = GTK_TREE_VIEW (appearance_capplet_get_widget (data, tv_name));
   model = GTK_LIST_STORE (
           gtk_tree_model_sort_get_model (
           GTK_TREE_MODEL_SORT (gtk_tree_view_get_model (treeview))));
@@ -701,7 +701,7 @@ update_in_treeview (const gchar *tv_name,
   GtkListStore *model;
   GtkTreeIter iter;
 
-  treeview = GTK_TREE_VIEW (glade_xml_get_widget (data->xml, tv_name));
+  treeview = GTK_TREE_VIEW (appearance_capplet_get_widget (data, tv_name));
   model = GTK_LIST_STORE (
           gtk_tree_model_sort_get_model (
           GTK_TREE_MODEL_SORT (gtk_tree_view_get_model (treeview))));
@@ -727,7 +727,7 @@ update_thumbnail_in_treeview (const gchar *tv_name,
   if (theme_thumbnail == NULL)
     return;
 
-  treeview = GTK_TREE_VIEW (glade_xml_get_widget (data->xml, tv_name));
+  treeview = GTK_TREE_VIEW (appearance_capplet_get_widget (data, tv_name));
   model = GTK_LIST_STORE (
           gtk_tree_model_sort_get_model (
           GTK_TREE_MODEL_SORT (gtk_tree_view_get_model (treeview))));
@@ -997,19 +997,19 @@ style_init (AppearanceData *data)
   data->style_message_label = NULL;
   data->style_install_button = NULL;
 
-  w = glade_xml_get_widget (data->xml, "theme_details");
+  w = appearance_capplet_get_widget (data, "theme_details");
   g_signal_connect (w, "response", (GCallback) style_response_cb, NULL);
   g_signal_connect (w, "delete_event", (GCallback) gtk_true, NULL);
 
-  prepare_list (data, glade_xml_get_widget (data->xml, "window_themes_list"), THEME_TYPE_WINDOW, (GCallback) window_theme_changed);
-  prepare_list (data, glade_xml_get_widget (data->xml, "gtk_themes_list"), THEME_TYPE_GTK, (GCallback) gtk_theme_changed);
-  prepare_list (data, glade_xml_get_widget (data->xml, "icon_themes_list"), THEME_TYPE_ICON, (GCallback) icon_theme_changed);
-  prepare_list (data, glade_xml_get_widget (data->xml, "cursor_themes_list"), THEME_TYPE_CURSOR, (GCallback) cursor_theme_changed);
+  prepare_list (data, appearance_capplet_get_widget (data, "window_themes_list"), THEME_TYPE_WINDOW, (GCallback) window_theme_changed);
+  prepare_list (data, appearance_capplet_get_widget (data, "gtk_themes_list"), THEME_TYPE_GTK, (GCallback) gtk_theme_changed);
+  prepare_list (data, appearance_capplet_get_widget (data, "icon_themes_list"), THEME_TYPE_ICON, (GCallback) icon_theme_changed);
+  prepare_list (data, appearance_capplet_get_widget (data, "cursor_themes_list"), THEME_TYPE_CURSOR, (GCallback) cursor_theme_changed);
 
-  w = glade_xml_get_widget (data->xml, "color_scheme_message_hbox");
+  w = appearance_capplet_get_widget (data, "color_scheme_message_hbox");
   gtk_widget_set_no_show_all (w, TRUE);
 
-  w = glade_xml_get_widget (data->xml, "color_scheme_defaults_button");
+  w = appearance_capplet_get_widget (data, "color_scheme_defaults_button");
   gtk_button_set_image (GTK_BUTTON (w),
                         gtk_image_new_from_stock (GTK_STOCK_REVERT_TO_SAVED,
                                                   GTK_ICON_SIZE_BUTTON));
@@ -1018,38 +1018,38 @@ style_init (AppearanceData *data)
   g_signal_connect (settings, "notify::gtk-color-scheme", (GCallback) color_scheme_changed, data);
 
 #ifdef HAVE_XCURSOR
-  w = glade_xml_get_widget (data->xml, "cursor_size_scale");
+  w = appearance_capplet_get_widget (data, "cursor_size_scale");
   g_signal_connect (w, "value-changed", (GCallback) cursor_size_scale_value_changed_cb, data);
 
-  w = glade_xml_get_widget (data->xml, "cursor_size_small_label");
+  w = appearance_capplet_get_widget (data, "cursor_size_small_label");
   label = g_strdup_printf ("<small><i>%s</i></small>", gtk_label_get_text (GTK_LABEL (w)));
   gtk_label_set_markup (GTK_LABEL (w), label);
   g_free (label);
 
-  w = glade_xml_get_widget (data->xml, "cursor_size_large_label");
+  w = appearance_capplet_get_widget (data, "cursor_size_large_label");
   label = g_strdup_printf ("<small><i>%s</i></small>", gtk_label_get_text (GTK_LABEL (w)));
   gtk_label_set_markup (GTK_LABEL (w), label);
   g_free (label);
 #else
-  w = glade_xml_get_widget (data->xml, "cursor_size_hbox");
+  w = appearance_capplet_get_widget (data, "cursor_size_hbox");
   gtk_widget_set_no_show_all (w, TRUE);
   gtk_widget_hide (w);
-  gtk_widget_show (glade_xml_get_widget (data->xml, "cursor_message_hbox"));
-  gtk_box_set_spacing (GTK_BOX (glade_xml_get_widget (data->xml, "cursor_vbox")), 12);
+  gtk_widget_show (appearance_capplet_get_widget (data, "cursor_message_hbox"));
+  gtk_box_set_spacing (GTK_BOX (appearance_capplet_get_widget (data, "cursor_vbox")), 12);
 #endif
 
   /* connect signals */
   /* color buttons */
   for (i = 0; i < NUM_SYMBOLIC_COLORS; ++i)
-    g_signal_connect (glade_xml_get_widget (data->xml, symbolic_names[i]), "color-set", (GCallback) color_button_clicked_cb, data);
+    g_signal_connect (appearance_capplet_get_widget (data, symbolic_names[i]), "color-set", (GCallback) color_button_clicked_cb, data);
 
   /* revert button */
-  g_signal_connect (glade_xml_get_widget (data->xml, "color_scheme_defaults_button"), "clicked", (GCallback) color_scheme_defaults_button_clicked_cb, data);
+  g_signal_connect (appearance_capplet_get_widget (data, "color_scheme_defaults_button"), "clicked", (GCallback) color_scheme_defaults_button_clicked_cb, data);
   /* delete buttons */
-  g_signal_connect (glade_xml_get_widget (data->xml, "gtk_themes_delete"), "clicked", (GCallback) gtk_theme_delete_cb, data);
-  g_signal_connect (glade_xml_get_widget (data->xml, "window_themes_delete"), "clicked", (GCallback) window_theme_delete_cb, data);
-  g_signal_connect (glade_xml_get_widget (data->xml, "icon_themes_delete"), "clicked", (GCallback) icon_theme_delete_cb, data);
-  g_signal_connect (glade_xml_get_widget (data->xml, "cursor_themes_delete"), "clicked", (GCallback) cursor_theme_delete_cb, data);
+  g_signal_connect (appearance_capplet_get_widget (data, "gtk_themes_delete"), "clicked", (GCallback) gtk_theme_delete_cb, data);
+  g_signal_connect (appearance_capplet_get_widget (data, "window_themes_delete"), "clicked", (GCallback) window_theme_delete_cb, data);
+  g_signal_connect (appearance_capplet_get_widget (data, "icon_themes_delete"), "clicked", (GCallback) icon_theme_delete_cb, data);
+  g_signal_connect (appearance_capplet_get_widget (data, "cursor_themes_delete"), "clicked", (GCallback) cursor_theme_delete_cb, data);
 
   update_message_area (data);
   gnome_theme_info_register_theme_change ((ThemeChangedCallback) changed_on_disk_cb, data);
diff --git a/capplets/appearance/appearance-themes.c b/capplets/appearance/appearance-themes.c
index 71fefdb..0a84eef 100644
--- a/capplets/appearance/appearance-themes.c
+++ b/capplets/appearance/appearance-themes.c
@@ -361,7 +361,7 @@ static void
 theme_set_custom_from_theme (const GnomeThemeMetaInfo *info, AppearanceData *data)
 {
   GnomeThemeMetaInfo *custom = data->theme_custom;
-  GtkIconView *icon_view = GTK_ICON_VIEW (glade_xml_get_widget (data->xml, "theme_list"));
+  GtkIconView *icon_view = GTK_ICON_VIEW (appearance_capplet_get_widget (data, "theme_list"));
   GtkTreeModel *model;
   GtkTreeIter iter;
   GtkTreePath *path;
@@ -448,7 +448,7 @@ theme_message_area_response_cb (GtkWidget *w,
   gchar *tmpfont;
   gchar *engine_path;
 
-  theme = theme_get_selected (GTK_ICON_VIEW (glade_xml_get_widget (data->xml, "theme_list")), data);
+  theme = theme_get_selected (GTK_ICON_VIEW (appearance_capplet_get_widget (data, "theme_list")), data);
   if (!theme)
     return;
 
@@ -597,7 +597,7 @@ theme_message_area_update (AppearanceData *data)
   gchar *font;
   GError *error = NULL;
 
-  theme = theme_get_selected (GTK_ICON_VIEW (glade_xml_get_widget (data->xml, "theme_list")), data);
+  theme = theme_get_selected (GTK_ICON_VIEW (appearance_capplet_get_widget (data, "theme_list")), data);
 
   if (!theme) {
     if (data->theme_message_area != NULL)
@@ -703,7 +703,7 @@ theme_message_area_update (AppearanceData *data)
     gtk_box_pack_start (GTK_BOX (hbox), data->theme_message_label, TRUE, TRUE, 0);
     gedit_message_area_set_contents (GEDIT_MESSAGE_AREA (data->theme_message_area), hbox);
 
-    parent = glade_xml_get_widget (data->xml, "theme_list_vbox");
+    parent = appearance_capplet_get_widget (data, "theme_list_vbox");
     gtk_box_pack_start (GTK_BOX (parent), data->theme_message_area, FALSE, FALSE, 0);
   }
 
@@ -802,9 +802,9 @@ theme_selection_changed_cb (GtkWidget *icon_view, AppearanceData *data)
     g_list_free (selection);
   }
 
-  gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "theme_delete"),
+  gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "theme_delete"),
 			    theme_is_writable (theme));
-  gtk_widget_set_sensitive (glade_xml_get_widget (data->xml, "theme_save"), is_custom);
+  gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "theme_save"), is_custom);
 }
 
 static void
@@ -812,8 +812,8 @@ theme_custom_cb (GtkWidget *button, AppearanceData *data)
 {
   GtkWidget *w, *parent;
 
-  w = glade_xml_get_widget (data->xml, "theme_details");
-  parent = glade_xml_get_widget (data->xml, "appearance_window");
+  w = appearance_capplet_get_widget (data, "theme_details");
+  parent = appearance_capplet_get_widget (data, "appearance_window");
   gtk_window_set_transient_for (GTK_WINDOW (w), GTK_WINDOW (parent));
   gtk_widget_show_all (w);
 }
@@ -828,13 +828,13 @@ static void
 theme_install_cb (GtkWidget *button, AppearanceData *data)
 {
   gnome_theme_installer_run (
-      GTK_WINDOW (glade_xml_get_widget (data->xml, "appearance_window")), NULL);
+      GTK_WINDOW (appearance_capplet_get_widget (data, "appearance_window")), NULL);
 }
 
 static void
 theme_delete_cb (GtkWidget *button, AppearanceData *data)
 {
-  GtkIconView *icon_view = GTK_ICON_VIEW (glade_xml_get_widget (data->xml, "theme_list"));
+  GtkIconView *icon_view = GTK_ICON_VIEW (appearance_capplet_get_widget (data, "theme_list"));
   GList *selected = gtk_icon_view_get_selected_items (icon_view);
 
   if (selected) {
@@ -880,7 +880,7 @@ theme_details_changed_cb (AppearanceData *data)
   gconf_theme = theme_load_from_gconf (data->client);
 
   /* check if it's our currently selected theme */
-  icon_view = GTK_ICON_VIEW (glade_xml_get_widget (data->xml, "theme_list"));
+  icon_view = GTK_ICON_VIEW (appearance_capplet_get_widget (data, "theme_list"));
   selected = theme_get_selected (icon_view, data);
 
   if (!selected || !(done = theme_is_equal (selected, gconf_theme))) {
@@ -991,7 +991,7 @@ theme_drag_data_received_cb (GtkWidget *widget,
     GFile *f = g_file_new_for_uri (uris[0]);
 
     gnome_theme_install (f,
-        GTK_WINDOW (glade_xml_get_widget (data->xml, "appearance_window")));
+        GTK_WINDOW (appearance_capplet_get_widget (data, "appearance_window")));
     g_object_unref (f);
   }
 
@@ -1076,7 +1076,7 @@ themes_init (AppearanceData *data)
   g_list_foreach (theme_list, (GFunc) theme_thumbnail_generate, data);
   g_list_free (theme_list);
 
-  icon_view = GTK_ICON_VIEW (glade_xml_get_widget (data->xml, "theme_list"));
+  icon_view = GTK_ICON_VIEW (appearance_capplet_get_widget (data, "theme_list"));
 
   renderer = cell_renderer_wallpaper_new ();
   g_object_set (renderer, "xpad", 5, "ypad", 5,
@@ -1103,25 +1103,25 @@ themes_init (AppearanceData *data)
   g_signal_connect (icon_view, "selection-changed", (GCallback) theme_selection_changed_cb, data);
   g_signal_connect_after (icon_view, "realize", (GCallback) theme_select_name, meta_theme->name);
 
-  w = glade_xml_get_widget (data->xml, "theme_install");
+  w = appearance_capplet_get_widget (data, "theme_install");
   gtk_button_set_image (GTK_BUTTON (w),
                         gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON));
   g_signal_connect (w, "clicked", (GCallback) theme_install_cb, data);
 
-  w = glade_xml_get_widget (data->xml, "theme_save");
+  w = appearance_capplet_get_widget (data, "theme_save");
   gtk_button_set_image (GTK_BUTTON (w),
                         gtk_image_new_from_stock (GTK_STOCK_SAVE_AS, GTK_ICON_SIZE_BUTTON));
   g_signal_connect (w, "clicked", (GCallback) theme_save_cb, data);
 
-  w = glade_xml_get_widget (data->xml, "theme_custom");
+  w = appearance_capplet_get_widget (data, "theme_custom");
   gtk_button_set_image (GTK_BUTTON (w),
                         gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_BUTTON));
   g_signal_connect (w, "clicked", (GCallback) theme_custom_cb, data);
 
-  del_button = glade_xml_get_widget (data->xml, "theme_delete");
+  del_button = appearance_capplet_get_widget (data, "theme_delete");
   g_signal_connect (del_button, "clicked", (GCallback) theme_delete_cb, data);
 
-  w = glade_xml_get_widget (data->xml, "theme_vbox");
+  w = appearance_capplet_get_widget (data, "theme_vbox");
   gtk_drag_dest_set (w, GTK_DEST_DEFAULT_ALL,
 		     drop_types, G_N_ELEMENTS (drop_types),
 		     GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE);
@@ -1151,15 +1151,15 @@ themes_init (AppearanceData *data)
 
   /* monitor individual font choice buttons, so
      "revert font" option (if any) can be cleared */
-  w = glade_xml_get_widget (data->xml, "application_font");
+  w = appearance_capplet_get_widget (data, "application_font");
   g_signal_connect (w, "font_set", (GCallback) custom_font_cb, data);
-  w = glade_xml_get_widget (data->xml, "document_font");
+  w = appearance_capplet_get_widget (data, "document_font");
   g_signal_connect (w, "font_set", (GCallback) custom_font_cb, data);
-  w = glade_xml_get_widget (data->xml, "desktop_font");
+  w = appearance_capplet_get_widget (data, "desktop_font");
   g_signal_connect (w, "font_set", (GCallback) custom_font_cb, data);
-  w = glade_xml_get_widget (data->xml, "window_title_font");
+  w = appearance_capplet_get_widget (data, "window_title_font");
   g_signal_connect (w, "font_set", (GCallback) custom_font_cb, data);
-  w = glade_xml_get_widget (data->xml, "monospace_font");
+  w = appearance_capplet_get_widget (data, "monospace_font");
   g_signal_connect (w, "font_set", (GCallback) custom_font_cb, data);
 }
 
diff --git a/capplets/appearance/appearance-ui.c b/capplets/appearance/appearance-ui.c
index 6ed07ac..1bec903 100644
--- a/capplets/appearance/appearance-ui.c
+++ b/capplets/appearance/appearance-ui.c
@@ -35,9 +35,9 @@ static GConfEnumStringPair toolbar_style_enums[] = {
 static void
 show_handlebar (AppearanceData *data, gboolean show)
 {
-  GtkWidget *handlebox = glade_xml_get_widget (data->xml, "toolbar_handlebox");
-  GtkWidget *toolbar = glade_xml_get_widget (data->xml, "toolbar_toolbar");
-  GtkWidget *align = glade_xml_get_widget (data->xml, "toolbar_align");
+  GtkWidget *handlebox = appearance_capplet_get_widget (data, "toolbar_handlebox");
+  GtkWidget *toolbar = appearance_capplet_get_widget (data, "toolbar_toolbar");
+  GtkWidget *align = appearance_capplet_get_widget (data, "toolbar_align");
 
   g_object_ref (handlebox);
   g_object_ref (toolbar);
@@ -70,7 +70,7 @@ set_toolbar_style (AppearanceData *data, const char *value)
   if (!gconf_string_to_enum (toolbar_style_enums, value, &enum_val))
 	  enum_val = 0;
 
-  gtk_toolbar_set_style (GTK_TOOLBAR (glade_xml_get_widget (data->xml, "toolbar_toolbar")),
+  gtk_toolbar_set_style (GTK_TOOLBAR (appearance_capplet_get_widget (data, "toolbar_toolbar")),
 			 gtk_toolbar_styles[enum_val]);
 }
 
@@ -92,7 +92,7 @@ set_have_icons (AppearanceData *data, gboolean value)
   const char **name;
 
   for (name = menu_item_names; *name != NULL; name++) {
-    GtkImageMenuItem *item = GTK_IMAGE_MENU_ITEM (glade_xml_get_widget (data->xml, *name));
+    GtkImageMenuItem *item = GTK_IMAGE_MENU_ITEM (appearance_capplet_get_widget (data, *name));
     GtkWidget *image;
 
     if (value) {
@@ -193,11 +193,11 @@ ui_init (AppearanceData *data)
 
   peditor = gconf_peditor_new_boolean
     (NULL, "/desktop/gnome/interface/can_change_accels",
-     glade_xml_get_widget (data->xml, "menu_accel_toggle"), NULL);
+     appearance_capplet_get_widget (data, "menu_accel_toggle"), NULL);
 
   peditor = gconf_peditor_new_boolean
     (NULL, "/desktop/gnome/interface/menus_have_icons",
-     glade_xml_get_widget (data->xml, "menu_icons_toggle"), NULL);
+     appearance_capplet_get_widget (data, "menu_icons_toggle"), NULL);
   g_signal_connect (peditor, "value_changed",
 		    (GCallback) menus_have_icons_cb, data);
 
@@ -208,14 +208,14 @@ ui_init (AppearanceData *data)
 
   peditor = gconf_peditor_new_combo_box
     (NULL, "/desktop/gnome/interface/toolbar_style",
-     glade_xml_get_widget (data->xml, "toolbar_style_select"),
+     appearance_capplet_get_widget (data, "toolbar_style_select"),
      "conv-to-widget-cb", toolbar_to_widget,
      "conv-from-widget-cb", toolbar_from_widget,
      NULL);
   g_signal_connect (peditor, "value_changed",
 		    (GCallback) toolbar_style_cb, data);
 
-  g_signal_connect (glade_xml_get_widget (data->xml, "toolbar_handlebox"),
+  g_signal_connect (appearance_capplet_get_widget (data, "toolbar_handlebox"),
 		    "button_press_event",
 		    (GCallback) button_press_block_cb, NULL);
 
diff --git a/capplets/appearance/appearance.h b/capplets/appearance/appearance.h
index cfdbe1f..7c30687 100644
--- a/capplets/appearance/appearance.h
+++ b/capplets/appearance/appearance.h
@@ -22,15 +22,15 @@
 
 #include <glib.h>
 #include <gtk/gtk.h>
-#include <glade/glade.h>
 #include <gconf/gconf-client.h>
 #include <libgnomeui/gnome-desktop-thumbnail.h>
 
 #include "gnome-theme-info.h"
 
-typedef struct {
+typedef struct
+{
   GConfClient *client;
-  GladeXML *xml;
+  GtkBuilder  *ui;
   GnomeDesktopThumbnailFactory *thumb_factory;
 
   /* desktop */
@@ -78,3 +78,5 @@ typedef struct {
   GtkWidget *style_message_label;
   GtkWidget *style_install_button;
 } AppearanceData;
+
+#define appearance_capplet_get_widget(x, y) (GtkWidget *) gtk_builder_get_object (x->ui, y)
diff --git a/capplets/appearance/data/Makefile.am b/capplets/appearance/data/Makefile.am
index 56eacaf..df392ca 100644
--- a/capplets/appearance/data/Makefile.am
+++ b/capplets/appearance/data/Makefile.am
@@ -1,6 +1,6 @@
 
-gladedir = $(pkgdatadir)/glade
-dist_glade_DATA = appearance.glade
+gtkbuilderdir = $(pkgdatadir)/gtkbuilder
+dist_gtkbuilder_DATA = appearance.ui
 
 pixmapdir = $(pkgdatadir)/pixmaps
 dist_pixmap_DATA = \
diff --git a/capplets/appearance/theme-save.c b/capplets/appearance/theme-save.c
index 5dec24e..adab2f8 100644
--- a/capplets/appearance/theme-save.c
+++ b/capplets/appearance/theme-save.c
@@ -303,10 +303,10 @@ save_dialog_response (GtkWidget      *save_dialog,
     gboolean save_background;
     GError *error = NULL;
 
-    entry = glade_xml_get_widget (data->xml, "save_dialog_entry");
+    entry = appearance_capplet_get_widget (data, "save_dialog_entry");
     theme_name = escape_string_and_dup (gtk_entry_get_text (GTK_ENTRY (entry)));
 
-    text_view = glade_xml_get_widget (data->xml, "save_dialog_textview");
+    text_view = appearance_capplet_get_widget (data, "save_dialog_textview");
     buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
     gtk_text_buffer_get_start_iter (buffer, &start_iter);
     gtk_text_buffer_get_end_iter (buffer, &end_iter);
@@ -315,7 +315,7 @@ save_dialog_response (GtkWidget      *save_dialog,
     g_free (buffer_text);
     theme_info = (GnomeThemeMetaInfo *) g_object_get_data (G_OBJECT (save_dialog), "meta-theme-info");
     save_background = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (
-		      glade_xml_get_widget (data->xml, "save_background_checkbutton")));
+		      appearance_capplet_get_widget (data, "save_background_checkbutton")));
 
     if (save_theme_to_disk (theme_info, theme_name, theme_description, save_background, &error)) {
       /* remove the custom theme */
@@ -335,13 +335,15 @@ save_dialog_response (GtkWidget      *save_dialog,
 
 static void
 entry_text_changed (GtkEditable *editable,
-		    GladeXML    *dialog)
+                    AppearanceData  *data)
 {
   const gchar *text;
+  GtkWidget *button;
 
   text = gtk_entry_get_text (GTK_ENTRY (editable));
-  gtk_widget_set_sensitive (glade_xml_get_widget (dialog, "save_dialog_save_button"),
-			    text != NULL && text[0] != '\000');
+  button = appearance_capplet_get_widget (data, "save_dialog_save_button");
+
+  gtk_widget_set_sensitive (button, text != NULL && text[0] != '\000');
 }
 
 void
@@ -352,28 +354,28 @@ theme_save_dialog_run (GnomeThemeMetaInfo *theme_info,
   GtkWidget *text_view;
   GtkTextBuffer *text_buffer;
 
-  entry = glade_xml_get_widget (data->xml, "save_dialog_entry");
-  text_view = glade_xml_get_widget (data->xml, "save_dialog_textview");
+  entry = appearance_capplet_get_widget (data, "save_dialog_entry");
+  text_view = appearance_capplet_get_widget (data, "save_dialog_textview");
 
   if (data->theme_save_dialog == NULL) {
-    data->theme_save_dialog = glade_xml_get_widget (data->xml, "theme_save_dialog");
+    data->theme_save_dialog = appearance_capplet_get_widget (data, "theme_save_dialog");
 
     g_signal_connect (data->theme_save_dialog, "response", (GCallback) save_dialog_response, data);
     g_signal_connect (data->theme_save_dialog, "delete-event", (GCallback) gtk_true, NULL);
-    g_signal_connect (entry, "changed", (GCallback) entry_text_changed, data->xml);
+    g_signal_connect (entry, "changed", (GCallback) entry_text_changed, data);
 
     error_quark = g_quark_from_string ("gnome-theme-save");
     gtk_widget_set_size_request (text_view, 300, 100);
   }
 
   gtk_entry_set_text (GTK_ENTRY (entry), "");
-  entry_text_changed (GTK_EDITABLE (entry), data->xml);
+  entry_text_changed (GTK_EDITABLE (entry), data);
   gtk_widget_grab_focus (entry);
 
   text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
   gtk_text_buffer_set_text (text_buffer, "", 0);
   g_object_set_data (G_OBJECT (data->theme_save_dialog), "meta-theme-info", theme_info);
   gtk_window_set_transient_for (GTK_WINDOW (data->theme_save_dialog),
-				GTK_WINDOW (glade_xml_get_widget (data->xml, "appearance_window")));
+                                GTK_WINDOW (appearance_capplet_get_widget (data, "appearance_window")));
   gtk_widget_show (data->theme_save_dialog);
 }



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