From 5d2e0437ff79c5b38e94a9fd0a3403d883255fa6 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Sun, 2 Oct 2011 15:28:50 +0100 Subject: [PATCH] Converted from Glade to GtkBuilder --- ROX-Filer.xml | 17 +- ROX-Filer/{Templates.glade => Templates.ui} | 485 +++++++++++++++++----------- ROX-Filer/src/Makefile.in | 4 +- ROX-Filer/src/build | 2 +- ROX-Filer/src/configure.in | 3 +- ROX-Filer/src/gui_support.c | 27 +- ROX-Filer/src/gui_support.h | 3 +- ROX-Filer/src/log.c | 15 +- ROX-Filer/src/panel.c | 105 +++--- 9 files changed, 392 insertions(+), 269 deletions(-) rename ROX-Filer/{Templates.glade => Templates.ui} (62%) diff --git a/ROX-Filer.xml b/ROX-Filer.xml index 1bc0b1a5..49ced91a 100644 --- a/ROX-Filer.xml +++ b/ROX-Filer.xml @@ -16,33 +16,22 @@ - - - - - - - + - + - + - - - - - diff --git a/ROX-Filer/Templates.glade b/ROX-Filer/Templates.ui similarity index 62% rename from ROX-Filer/Templates.glade rename to ROX-Filer/Templates.ui index aa48561d..dc68801e 100644 --- a/ROX-Filer/Templates.glade +++ b/ROX-Filer/Templates.ui @@ -1,196 +1,270 @@ - - - - - + + + + True + False ROX-Filer log viewer - GDK_WINDOW_TYPE_HINT_DIALOG - False + dialog - + True + False + vertical + + + True + False + end + + + gtk-close + True + True + True + False + False + True + + + False + True + 0 + + + + + False + True + end + 0 + + - + True + False 4 4 - + True + False 0 Recently performed actions... - + False False + 0 - + True True - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN + in - + True True - + + + + - + + True + True 1 - - GTK_BUTTONBOX_START + + False + start - + True True True - 0 + False + False - + True + False 0 0 - + True + False 2 - + True + False gtk-open - + False False + 0 - + True + False Open Directory True - + False False 1 - + - + - + + + False + True + 0 + - + False + True 2 - + + True + True 1 + + + + closebutton1 + + + + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + Panel Options + center-on-parent + dialog + + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 2 - + True - GTK_BUTTONBOX_END + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + end - + + gtk-close True True - True - gtk-close + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False True - -7 - + + + False + True + 0 + - + False - GTK_PACK_END + True + end + 0 - - - - - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 5 - Panel Options - GTK_WIN_POS_CENTER_ON_PARENT - GDK_WINDOW_TYPE_HINT_DIALOG - False - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 2 - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 10 - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 - GTK_SHADOW_NONE + none - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + + Image and Text True True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Every icon on this panel is shown with an image and some text. - Image and Text - 0 + Every icon on this panel is shown with an image and some text. + False True True - - + + False False + 0 - + + Image only for applications True True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Applications in this panel have just an image, everything else has both an image and text. - Image only for applications - 0 + Applications in this panel have just an image, everything else has both an image and text. + False True True panel_style_radio_0 - - + + False False @@ -198,219 +272,246 @@ - + + Image only True True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Only the image is shown for icons in this panel. - Image only - 0 + Only the image is shown for icons in this panel. + False True True panel_style_radio_0 - - + + False False 2 - + False False 4 + 0 - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Panel width - + False False + 0 - + True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - The size of this panel. - 32 16 96 1 10 0 - - + The size of this panel. + adjustment1 + + + True + True 1 - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK px - + False False 2 - + + True + True 4 1 - + + Do not cover panel True True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Ask the window manager not to cover this panel when maximising windows, otherwise leave just 2 pixels at the edge of the screen to allow auto-raising. Some window managers may not honour this setting. - Do not cover panel - 0 + Ask the window manager not to cover this panel when maximising windows, otherwise leave just 2 pixels at the edge of the screen to allow auto-raising. Some window managers may not honour this setting. + False True - - + + + True + True 4 2 - + - + - - + + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK <b>Panel style</b> True - - - label_item - + - + + + True + True + 0 + - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 - GTK_SHADOW_NONE + none - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 6 - + + Confine to Xinerama monitor True True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - If you use multiple monitors with Xinerama, use this option to confine the panel to one monitor. - Confine to Xinerama monitor - 0 + If you use multiple monitors with Xinerama, use this option to confine the panel to one monitor. + False True - - + + False False + 0 - + True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - The monitor this panel is confined to when using Xinerama. The numbering starts from zero. - 0 0 100 1 10 0 - - + The monitor this panel is confined to when using Xinerama. The numbering starts from zero. + adjustment2 + + False False 1 - + False False 4 + 0 - + - + - - + + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK <b>Xinerama</b> True - - - label_item - + - + + True + True 1 - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 - GTK_SHADOW_NONE + none - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 - + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 3 3 True - + + Right edge True True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Right edge - 0 + False True True panel_pos_top - - + + 2 3 @@ -419,34 +520,36 @@ - + + Left edge True True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Left edge - 0 + False True True panel_pos_top - - + + 1 2 - + + Bottom edge True True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Bottom edge - 0 + False True True panel_pos_top - - + + 1 2 @@ -455,16 +558,17 @@ - + + Top edge True True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Top edge - 0 + False True True - - + + 1 2 @@ -485,55 +589,48 @@ - + - + - - + + True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK <b>Position</b> True - - - label_item - + - + + True + True 2 - + + False + True 4 1 - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - GTK_BUTTONBOX_END - - - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-close - True - -7 - - - - - False - GTK_PACK_END - - - + - - + + panel_opts_close + + + + 16 + 96 + 32 + 1 + + + 100 + 1 + + diff --git a/ROX-Filer/src/Makefile.in b/ROX-Filer/src/Makefile.in index e4568652..dee7ad0e 100644 --- a/ROX-Filer/src/Makefile.in +++ b/ROX-Filer/src/Makefile.in @@ -13,8 +13,8 @@ LIBS = @LIBS@ @LFS_LDFLAGS@ -lICE -lSM PKG_CONFIG_FLAGS= CFLAGS = -I. -I${srcdir} ${PROF} @CFLAGS@ @LFS_CFLAGS@ \ - `${PKG_CONFIG} ${PKG_CONFIG_FLAGS} --cflags gtk+-2.0 libxml-2.0 libglade-2.0` -LDFLAGS = ${PROF} @LDFLAGS@ `${PKG_CONFIG} ${PKG_CONFIG_FLAGS} --libs gtk+-2.0 libxml-2.0 libglade-2.0 | sed 's/-lpangoxft-[^ ]*//'` ${LIBS} + `${PKG_CONFIG} ${PKG_CONFIG_FLAGS} --cflags gtk+-2.0 libxml-2.0` +LDFLAGS = ${PROF} @LDFLAGS@ `${PKG_CONFIG} ${PKG_CONFIG_FLAGS} --libs gtk+-2.0 libxml-2.0 | sed 's/-lpangoxft-[^ ]*//'` ${LIBS} ############ Things to change for different programs diff --git a/ROX-Filer/src/build b/ROX-Filer/src/build index 91163a71..5f162ee8 100755 --- a/ROX-Filer/src/build +++ b/ROX-Filer/src/build @@ -22,7 +22,7 @@ fi make "PLATFORM_DIR=$DISTDIR/ROX-Filer"|| exit 1 (cd "$SRCDIR" && cp -r Choices README README-es rox.xml rox.1 "$DISTDIR") || exit 1 -(cd "$SRCDIR/ROX-Filer" && cp -r .DirIcon Help images Messages ROX AppInfo.xml AppRun Options.xml style.css subclasses Templates.glade "$DISTDIR/ROX-Filer") || exit 1 +(cd "$SRCDIR/ROX-Filer" && cp -r .DirIcon Help images Messages ROX AppInfo.xml AppRun Options.xml style.css subclasses Templates.ui "$DISTDIR/ROX-Filer") || exit 1 find "$DISTDIR" -name '.svn' -type d |xargs rm -rf # Remove debugging symbols, if any diff --git a/ROX-Filer/src/configure.in b/ROX-Filer/src/configure.in index f44c8352..cc5ff87e 100644 --- a/ROX-Filer/src/configure.in +++ b/ROX-Filer/src/configure.in @@ -93,9 +93,8 @@ else fi ]) -ROX_REQUIRE(gtk+-2.0, 2.4.0) +ROX_REQUIRE(gtk+-2.0, 2.12.0) ROX_REQUIRE(libxml-2.0, 2.0.0) -ROX_REQUIRE(libglade-2.0, 2.0.0) ROX_REQUIRE(shared-mime-info, 0.14) GTK_VERSION=`"$PKG_CONFIG" --modversion gtk+-2.0` diff --git a/ROX-Filer/src/gui_support.c b/ROX-Filer/src/gui_support.c index 6beb1f15..d2435763 100644 --- a/ROX-Filer/src/gui_support.c +++ b/ROX-Filer/src/gui_support.c @@ -1718,24 +1718,27 @@ error: return src; } -/* Load the Templates.glade file and build a component. - * Note that libglade caches the XML itself. - */ -GladeXML *get_glade_xml(const char *component) +/* Load the Templates.ui file and build a component. */ +GtkBuilder *get_gtk_builder(gchar **ids) { - GladeXML *widgets; + GError *error = NULL; char *path; + GtkBuilder *builder = NULL; + + builder = gtk_builder_new(); + gtk_builder_set_translation_domain(builder, "ROX-Filer"); - path = g_build_filename(app_dir, "Templates.glade", NULL); - widgets = glade_xml_new(path, component, "ROX-Filer"); + path = g_build_filename(app_dir, "Templates.ui", NULL); + if (!gtk_builder_add_objects_from_file(builder, path, ids, &error)) + { + g_warning("Failed to load builder file %s: %s", + path, error->message); + g_error_free(error); + } - if (widgets == NULL) - g_warning("Failed to load widget '%s' from '%s'", - component, path); - g_free(path); - return widgets; + return builder; } void add_stock_to_menu_item(GtkWidget *item, const char *stock) diff --git a/ROX-Filer/src/gui_support.h b/ROX-Filer/src/gui_support.h index bd0cbf2c..4303fc8f 100644 --- a/ROX-Filer/src/gui_support.h +++ b/ROX-Filer/src/gui_support.h @@ -7,7 +7,6 @@ #define _GUI_SUPPORT_H #include -#include #define WIN_STATE_STICKY (1<<0) /* Fixed relative to screen */ #define WIN_STATE_HIDDEN (1<<4) /* Not on taskbar but window visible */ @@ -100,7 +99,7 @@ void launch_uri(GObject *button, const char *uri); void allow_right_click(GtkWidget *button); gint current_event_button(void); GdkPixbuf *create_spotlight_pixbuf(GdkPixbuf *src, GdkColor *color); -GladeXML *get_glade_xml(const char *component); +GtkBuilder *get_gtk_builder(gchar **ids); void add_stock_to_menu_item(GtkWidget *item, const char *stock); #endif /* _GUI_SUPPORT_H */ diff --git a/ROX-Filer/src/log.c b/ROX-Filer/src/log.c index e5067bec..07973a65 100644 --- a/ROX-Filer/src/log.c +++ b/ROX-Filer/src/log.c @@ -25,7 +25,6 @@ #include #include #include -#include #include "global.h" @@ -134,14 +133,16 @@ void log_info_paths(const gchar *message, GList *paths, const gchar *path) /* Open the log window. */ void log_show_window() { - GladeXML *glade; + GtkWidget *dialog; + GtkBuilder *builder; GtkTreeView *tv; GtkTreeViewColumn *column; GtkCellRenderer *renderer; + gchar *ids[] = {"Log viewer", NULL}; - glade = get_glade_xml("Log viewer"); + builder = get_gtk_builder(&ids); - tv = GTK_TREE_VIEW(glade_xml_get_widget(glade, "log_list")); + tv = GTK_TREE_VIEW(gtk_builder_get_object(builder, "log_list")); gtk_tree_view_set_model(tv, GTK_TREE_MODEL(log)); renderer = gtk_cell_renderer_text_new(); @@ -162,8 +163,12 @@ void log_show_window() NULL); gtk_tree_view_append_column(tv, column); - g_signal_connect(G_OBJECT(glade_xml_get_widget(glade, "Log viewer")), + dialog = gtk_builder_get_object(builder, "Log viewer"); + g_signal_connect(G_OBJECT(dialog), "response", (GCallback) log_dialog_response, NULL); + + gtk_widget_show(dialog); + g_object_unref(builder); } /**************************************************************** diff --git a/ROX-Filer/src/panel.c b/ROX-Filer/src/panel.c index 67b1f7c7..ff6b6a1e 100644 --- a/ROX-Filer/src/panel.c +++ b/ROX-Filer/src/panel.c @@ -2355,10 +2355,10 @@ static gboolean panel_want_show_text(PanelIcon *pi) return TRUE; } -static void xinerama_sensitive(GladeXML *glade, gboolean sensitive) +static void xinerama_sensitive(GtkBuilder *builder, gboolean sensitive) { gtk_widget_set_sensitive( - glade_xml_get_widget(glade, "panel_xinerama_monitor"), + GTK_WIDGET(gtk_builder_get_object(builder, "panel_xinerama_monitor")), sensitive); } @@ -2460,13 +2460,13 @@ static void panel_avoid_toggled_cb(GtkToggleButton *widget) } } -static void panel_xinerama_confine_toggled_cb(GtkWidget *widget) +static void panel_xinerama_confine_toggled_cb(GtkWidget *widget, GtkWidget *spinner) { Panel *panel = panel_from_opts_widget(widget); gboolean xinerama = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); - xinerama_sensitive(glade_get_widget_tree(gtk_widget_get_toplevel(widget)), - xinerama); + gtk_widget_set_sensitive(spinner, xinerama); + if (xinerama != panel->xinerama) { panel->xinerama = xinerama; @@ -2506,50 +2506,78 @@ static void panel_pos_right_toggled_cb(GtkWidget *widget) panel_side_radio_toggled(widget, PANEL_RIGHT); } -#define CONNECT_GLADE_CB(glade, handler) \ - glade_xml_signal_connect(glade, #handler, G_CALLBACK(handler)) - -static void panel_connect_dialog_signal_handlers(GladeXML *glade) -{ - CONNECT_GLADE_CB(glade, gtk_widget_destroy); - CONNECT_GLADE_CB(glade, panel_style_radio_0_toggled_cb); - CONNECT_GLADE_CB(glade, panel_style_radio_1_toggled_cb); - CONNECT_GLADE_CB(glade, panel_style_radio_2_toggled_cb); - CONNECT_GLADE_CB(glade, panel_width_changed_cb); - CONNECT_GLADE_CB(glade, panel_avoid_toggled_cb); - CONNECT_GLADE_CB(glade, panel_xinerama_confine_toggled_cb); - CONNECT_GLADE_CB(glade, panel_xinerama_monitor_changed_cb); - CONNECT_GLADE_CB(glade, panel_pos_top_toggled_cb); - CONNECT_GLADE_CB(glade, panel_pos_bottom_toggled_cb); - CONNECT_GLADE_CB(glade, panel_pos_left_toggled_cb); - CONNECT_GLADE_CB(glade, panel_pos_right_toggled_cb); +static void panel_connect_dialog_signal_handlers(GtkBuilder *builder, + GObject *object, + const gchar *signal_name, + const gchar *handler_name, + GObject *connect_object, + GConnectFlags flags, + gpointer user_data) +{ + void *fn = NULL; + + if (strcmp(handler_name, "gtk_widget_destroy") == 0) + fn = gtk_widget_destroy; + else if (strcmp(handler_name, "panel_style_radio_0_toggled_cb") == 0) + fn = panel_style_radio_0_toggled_cb; + else if (strcmp(handler_name, "panel_style_radio_0_toggled_cb") == 0) + fn = panel_style_radio_0_toggled_cb; + else if (strcmp(handler_name, "panel_style_radio_1_toggled_cb") == 0) + fn = panel_style_radio_1_toggled_cb; + else if (strcmp(handler_name, "panel_style_radio_2_toggled_cb") == 0) + fn = panel_style_radio_2_toggled_cb; + else if (strcmp(handler_name, "panel_width_changed_cb") == 0) + fn = panel_width_changed_cb; + else if (strcmp(handler_name, "panel_avoid_toggled_cb") == 0) + fn = panel_avoid_toggled_cb; + else if (strcmp(handler_name, "panel_xinerama_confine_toggled_cb") == 0) + fn = panel_xinerama_confine_toggled_cb; + else if (strcmp(handler_name, "panel_xinerama_monitor_changed_cb") == 0) + fn = panel_xinerama_monitor_changed_cb; + else if (strcmp(handler_name, "panel_pos_top_toggled_cb") == 0) + fn = panel_pos_top_toggled_cb; + else if (strcmp(handler_name, "panel_pos_bottom_toggled_cb") == 0) + fn = panel_pos_bottom_toggled_cb; + else if (strcmp(handler_name, "panel_pos_left_toggled_cb") == 0) + fn = panel_pos_left_toggled_cb; + else if (strcmp(handler_name, "panel_pos_right_toggled_cb") == 0) + fn = panel_pos_right_toggled_cb; + + if (fn != NULL) + { + g_signal_connect(object, signal_name, fn, connect_object); + } + else + { + g_warning("Unknown handler '%s'", handler_name); + } } -static void panel_setup_options_dialog(GladeXML *glade, Panel *panel) +static void panel_setup_options_dialog(GtkBuilder *builder, Panel *panel) { char *wnm; const char *pos_radio; wnm = g_strdup_printf("panel_style_radio_%d", panel->style); gtk_toggle_button_set_active( - GTK_TOGGLE_BUTTON(glade_xml_get_widget(glade, wnm)), + GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, wnm)), TRUE); g_free(wnm); gtk_spin_button_set_value( - GTK_SPIN_BUTTON(glade_xml_get_widget(glade, "panel_width")), + GTK_SPIN_BUTTON(gtk_builder_get_object(builder, "panel_width")), panel->width); gtk_toggle_button_set_active( - GTK_TOGGLE_BUTTON(glade_xml_get_widget(glade, "panel_avoid")), + GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "panel_avoid")), panel->avoid); gtk_toggle_button_set_active( - GTK_TOGGLE_BUTTON(glade_xml_get_widget(glade, + GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "panel_xinerama_confine")), panel->xinerama); gtk_spin_button_set_adjustment( - GTK_SPIN_BUTTON(glade_xml_get_widget(glade, "panel_xinerama_monitor")), + GTK_SPIN_BUTTON(gtk_builder_get_object(builder, "panel_xinerama_monitor")), GTK_ADJUSTMENT(gtk_adjustment_new(MAX(0, panel->monitor), - 0, n_monitors - 1, 1, 10, 1))); - xinerama_sensitive(glade, panel->xinerama); + 0, n_monitors - 1, 1, 10, 0))); + xinerama_sensitive(builder, panel->xinerama); switch (panel->side) { case PANEL_TOP: @@ -2570,7 +2598,7 @@ static void panel_setup_options_dialog(GladeXML *glade, Panel *panel) } g_return_if_fail(pos_radio != NULL); gtk_toggle_button_set_active( - GTK_TOGGLE_BUTTON(glade_xml_get_widget(glade, pos_radio)), + GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, pos_radio)), TRUE); } @@ -2578,27 +2606,28 @@ static void panel_show_options(Panel *panel) { GtkWidget *dialog; gboolean already_showing = FALSE; - GladeXML *glade = NULL; + GtkBuilder *builder; + gchar *ids[] = {"adjustment1", "adjustment2", "Panel Options", NULL}; + + builder = get_gtk_builder(ids); if (panel_options_dialog) { dialog = panel_options_dialog; already_showing = TRUE; - glade = glade_get_widget_tree(dialog); } else { - glade = get_glade_xml("Panel Options"); - dialog = glade_xml_get_widget(glade, "Panel Options"); + dialog = GTK_WIDGET(gtk_builder_get_object(builder, "Panel Options")); panel_options_dialog = dialog; g_signal_connect(dialog, "destroy", G_CALLBACK(gtk_widget_destroyed), &panel_options_dialog); - panel_connect_dialog_signal_handlers(glade); + gtk_builder_connect_signals_full(builder, &panel_connect_dialog_signal_handlers, NULL); } g_object_set_data(G_OBJECT(panel_options_dialog), "rox-panel", panel); - panel_setup_options_dialog(glade, panel); + panel_setup_options_dialog(builder, panel); if (already_showing) { @@ -2616,6 +2645,8 @@ static void panel_show_options(Panel *panel) gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); gtk_widget_show_all(dialog); } + + g_object_unref(builder); } static void panel_position_menu(GtkMenu *menu, gint *x, gint *y, -- 2.11.4.GIT