home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 June / ccd0605.iso / LINUX / gopchop-1.1.7.tar.tar / gopchop-1.1.7.tar / gopchop-1.1.7 / src / support.c < prev    next >
C/C++ Source or Header  |  2005-05-01  |  4KB  |  145 lines

  1. /*
  2.  * DO NOT EDIT THIS FILE - it is generated by Glade.
  3.  */
  4.  
  5. #ifdef HAVE_CONFIG_H
  6. #  include <config.h>
  7. #endif
  8.  
  9. #include <sys/types.h>
  10. #include <sys/stat.h>
  11. #include <unistd.h>
  12. #include <string.h>
  13. #include <stdio.h>
  14.  
  15. #include <gtk/gtk.h>
  16.  
  17. #include "support.h"
  18.  
  19. GtkWidget*
  20. lookup_widget                          (GtkWidget       *widget,
  21.                                         const gchar     *widget_name)
  22. {
  23.   GtkWidget *parent, *found_widget;
  24.  
  25.   for (;;)
  26.     {
  27.       if (GTK_IS_MENU (widget))
  28.         parent = gtk_menu_get_attach_widget (GTK_MENU (widget));
  29.       else
  30.         parent = widget->parent;
  31.       if (!parent)
  32.         parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey");
  33.       if (parent == NULL)
  34.         break;
  35.       widget = parent;
  36.     }
  37.  
  38.   found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget),
  39.                                                  widget_name);
  40.   if (!found_widget)
  41.     g_warning ("Widget not found: %s", widget_name);
  42.   return found_widget;
  43. }
  44.  
  45. static GList *pixmaps_directories = NULL;
  46.  
  47. /* Use this function to set the directory containing installed pixmaps. */
  48. void
  49. add_pixmap_directory                   (const gchar     *directory)
  50. {
  51.   pixmaps_directories = g_list_prepend (pixmaps_directories,
  52.                                         g_strdup (directory));
  53. }
  54.  
  55. /* This is an internally used function to find pixmap files. */
  56. static gchar*
  57. find_pixmap_file                       (const gchar     *filename)
  58. {
  59.   GList *elem;
  60.  
  61.   /* We step through each of the pixmaps directory to find it. */
  62.   elem = pixmaps_directories;
  63.   while (elem)
  64.     {
  65.       gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data,
  66.                                          G_DIR_SEPARATOR_S, filename);
  67.       if (g_file_test (pathname, G_FILE_TEST_EXISTS))
  68.         return pathname;
  69.       g_free (pathname);
  70.       elem = elem->next;
  71.     }
  72.   return NULL;
  73. }
  74.  
  75. /* This is an internally used function to create pixmaps. */
  76. GtkWidget*
  77. create_pixmap                          (GtkWidget       *widget,
  78.                                         const gchar     *filename)
  79. {
  80.   gchar *pathname = NULL;
  81.   GtkWidget *pixmap;
  82.  
  83.   if (!filename || !filename[0])
  84.       return gtk_image_new ();
  85.  
  86.   pathname = find_pixmap_file (filename);
  87.  
  88.   if (!pathname)
  89.     {
  90.       g_warning (_("Couldn't find pixmap file: %s"), filename);
  91.       return gtk_image_new ();
  92.     }
  93.  
  94.   pixmap = gtk_image_new_from_file (pathname);
  95.   g_free (pathname);
  96.   return pixmap;
  97. }
  98.  
  99. /* This is an internally used function to create pixmaps. */
  100. GdkPixbuf*
  101. create_pixbuf                          (const gchar     *filename)
  102. {
  103.   gchar *pathname = NULL;
  104.   GdkPixbuf *pixbuf;
  105.   GError *error = NULL;
  106.  
  107.   if (!filename || !filename[0])
  108.       return NULL;
  109.  
  110.   pathname = find_pixmap_file (filename);
  111.  
  112.   if (!pathname)
  113.     {
  114.       g_warning (_("Couldn't find pixmap file: %s"), filename);
  115.       return NULL;
  116.     }
  117.  
  118.   pixbuf = gdk_pixbuf_new_from_file (pathname, &error);
  119.   if (!pixbuf)
  120.     {
  121.       fprintf (stderr, "Failed to load pixbuf file: %s: %s\n",
  122.                pathname, error->message);
  123.       g_error_free (error);
  124.     }
  125.   g_free (pathname);
  126.   return pixbuf;
  127. }
  128.  
  129. /* This is used to set ATK action descriptions. */
  130. void
  131. glade_set_atk_action_description       (AtkAction       *action,
  132.                                         const gchar     *action_name,
  133.                                         const gchar     *description)
  134. {
  135.   gint n_actions, i;
  136.  
  137.   n_actions = atk_action_get_n_actions (action);
  138.   for (i = 0; i < n_actions; i++)
  139.     {
  140.       if (!strcmp (atk_action_get_name (action, i), action_name))
  141.         atk_action_set_description (action, i, description);
  142.     }
  143. }
  144.  
  145.