annotate support.c @ 6:f53ce3b28bb4

mercurial ignores JPG and PNG now, so I can store them in this directory for testing
author meillo@marmaro.de
date Fri, 07 Dec 2007 21:38:25 +0100
parents e359bea4c8ac
children 5e282003f0c1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
1 #include <sys/types.h>
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
2 #include <sys/stat.h>
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
3 #include <unistd.h>
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
4 #include <string.h>
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
5 #include <stdio.h>
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
6
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
7 #include <gtk/gtk.h>
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
8
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
9 #include "support.h"
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
10
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
11
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
12 GtkWidget* lookup_widget(GtkWidget* widget, const gchar* widget_name) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
13 GtkWidget* parent;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
14 GtkWidget* found_widget;
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
15
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
16 for (;;) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
17 if (GTK_IS_MENU (widget)) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
18 parent = gtk_menu_get_attach_widget (GTK_MENU (widget));
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
19 } else {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
20 parent = widget->parent;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
21 }
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
22 if (!parent) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
23 parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey");
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
24 }
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
25 if (parent == NULL) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
26 break;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
27 }
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
28 widget = parent;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
29 }
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
30
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
31 found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget), widget_name);
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
32 if (!found_widget) {
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
33 g_warning ("Widget not found: %s", widget_name);
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
34 }
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
35 return found_widget;
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
36 }
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
37
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
38
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
39 static GList *pixmaps_directories = NULL;
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
40
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
41 /* Use this function to set the directory containing installed pixmaps. */
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
42 void add_pixmap_directory(const gchar* directory) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
43 pixmaps_directories = g_list_prepend (pixmaps_directories, g_strdup (directory));
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
44 }
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
45
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
46 /* This is an internally used function to find pixmap files. */
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
47 static gchar* find_pixmap_file(const gchar* filename) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
48 GList* elem;
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
49
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
50 /* We step through each of the pixmaps directory to find it. */
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
51 elem = pixmaps_directories;
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
52 while (elem) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
53 gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data, G_DIR_SEPARATOR_S, filename);
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
54 if (g_file_test (pathname, G_FILE_TEST_EXISTS)) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
55 return pathname;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
56 }
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
57 g_free (pathname);
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
58 elem = elem->next;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
59 }
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
60 return NULL;
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
61 }
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
62
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
63
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
64 /* This is an internally used function to create pixmaps. */
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
65 GtkWidget* create_pixmap(GtkWidget* widget, const gchar* filename) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
66 gchar* pathname = NULL;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
67 GtkWidget* pixmap;
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
68
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
69 if (!filename || !filename[0]) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
70 return gtk_image_new ();
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
71 }
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
72
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
73 pathname = find_pixmap_file (filename);
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
74
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
75 if (!pathname) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
76 g_warning ("Couldn't find pixmap file: %s", filename);
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
77 return gtk_image_new ();
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
78 }
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
79
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
80 pixmap = gtk_image_new_from_file (pathname);
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
81 g_free(pathname);
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
82 return pixmap;
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
83 }
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
84
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
85
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
86 /* This is an internally used function to create pixmaps. */
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
87 GdkPixbuf* create_pixbuf(const gchar* filename) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
88 gchar* pathname = NULL;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
89 GdkPixbuf* pixbuf;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
90 GError* error = NULL;
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
91
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
92 if (!filename || !filename[0]) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
93 return NULL;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
94 }
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
95
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
96 pathname = find_pixmap_file(filename);
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
97
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
98 if (!pathname) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
99 g_warning ("Couldn't find pixmap file: %s", filename);
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
100 return NULL;
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
101 }
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
102
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
103 pixbuf = gdk_pixbuf_new_from_file (pathname, &error);
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
104 if (!pixbuf) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
105 fprintf(stderr, "Failed to load pixbuf file: %s: %s\n", pathname, error->message);
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
106 g_error_free(error);
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
107 }
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
108 g_free(pathname);
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
109 return pixbuf;
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
110 }
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
111
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
112
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
113 /* This is used to set ATK action descriptions. */
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
114 void glade_set_atk_action_description(AtkAction* action, const gchar* action_name, const gchar* description) {
2
e359bea4c8ac added code for ratio swap; new names for ratio operations; added main.h; some more
meillo@marmaro.de
parents: 1
diff changeset
115 gint n_actions;
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
116 gint i;
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
117
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
118 n_actions = atk_action_get_n_actions (action);
1
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
119 for (i = 0; i < n_actions; i++) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
120 if (!strcmp (atk_action_get_name (action, i), action_name)) {
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
121 atk_action_set_description (action, i, description);
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
122 }
80535e4deaa4 nicer code formating
meillo@marmaro.de
parents: 0
diff changeset
123 }
0
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
124 }
ca9155129253 initial commit
meillo@marmaro.de
parents:
diff changeset
125