git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/3] Refactor loading xml UI files

From
SZEDER Gábor <szeder@ira.uka.de>
Date
Feb 3, 2009, 13:08 UTC
Message-ID
<1233666531-21589-2-git-send-email-szeder@ira.uka.de>
In-Reply-To
<1233666531-21589-1-git-send-email-szeder@ira.uka.de>

For loading the xml UI files 'gitg-ui.xml' and 'gitg-menus.xml' the same function call and error handling were performed twice.

This patch introduces a helper function to remove this code duplication.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
---
  Not sure about putting the new function into gitg-utils.c;  maybe it
  would be better in gitg.c...
 gitg/gitg-utils.c  |   16 ++++++++++++++++
 gitg/gitg-utils.h  |    2 ++
 gitg/gitg-window.c |   10 ++--------
 gitg/gitg.c        |    9 +--------
 4 files changed, 21 insertions(+), 16 deletions(-)
diff --git a/gitg/gitg-utils.c b/gitg/gitg-utils.c
index 5fb6772..cfce323 100644
--- a/gitg/gitg-utils.c
+++ b/gitg/gitg-utils.c
@@ -1,3 +1,4 @@
+#include <stdlib.h>
 #include <string.h>
 #include <glib.h>
 
@@ -417,3 +418,18 @@ gitg_utils_menu_position_under_tree_view (GtkMenu  *menu,
 							tree);
 	}
 }
+
+void
+gitg_builder_add_from_file(GtkBuilder *builder, const gchar *filename)
+{
+	GError *error = NULL;
+	gchar full_filename[PATH_MAX];
+
+	g_snprintf(full_filename, PATH_MAX, "%s%c%s", GITG_UI_DIR, G_DIR_SEPARATOR, filename);
+	if (!gtk_builder_add_from_file(builder, full_filename, &error))
+	{
+		g_critical("Could not open UI file: %s (%s)", full_filename, error->message);
+		g_error_free(error);
+		exit(1);
+	}
+}
diff --git a/gitg/gitg-utils.h b/gitg/gitg-utils.h
index 867fff7..46f8010 100644
--- a/gitg/gitg-utils.h
+++ b/gitg/gitg-utils.h
@@ -36,4 +36,6 @@ gint gitg_utils_sort_names(gchar const *s1, gchar const *s2);
 void gitg_utils_menu_position_under_widget(GtkMenu *menu, gint *x, gint *y,	gboolean *push_in, gpointer user_data);
 void gitg_utils_menu_position_under_tree_view(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data);
 					   
+void gitg_builder_add_from_file(GtkBuilder *builder, const gchar *filename);
+
 #endif /* __GITG_UTILS_H__ */
diff --git a/gitg/gitg-window.c b/gitg/gitg-window.c
index 8abdb9a..6f583d9 100644
--- a/gitg/gitg-window.c
+++ b/gitg/gitg-window.c
@@ -171,14 +171,8 @@ build_search_entry(GitgWindow *window, GtkBuilder *builder)
 	
 	GtkBuilder *b = gtk_builder_new();
 	gtk_builder_set_translation_domain(b, GETTEXT_PACKAGE);
-	GError *error = NULL;
 
-	if (!gtk_builder_add_from_file(b, GITG_UI_DIR "/gitg-menus.xml", &error))
-	{
-		g_critical("Could not open UI file: %s (%s)", GITG_UI_DIR "/gitg-menus.xml", error->message);
-		g_error_free(error);
-		exit(1);
-	}
+	gitg_builder_add_from_file(b, "gitg-menus.xml");
 	
 	GtkUIManager *manager = GTK_UI_MANAGER(gtk_builder_get_object(b, "uiman"));
 	window->priv->search_popup = GTK_WIDGET(g_object_ref(gtk_ui_manager_get_widget(manager, "/ui/search_popup")));
diff --git a/gitg/gitg.c b/gitg/gitg.c
index 69c5b56..20b9b53 100644
--- a/gitg/gitg.c
+++ b/gitg/gitg.c
@@ -52,17 +52,10 @@ on_window_delete_event(GtkWidget *widget, GdkEvent *event, gpointer userdata)
 static GitgWindow *
 build_ui()
 {
-	GError *error = NULL;
-	
 	GtkBuilder *builder = gtk_builder_new();
 	gtk_builder_set_translation_domain(builder, GETTEXT_PACKAGE);
 	
-	if (!gtk_builder_add_from_file(builder, GITG_UI_DIR "/gitg-ui.xml", &error))
-	{
-		g_critical("Could not open UI file: %s (%s)", GITG_UI_DIR "/gitg-ui.xml", error->message);
-		g_error_free(error);
-		exit(1);
-	}
+	gitg_builder_add_from_file(builder, "gitg-ui.xml");
 	
 	GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(builder, "window"));
 	gtk_widget_show_all(window);
-- 
1.6.1.2.362.g0f78
Previous: SZEDER GáborNext: SZEDER Gábor
Message 4 of 26 in “git gtk+/GNOME gui application: gitg”
  1. Jesse van den KieboomJan 31, 2009
  2. SZEDER GáborFeb 3, 2009
  3. 1/3 Fix "multi-character character constant" compile warningSZEDER Gábor, Feb 3, 2009
  4. 2/3 Refactor loading xml UI filesSZEDER Gábor, Feb 3, 2009
  5. 3/3 Try load UI xml files from the current working directorySZEDER Gábor, Feb 3, 2009
  6. Jesse van den KieboomFeb 14, 2009
  7. Jesse van den KieboomFeb 4, 2009
  8. Michael J GruberFeb 3, 2009
  9. Stefan KarpinskiFeb 3, 2009
  10. Jesse van den KieboomFeb 4, 2009
  11. Miles BaderFeb 4, 2009
  12. Jakub NarebskiFeb 3, 2009
  13. Felipe ContrerasFeb 4, 2009
  14. Jesse van den KieboomFeb 4, 2009
  15. Michael J GruberFeb 4, 2009
  16. Felipe ContrerasFeb 4, 2009
  17. Jesse van den KieboomFeb 4, 2009
  18. Felipe ContrerasFeb 4, 2009
  19. Michael J GruberFeb 4, 2009
  20. Jesse van den KieboomFeb 4, 2009
  21. Michael J GruberFeb 4, 2009
  22. Jesse van den KieboomFeb 4, 2009
  23. Miles BaderFeb 5, 2009
  24. Jesse van den KieboomFeb 5, 2009
  25. Miles BaderFeb 6, 2009
  26. Jakub NarebskiFeb 4, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.