Annotation of sbbs/src/sbbs3/gtkchat/support.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.