[cheese] Use GResource for CSS snippet



commit 2fcb2988a0bf53b3c3a43ad000c6c0a98c79459c
Author: David King <amigadave amigadave com>
Date:   Mon Nov 11 21:49:42 2013 +0000

    Use GResource for CSS snippet

 .gitignore                |    2 ++
 Makefile.am               |   20 +++++++++++++++++---
 configure.ac              |    3 +++
 data/cheese.gresource.xml |    7 +++++++
 src/cheese-window.vala    |   22 ++++++++++++----------
 5 files changed, 41 insertions(+), 13 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 786a6b8..b537b6e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -42,6 +42,7 @@ Makefile.in*
 /help/*/*.mo
 /help/*/*.page
 /help/*/*.stamp
+/help/*/legal.xml
 !/help/C
 /libcheese/cheese-enums.*
 /m4/
@@ -51,6 +52,7 @@ Makefile.in*
 /po/cheese.pot
 /po/stamp-it
 /src/*.c
+/src/cheese-resource.h
 /????-report.html
 /????-report.xml
 /tests/cheese-test-widget
diff --git a/Makefile.am b/Makefile.am
index 0c8f85f..cf3aaac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -194,8 +194,17 @@ typelibdir = $(libdir)/girepository-1.0
 typelib_DATA = Cheese-3.0.typelib
 endif
 
+noinst_resource_files = \
+       data/cheese.css
+
+src/cheese-resource.c src/cheese-resource.h: data/cheese.gresource.xml Makefile $(noinst_resource_files)
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/data --generate --c-name 
cheese $<
+
 bin_PROGRAMS = cheese
 
+nodist_cheese_SOURCES = \
+       src/cheese-resource.c
+
 # cheese-main.vala must go at the end of the Vala sources.
 cheese_SOURCES = \
        src/cheese-application.vala \
@@ -208,6 +217,9 @@ cheese_SOURCES = \
        src/thumbview/cheese-thumbnail.c \
        src/thumbview/eog-thumb-nav.c
 
+nodist_cheese_HEADERS = \
+       src/cheese-resource.h
+
 noinst_HEADERS = \
        src/thumbview/cheese-thumb-view.h \
        src/thumbview/cheese-thumbnail.h \
@@ -298,7 +310,6 @@ gsettings_SCHEMAS = data/org.gnome.Cheese.gschema.xml
 @GSETTINGS_RULES@
 
 dist_pkgdata_DATA = \
-       data/cheese.css \
        data/cheese-main-window.ui \
        data/cheese-prefs.ui \
        data/cheese-viewport.json
@@ -469,7 +480,8 @@ dist_noinst_DATA = \
        ChangeLog.pre-git \
        $(desktop_in_files) \
        $(gsettings_SCHEMAS) \
-       $(service_in_files) \
+       $(noinst_resource_files) \
+       data/cheese.gresource.xml \
        build-aux/test-driver \
        $(gtkdoc_srcdir)/cheese-docs.xml \
        $(gtkdoc_srcdir)/cheese-sections.txt \
@@ -497,7 +509,9 @@ CLEANFILES = \
        $(pkgconfig_DATA) \
        $(enum_data) \
        $(gir_DATA) \
-       $(typelib_DATA)
+       $(typelib_DATA) \
+       src/cheese-resource.c \
+       src/cheese-resource.h
 
 DISTCLEANFILES = \
        libcheese_la_vala.stamp \
diff --git a/configure.ac b/configure.ac
index 92ef872..54417e5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -124,6 +124,9 @@ PKG_CHECK_MODULES([CHEESE_GTK],
    $UDEV_REQUIRED
    $GNOME_VIDEO_EFFECTS_REQUIRED])
 
+# Resources.
+AC_SUBST([GLIB_COMPILE_RESOURCES], [`$PKG_CONFIG --variable glib_compile_resources gio-2.0`])
+
 # Recommend some runtime GStreamer plugins.
 AC_PATH_PROGS([GST_INSPECT], [gst-inspect-1.0], [notfound])
 AS_IF([test "x$GST_INSPECT" = "xnotfound"],
diff --git a/data/cheese.gresource.xml b/data/cheese.gresource.xml
new file mode 100644
index 0000000..d316bdd
--- /dev/null
+++ b/data/cheese.gresource.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix='/org/gnome/Cheese'>
+    <file>cheese.css</file>
+  </gresource>
+</gresources>
+
diff --git a/src/cheese-window.vala b/src/cheese-window.vala
index 2d89270..e5cfb93 100644
--- a/src/cheese-window.vala
+++ b/src/cheese-window.vala
@@ -1210,16 +1210,18 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
     thumb_nav  = new Eog.ThumbNav (thumb_view, false);
         thumbnail_popup.attach_to_widget (thumb_view, null);
 
-    Gtk.CssProvider css;
-    try
-    {
-      css = new Gtk.CssProvider();
-      css.load_from_path (GLib.Path.build_filename (Config.PACKAGE_DATADIR, "cheese.css"));
-    }
-    catch (Error e)
-    {
-      stdout.printf ("Error: %s\n", e.message);
-    }
+        Gtk.CssProvider css;
+        try
+        {
+            var file = File.new_for_uri ("resource:///org/gnome/Cheese/cheese.css");
+            css = new Gtk.CssProvider ();
+            css.load_from_file (file);
+        }
+        catch (Error e)
+        {
+            // TODO: Use parsing-error signal.
+            error ("Error parsing CSS: %s\n", e.message);
+        }
 
     Gtk.StyleContext.add_provider_for_screen (screen, css, STYLE_PROVIDER_PRIORITY_USER);
 


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