gtk2_support.c
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:4k
源码类别:

多媒体

开发平台:

MultiPlatform

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