gtk-demo: Port iconview example to use resources
This commit is contained in:
		@ -115,6 +115,8 @@ RESOURCES=	application.ui			\
 | 
			
		||||
		demo.ui				\
 | 
			
		||||
		menus.ui			\
 | 
			
		||||
		theming.ui			\
 | 
			
		||||
		gnome-fs-directory.png		\
 | 
			
		||||
		gnome-fs-regular.png		\
 | 
			
		||||
		gtk-logo-24.png			\
 | 
			
		||||
		gtk-logo-48.png			\
 | 
			
		||||
		gtk-logo-rgb.gif		\
 | 
			
		||||
@ -133,8 +135,6 @@ IMAGEFILES=	alphatest.png		\
 | 
			
		||||
		floppybuddy.gif		\
 | 
			
		||||
		gnome-applets.png	\
 | 
			
		||||
		gnome-calendar.png	\
 | 
			
		||||
		gnome-fs-directory.png	\
 | 
			
		||||
		gnome-fs-regular.png	\
 | 
			
		||||
		gnome-foot.png		\
 | 
			
		||||
		gnome-gimp.png		\
 | 
			
		||||
		gnome-gmush.png		\
 | 
			
		||||
 | 
			
		||||
@ -49,6 +49,10 @@
 | 
			
		||||
  <gresource prefix="/css_shadows">
 | 
			
		||||
    <file alias="gtk.css">css_shadows.css</file>
 | 
			
		||||
  </gresource>
 | 
			
		||||
  <gresource prefix="/iconview">
 | 
			
		||||
    <file preprocess="to-pixdata">gnome-fs-directory.png</file>
 | 
			
		||||
    <file preprocess="to-pixdata">gnome-fs-regular.png</file>
 | 
			
		||||
  </gresource>
 | 
			
		||||
  <gresource prefix="/sources">
 | 
			
		||||
    <file>application.c</file>
 | 
			
		||||
    <file>appwindow.c</file>
 | 
			
		||||
 | 
			
		||||
@ -11,8 +11,8 @@
 | 
			
		||||
 | 
			
		||||
static GtkWidget *window = NULL;
 | 
			
		||||
 | 
			
		||||
#define FOLDER_NAME "gnome-fs-directory.png"
 | 
			
		||||
#define FILE_NAME "gnome-fs-regular.png"
 | 
			
		||||
#define FOLDER_NAME "/iconview/gnome-fs-directory.png"
 | 
			
		||||
#define FILE_NAME "/iconview/gnome-fs-regular.png"
 | 
			
		||||
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
@ -29,36 +29,18 @@ gchar *parent;
 | 
			
		||||
GtkToolItem *up_button;
 | 
			
		||||
 | 
			
		||||
/* Loads the images for the demo and returns whether the operation succeeded */
 | 
			
		||||
static gboolean
 | 
			
		||||
load_pixbufs (GError **error)
 | 
			
		||||
static void
 | 
			
		||||
load_pixbufs (void)
 | 
			
		||||
{
 | 
			
		||||
  char *filename;
 | 
			
		||||
 | 
			
		||||
  if (file_pixbuf)
 | 
			
		||||
    return TRUE; /* already loaded earlier */
 | 
			
		||||
    return; /* already loaded earlier */
 | 
			
		||||
 | 
			
		||||
  /* 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.
 | 
			
		||||
   */
 | 
			
		||||
  filename = demo_find_file (FILE_NAME, error);
 | 
			
		||||
  if (!filename)
 | 
			
		||||
    return FALSE; /* note that "error" was filled in and returned */
 | 
			
		||||
  file_pixbuf = gdk_pixbuf_new_from_resource (FILE_NAME, NULL);
 | 
			
		||||
  /* resources must load successfully */
 | 
			
		||||
  g_assert (file_pixbuf);
 | 
			
		||||
 | 
			
		||||
  file_pixbuf = gdk_pixbuf_new_from_file (filename, error);
 | 
			
		||||
  g_free (filename);
 | 
			
		||||
 | 
			
		||||
  if (!file_pixbuf)
 | 
			
		||||
    return FALSE; /* Note that "error" was filled with a GError */
 | 
			
		||||
 | 
			
		||||
  filename = demo_find_file (FOLDER_NAME, error);
 | 
			
		||||
  if (!filename)
 | 
			
		||||
    return FALSE; /* note that "error" was filled in and returned */
 | 
			
		||||
 | 
			
		||||
  folder_pixbuf = gdk_pixbuf_new_from_file (filename, error);
 | 
			
		||||
  g_free (filename);
 | 
			
		||||
 | 
			
		||||
  return TRUE;
 | 
			
		||||
  folder_pixbuf = gdk_pixbuf_new_from_resource (FOLDER_NAME, NULL);
 | 
			
		||||
  g_assert (folder_pixbuf);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@ -261,7 +243,12 @@ do_iconview (GtkWidget *do_widget)
 | 
			
		||||
{
 | 
			
		||||
  if (!window)
 | 
			
		||||
    {
 | 
			
		||||
      GError *error;
 | 
			
		||||
      GtkWidget *sw;
 | 
			
		||||
      GtkWidget *icon_view;
 | 
			
		||||
      GtkListStore *store;
 | 
			
		||||
      GtkWidget *vbox;
 | 
			
		||||
      GtkWidget *tool_bar;
 | 
			
		||||
      GtkToolItem *home_button;
 | 
			
		||||
 | 
			
		||||
      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 | 
			
		||||
      gtk_window_set_default_size (GTK_WINDOW (window), 650, 400);
 | 
			
		||||
@ -273,33 +260,7 @@ do_iconview (GtkWidget *do_widget)
 | 
			
		||||
      g_signal_connect (window, "destroy",
 | 
			
		||||
                        G_CALLBACK (close_window), NULL);
 | 
			
		||||
 | 
			
		||||
      error = NULL;
 | 
			
		||||
      if (!load_pixbufs (&error))
 | 
			
		||||
        {
 | 
			
		||||
          GtkWidget *dialog;
 | 
			
		||||
 | 
			
		||||
          dialog = gtk_message_dialog_new (GTK_WINDOW (window),
 | 
			
		||||
                                           GTK_DIALOG_DESTROY_WITH_PARENT,
 | 
			
		||||
                                           GTK_MESSAGE_ERROR,
 | 
			
		||||
                                           GTK_BUTTONS_CLOSE,
 | 
			
		||||
                                           "Failed to load an image: %s",
 | 
			
		||||
                                           error->message);
 | 
			
		||||
 | 
			
		||||
          g_error_free (error);
 | 
			
		||||
 | 
			
		||||
          g_signal_connect (dialog, "response",
 | 
			
		||||
                            G_CALLBACK (gtk_widget_destroy), NULL);
 | 
			
		||||
 | 
			
		||||
          gtk_widget_show (dialog);
 | 
			
		||||
        }
 | 
			
		||||
      else
 | 
			
		||||
        {
 | 
			
		||||
          GtkWidget *sw;
 | 
			
		||||
          GtkWidget *icon_view;
 | 
			
		||||
          GtkListStore *store;
 | 
			
		||||
          GtkWidget *vbox;
 | 
			
		||||
          GtkWidget *tool_bar;
 | 
			
		||||
          GtkToolItem *home_button;
 | 
			
		||||
      load_pixbufs ();
 | 
			
		||||
 | 
			
		||||
      vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
 | 
			
		||||
      gtk_container_add (GTK_CONTAINER (window), vbox);
 | 
			
		||||
@ -357,7 +318,6 @@ do_iconview (GtkWidget *do_widget)
 | 
			
		||||
 | 
			
		||||
      gtk_widget_grab_focus (icon_view);
 | 
			
		||||
    }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (!gtk_widget_get_visible (window))
 | 
			
		||||
    gtk_widget_show_all (window);
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user