[eog] Initial GResource migration
- From: Felix Riemann <friemann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [eog] Initial GResource migration
- Date: Sat, 3 May 2014 18:34:38 +0000 (UTC)
commit 94004b468f57673365a069d0654919dd9f2974a7
Author: Felix Riemann <friemann gnome org>
Date: Fri Mar 14 21:24:34 2014 +0100
Initial GResource migration
Embedding UI data files as GResource makes several things easier.
The compiled resources need to be linked directly with the binary
as they won't be available if linked with the embedded libeog.
configure.ac | 1 +
data/Makefile.am | 16 +++++++---------
src/Makefile.am | 8 +++++++-
src/eog-application.c | 10 +++++++---
src/eog-properties-dialog.c | 7 ++-----
src/eog-window.c | 6 +++---
src/eog.gresource.xml | 11 +++++++++++
7 files changed, 38 insertions(+), 21 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 35ea293..2bfc29d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -37,6 +37,7 @@ LT_INIT([disable-static])
AC_PROG_CC
AM_PROG_CC_C_O
+AC_PATH_PROG([GLIB_COMPILE_RESOURCES], [glib-compile-resources])
AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums])
diff --git a/data/Makefile.am b/data/Makefile.am
index 1191ae9..4099708 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -24,23 +24,21 @@ gsettingsconvertdir = $(datadir)/GConf/gsettings
gsettingsconvert_DATA = eog.convert
uidir = $(pkgdatadir)
-ui_DATA = eog-image-properties-dialog.ui \
+ui_DATA = \
eog-multiple-save-as-dialog.ui \
eog-preferences-dialog.ui \
- eog-app-menu.xml \
- eog-ui.xml \
eog-toolbar.xml
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = eog.pc
-styledir = $(pkgdatadir)
-style_DATA = eog.css
-
EXTRA_DIST = \
- $(style_DATA) \
- $(ui_DATA) \
- $(DESKTOP_IN_FILES) \
+ $(ui_DATA) \
+ eog.css \
+ eog-app-menu.xml \
+ eog-image-properties-dialog.ui \
+ eog-ui.xml \
+ $(DESKTOP_IN_FILES) \
$(appdata_in_files) \
eog.convert
diff --git a/src/Makefile.am b/src/Makefile.am
index f779828..59b417d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -162,7 +162,7 @@ endif
libeog_la_LDFLAGS = -export-dynamic -no-undefined
-eog_SOURCES = main.c
+eog_SOURCES = eog-resources.c main.c
eog_CFLAGS = \
-I$(top_srcdir)/cut-n-paste/toolbar-editor \
@@ -184,8 +184,13 @@ eog_LDFLAGS = -export-dynamic -no-undefined
BUILT_SOURCES = \
eog-enum-types.c \
eog-enum-types.h \
+ eog-resources.c \
$(MARSHAL_OUTPUT)
+eog-resources.c: eog.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(top_srcdir)/data
--generate-dependencies eog.gresource.xml)
+ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) "$<" --target=$@ \
+ --sourcedir=$(top_srcdir)/data --c-name _eog --generate-source
+
eog-enum-types.h: eog-enum-types.h.template $(INST_H_FILES) $(GLIB_MKENUMS)
$(AM_V_GEN)(cd $(srcdir) && $(GLIB_MKENUMS) --template eog-enum-types.h.template $(INST_H_FILES)) > $@
@@ -199,6 +204,7 @@ eog-marshal.c: eog-marshal.list $(GLIB_GENMARSHAL)
$(AM_V_GEN)$(GLIB_GENMARSHAL) $< --body --header --prefix=eog_marshal > $@
EXTRA_DIST = \
+ eog.gresource.xml \
eog-enum-types.h.template \
eog-enum-types.c.template \
eog-marshal.list
diff --git a/src/eog-application.c b/src/eog-application.c
index 916d97e..2ae4708 100644
--- a/src/eog-application.c
+++ b/src/eog-application.c
@@ -180,7 +180,9 @@ eog_application_init_app_menu (EogApplication *application)
application);
builder = gtk_builder_new ();
- gtk_builder_add_from_file (builder, EOG_DATA_DIR"/eog-app-menu.xml", &error);
+ gtk_builder_add_from_resource (builder,
+ "/org/gnome/eog/ui/eog-app-menu.xml",
+ &error);
if (error == NULL) {
gtk_application_set_app_menu (GTK_APPLICATION (application),
@@ -233,6 +235,7 @@ eog_application_startup (GApplication *application)
{
EogApplication *app = EOG_APPLICATION (application);
GError *error = NULL;
+ GFile *css_file;
GtkSettings *settings;
GtkCssProvider *provider;
@@ -246,9 +249,10 @@ eog_application_startup (GApplication *application)
eog_thumbnail_init ();
/* Load special style properties for EogThumbView's scrollbar */
+ css_file = g_file_new_for_uri ("resource:///org/gnome/eog/ui/eog.css");
provider = gtk_css_provider_new ();
- if (G_UNLIKELY (!gtk_css_provider_load_from_path(provider,
- EOG_CSS_FILE_PATH,
+ if (G_UNLIKELY (!gtk_css_provider_load_from_file(provider,
+ css_file,
&error)))
{
g_critical ("Could not load CSS data: %s", error->message);
diff --git a/src/eog-properties-dialog.c b/src/eog-properties-dialog.c
index face9fa..5660eb4 100644
--- a/src/eog-properties-dialog.c
+++ b/src/eog-properties-dialog.c
@@ -557,11 +557,8 @@ eog_properties_dialog_class_init (EogPropertiesDialogClass *klass)
FALSE,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
- gchar* data;
- gsize data_size;
- g_file_get_contents(g_build_filename (EOG_DATA_DIR, "eog-image-properties-dialog.ui", NULL), &data,
&data_size, NULL);
- GBytes *bytes = g_bytes_new_static(data, data_size);
- gtk_widget_class_set_template((GtkWidgetClass *) klass, bytes);
+
+ gtk_widget_class_set_template_from_resource ((GtkWidgetClass *) klass,
"/org/gnome/eog/ui/eog-image-properties-dialog.ui");
GtkWidgetClass *wklass = (GtkWidgetClass*) klass;
gtk_widget_class_bind_template_child_private(wklass,
diff --git a/src/eog-window.c b/src/eog-window.c
index caa8e3d..98c1539 100644
--- a/src/eog-window.c
+++ b/src/eog-window.c
@@ -4911,9 +4911,9 @@ eog_window_construct_ui (EogWindow *window)
gtk_ui_manager_insert_action_group (priv->ui_mgr, priv->actions_gallery, 0);
- if (!gtk_ui_manager_add_ui_from_file (priv->ui_mgr,
- EOG_DATA_DIR"/eog-ui.xml",
- &error)) {
+ if (!gtk_ui_manager_add_ui_from_resource (priv->ui_mgr,
+ "/org/gnome/eog/ui/eog-ui.xml",
+ &error)) {
g_warning ("building menus failed: %s", error->message);
g_error_free (error);
}
diff --git a/src/eog.gresource.xml b/src/eog.gresource.xml
new file mode 100644
index 0000000..bf53694
--- /dev/null
+++ b/src/eog.gresource.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/org/gnome/eog/ui">
+ <file>eog.css</file>
+ <file compressed="true" preprocess="xml-stripblanks">eog-app-menu.xml</file>
+ <file compressed="true" preprocess="xml-stripblanks">eog-image-properties-dialog.ui</file>
+ <file compressed="true" preprocess="xml-stripblanks">eog-ui.xml</file>
+ </gresource>
+</gresources>
+
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]