From 5ea0c816cfe2087e2ad1c8e10700deb165c8eed0 Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Sat, 23 Apr 2011 14:52:42 +0000 Subject: [PATCH] Refactor utility function to allow merging multiple (glade) objects together in one gtkbuilder object git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@20591 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/gnome-utils/dialog-utils.c | 17 +++++++++-------- src/gnome-utils/dialog-utils.h | 16 ++++++++-------- src/gnome/assistant-hierarchy.c | 4 +++- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/gnome-utils/dialog-utils.c b/src/gnome-utils/dialog-utils.c index 725fb4d8ce..8474f2c007 100644 --- a/src/gnome-utils/dialog-utils.c +++ b/src/gnome-utils/dialog-utils.c @@ -929,16 +929,17 @@ gnc_glade_autoconnect_full_func(const gchar *handler_name, * It takes care of finding the directory for glade files and prints a * warning message in case of an error. */ -GtkBuilder * -gnc_builder_add_from_file (const char *filename, const char *root) +gboolean +gnc_builder_add_from_file (GtkBuilder *builder, const char *filename, const char *root) { - GtkBuilder *gncbuilder = NULL; GError* error = NULL; char *fname; gchar *gnc_builder_dir; + gboolean result; - g_return_val_if_fail (filename != NULL, NULL); - g_return_val_if_fail (root != NULL, NULL); + g_return_val_if_fail (builder != NULL, FALSE); + g_return_val_if_fail (filename != NULL, FALSE); + g_return_val_if_fail (root != NULL, FALSE); gnc_builder_dir = gnc_path_get_gtkbuilderdir (); fname = g_build_filename(gnc_builder_dir, filename, (char *)NULL); @@ -947,8 +948,8 @@ gnc_builder_add_from_file (const char *filename, const char *root) { gchar *localroot = g_strdup(root); gchar *objects[] = { localroot, NULL }; - gncbuilder = gtk_builder_new (); - if (!gtk_builder_add_objects_from_file (gncbuilder, fname, objects, &error)) + result = gtk_builder_add_objects_from_file (builder, fname, objects, &error); + if (!result) { PWARN ("Couldn't load builder file: %s", error->message); g_error_free (error); @@ -958,7 +959,7 @@ gnc_builder_add_from_file (const char *filename, const char *root) g_free (fname); - return gncbuilder; + return result; } /* diff --git a/src/gnome-utils/dialog-utils.h b/src/gnome-utils/dialog-utils.h index ac5a5449c9..073f343583 100644 --- a/src/gnome-utils/dialog-utils.h +++ b/src/gnome-utils/dialog-utils.h @@ -128,14 +128,14 @@ void gnc_glade_autoconnect_full_func(const gchar *handler_name, gboolean after, gpointer user_data); -GtkBuilder * gnc_builder_add_from_file (const char *filename, const char *root); -void gnc_builder_connect_full_func(GtkBuilder *builder, - GObject *signal_object, - const gchar *signal_name, - const gchar *handler_name, - GObject *connect_object, - GConnectFlags flags, - gpointer user_data); +gboolean gnc_builder_add_from_file (GtkBuilder *builder, const char *filename, const char *root); +void gnc_builder_connect_full_func (GtkBuilder *builder, + GObject *signal_object, + const gchar *signal_name, + const gchar *handler_name, + GObject *connect_object, + GConnectFlags flags, + gpointer user_data); /** This function generates a button with icon and adds it to a diff --git a/src/gnome/assistant-hierarchy.c b/src/gnome/assistant-hierarchy.c index c81793f583..d52959574e 100644 --- a/src/gnome/assistant-hierarchy.c +++ b/src/gnome/assistant-hierarchy.c @@ -1062,7 +1062,8 @@ gnc_create_hierarchy_assistant (gboolean use_defaults, GncHierarchyAssistantFini GdkColor *color; data = g_new0 (hierarchy_data, 1); - builder = gnc_builder_add_from_file ("account.glade", "Hierarchy Assistant"); + builder = gtk_builder_new(); + gnc_builder_add_from_file (builder, "account.glade", "Hierarchy Assistant"); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Hierarchy Assistant")); data->dialog = dialog; @@ -1117,6 +1118,7 @@ gnc_create_hierarchy_assistant (gboolean use_defaults, GncHierarchyAssistantFini G_CALLBACK (gnc_hierarchy_destroy_cb), data); gtk_builder_connect_signals(builder, data); + g_object_unref(G_OBJECT(builder)); data->when_completed = when_completed; data->use_defaults = use_defaults;