[gtk+] gtk-demo: Port appwindow example to resources



commit cf6a40830c76bc8c48e4e74841a11fe30f902971
Author: Benjamin Otte <otte redhat com>
Date:   Tue Jan 29 17:14:34 2013 +0100

    gtk-demo: Port appwindow example to resources

 demos/gtk-demo/Makefile.am        |    1 +
 demos/gtk-demo/appwindow.c        |   60 +++++++++++-------------------------
 demos/gtk-demo/demo.gresource.xml |    3 ++
 3 files changed, 23 insertions(+), 41 deletions(-)
---
diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am
index 7e23da6..eac762b 100644
--- a/demos/gtk-demo/Makefile.am
+++ b/demos/gtk-demo/Makefile.am
@@ -117,6 +117,7 @@ RESOURCES=	application.ui			\
 		theming.ui			\
 		gtk-logo-24.png			\
 		gtk-logo-48.png			\
+		gtk-logo-rgb.gif		\
 		css_accordion.css		\
 		css_basics.css			\
 		css_multiplebgs.css		\
diff --git a/demos/gtk-demo/appwindow.c b/demos/gtk-demo/appwindow.c
index 648c2ab..ffd1721 100644
--- a/demos/gtk-demo/appwindow.c
+++ b/demos/gtk-demo/appwindow.c
@@ -82,7 +82,6 @@ about_cb (GtkAction *action,
           GtkWidget *window)
 {
   GdkPixbuf *pixbuf, *transparent;
-  gchar *filename;
 
   const gchar *authors[] = {
     "Peter Mattis",
@@ -100,16 +99,11 @@ about_cb (GtkAction *action,
     NULL
   };
 
-  pixbuf = NULL;
-  transparent = NULL;
-  filename = demo_find_file ("gtk-logo-rgb.gif", NULL);
-  if (filename)
-    {
-      pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
-      g_free (filename);
-      transparent = gdk_pixbuf_add_alpha (pixbuf, TRUE, 0xff, 0xff, 0xff);
-      g_object_unref (pixbuf);
-    }
+  pixbuf = gdk_pixbuf_new_from_resource ("/appwindow/gtk-logo-rgb.gif", NULL);
+  /* We asser the existence of the pixbuf as we load it from a custom resource. */
+  g_assert (pixbuf);
+  transparent = gdk_pixbuf_add_alpha (pixbuf, TRUE, 0xff, 0xff, 0xff);
+  g_object_unref (pixbuf);
 
   gtk_show_about_dialog (GTK_WINDOW (window),
                          "program-name", "GTK+ Code Demos",
@@ -309,7 +303,8 @@ register_stock_icons (void)
     {
       GdkPixbuf *pixbuf;
       GtkIconFactory *factory;
-      char *filename;
+      GtkIconSet *icon_set;
+      GdkPixbuf *transparent;
 
       static GtkStockItem items[] = {
         { "demo-gtk-logo",
@@ -326,35 +321,18 @@ register_stock_icons (void)
       factory = gtk_icon_factory_new ();
       gtk_icon_factory_add_default (factory);
 
-      /* demo_find_file() looks in the current directory first,
-       * so you can run gtk-demo without installing GTK, then looks
-       * in the location where the file is installed.
-       */
-      pixbuf = NULL;
-      filename = demo_find_file ("gtk-logo-rgb.gif", NULL);
-      if (filename)
-        {
-          pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
-          g_free (filename);
-        }
-
-      /* Register icon to accompany stock item */
-      if (pixbuf != NULL)
-        {
-          GtkIconSet *icon_set;
-          GdkPixbuf *transparent;
+      pixbuf = gdk_pixbuf_new_from_resource ("/appwindow/gtk-logo-rgb.gif", NULL);
+      /* We assert the existence of the pixbuf as we load it from a custom resource. */
+      g_assert (pixbuf);
 
-          /* The gtk-logo-rgb icon has a white background, make it transparent */
-          transparent = gdk_pixbuf_add_alpha (pixbuf, TRUE, 0xff, 0xff, 0xff);
+      /* The gtk-logo-rgb icon has a white background, make it transparent */
+      transparent = gdk_pixbuf_add_alpha (pixbuf, TRUE, 0xff, 0xff, 0xff);
 
-          icon_set = gtk_icon_set_new_from_pixbuf (transparent);
-          gtk_icon_factory_add (factory, "demo-gtk-logo", icon_set);
-          gtk_icon_set_unref (icon_set);
-          g_object_unref (pixbuf);
-          g_object_unref (transparent);
-        }
-      else
-        g_warning ("failed to load GTK logo for toolbar");
+      icon_set = gtk_icon_set_new_from_pixbuf (transparent);
+      gtk_icon_factory_add (factory, "demo-gtk-logo", icon_set);
+      gtk_icon_set_unref (icon_set);
+      g_object_unref (pixbuf);
+      g_object_unref (transparent);
 
       /* Drop our reference to the factory, GTK will hold a reference. */
       g_object_unref (factory);
diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml
index 33c0962..03e30e7 100644
--- a/demos/gtk-demo/demo.gresource.xml
+++ b/demos/gtk-demo/demo.gresource.xml
@@ -8,6 +8,9 @@
     <file preprocess="xml-stripblanks">application.ui</file>
     <file preprocess="xml-stripblanks">menus.ui</file>
   </gresource>
+  <gresource prefix="/appwindow">
+    <file preprocess="to-pixdata">gtk-logo-rgb.gif</file>
+  </gresource>
   <gresource prefix="/">
     <file>cssview.css</file>
     <file>reset.css</file>



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