Mercurial > cropper
comparison support.c @ 0:ca9155129253
initial commit
code base: gthumb_crop.glade and generated code from it with glade
author | meillo@marmaro.de |
---|---|
date | Tue, 04 Dec 2007 16:48:51 +0100 |
parents | |
children | 80535e4deaa4 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:ca9155129253 |
---|---|
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 |