[gedit] Use GResource



commit 7777d210fa6cd6fbf3ba3e1c8546ed58b3399625
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Wed Feb 22 22:00:27 2012 +0100

    Use GResource

 configure.ac                     |    8 +++-
 gedit/Makefile.am                |    9 +++-
 gedit/gedit-encodings-dialog.c   |   39 +++++-----------
 gedit/gedit-preferences-dialog.c |   90 ++++++++++++++-----------------------
 gedit/gedit-print-job.c          |   54 ++++++++++-------------
 gedit/gedit-replace-dialog.c     |   46 ++++++-------------
 gedit/gedit.gresource.xml        |    9 ++++
 7 files changed, 106 insertions(+), 149 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index bb8abba..52691cf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -323,7 +323,7 @@ PKG_CHECK_MODULES(GEDIT, [
 	libxml-2.0 >= 2.5.0
 	glib-2.0 >= 2.28.0
 	gio-2.0 >= 2.26.0
-	gtk+-3.0 >= 3.1.6
+	gtk+-3.0 >= 3.3.15
 	gtksourceview-3.0 >= 3.0.0
 	libpeas-1.0 >= 0.7.3
 	libpeas-gtk-1.0 >= 1.1.0
@@ -376,6 +376,12 @@ dnl ================================================================
 GLIB_GSETTINGS
 
 dnl ================================================================
+dnl GResource stuff
+dnl ================================================================
+GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0`
+AC_SUBST(GLIB_COMPILE_RESOURCES)
+
+dnl ================================================================
 dnl Misc
 dnl ================================================================
 AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
diff --git a/gedit/Makefile.am b/gedit/Makefile.am
index 9c18cd5..a4d18b2 100644
--- a/gedit/Makefile.am
+++ b/gedit/Makefile.am
@@ -164,7 +164,8 @@ header_DATA = 				\
 libgedit_private_la_SOURCES =		\
 	gedit-app-activatable.c		\
 	gedit-view-activatable.c	\
-	gedit-window-activatable.c
+	gedit-window-activatable.c	\
+	gedit-resources.c
 
 libgedit_c_files =			\
 	gedit-animatable.c		\
@@ -254,6 +255,9 @@ gedit-marshal.c: gedit-marshal.list $(GLIB_GENMARSHAL)
 	$(AM_V_GEN) echo "#include \"gedit-marshal.h\"" > $@ && \
 	$(GLIB_GENMARSHAL) $< --body --prefix=gedit_marshal >> $@
 
+gedit-resources.c: gedit.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies gedit.gresource.xml)
+	$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source gedit.gresource.xml
+
 uidir = $(datadir)/gedit/ui/
 ui_DATA = 				\
 	gedit-ui.xml			\
@@ -273,7 +277,8 @@ EXTRA_DIST = 				\
 	gedit-enum-types.h.template	\
 	gedit-enum-types.c.template	\
 	gedit-marshal.list		\
-	gedit.rc
+	gedit.rc			\
+	gedit.gresource.xml
 
 CLEANFILES = $(BUILT_SOURCES)
 
diff --git a/gedit/gedit-encodings-dialog.c b/gedit/gedit-encodings-dialog.c
index abd2e96..82fdfbc 100644
--- a/gedit/gedit-encodings-dialog.c
+++ b/gedit/gedit-encodings-dialog.c
@@ -315,6 +315,7 @@ response_handler (GtkDialog            *dialog,
 static void
 gedit_encodings_dialog_init (GeditEncodingsDialog *dlg)
 {
+	GtkBuilder *builder;
 	GtkWidget *content;
 	GtkCellRenderer *cell_renderer;
 	GtkTreeModel *sort_model;
@@ -322,10 +323,7 @@ gedit_encodings_dialog_init (GeditEncodingsDialog *dlg)
 	GtkTreeIter parent_iter;
 	GtkTreeSelection *selection;
 	const GeditEncoding *enc;
-	GtkWidget *error_widget;
 	int i;
-	gboolean ret;
-	gchar *file;
 	gchar *root_objects[] = {
 		"encodings-dialog-contents",
 		NULL
@@ -363,34 +361,21 @@ gedit_encodings_dialog_init (GeditEncodingsDialog *dlg)
 			  G_CALLBACK (response_handler),
 			  dlg);
 
-	file = gedit_dirs_get_ui_file ("gedit-encodings-dialog.ui");
-	ret = gedit_utils_get_ui_objects (file,
-					  root_objects,
-					  &error_widget,
-					  "encodings-dialog-contents", &content,
-					  "add-button", &dlg->priv->add_button,
-					  "remove-button", &dlg->priv->remove_button,
-					  "available-treeview", &dlg->priv->available_treeview,
-					  "displayed-treeview", &dlg->priv->displayed_treeview,
-					  NULL);
-	g_free (file);
-
-	if (!ret)
-	{
-		gtk_widget_show (error_widget);
-
-		gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))),
-		                    error_widget,
-		                    TRUE, TRUE, 0);
-		gtk_container_set_border_width (GTK_CONTAINER (error_widget), 5);			     
-
-		return;
-	}
+	builder = gtk_builder_new ();
+	gtk_builder_add_objects_from_resource (builder, "/org/gnome/gedit/ui/gedit-encodings-dialog.ui",
+	                                       root_objects, NULL);
+	content = GTK_WIDGET (gtk_builder_get_object (builder, "encodings-dialog-contents"));
+	g_object_ref (content);
+	dlg->priv->add_button = GTK_WIDGET (gtk_builder_get_object (builder, "add-button"));
+	dlg->priv->remove_button = GTK_WIDGET (gtk_builder_get_object (builder, "remove-button"));
+	dlg->priv->available_treeview = GTK_WIDGET (gtk_builder_get_object (builder, "available-treeview"));
+	dlg->priv->displayed_treeview = GTK_WIDGET (gtk_builder_get_object (builder, "displayed-treeview"));
+	g_object_unref (builder);
 
 	gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))),
 			    content, TRUE, TRUE, 0);
 	g_object_unref (content);
-	gtk_container_set_border_width (GTK_CONTAINER (content), 5);			     
+	gtk_container_set_border_width (GTK_CONTAINER (content), 5);
 
 	g_signal_connect (dlg->priv->add_button,
 			  "clicked",
diff --git a/gedit/gedit-preferences-dialog.c b/gedit/gedit-preferences-dialog.c
index 74cb254..c8b64ff 100644
--- a/gedit/gedit-preferences-dialog.c
+++ b/gedit/gedit-preferences-dialog.c
@@ -1152,15 +1152,12 @@ setup_plugins_page (GeditPreferencesDialog *dlg)
 static void
 gedit_preferences_dialog_init (GeditPreferencesDialog *dlg)
 {
-	GtkWidget *error_widget;
-	gboolean ret;
-	gchar *file;
+	GtkBuilder *builder;
 	gchar *root_objects[] = {
 		"notebook",
 		"adjustment1",
 		"adjustment2",
 		"adjustment3",
-		"install_scheme_image",
 		NULL
 	};
 
@@ -1191,59 +1188,40 @@ gedit_preferences_dialog_init (GeditPreferencesDialog *dlg)
 			  "response",
 			  G_CALLBACK (dialog_response_handler),
 			  NULL);
-	
-	file = gedit_dirs_get_ui_file ("gedit-preferences-dialog.ui");
-	ret = gedit_utils_get_ui_objects (file,
-		root_objects,
-		&error_widget,
-
-		"notebook", &dlg->priv->notebook,
-
-		"display_line_numbers_checkbutton", &dlg->priv->display_line_numbers_checkbutton,
-		"right_margin_checkbutton", &dlg->priv->right_margin_checkbutton,
-		"right_margin_position_spinbutton", &dlg->priv->right_margin_position_spinbutton,
-
-		"highlight_current_line_checkbutton", &dlg->priv->highlight_current_line_checkbutton,
-		"bracket_matching_checkbutton", &dlg->priv->bracket_matching_checkbutton,
-
-		"wrap_text_checkbutton", &dlg->priv->wrap_text_checkbutton,
-		"split_checkbutton", &dlg->priv->split_checkbutton,
-
-		"tabs_width_spinbutton", &dlg->priv->tabs_width_spinbutton,
-		"tabs_width_hbox", &dlg->priv->tabs_width_hbox,
-		"insert_spaces_checkbutton", &dlg->priv->insert_spaces_checkbutton,
-		"auto_indent_checkbutton", &dlg->priv->auto_indent_checkbutton,
-
-		"autosave_hbox", &dlg->priv->autosave_hbox,
-		"backup_copy_checkbutton", &dlg->priv->backup_copy_checkbutton,
-		"auto_save_checkbutton", &dlg->priv->auto_save_checkbutton,
-		"auto_save_spinbutton", &dlg->priv->auto_save_spinbutton,
-
-		"default_font_checkbutton", &dlg->priv->default_font_checkbutton,
-		"font_button", &dlg->priv->font_button,
-		"font_hbox", &dlg->priv->font_hbox,
 
-		"schemes_treeview", &dlg->priv->schemes_treeview,
-		"schemes-scrolled-window", &dlg->priv->schemes_scrolled_window,
-		"install_scheme_button", &dlg->priv->install_scheme_button,
-		"uninstall_scheme_button", &dlg->priv->uninstall_scheme_button,
-		"schemes-toolbar", &dlg->priv->schemes_toolbar,
-
-		"plugin_manager_place_holder", &dlg->priv->plugin_manager_place_holder,
-		NULL);
-
-	g_free (file);
-
-	if (!ret)
-	{
-		gtk_widget_show (error_widget);
-			
-		gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))),
-		                    error_widget,
-		                    TRUE, TRUE, 0);
-		
-		return;
-	}
+	builder = gtk_builder_new ();
+	gtk_builder_add_objects_from_resource (builder, "/org/gnome/gedit/ui/gedit-preferences-dialog.ui",
+	                                       root_objects, NULL);
+	dlg->priv->notebook = GTK_WIDGET (gtk_builder_get_object (builder, "notebook"));
+	g_object_ref (dlg->priv->notebook);
+	dlg->priv->display_line_numbers_checkbutton =
+		GTK_WIDGET (gtk_builder_get_object (builder, "display_line_numbers_checkbutton"));
+	dlg->priv->right_margin_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "right_margin_checkbutton"));
+	dlg->priv->right_margin_position_spinbutton =
+		GTK_WIDGET (gtk_builder_get_object (builder, "right_margin_position_spinbutton"));
+	dlg->priv->highlight_current_line_checkbutton =
+		GTK_WIDGET (gtk_builder_get_object (builder, "highlight_current_line_checkbutton"));
+	dlg->priv->bracket_matching_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "bracket_matching_checkbutton"));
+	dlg->priv->wrap_text_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "wrap_text_checkbutton"));
+	dlg->priv->split_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "split_checkbutton"));
+	dlg->priv->tabs_width_spinbutton = GTK_WIDGET (gtk_builder_get_object (builder, "tabs_width_spinbutton"));
+	dlg->priv->tabs_width_hbox = GTK_WIDGET (gtk_builder_get_object (builder, "tabs_width_hbox"));
+	dlg->priv->insert_spaces_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "insert_spaces_checkbutton"));
+	dlg->priv->auto_indent_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "auto_indent_checkbutton"));
+	dlg->priv->autosave_hbox = GTK_WIDGET (gtk_builder_get_object (builder, "autosave_hbox"));
+	dlg->priv->backup_copy_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "backup_copy_checkbutton"));
+	dlg->priv->auto_save_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "auto_save_checkbutton"));
+	dlg->priv->auto_save_spinbutton = GTK_WIDGET (gtk_builder_get_object (builder, "auto_save_spinbutton"));
+	dlg->priv->default_font_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "default_font_checkbutton"));
+	dlg->priv->font_button = GTK_WIDGET (gtk_builder_get_object (builder, "font_button"));
+	dlg->priv->font_hbox = GTK_WIDGET (gtk_builder_get_object (builder, "font_hbox"));
+	dlg->priv->schemes_treeview = GTK_WIDGET (gtk_builder_get_object (builder, "schemes_treeview"));
+	dlg->priv->schemes_scrolled_window = GTK_WIDGET (gtk_builder_get_object (builder, "schemes-scrolled-window"));
+	dlg->priv->install_scheme_button = GTK_WIDGET (gtk_builder_get_object (builder, "install_scheme_button"));
+	dlg->priv->uninstall_scheme_button = GTK_WIDGET (gtk_builder_get_object (builder, "uninstall_scheme_button"));
+	dlg->priv->schemes_toolbar = GTK_WIDGET (gtk_builder_get_object (builder, "schemes-toolbar"));
+	dlg->priv->plugin_manager_place_holder = GTK_WIDGET (gtk_builder_get_object (builder, "plugin_manager_place_holder"));
+	g_object_unref (builder);
 
 	gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))),
 			    dlg->priv->notebook, FALSE, FALSE, 0);
diff --git a/gedit/gedit-print-job.c b/gedit/gedit-print-job.c
index 1152520..99f82d4 100644
--- a/gedit/gedit-print-job.c
+++ b/gedit/gedit-print-job.c
@@ -320,12 +320,10 @@ static GObject *
 create_custom_widget_cb (GtkPrintOperation *operation, 
 			 GeditPrintJob     *job)
 {
-	gboolean ret;
-	GtkWidget *widget;
-	GtkWidget *error_widget;
+	GtkBuilder *builder;
+	GtkWidget *contents;
 	gint line_numbers;
 	GtkWrapMode wrap_mode;
-	gchar *file;
 	gboolean syntax_hl;
 	gboolean print_header;
 	gchar *font_body, *font_header, *font_numbers;
@@ -335,32 +333,26 @@ create_custom_widget_cb (GtkPrintOperation *operation,
 		NULL
 	};
 
-	file = gedit_dirs_get_ui_file ("gedit-print-preferences.ui");
-	ret = gedit_utils_get_ui_objects (file,
-					  root_objects,
-					  &error_widget,
-					  "contents", &widget,
-					  "syntax_checkbutton", &job->priv->syntax_checkbutton,
-					  "line_numbers_checkbutton", &job->priv->line_numbers_checkbutton,
-					  "line_numbers_hbox", &job->priv->line_numbers_hbox,
-					  "line_numbers_spinbutton", &job->priv->line_numbers_spinbutton,
-					  "page_header_checkbutton", &job->priv->page_header_checkbutton,
-					  "text_wrapping_checkbutton", &job->priv->text_wrapping_checkbutton,
-					  "do_not_split_checkbutton", &job->priv->do_not_split_checkbutton,
-					  "body_font_label", &job->priv->body_font_label,
-					  "body_fontbutton", &job->priv->body_fontbutton,
-					  "headers_font_label", &job->priv->headers_font_label,
-					  "headers_fontbutton", &job->priv->headers_fontbutton,
-					  "numbers_font_label", &job->priv->numbers_font_label,
-					  "numbers_fontbutton", &job->priv->numbers_fontbutton,
-					  "restore_button", &job->priv->restore_button,
-					  NULL);
-	g_free (file);
-
-	if (!ret)
-	{
-		return G_OBJECT (error_widget);
-	}
+	builder = gtk_builder_new ();
+	gtk_builder_add_objects_from_resource (builder, "/org/gnome/gedit/ui/gedit-print-preferences.ui",
+	                                       root_objects, NULL);
+	contents = GTK_WIDGET (gtk_builder_get_object (builder, "contents"));
+	g_object_ref (contents);
+	job->priv->syntax_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "syntax_checkbutton"));
+	job->priv->line_numbers_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "line_numbers_checkbutton"));
+	job->priv->line_numbers_hbox = GTK_WIDGET (gtk_builder_get_object (builder, "line_numbers_hbox"));
+	job->priv->line_numbers_spinbutton = GTK_WIDGET (gtk_builder_get_object (builder, "line_numbers_spinbutton"));
+	job->priv->page_header_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "page_header_checkbutton"));
+	job->priv->text_wrapping_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "text_wrapping_checkbutton"));
+	job->priv->do_not_split_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "do_not_split_checkbutton"));
+	job->priv->body_font_label = GTK_WIDGET (gtk_builder_get_object (builder, "body_font_label"));
+	job->priv->body_fontbutton = GTK_WIDGET (gtk_builder_get_object (builder, "body_fontbutton"));
+	job->priv->headers_font_label = GTK_WIDGET (gtk_builder_get_object (builder, "headers_font_label"));
+	job->priv->headers_fontbutton = GTK_WIDGET (gtk_builder_get_object (builder, "headers_fontbutton"));
+	job->priv->numbers_font_label = GTK_WIDGET (gtk_builder_get_object (builder, "numbers_font_label"));
+	job->priv->numbers_fontbutton = GTK_WIDGET (gtk_builder_get_object (builder, "numbers_fontbutton"));
+	job->priv->restore_button = GTK_WIDGET (gtk_builder_get_object (builder, "restore_button"));
+	g_object_unref (builder);
 
 	/* Get all settings values */
 	syntax_hl = g_settings_get_boolean (job->priv->print_settings,
@@ -459,7 +451,7 @@ create_custom_widget_cb (GtkPrintOperation *operation,
 			  G_CALLBACK (restore_button_clicked),
 			  job);
 
-	return G_OBJECT (widget);
+	return G_OBJECT (contents);
 }
 
 static void
diff --git a/gedit/gedit-replace-dialog.c b/gedit/gedit-replace-dialog.c
index a21ee28..85c981f 100644
--- a/gedit/gedit-replace-dialog.c
+++ b/gedit/gedit-replace-dialog.c
@@ -194,9 +194,7 @@ static void
 gedit_replace_dialog_init (GeditReplaceDialog *dlg)
 {
 	GtkWidget *content;
-	GtkWidget *error_widget;
-	gboolean ret;
-	gchar *file;
+	GtkBuilder *builder;
 	gchar *root_objects[] = {
 		"replace_dialog_content",
 		NULL
@@ -221,35 +219,19 @@ gedit_replace_dialog_init (GeditReplaceDialog *dlg)
 	gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG (dlg))),
 			     6);
 
-	file = gedit_dirs_get_ui_file ("gedit-replace-dialog.ui");
-	ret = gedit_utils_get_ui_objects (file,
-					  root_objects,
-					  &error_widget,
-					  "replace_dialog_content", &content,
-					  "grid", &dlg->priv->grid,
-					  "search_label", &dlg->priv->search_label,
-					  "replace_with_label", &dlg->priv->replace_label,
-					  "match_case_checkbutton", &dlg->priv->match_case_checkbutton,
-					  "entire_word_checkbutton", &dlg->priv->entire_word_checkbutton,
-					  "search_backwards_checkbutton", &dlg->priv->backwards_checkbutton,
-					  "wrap_around_checkbutton", &dlg->priv->wrap_around_checkbutton,
-					  NULL);
-	g_free (file);
-
-	if (!ret)
-	{
-		gtk_widget_show (error_widget);
-
-		gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg))),
-		                    error_widget,
-		                    TRUE, TRUE, 0);
-		gtk_container_set_border_width (GTK_CONTAINER (error_widget),
-						5);
-
-		dlg->priv->ui_error = TRUE;
-
-		return;
-	}
+	builder = gtk_builder_new ();
+	gtk_builder_add_objects_from_resource (builder, "/org/gnome/gedit/ui/gedit-replace-dialog.ui",
+	                                       root_objects, NULL);
+	content = GTK_WIDGET (gtk_builder_get_object (builder, "replace_dialog_content"));
+	g_object_ref (content);
+	dlg->priv->grid = GTK_WIDGET (gtk_builder_get_object (builder, "grid"));
+	dlg->priv->search_label = GTK_WIDGET (gtk_builder_get_object (builder, "search_label"));
+	dlg->priv->replace_label = GTK_WIDGET (gtk_builder_get_object (builder, "replace_with_label"));
+	dlg->priv->match_case_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "match_case_checkbutton"));
+	dlg->priv->entire_word_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "entire_word_checkbutton"));
+	dlg->priv->backwards_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "search_backwards_checkbutton"));
+	dlg->priv->wrap_around_checkbutton = GTK_WIDGET (gtk_builder_get_object (builder, "wrap_around_checkbutton"));
+	g_object_unref (builder);
 
 	dlg->priv->search_entry = gedit_history_entry_new ("search-for-entry", TRUE);
 	gtk_widget_set_size_request (dlg->priv->search_entry, 300, -1);
diff --git a/gedit/gedit.gresource.xml b/gedit/gedit.gresource.xml
new file mode 100644
index 0000000..bb9d01e
--- /dev/null
+++ b/gedit/gedit.gresource.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gnome/gedit/ui">
+    <file preprocess="xml-stripblanks">gedit-encodings-dialog.ui</file>
+    <file preprocess="xml-stripblanks">gedit-preferences-dialog.ui</file>
+    <file preprocess="xml-stripblanks">gedit-replace-dialog.ui</file>
+    <file preprocess="xml-stripblanks">gedit-print-preferences.ui</file>
+  </gresource>
+</gresources>



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