]> Pileus Git - ~andy/gtk/commitdiff
gtk-demo: Port appwindow example to resources
authorBenjamin Otte <otte@redhat.com>
Tue, 29 Jan 2013 16:14:34 +0000 (17:14 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 1 Feb 2013 16:42:44 +0000 (17:42 +0100)
demos/gtk-demo/Makefile.am
demos/gtk-demo/appwindow.c
demos/gtk-demo/demo.gresource.xml

index 7e23da63f28425e0e26b0ad561a129ae3eb668d3..eac762b480a3c41e9631a31929efecb1d8551cc4 100644 (file)
@@ -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             \
index 648c2ab102eb5ebdf874a4d8b23478a42ab7799e..ffd17218665e9fa1a3ba4574add8b982ef4f7ba6 100644 (file)
@@ -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);
index 33c0962a626486b405349c6bf45c38d38b1eea26..03e30e71e7dd84da42c18efb310370f9171cf5ca 100644 (file)
@@ -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>