annotate src/ui_misc.c @ 448:a73cc0fa14d0

Use explicit names for mouse buttons instead of numbers. MOUSE_BUTTON_LEFT = 1 MOUSE_BUTTON_MIDDLE = 2 MOUSE_BUTTON_RIGHT = 3 It makes the code easier to read.
author zas_
date Sun, 20 Apr 2008 21:30:36 +0000
parents 4b2d7f9af171
children 48c8e49b571c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2 * (SLIK) SimpLIstic sKin functions
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3 * (C) 2004 John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
4 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
5 * Author: John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
6 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
7 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
8 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
9 * This software comes with no warranty of any kind, use at your own risk!
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
10 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
11
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
12 #ifdef HAVE_CONFIG_H
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
13 # include "config.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
14 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
15 #include "intl.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
16
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
17 #include <stdio.h>
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
18 #include <stdlib.h>
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
19 #include <string.h>
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
20
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
21 #include <gtk/gtk.h>
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
22 #include <gdk/gdkkeysyms.h>
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
23
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 442
diff changeset
24 #include "main.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
25 #include "ui_misc.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
26
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
27 #include "ui_bookmark.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
28
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
29
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
30 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
31 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
32 * widget and layout utilities
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
33 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
34 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
35
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
36 GtkWidget *pref_box_new(GtkWidget *parent_box, gint fill,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
37 GtkOrientation orientation, gint padding)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
38 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
39 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
40
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
41 if (orientation == GTK_ORIENTATION_HORIZONTAL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
42 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
43 box = gtk_hbox_new(FALSE, padding);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
44 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
45 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
46 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
47 box = gtk_vbox_new(FALSE, padding);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
48 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
49
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
50 gtk_box_pack_start(GTK_BOX(parent_box), box, fill, fill, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
51 gtk_widget_show(box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
52
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
53 return box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
54 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
55
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
56 GtkWidget *pref_group_new(GtkWidget *parent_box, gint fill,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
57 const gchar *text, GtkOrientation orientation)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
58 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
59 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
60 GtkWidget *vbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
61 GtkWidget *hbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
62 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
63
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
64 vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
65
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
66 /* add additional spacing if necessary */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
67 if (GTK_IS_VBOX(parent_box) && GTK_BOX(parent_box)->children != NULL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
68 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
69 pref_spacer(vbox, PREF_PAD_GROUP - PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
70 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
71
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
72 gtk_box_pack_start(GTK_BOX(parent_box), vbox, fill, fill, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
73 gtk_widget_show(vbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
74
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
75 label = gtk_label_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
76 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
77 pref_label_bold(label, TRUE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
78
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
79 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
80 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
81
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
82 hbox = gtk_hbox_new(FALSE, PREF_PAD_INDENT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
83 gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
84 gtk_widget_show(hbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
85
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
86 /* indent using empty box */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
87 pref_spacer(hbox, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
88
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
89 if (orientation == GTK_ORIENTATION_HORIZONTAL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
90 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
91 box = gtk_hbox_new(FALSE, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
92 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
93 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
94 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
95 box = gtk_vbox_new(FALSE, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
96 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
97 gtk_box_pack_start(GTK_BOX(hbox), box, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
98 gtk_widget_show(box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
99
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
100 g_object_set_data(G_OBJECT(box), "pref_group", vbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
101
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
102 return box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
103 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
104
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
105 GtkWidget *pref_group_parent(GtkWidget *child)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
106 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
107 GtkWidget *parent;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
108
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
109 parent = child;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
110 while (parent)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
111 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
112 GtkWidget *group;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
113
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
114 group = g_object_get_data(G_OBJECT(parent), "pref_group");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
115 if (group && GTK_IS_WIDGET(group)) return group;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
116
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
117 parent = gtk_widget_get_parent(parent);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
118 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
119
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
120 return child;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
121 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
122
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
123 GtkWidget *pref_frame_new(GtkWidget *parent_box, gint fill,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
124 const gchar *text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
125 GtkOrientation orientation, gint padding)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
126 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
127 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
128 GtkWidget *frame = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
129
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
130 frame = gtk_frame_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
131 gtk_box_pack_start(GTK_BOX(parent_box), frame, fill, fill, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
132 gtk_widget_show(frame);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
133
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
134 if (orientation == GTK_ORIENTATION_HORIZONTAL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
135 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
136 box = gtk_hbox_new(FALSE, padding);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
137 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
138 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
139 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
140 box = gtk_vbox_new(FALSE, padding);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
141 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
142 gtk_container_add(GTK_CONTAINER(frame), box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
143 gtk_container_set_border_width(GTK_CONTAINER(box), PREF_PAD_BORDER);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
144 gtk_widget_show(box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
145
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
146 return box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
147 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
148
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
149 GtkWidget *pref_spacer(GtkWidget *parent_box, gint padding)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
150 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
151 GtkWidget *spacer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
152
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
153 spacer = gtk_hbox_new(FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
154 gtk_box_pack_start(GTK_BOX(parent_box), spacer, FALSE, FALSE, padding / 2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
155 gtk_widget_show(spacer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
156
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
157 return spacer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
158 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
159
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
160 GtkWidget *pref_line(GtkWidget *parent_box, gint padding)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
161 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
162 GtkWidget *spacer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
163
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
164 if (GTK_IS_HBOX(parent_box))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
165 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
166 spacer = gtk_vseparator_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
167 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
168 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
169 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
170 spacer = gtk_hseparator_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
171 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
172
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
173 gtk_box_pack_start(GTK_BOX(parent_box), spacer, FALSE, FALSE, padding / 2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
174 gtk_widget_show(spacer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
175
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
176 return spacer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
177 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
178
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
179 GtkWidget *pref_label_new(GtkWidget *parent_box, const gchar *text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
180 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
181 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
182
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
183 label = gtk_label_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
184 gtk_box_pack_start(GTK_BOX(parent_box), label, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
185 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
186
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
187 return label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
188 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
189
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
190 GtkWidget *pref_label_new_mnemonic(GtkWidget *parent_box, const gchar *text, GtkWidget *widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
191 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
192 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
193
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
194 label = gtk_label_new_with_mnemonic(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
195 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
196 gtk_box_pack_start(GTK_BOX(parent_box), label, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
197 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
198
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
199 return label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
200 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
201
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
202 void pref_label_bold(GtkWidget *label, gint bold, gint increase_size)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
203 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
204 PangoAttrList *pal;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
205 PangoAttribute *pa;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
206
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
207 if (!bold && !increase_size) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
208
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
209 pal = pango_attr_list_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
210
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
211 if (bold)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
212 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
213 pa = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
214 pa->start_index = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
215 pa->end_index = G_MAXINT;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
216 pango_attr_list_insert(pal, pa);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
217 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
218
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
219 if (increase_size)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
220 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
221 pa = pango_attr_scale_new(PANGO_SCALE_LARGE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
222 pa->start_index = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
223 pa->end_index = G_MAXINT;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
224 pango_attr_list_insert(pal, pa);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
225 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
226
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
227 gtk_label_set_attributes(GTK_LABEL(label), pal);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
228 pango_attr_list_unref(pal);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
229 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
230
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
231 GtkWidget *pref_button_new(GtkWidget *parent_box, const gchar *stock_id,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
232 const gchar *text, gint hide_stock_text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
233 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
234 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
235 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
236
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
237 if (stock_id && !text && !hide_stock_text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
238 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
239 button = gtk_button_new_from_stock(stock_id);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
240 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
241 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
242 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
243 GtkWidget *image = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
244 GtkWidget *label = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
245
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
246 button = gtk_button_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
247
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
248 if (stock_id) image = gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_BUTTON);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
249 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
250 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
251 label = gtk_label_new_with_mnemonic(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
252 gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
253 gtk_label_set_mnemonic_widget(GTK_LABEL(label), button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
254 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
255
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
256 if (image && label)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
257 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
258 GtkWidget *align;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
259 GtkWidget *hbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
260
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
261 hbox = gtk_hbox_new (FALSE, PREF_PAD_BUTTON_ICON_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
262
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
263 align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
264 gtk_container_add(GTK_CONTAINER(button), align);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
265 gtk_widget_show(align);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
266
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
267 gtk_container_add(GTK_CONTAINER(align), hbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
268 gtk_widget_show(hbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
269
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
270 gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
271 gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
272 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
273 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
274 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
275 if (image)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
276 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
277 gtk_container_add(GTK_CONTAINER(button), image);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
278 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
279 else if (label)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
280 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
281 gtk_container_add(GTK_CONTAINER(button), label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
282 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
283 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
284
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
285 if (image) gtk_widget_show(image);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
286 if (label) gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
287 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
288
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
289 if (func) g_signal_connect(G_OBJECT(button), "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
290
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
291 if (parent_box)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
292 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
293 gtk_box_pack_start(GTK_BOX(parent_box), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
294 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
295 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
296
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
297 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
298 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
299
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
300 static GtkWidget *real_pref_checkbox_new(GtkWidget *parent_box, const gchar *text, gint mnemonic_text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
301 gint active, GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
302 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
303 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
304
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
305 if (mnemonic_text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
306 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
307 button = gtk_check_button_new_with_mnemonic(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
308 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
309 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
310 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
311 button = gtk_check_button_new_with_label(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
312 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
313 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
314 if (func) g_signal_connect(G_OBJECT(button), "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
315
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
316 gtk_box_pack_start(GTK_BOX(parent_box), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
317 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
318
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
319 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
320 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
321
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
322 GtkWidget *pref_checkbox_new(GtkWidget *parent_box, const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
323 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
324 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
325 return real_pref_checkbox_new(parent_box, text, FALSE, active, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
326 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
327
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
328 GtkWidget *pref_checkbox_new_mnemonic(GtkWidget *parent_box, const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
329 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
330 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
331 return real_pref_checkbox_new(parent_box, text, TRUE, active, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
332 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
333
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
334 static void pref_checkbox_int_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
335 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
336 gint *result = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
337
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
338 *result = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
339 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
340
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
341 GtkWidget *pref_checkbox_new_int(GtkWidget *parent_box, const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
342 gint *result)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
343 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
344 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
345
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
346 button = pref_checkbox_new(parent_box, text, active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
347 G_CALLBACK(pref_checkbox_int_cb), result);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
348 *result = active;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
349
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
350 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
351 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
352
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
353 static void pref_checkbox_link_sensitivity_cb(GtkWidget *button, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
354 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
355 GtkWidget *widget = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
356
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
357 gtk_widget_set_sensitive(widget, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
358 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
359
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
360 void pref_checkbox_link_sensitivity(GtkWidget *button, GtkWidget *widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
361 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
362 g_signal_connect(G_OBJECT(button), "toggled",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
363 G_CALLBACK(pref_checkbox_link_sensitivity_cb), widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
364
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
365 pref_checkbox_link_sensitivity_cb(button, widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
366 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
367
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
368 static void pref_checkbox_link_sensitivity_swap_cb(GtkWidget *button, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
369 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
370 GtkWidget *widget = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
371
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
372 gtk_widget_set_sensitive(widget, !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
373 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
374
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
375 void pref_checkbox_link_sensitivity_swap(GtkWidget *button, GtkWidget *widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
376 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
377 g_signal_connect(G_OBJECT(button), "toggled",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
378 G_CALLBACK(pref_checkbox_link_sensitivity_swap_cb), widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
379
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
380 pref_checkbox_link_sensitivity_swap_cb(button, widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
381 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
382
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
383 static GtkWidget *real_pref_radiobutton_new(GtkWidget *parent_box, GtkWidget *sibling,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
384 const gchar *text, gint mnemonic_text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
385 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
386 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
387 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
388 GSList* group;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
389
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
390 if (sibling)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
391 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
392 group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(sibling));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
393 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
394 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
395 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
396 group = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
397 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
398
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
399 if (mnemonic_text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
400 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
401 button = gtk_radio_button_new_with_mnemonic(group, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
402 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
403 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
404 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
405 button = gtk_radio_button_new_with_label(group, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
406 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
407
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
408 if (active) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
409 if (func) g_signal_connect(G_OBJECT(button), "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
410
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
411 gtk_box_pack_start(GTK_BOX(parent_box), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
412 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
413
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
414 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
415 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
416
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
417 GtkWidget *pref_radiobutton_new(GtkWidget *parent_box, GtkWidget *sibling,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
418 const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
419 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
420 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
421 return real_pref_radiobutton_new(parent_box, sibling, text, FALSE, active, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
422 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
423
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
424 GtkWidget *pref_radiobutton_new_mnemonic(GtkWidget *parent_box, GtkWidget *sibling,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
425 const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
426 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
427 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
428 return real_pref_radiobutton_new(parent_box, sibling, text, TRUE, active, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
429 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
430
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
431 #define PREF_RADIO_VALUE_KEY "pref_radio_value"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
432
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
433 static void pref_radiobutton_int_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
434 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
435 gint *result = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
436
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
437 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
438 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
439 *result = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), PREF_RADIO_VALUE_KEY));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
440 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
441 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
442
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
443 GtkWidget *pref_radiobutton_new_int(GtkWidget *parent_box, GtkWidget *sibling,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
444 const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
445 gint *result, gint value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
446 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
447 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
448 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
449
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
450 button = pref_radiobutton_new(parent_box, sibling, text, active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
451 G_CALLBACK(pref_radiobutton_int_cb), result);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
452 g_object_set_data(G_OBJECT(button), PREF_RADIO_VALUE_KEY, GINT_TO_POINTER(value));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
453 if (active) *result = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
454
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
455 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
456 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
457
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
458 static GtkWidget *real_pref_spin_new(GtkWidget *parent_box, const gchar *text, const gchar *suffix,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
459 gint mnemonic_text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
460 gdouble min, gdouble max, gdouble step, gint digits,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
461 gdouble value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
462 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
463 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
464 GtkWidget *spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
465 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
466 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
467
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
468 box = pref_box_new(parent_box, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
469
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
470 spin = gtk_spin_button_new_with_range(min, max, step);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
471 gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
472 gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
473
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
474 if (func)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
475 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
476 g_signal_connect(G_OBJECT(spin), "value_changed", G_CALLBACK(func), data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
477 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
478
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
479 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
480 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
481 if (mnemonic_text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
482 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
483 label = pref_label_new_mnemonic(box, text, spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
484 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
485 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
486 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
487 label = pref_label_new(box, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
488 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
489 pref_link_sensitivity(label, spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
490 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
491
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
492 gtk_box_pack_start(GTK_BOX(box), spin, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
493 gtk_widget_show(spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
494
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
495 /* perhaps this should only be PREF_PAD_GAP distance from spinbutton ? */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
496 if (suffix)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
497 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
498 label = pref_label_new(box, suffix);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
499 pref_link_sensitivity(label, spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
500 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
501
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
502 return spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
503 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
504
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
505 GtkWidget *pref_spin_new(GtkWidget *parent_box, const gchar *text, const gchar *suffix,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
506 gdouble min, gdouble max, gdouble step, gint digits,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
507 gdouble value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
508 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
509 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
510 return real_pref_spin_new(parent_box, text, suffix, FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
511 min, max, step, digits, value, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
512 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
513
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
514 GtkWidget *pref_spin_new_mnemonic(GtkWidget *parent_box, const gchar *text, const gchar *suffix,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
515 gdouble min, gdouble max, gdouble step, gint digits,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
516 gdouble value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
517 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
518 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
519 return real_pref_spin_new(parent_box, text, suffix, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
520 min, max, step, digits, value, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
521 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
522
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
523 static void pref_spin_int_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
524 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
525 gint *var = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
526 *var = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
527 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
528
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
529 GtkWidget *pref_spin_new_int(GtkWidget *parent_box, const gchar *text, const gchar *suffix,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
530 gint min, gint max, gint step,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
531 gint value, gint *value_var)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
532 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
533 *value_var = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
534 return pref_spin_new(parent_box, text, suffix,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
535 (gdouble)min, (gdouble)max, (gdouble)step, 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
536 value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
537 G_CALLBACK(pref_spin_int_cb), value_var);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
538 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
539
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
540 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
541 void pref_spin_set_blocking(GtkWidget *spin, gdouble value, gpointer block_data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
542 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
543 g_signal_handlers_block_matched(G_OBJECT(spin), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, block_data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
544 gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
545 g_signal_handlers_unblock_matched(G_OBJECT(spin), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, block_data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
546 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
547 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
548
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
549 static void pref_link_sensitivity_cb(GtkWidget *watch, GtkStateType prev_state, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
550 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
551 GtkWidget *widget = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
552
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
553 gtk_widget_set_sensitive(widget, GTK_WIDGET_IS_SENSITIVE(watch));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
554 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
555
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
556 void pref_link_sensitivity(GtkWidget *widget, GtkWidget *watch)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
557 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
558 g_signal_connect(G_OBJECT(watch), "state_changed",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
559 G_CALLBACK(pref_link_sensitivity_cb), widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
560 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
561
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
562 void pref_signal_block_data(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
563 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
564 g_signal_handlers_block_matched(widget, G_SIGNAL_MATCH_DATA,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
565 0, 0, NULL, NULL, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
566 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
567
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
568 void pref_signal_unblock_data(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
569 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
570 g_signal_handlers_unblock_matched(widget, G_SIGNAL_MATCH_DATA,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
571 0, 0, NULL, NULL, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
572 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
573
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
574 GtkWidget *pref_table_new(GtkWidget *parent_box, gint columns, gint rows,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
575 gint homogenious, gint fill)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
576 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
577 GtkWidget *table;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
578
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
579 table = gtk_table_new(rows, columns, homogenious);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
580 gtk_table_set_row_spacings(GTK_TABLE(table), PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
581 gtk_table_set_col_spacings(GTK_TABLE(table), PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
582
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
583 if (parent_box)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
584 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
585 gtk_box_pack_start(GTK_BOX(parent_box), table, fill, fill, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
586 gtk_widget_show(table);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
587 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
588
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
589 return table;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
590 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
591
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
592 GtkWidget *pref_table_box(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
593 GtkOrientation orientation, const gchar *text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
594 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
595 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
596 GtkWidget *shell;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
597
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
598 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
599 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
600 shell = gtk_vbox_new(FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
601 box = pref_group_new(shell, TRUE, text, orientation);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
602 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
603 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
604 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
605 if (orientation == GTK_ORIENTATION_HORIZONTAL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
606 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
607 box = gtk_hbox_new(FALSE, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
608 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
609 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
610 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
611 box = gtk_vbox_new(FALSE, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
612 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
613 shell = box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
614 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
615
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
616 gtk_table_attach(GTK_TABLE(table), shell, column, column + 1, row, row + 1,
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 88
diff changeset
617 GTK_EXPAND | GTK_FILL, 0, 0, 0);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
618
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
619 gtk_widget_show(shell);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
620
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
621 return box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
622 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
623
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
624 GtkWidget *pref_table_label(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
625 const gchar *text, gfloat alignment)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
626 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
627 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
628 GtkWidget *align;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
629
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
630 align = gtk_alignment_new(alignment, 0.50, 0.0, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
631 gtk_table_attach(GTK_TABLE(table), align, column, column + 1, row, row + 1,
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 88
diff changeset
632 GTK_FILL, 0, 0, 0);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
633 gtk_widget_show(align);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
634 label = gtk_label_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
635 gtk_container_add(GTK_CONTAINER(align), label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
636 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
637
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
638 return label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
639 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
640
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
641 GtkWidget *pref_table_button(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
642 const gchar *stock_id, const gchar *text, gint hide_stock_text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
643 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
644 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
645 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
646
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
647 button = pref_button_new(NULL, stock_id, text, hide_stock_text, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
648 gtk_table_attach(GTK_TABLE(table), button, column, column + 1, row, row + 1,
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 88
diff changeset
649 GTK_FILL, 0, 0, 0);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
650 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
651
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
652 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
653 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
654
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
655 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
656 static GtkWidget *pref_table_checkbox(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
657 const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
658 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
659 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
660 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
661
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
662 button = gtk_check_button_new_with_label(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
663 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
664 if (func) g_signal_connect(G_OBJECT(button), "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
665
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
666 gtk_table_attach(GTK_TABLE(table), button, column, column + 1, row, row + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
667 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
668 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
669
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
670 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
671 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
672 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
673
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
674 GtkWidget *pref_table_spin(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
675 const gchar *text, const gchar *suffix,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
676 gdouble min, gdouble max, gdouble step, gint digits,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
677 gdouble value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
678 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
679 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
680 GtkWidget *spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
681 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
682 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
683
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
684 spin = gtk_spin_button_new_with_range(min, max, step);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
685 gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
686 gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
687 if (func)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
688 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
689 g_signal_connect(G_OBJECT(spin), "value_changed", G_CALLBACK(func), data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
690 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
691
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
692 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
693 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
694 label = pref_table_label(table, column, row, text, 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
695 pref_link_sensitivity(label, spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
696 column++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
697 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
698
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
699 if (suffix)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
700 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
701 box = gtk_hbox_new(FALSE, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
702 gtk_box_pack_start(GTK_BOX(box), spin, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
703 gtk_widget_show(spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
704
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
705 label = pref_label_new(box, suffix);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
706 pref_link_sensitivity(label, spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
707 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
708 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
709 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
710 box = spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
711 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
712
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
713 gtk_table_attach(GTK_TABLE(table), box, column, column + 1, row, row + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
714 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
715 gtk_widget_show(box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
716
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
717 return spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
718 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
719
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
720 static void pref_toolbar_destroy_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
721 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
722 GtkTooltips *tips = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
723
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
724 g_object_unref(G_OBJECT(tips));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
725 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
726
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
727 GtkWidget *pref_toolbar_new(GtkWidget *parent_box, GtkToolbarStyle style)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
728 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
729 GtkWidget *tbar;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
730 GtkTooltips *tips;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
731
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
732 tbar = gtk_toolbar_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
733 gtk_toolbar_set_style(GTK_TOOLBAR(tbar), style);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
734
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
735 if (parent_box)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
736 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
737 gtk_box_pack_start(GTK_BOX(parent_box), tbar, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
738 gtk_widget_show(tbar);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
739 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
740
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
741 tips = gtk_tooltips_new();
88
2099ee3f9a8d Fri Oct 27 19:45:32 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
742
2099ee3f9a8d Fri Oct 27 19:45:32 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
743 /* take ownership of tooltips */
2099ee3f9a8d Fri Oct 27 19:45:32 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
744 #ifdef GTK_OBJECT_FLOATING
2099ee3f9a8d Fri Oct 27 19:45:32 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
745 /* GTK+ < 2.10 */
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
746 g_object_ref(G_OBJECT(tips));
88
2099ee3f9a8d Fri Oct 27 19:45:32 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
747 gtk_object_sink(GTK_OBJECT(tips));
2099ee3f9a8d Fri Oct 27 19:45:32 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
748 #else
2099ee3f9a8d Fri Oct 27 19:45:32 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
749 /* GTK+ >= 2.10 */
2099ee3f9a8d Fri Oct 27 19:45:32 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
750 g_object_ref_sink(G_OBJECT(tips));
2099ee3f9a8d Fri Oct 27 19:45:32 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
751 #endif
2099ee3f9a8d Fri Oct 27 19:45:32 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
752
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
753 g_object_set_data(G_OBJECT(tbar), "tooltips", tips);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
754 g_signal_connect(G_OBJECT(tbar), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
755 G_CALLBACK(pref_toolbar_destroy_cb), tips);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
756
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
757 gtk_tooltips_enable(tips);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
758
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
759 return tbar;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
760 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
761
41
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
762 GtkWidget *pref_toolbar_button(GtkWidget *toolbar,
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
763 const gchar *stock_id, const gchar *label, gint toggle,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
764 const gchar *description,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
765 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
766 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
767 GtkWidget *item;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
768
41
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
769 if (toggle)
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
770 {
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
771 if (stock_id)
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
772 {
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
773 item = GTK_WIDGET(gtk_toggle_tool_button_new_from_stock(stock_id));
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
774 }
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
775 else
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
776 {
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
777 item = GTK_WIDGET(gtk_toggle_tool_button_new());
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
778 }
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
779 }
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
780 else
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
781 {
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
782 if (stock_id)
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
783 {
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
784 item = GTK_WIDGET(gtk_tool_button_new_from_stock(stock_id));
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
785 }
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
786 else
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
787 {
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
788 item = GTK_WIDGET(gtk_tool_button_new(NULL, NULL));
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
789 }
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
790 }
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
791 gtk_tool_button_set_use_underline(GTK_TOOL_BUTTON(item), TRUE);
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
792
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
793 if (label) gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
794
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
795 if (func) g_signal_connect(item, "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
796 gtk_container_add(GTK_CONTAINER(toolbar), item);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
797 gtk_widget_show(item);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
798
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
799 if (description)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
800 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
801 GtkTooltips *tips;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
802
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
803 tips = g_object_get_data(G_OBJECT(toolbar), "tooltips");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
804 gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(item), tips, description, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
805 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
806
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
807 return item;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
808 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
809
41
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
810 void pref_toolbar_button_set_icon(GtkWidget *button, GtkWidget *widget, const gchar *stock_id)
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
811 {
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
812 if (widget)
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
813 {
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
814 gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(button), widget);
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
815 }
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
816 else if (stock_id)
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
817 {
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
818 gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(button), stock_id);
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
819 }
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
820 }
6281cc38e5ca Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
821
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
822 GtkWidget *pref_toolbar_spacer(GtkWidget *toolbar)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
823 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
824 GtkWidget *item;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
825
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
826 item = GTK_WIDGET(gtk_separator_tool_item_new());
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
827 gtk_container_add(GTK_CONTAINER(toolbar), item);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
828 gtk_widget_show(item);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
829
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
830 return item;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
831 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
832
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
833
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
834 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
835 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
836 * date selection entry
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
837 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
838 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
839
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
840 #define DATE_SELECION_KEY "date_selection_data"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
841
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
842
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
843 typedef struct _DateSelection DateSelection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
844 struct _DateSelection
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
845 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
846 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
847
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
848 GtkWidget *spin_d;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
849 GtkWidget *spin_m;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
850 GtkWidget *spin_y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
851
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
852 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
853
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
854 GtkWidget *window;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
855 GtkWidget *calendar;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
856 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
857
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
858
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
859 static void date_selection_popup_hide(DateSelection *ds)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
860 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
861 if (!ds->window) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
862
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
863 if (GTK_WIDGET_HAS_GRAB(ds->window))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
864 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
865 gtk_grab_remove(ds->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
866 gdk_keyboard_ungrab(GDK_CURRENT_TIME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
867 gdk_pointer_ungrab(GDK_CURRENT_TIME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
868 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
869
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
870 gtk_widget_hide(ds->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
871
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
872 gtk_widget_destroy(ds->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
873 ds->window = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
874 ds->calendar = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
875
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
876 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ds->button), FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
877 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
878
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
879 static gint date_selection_popup_release_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
880 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
881 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
882
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
883 date_selection_popup_hide(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
884 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
885 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
886
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
887 static gint date_selection_popup_press_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
888 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
889 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
890 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
891 gint w, h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
892 gint xr, yr;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
893
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
894 xr = (gint)event->x_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
895 yr = (gint)event->y_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
896
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
897 gdk_window_get_origin(ds->window->window, &x, &y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
898 gdk_drawable_get_size(ds->window->window, &w, &h);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
899
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
900 if (xr < x || yr < y || xr > x + w || yr > y + h)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
901 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
902 g_signal_connect(G_OBJECT(ds->window), "button_release_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
903 G_CALLBACK(date_selection_popup_release_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
904 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
905 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
906
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
907 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
908 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
909
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
910 static void date_selection_popup_sync(DateSelection *ds)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
911 {
64
04ff0df3ad2f Mon Aug 15 17:13:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 41
diff changeset
912 guint day, month, year;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
913
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
914 gtk_calendar_get_date(GTK_CALENDAR(ds->calendar), &year, &month, &day);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
915 date_selection_set(ds->box, day, month + 1, year);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
916 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
917
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
918 static gint date_selection_popup_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
919 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
920 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
921
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
922 switch (event->keyval)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
923 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
924 case GDK_Return:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
925 case GDK_KP_Enter:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
926 case GDK_Tab:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
927 case GDK_ISO_Left_Tab:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
928 date_selection_popup_sync(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
929 date_selection_popup_hide(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
930 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
931 case GDK_Escape:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
932 date_selection_popup_hide(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
933 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
934 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
935 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
936 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
937
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
938 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
939 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
940
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
941 static void date_selection_day_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
942 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
943 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
944
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
945 date_selection_popup_sync(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
946 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
947
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
948 static void date_selection_doubleclick_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
949 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
950 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
951
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
952 date_selection_popup_hide(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
953 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
954
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
955 static void date_selection_popup(DateSelection *ds)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
956 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
957 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
958 gint wx, wy;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
959 gint day, month, year;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
960
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
961 if (ds->window) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
962
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
963 ds->window = gtk_window_new(GTK_WINDOW_POPUP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
964 gtk_window_set_resizable(GTK_WINDOW(ds->window), FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
965 g_signal_connect(G_OBJECT(ds->window), "button_press_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
966 G_CALLBACK(date_selection_popup_press_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
967 g_signal_connect(G_OBJECT(ds->window), "key_press_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
968 G_CALLBACK(date_selection_popup_keypress_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
969
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
970 ds->calendar = gtk_calendar_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
971 gtk_container_add(GTK_CONTAINER(ds->window), ds->calendar);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
972 gtk_widget_show(ds->calendar);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
973
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
974 date_selection_get(ds->box, &day, &month, &year);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
975 gtk_calendar_select_month(GTK_CALENDAR(ds->calendar), month - 1, year);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
976 gtk_calendar_select_day(GTK_CALENDAR(ds->calendar), day);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
977
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
978 g_signal_connect(G_OBJECT(ds->calendar), "day_selected",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
979 G_CALLBACK(date_selection_day_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
980 g_signal_connect(G_OBJECT(ds->calendar), "day_selected_double_click",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
981 G_CALLBACK(date_selection_doubleclick_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
982
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
983 gtk_widget_realize(ds->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
984
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
985 gdk_window_get_origin(ds->button->window, &wx, &wy);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
986
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
987 x = wx + ds->button->allocation.x + ds->button->allocation.width - ds->window->allocation.width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
988 y = wy + ds->button->allocation.y + ds->button->allocation.height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
989
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
990 if (y + ds->window->allocation.height > gdk_screen_height())
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
991 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
992 y = wy + ds->button->allocation.y - ds->window->allocation.height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
993 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
994 if (x < 0) x = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
995 if (y < 0) y = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
996
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
997 gtk_window_move(GTK_WINDOW(ds->window), x, y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
998 gtk_widget_show(ds->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
999
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1000 gtk_widget_grab_focus(ds->calendar);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1001 gdk_pointer_grab(ds->window->window, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1002 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_MOTION_MASK,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1003 NULL, NULL, GDK_CURRENT_TIME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1004 gdk_keyboard_grab(ds->window->window, TRUE, GDK_CURRENT_TIME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1005 gtk_grab_add(ds->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1006
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1007 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ds->button), TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1008 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1009
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1010 static void date_selection_button_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1011 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1012 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1013
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1014 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ds->button)) == (!ds->window))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1015 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1016 date_selection_popup(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1017 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1018 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1019
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1020 static void button_size_allocate_cb(GtkWidget *button, GtkAllocation *allocation, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1021 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1022 GtkWidget *spin = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1023
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1024 if (allocation->height > spin->requisition.height)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1025 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1026 GtkAllocation button_allocation;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1027
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1028 button_allocation = button->allocation;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1029 button_allocation.height = spin->requisition.height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1030 button_allocation.y = spin->allocation.y +
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1031 (spin->allocation.height - spin->requisition.height) / 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1032 gtk_widget_size_allocate(button, &button_allocation);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1033 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1034 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1035
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1036 static void spin_increase(GtkWidget *spin, gint value)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1037 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1038 GtkRequisition req;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1039
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1040 gtk_widget_size_request(spin, &req);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1041 gtk_widget_set_size_request(spin, req.width + value, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1042 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1043
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1044 static void date_selection_destroy_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1045 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1046 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1047
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1048 date_selection_popup_hide(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1049
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1050 g_free(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1051 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1052
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1053 GtkWidget *date_selection_new(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1054 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1055 DateSelection *ds;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1056 GtkWidget *arrow;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1057
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1058 ds = g_new0(DateSelection, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1059
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1060 ds->box = gtk_hbox_new(FALSE, 2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1061 g_signal_connect(G_OBJECT(ds->box), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1062 G_CALLBACK(date_selection_destroy_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1063
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1064 /* FIXME: use option menu with text format of month instead of a spin button */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1065 ds->spin_m = pref_spin_new(ds->box, NULL, NULL, 1, 12, 1, 0, 1, NULL, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1066 ds->spin_d = pref_spin_new(ds->box, NULL, NULL, 1, 31, 1, 0, 1, NULL, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1067 ds->spin_y = pref_spin_new(ds->box, NULL, NULL, 1900, 9999, 1, 0, 1900, NULL, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1068 spin_increase(ds->spin_y, 5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1069
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1070 ds->button = gtk_toggle_button_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1071 g_signal_connect(G_OBJECT(ds->button), "size_allocate",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1072 G_CALLBACK(button_size_allocate_cb), ds->spin_y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1073
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1074 arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1075 gtk_container_add(GTK_CONTAINER(ds->button), arrow);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1076 gtk_widget_show(arrow);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1077
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1078 gtk_box_pack_start(GTK_BOX(ds->box), ds->button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1079 g_signal_connect(G_OBJECT(ds->button), "clicked",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1080 G_CALLBACK(date_selection_button_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1081 gtk_widget_show(ds->button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1082
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1083 g_object_set_data(G_OBJECT(ds->box), DATE_SELECION_KEY, ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1084
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1085 return ds->box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1086 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 339
diff changeset
1087
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1088 void date_selection_set(GtkWidget *widget, gint day, gint month, gint year)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1089 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1090 DateSelection *ds;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1091
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1092 ds = g_object_get_data(G_OBJECT(widget), DATE_SELECION_KEY);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1093 if (!ds) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1094
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1095 gtk_spin_button_set_value(GTK_SPIN_BUTTON(ds->spin_d), (gdouble)day);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1096 gtk_spin_button_set_value(GTK_SPIN_BUTTON(ds->spin_m), (gdouble)month);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1097 gtk_spin_button_set_value(GTK_SPIN_BUTTON(ds->spin_y), (gdouble)year);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1098 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1099
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1100
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1101 void date_selection_get(GtkWidget *widget, gint *day, gint *month, gint *year)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1102 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1103 DateSelection *ds;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1104
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1105 ds = g_object_get_data(G_OBJECT(widget), DATE_SELECION_KEY);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1106 if (!ds) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1107
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1108 if (day) *day = gtk_spin_button_get_value(GTK_SPIN_BUTTON(ds->spin_d));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1109 if (month) *month = gtk_spin_button_get_value(GTK_SPIN_BUTTON(ds->spin_m));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1110 if (year) *year = gtk_spin_button_get_value(GTK_SPIN_BUTTON(ds->spin_y));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1111 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 339
diff changeset
1112
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1113 void date_selection_time_set(GtkWidget *widget, time_t t)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1114 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1115 struct tm *lt;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1116
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1117 lt = localtime(&t);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1118 if (!lt) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1119
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1120 date_selection_set(widget, lt->tm_mday, lt->tm_mon + 1, lt->tm_year + 1900);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1121 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1122
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1123 time_t date_selection_time_get(GtkWidget *widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1124 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1125 struct tm lt;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1126 gint day = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1127 gint month = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1128 gint year = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1129
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1130 date_selection_get(widget, &day, &month ,&year);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1131
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1132 lt.tm_sec = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1133 lt.tm_min = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1134 lt.tm_hour = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1135 lt.tm_mday = day;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1136 lt.tm_mon = month - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1137 lt.tm_year = year - 1900;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1138 lt.tm_isdst = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1139
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1140 return mktime(&lt);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1141 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1142
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1143
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1144 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1145 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1146 * Sizer, without using a GtkPaned
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1147 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1148 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1149
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1150 #define SIZER_DATA_KEY "sizer_data"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1151
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1152 typedef struct _SizerData SizerData;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1153 struct _SizerData
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1154 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1155 GtkWidget *sizer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1156 GtkWidget *parent;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1157 GtkWidget *bounding_widget;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1158 SizerPositionType position;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1159
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1160 gint hsize_min;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1161 gint hsize_max;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1162 gint vsize_min;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1163 gint vsize_max;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1164
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1165 gint in_drag;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1166 gint press_x;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1167 gint press_y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1168 gint press_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1169 gint press_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1170
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1171 gint handle_prelit;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1172 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1173
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1174
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1175 static gint sizer_default_handle_size(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1176 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1177 gint handle_size = 5;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1178 GtkWidget *paned;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1179 GtkStyle *style;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1180
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1181 paned = gtk_hpaned_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1182
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1183 style = gtk_rc_get_style(paned);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1184 gtk_widget_set_style(paned, style);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1185 gtk_widget_style_get(paned, "handle_size", &handle_size, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1186
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1187 gtk_widget_destroy(paned);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1188
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1189 return handle_size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1190 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1191
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1192 static gint sizer_motion_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1193 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1194 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1195 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1196 gint w, h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1197
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1198 if (!sd->in_drag) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1199
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1200 x = sd->press_x - bevent->x_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1201 y = sd->press_y - bevent->y_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1202
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1203 w = sd->press_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1204 h = sd->press_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1205
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1206 if (sd->position & SIZER_POS_LEFT)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1207 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1208 w += x;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1209 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1210 else if (sd->position & SIZER_POS_RIGHT)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1211 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1212 w -= x;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1213 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1214
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1215 if (sd->position & SIZER_POS_TOP)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1216 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1217 h += y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1218 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1219 else if (sd->position & SIZER_POS_BOTTOM)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1220 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1221 h -= y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1222 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1223
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1224 if (sd->hsize_min >= 0) w = MAX(w, sd->hsize_min);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1225 if (sd->vsize_min >= 0) h = MAX(h, sd->vsize_min);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1226
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1227 if (sd->bounding_widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1228 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1229 w = CLAMP(w, sd->sizer->allocation.width, sd->bounding_widget->allocation.width);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1230 h = CLAMP(h, sd->sizer->allocation.height, sd->bounding_widget->allocation.height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1231 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1232 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1233 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1234 if (w < sd->sizer->allocation.width) w = sd->sizer->allocation.width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1235 if (h < sd->sizer->allocation.height) h = sd->sizer->allocation.height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1236 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1237
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1238 if (sd->hsize_max >= 0) w = MIN(w, sd->hsize_max);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1239 if (sd->vsize_max >= 0) h = MIN(h, sd->vsize_max);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1240
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1241 if (w == sd->parent->allocation.width) w = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1242 if (h == sd->parent->allocation.height) h = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1243
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1244 if (w > 0 || h > 0) gtk_widget_set_size_request(sd->parent, w, h);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1245
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1246 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1247 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1248
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1249 static gint sizer_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1250 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1251 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1252
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 442
diff changeset
1253 if (bevent->button != MOUSE_BUTTON_LEFT) return FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1254
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1255 sd->in_drag = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1256 sd->press_x = bevent->x_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1257 sd->press_y = bevent->y_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1258
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1259 sd->press_width = sd->parent->allocation.width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1260 sd->press_height = sd->parent->allocation.height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1261
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1262 gdk_pointer_grab(sd->sizer->window, FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1263 GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1264 NULL, NULL, bevent->time);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1265 gtk_grab_add(sd->sizer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1266
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1267 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1268 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1269
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1270 static gint sizer_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1271 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1272 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1273
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 442
diff changeset
1274 if (bevent->button != MOUSE_BUTTON_LEFT) return FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1275
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1276 if (gdk_pointer_is_grabbed() && GTK_WIDGET_HAS_GRAB(sd->sizer))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1277 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1278 gtk_grab_remove(sd->sizer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1279 gdk_pointer_ungrab(bevent->time);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1280 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1281
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1282 sd->in_drag = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1283
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1284 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1285 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1286
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1287 static void sizer_set_prelight(SizerData *sd, gint prelit)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1288 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1289 sd->handle_prelit = prelit;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1290 gtk_widget_queue_draw_area(sd->sizer, 0, 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1291 sd->sizer->allocation.width, sd->sizer->allocation.height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1292 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1293
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1294 static gint sizer_enter_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1295 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1296 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1297
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1298 sizer_set_prelight(sd, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1299 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1300 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1301
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1302 static gint sizer_leave_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1303 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1304 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1305
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1306 sizer_set_prelight(sd, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1307 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1308 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1309
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1310 static gint sizer_expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1311 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1312 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1313 GdkRectangle clip;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1314 GtkOrientation orientation;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1315 GtkStateType state;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1316
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1317 gdk_region_get_clipbox(event->region, &clip);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1318
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1319 if (sd->position & SIZER_POS_LEFT || sd->position & SIZER_POS_RIGHT)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1320 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1321 orientation = GTK_ORIENTATION_VERTICAL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1322 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1323 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1324 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1325 orientation = GTK_ORIENTATION_HORIZONTAL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1326 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1327
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1328 if (sd->handle_prelit)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1329 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1330 state = GTK_STATE_PRELIGHT;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1331 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1332 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1333 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1334 state = widget->state;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1335 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1336
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1337 gtk_paint_handle(widget->style, widget->window, state,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1338 GTK_SHADOW_NONE, &clip, widget, "paned",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1339 0, 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1340 widget->allocation.width, widget->allocation.height,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1341 orientation);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1342
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1343 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1344 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1345
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1346 static void sizer_realize_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1347 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1348 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1349 GdkCursorType n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1350
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1351 n = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1352 if (sd->position & SIZER_POS_TOP || sd->position & SIZER_POS_BOTTOM)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1353 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1354 n = GDK_SB_V_DOUBLE_ARROW;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1355 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1356 if (sd->position & SIZER_POS_LEFT || sd->position & SIZER_POS_RIGHT)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1357 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1358 n = (n != 0) ? GDK_FLEUR : GDK_SB_H_DOUBLE_ARROW;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1359 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1360
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1361 if (n != 0 && widget->window)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1362 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1363 GdkCursor *cursor;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1364 cursor = gdk_cursor_new(n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1365 gdk_window_set_cursor(widget->window, cursor);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1366 gdk_cursor_unref(cursor);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1367 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1368 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1369
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1370 static void sizer_destroy_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1371 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1372 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1373
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1374 g_free(sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1375 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1376
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1377 GtkWidget *sizer_new(GtkWidget *parent, GtkWidget *bounding_widget,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1378 SizerPositionType position)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1379 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1380 SizerData *sd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1381 gint handle_size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1382
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1383 sd = g_new0(SizerData, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1384
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1385 sd->sizer = gtk_event_box_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1386 sd->parent = parent;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1387 sd->bounding_widget = bounding_widget;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1388 sd->position = position;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1389 sd->hsize_min = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1390 sd->hsize_max = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1391 sd->vsize_min = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1392 sd->vsize_max = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1393
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1394 sd->in_drag = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1395 sd->handle_prelit = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1396
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1397 g_signal_connect(G_OBJECT(sd->sizer), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1398 G_CALLBACK(sizer_destroy_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1399
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1400 g_signal_connect(G_OBJECT(sd->sizer), "motion_notify_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1401 G_CALLBACK(sizer_motion_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1402 g_signal_connect(G_OBJECT(sd->sizer), "button_press_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1403 G_CALLBACK(sizer_press_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1404 g_signal_connect(G_OBJECT(sd->sizer), "button_release_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1405 G_CALLBACK(sizer_release_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1406
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1407 g_signal_connect(G_OBJECT(sd->sizer), "enter_notify_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1408 G_CALLBACK(sizer_enter_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1409 g_signal_connect(G_OBJECT(sd->sizer), "leave_notify_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1410 G_CALLBACK(sizer_leave_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1411
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1412 gtk_widget_set_events(sd->sizer, GDK_POINTER_MOTION_MASK |
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1413 GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK |
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1414 GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1415
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1416 g_signal_connect(sd->sizer, "realize",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1417 G_CALLBACK(sizer_realize_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1418 g_signal_connect(sd->sizer, "expose_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1419 G_CALLBACK(sizer_expose_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1420
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1421 handle_size = sizer_default_handle_size();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1422
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1423 gtk_widget_set_size_request(sd->sizer, handle_size, handle_size);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1424 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1425 /* use this if you add a shadow border to the handle */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1426 gtk_widget_set_size_request(sd->sizer, handle_size + sd->sizer->style->xthickness * 2,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1427 handle_size + sd->sizer->style->ythickness * 2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1428 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1429
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1430 g_object_set_data(G_OBJECT(sd->sizer), SIZER_DATA_KEY,sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1431
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1432 return sd->sizer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1433 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1434
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1435 void sizer_set_limits(GtkWidget *sizer,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1436 gint hsize_min, gint hsize_max,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1437 gint vsize_min, gint vsize_max)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1438 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1439 SizerData *sd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1440
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1441 sd = g_object_get_data(G_OBJECT(sizer), SIZER_DATA_KEY);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1442 if (!sd) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1443
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1444 sd->hsize_min = hsize_min;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1445 sd->hsize_max = hsize_max;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1446 sd->vsize_min = vsize_min;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1447 sd->vsize_max = vsize_max;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1448 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1449
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1450
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1451 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1452 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1453 * storing data in a history list with key,data pairs
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1454 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1455 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1456
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1457 #define PREF_LIST_MARKER_INT "[INT]:"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1458 #define PREF_LIST_MARKER_DOUBLE "[DOUBLE]:"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1459 #define PREF_LIST_MARKER_STRING "[STRING]:"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1460
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1461 static GList *pref_list_find(const gchar *group, const gchar *token)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1462 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1463 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1464 gint l;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1465
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1466 l = strlen(token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1467
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1468 work = history_list_get_by_key(group);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1469 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1470 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1471 const gchar *text = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1472
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1473 if (strncmp(text, token, l) == 0) return work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1474
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1475 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1476 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1477
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1478 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1479 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1480
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1481 static gint pref_list_get(const gchar *group, const gchar *key, const gchar *marker, const gchar **result)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1482 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1483 gchar *token;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1484 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1485 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1486
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1487 if (!group || !key || !marker)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1488 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1489 *result = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1490 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1491 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1492
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1493 token = g_strconcat(key, marker, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1494
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1495 work = pref_list_find(group, token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1496 if (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1497 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1498 *result = (const gchar *)work->data + strlen(token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1499 if (strlen(*result) == 0) *result = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1500 ret = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1501 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1502 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1503 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1504 *result = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1505 ret = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1506 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1507
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1508 g_free(token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1509
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 339
diff changeset
1510 return ret;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1511 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1512
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1513 static void pref_list_set(const gchar *group, const gchar *key, const gchar *marker, const gchar *text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1514 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1515 gchar *token;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1516 gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1517 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1518
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1519 if (!group || !key || !marker) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1520
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1521 token = g_strconcat(key, marker, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1522 path = g_strconcat(token, text, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1523
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1524 work = pref_list_find(group, token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1525 if (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1526 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1527 gchar *old_path = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1528
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1529 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1530 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1531 work->data = path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1532 path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1533
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1534 g_free(old_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1535 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1536 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1537 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1538 history_list_item_remove(group, old_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1539 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1540 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1541 else if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1542 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1543 history_list_add_to_key(group, path, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1544 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1545
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1546 g_free(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1547 g_free(token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1548 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1549
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1550 void pref_list_int_set(const gchar *group, const gchar *key, gint value)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1551 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1552 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1553
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1554 text = g_strdup_printf("%d", value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1555 pref_list_set(group, key, PREF_LIST_MARKER_INT, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1556 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1557 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1558
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1559 gint pref_list_int_get(const gchar *group, const gchar *key, gint *result)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1560 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1561 const gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1562
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1563 if (!group || !key)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1564 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1565 *result = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1566 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1567 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1568
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1569 if (pref_list_get(group, key, PREF_LIST_MARKER_INT, &text) && text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1570 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1571 *result = (gint)strtol(text, NULL, 10);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1572 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1573 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1574
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1575 *result = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1576 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1577 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1578
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1579 void pref_list_double_set(const gchar *group, const gchar *key, gdouble value)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1580 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1581 gchar text[G_ASCII_DTOSTR_BUF_SIZE];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1582
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1583 g_ascii_dtostr(text, sizeof(text), value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1584 pref_list_set(group, key, PREF_LIST_MARKER_DOUBLE, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1585 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1586
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1587 gint pref_list_double_get(const gchar *group, const gchar *key, gdouble *result)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1588 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1589 const gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1590
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1591 if (!group || !key)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1592 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1593 *result = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1594 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1595 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1596
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1597 if (pref_list_get(group, key, PREF_LIST_MARKER_DOUBLE, &text) && text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1598 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1599 *result = g_ascii_strtod(text, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1600 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1601 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1602
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1603 *result = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1604 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1605 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1606
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1607 void pref_list_string_set(const gchar *group, const gchar *key, const gchar *value)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1608 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1609 pref_list_set(group, key, PREF_LIST_MARKER_STRING, value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1610 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1611
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1612 gint pref_list_string_get(const gchar *group, const gchar *key, const gchar **result)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1613 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1614 return pref_list_get(group, key, PREF_LIST_MARKER_STRING, result);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1615 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1616
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1617
339
de1c2cd06fce Rename user_specified_window_background and window_background_color
zas_
parents: 208
diff changeset
1618 void pref_color_button_set_cb(GtkWidget *widget, gpointer data)
208
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1619 {
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1620 GdkColor *color = data;
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1621
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1622 gtk_color_button_get_color(GTK_COLOR_BUTTON(widget), color);
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1623 }
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1624
339
de1c2cd06fce Rename user_specified_window_background and window_background_color
zas_
parents: 208
diff changeset
1625 GtkWidget *pref_color_button_new(GtkWidget *parent_box,
de1c2cd06fce Rename user_specified_window_background and window_background_color
zas_
parents: 208
diff changeset
1626 const gchar *title, const GdkColor *color,
de1c2cd06fce Rename user_specified_window_background and window_background_color
zas_
parents: 208
diff changeset
1627 GCallback func, gpointer data)
208
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1628 {
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1629 GtkWidget *button;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 339
diff changeset
1630
208
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1631 if (color)
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1632 {
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1633 button = gtk_color_button_new_with_color(color);
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1634 }
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1635 else
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1636 {
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1637 button = gtk_color_button_new();
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1638 }
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1639
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1640 if (func) g_signal_connect(G_OBJECT(button), "color-set", func, data);
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1641
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1642 if (title)
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1643 {
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1644 GtkWidget *label;
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1645 GtkWidget *hbox;
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1646
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1647 gtk_color_button_set_title(GTK_COLOR_BUTTON(button), title);
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1648 label = gtk_label_new(title);
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1649
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1650 hbox = gtk_hbox_new(TRUE, 0);
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1651 gtk_box_pack_start(GTK_BOX(parent_box), hbox, TRUE, TRUE, 0);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 339
diff changeset
1652
208
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1653 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1654 gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1655
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1656 gtk_widget_show_all(hbox);
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1657 }
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1658 else
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1659 {
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1660 gtk_widget_show(button);
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1661 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 339
diff changeset
1662
208
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1663 return button;
fa0e05f985c3 set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents: 113
diff changeset
1664 }