annotate src/ui_misc.c @ 9:d907d608745f

Sync to GQview 1.5.9 release. ######## DO NOT BASE ENHANCEMENTS OR TRANSLATION UPDATES ON CODE IN THIS CVS! This CVS is never up to date with current development and is provided solely for reference purposes, please use the latest official release package when making any changes or translation updates. ########
author gqview
date Sat, 26 Feb 2005 00:13:35 +0000
parents
children 6281cc38e5ca
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
24 #include "ui_misc.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
25
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
26 #include "ui_bookmark.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
27
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 * widget and layout utilities
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
32 *-----------------------------------------------------------------------------
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 GtkWidget *pref_box_new(GtkWidget *parent_box, gint fill,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
36 GtkOrientation orientation, gint padding)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
37 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
38 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
39
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
40 if (orientation == GTK_ORIENTATION_HORIZONTAL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
41 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
42 box = gtk_hbox_new(FALSE, padding);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
43 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
44 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
45 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
46 box = gtk_vbox_new(FALSE, padding);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
47 }
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 gtk_box_pack_start(GTK_BOX(parent_box), box, fill, fill, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
50 gtk_widget_show(box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
51
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
52 return box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
53 }
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 GtkWidget *pref_group_new(GtkWidget *parent_box, gint fill,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
56 const gchar *text, GtkOrientation orientation)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
57 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
58 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
59 GtkWidget *vbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
60 GtkWidget *hbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
61 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
62
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
63 vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
64
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
65 /* add additional spacing if necessary */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
66 if (GTK_IS_VBOX(parent_box) && GTK_BOX(parent_box)->children != NULL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
67 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
68 pref_spacer(vbox, PREF_PAD_GROUP - PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
69 }
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 gtk_box_pack_start(GTK_BOX(parent_box), vbox, fill, fill, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
72 gtk_widget_show(vbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
73
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
74 label = gtk_label_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
75 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
76 pref_label_bold(label, TRUE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
77
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
78 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
79 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
80
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
81 hbox = gtk_hbox_new(FALSE, PREF_PAD_INDENT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
82 gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
83 gtk_widget_show(hbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
84
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
85 /* indent using empty box */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
86 pref_spacer(hbox, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
87
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
88 if (orientation == GTK_ORIENTATION_HORIZONTAL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
89 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
90 box = gtk_hbox_new(FALSE, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
91 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
92 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
93 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
94 box = gtk_vbox_new(FALSE, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
95 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
96 gtk_box_pack_start(GTK_BOX(hbox), box, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
97 gtk_widget_show(box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
98
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
99 g_object_set_data(G_OBJECT(box), "pref_group", vbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
100
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
101 return box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
102 }
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 GtkWidget *pref_group_parent(GtkWidget *child)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
105 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
106 GtkWidget *parent;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
107
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
108 parent = child;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
109 while (parent)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
110 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
111 GtkWidget *group;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
112
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
113 group = g_object_get_data(G_OBJECT(parent), "pref_group");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
114 if (group && GTK_IS_WIDGET(group)) return group;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
115
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
116 parent = gtk_widget_get_parent(parent);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
117 }
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 return child;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
120 }
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 GtkWidget *pref_frame_new(GtkWidget *parent_box, gint fill,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
123 const gchar *text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
124 GtkOrientation orientation, gint padding)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
125 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
126 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
127 GtkWidget *frame = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
128
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
129 frame = gtk_frame_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
130 gtk_box_pack_start(GTK_BOX(parent_box), frame, fill, fill, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
131 gtk_widget_show(frame);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
132
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
133 if (orientation == GTK_ORIENTATION_HORIZONTAL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
134 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
135 box = gtk_hbox_new(FALSE, padding);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
136 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
137 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
138 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
139 box = gtk_vbox_new(FALSE, padding);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
140 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
141 gtk_container_add(GTK_CONTAINER(frame), box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
142 gtk_container_set_border_width(GTK_CONTAINER(box), PREF_PAD_BORDER);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
143 gtk_widget_show(box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
144
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
145 return box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
146 }
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 GtkWidget *pref_spacer(GtkWidget *parent_box, gint padding)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
149 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
150 GtkWidget *spacer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
151
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
152 spacer = gtk_hbox_new(FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
153 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
154 gtk_widget_show(spacer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
155
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
156 return spacer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
157 }
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 GtkWidget *pref_line(GtkWidget *parent_box, gint padding)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
160 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
161 GtkWidget *spacer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
162
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
163 if (GTK_IS_HBOX(parent_box))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
164 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
165 spacer = gtk_vseparator_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
166 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
167 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
168 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
169 spacer = gtk_hseparator_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
170 }
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 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
173 gtk_widget_show(spacer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
174
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
175 return spacer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
176 }
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 GtkWidget *pref_label_new(GtkWidget *parent_box, const gchar *text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
179 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
180 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
181
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
182 label = gtk_label_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
183 gtk_box_pack_start(GTK_BOX(parent_box), label, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
184 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
185
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
186 return label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
187 }
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 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
190 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
191 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
192
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
193 label = gtk_label_new_with_mnemonic(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
194 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
195 gtk_box_pack_start(GTK_BOX(parent_box), label, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
196 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
197
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
198 return label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
199 }
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 void pref_label_bold(GtkWidget *label, gint bold, gint increase_size)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
202 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
203 PangoAttrList *pal;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
204 PangoAttribute *pa;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
205
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
206 if (!bold && !increase_size) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
207
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
208 pal = pango_attr_list_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
209
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
210 if (bold)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
211 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
212 pa = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
213 pa->start_index = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
214 pa->end_index = G_MAXINT;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
215 pango_attr_list_insert(pal, pa);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
216 }
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 if (increase_size)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
219 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
220 pa = pango_attr_scale_new(PANGO_SCALE_LARGE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
221 pa->start_index = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
222 pa->end_index = G_MAXINT;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
223 pango_attr_list_insert(pal, pa);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
224 }
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 gtk_label_set_attributes(GTK_LABEL(label), pal);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
227 pango_attr_list_unref(pal);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
228 }
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 GtkWidget *pref_button_new(GtkWidget *parent_box, const gchar *stock_id,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
231 const gchar *text, gint hide_stock_text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
232 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
233 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
234 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
235
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
236 if (stock_id && !text && !hide_stock_text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
237 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
238 button = gtk_button_new_from_stock(stock_id);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
239 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
240 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
241 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
242 GtkWidget *image = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
243 GtkWidget *label = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
244
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
245 button = gtk_button_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
246
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
247 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
248 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
249 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
250 label = gtk_label_new_with_mnemonic(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
251 gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
252 gtk_label_set_mnemonic_widget(GTK_LABEL(label), button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
253 }
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 if (image && label)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
256 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
257 GtkWidget *align;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
258 GtkWidget *hbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
259
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
260 hbox = gtk_hbox_new (FALSE, PREF_PAD_BUTTON_ICON_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
261
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
262 align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
263 gtk_container_add(GTK_CONTAINER(button), align);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
264 gtk_widget_show(align);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
265
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
266 gtk_container_add(GTK_CONTAINER(align), hbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
267 gtk_widget_show(hbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
268
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
269 gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
270 gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
271 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
272 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
273 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
274 if (image)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
275 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
276 gtk_container_add(GTK_CONTAINER(button), image);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
277 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
278 else if (label)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
279 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
280 gtk_container_add(GTK_CONTAINER(button), label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
281 }
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 if (image) gtk_widget_show(image);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
285 if (label) gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
286 }
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 if (func) g_signal_connect(G_OBJECT(button), "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
289
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
290 if (parent_box)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
291 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
292 gtk_box_pack_start(GTK_BOX(parent_box), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
293 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
294 }
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 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
297 }
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 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
300 gint active, GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
301 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
302 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
303
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
304 if (mnemonic_text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
305 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
306 button = gtk_check_button_new_with_mnemonic(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
307 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
308 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
309 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
310 button = gtk_check_button_new_with_label(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
311 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
312 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
313 if (func) g_signal_connect(G_OBJECT(button), "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
314
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
315 gtk_box_pack_start(GTK_BOX(parent_box), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
316 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
317
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
318 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
319 }
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 GtkWidget *pref_checkbox_new(GtkWidget *parent_box, const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
322 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
323 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
324 return real_pref_checkbox_new(parent_box, text, FALSE, active, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
325 }
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 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
328 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
329 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
330 return real_pref_checkbox_new(parent_box, text, TRUE, active, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
331 }
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 static void pref_checkbox_int_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
334 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
335 gint *result = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
336
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
337 *result = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
338 }
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 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
341 gint *result)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
342 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
343 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
344
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
345 button = pref_checkbox_new(parent_box, text, active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
346 G_CALLBACK(pref_checkbox_int_cb), result);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
347 *result = active;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
348
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
349 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
350 }
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 static void pref_checkbox_link_sensitivity_cb(GtkWidget *button, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
353 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
354 GtkWidget *widget = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
355
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
356 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
357 }
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 void pref_checkbox_link_sensitivity(GtkWidget *button, GtkWidget *widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
360 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
361 g_signal_connect(G_OBJECT(button), "toggled",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
362 G_CALLBACK(pref_checkbox_link_sensitivity_cb), widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
363
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
364 pref_checkbox_link_sensitivity_cb(button, widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
365 }
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 static void pref_checkbox_link_sensitivity_swap_cb(GtkWidget *button, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
368 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
369 GtkWidget *widget = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
370
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
371 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
372 }
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 void pref_checkbox_link_sensitivity_swap(GtkWidget *button, GtkWidget *widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
375 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
376 g_signal_connect(G_OBJECT(button), "toggled",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
377 G_CALLBACK(pref_checkbox_link_sensitivity_swap_cb), widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
378
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
379 pref_checkbox_link_sensitivity_swap_cb(button, widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
380 }
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 static GtkWidget *real_pref_radiobutton_new(GtkWidget *parent_box, GtkWidget *sibling,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
383 const gchar *text, gint mnemonic_text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
384 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
385 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
386 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
387 GSList* group;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
388
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
389 if (sibling)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
390 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
391 group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(sibling));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
392 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
393 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
394 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
395 group = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
396 }
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 if (mnemonic_text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
399 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
400 button = gtk_radio_button_new_with_mnemonic(group, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
401 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
402 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
403 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
404 button = gtk_radio_button_new_with_label(group, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
405 }
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 if (active) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
408 if (func) g_signal_connect(G_OBJECT(button), "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
409
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
410 gtk_box_pack_start(GTK_BOX(parent_box), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
411 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
412
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
413 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
414 }
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 GtkWidget *pref_radiobutton_new(GtkWidget *parent_box, GtkWidget *sibling,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
417 const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
418 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
419 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
420 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
421 }
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 GtkWidget *pref_radiobutton_new_mnemonic(GtkWidget *parent_box, GtkWidget *sibling,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
424 const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
425 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
426 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
427 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
428 }
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 #define PREF_RADIO_VALUE_KEY "pref_radio_value"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
431
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
432 static void pref_radiobutton_int_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
433 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
434 gint *result = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
435
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
436 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
437 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
438 *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
439 }
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 GtkWidget *pref_radiobutton_new_int(GtkWidget *parent_box, GtkWidget *sibling,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
443 const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
444 gint *result, gint value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
445 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
446 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
447 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
448
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
449 button = pref_radiobutton_new(parent_box, sibling, text, active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
450 G_CALLBACK(pref_radiobutton_int_cb), result);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
451 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
452 if (active) *result = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
453
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
454 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
455 }
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 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
458 gint mnemonic_text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
459 gdouble min, gdouble max, gdouble step, gint digits,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
460 gdouble value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
461 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
462 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
463 GtkWidget *spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
464 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
465 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
466
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
467 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
468
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
469 spin = gtk_spin_button_new_with_range(min, max, step);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
470 gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
471 gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
472
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
473 if (func)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
474 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
475 g_signal_connect(G_OBJECT(spin), "value_changed", G_CALLBACK(func), data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
476 }
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 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
479 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
480 if (mnemonic_text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
481 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
482 label = pref_label_new_mnemonic(box, text, spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
483 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
484 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
485 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
486 label = pref_label_new(box, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
487 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
488 pref_link_sensitivity(label, spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
489 }
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 gtk_box_pack_start(GTK_BOX(box), spin, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
492 gtk_widget_show(spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
493
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
494 /* perhaps this should only be PREF_PAD_GAP distance from spinbutton ? */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
495 if (suffix)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
496 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
497 label = pref_label_new(box, suffix);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
498 pref_link_sensitivity(label, spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
499 }
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 return spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
502 }
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 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
505 gdouble min, gdouble max, gdouble step, gint digits,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
506 gdouble value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
507 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
508 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
509 return real_pref_spin_new(parent_box, text, suffix, FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
510 min, max, step, digits, value, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
511 }
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 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
514 gdouble min, gdouble max, gdouble step, gint digits,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
515 gdouble value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
516 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
517 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
518 return real_pref_spin_new(parent_box, text, suffix, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
519 min, max, step, digits, value, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
520 }
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 static void pref_spin_int_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
523 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
524 gint *var = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
525 *var = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
526 }
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 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
529 gint min, gint max, gint step,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
530 gint value, gint *value_var)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
531 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
532 *value_var = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
533 return pref_spin_new(parent_box, text, suffix,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
534 (gdouble)min, (gdouble)max, (gdouble)step, 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
535 value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
536 G_CALLBACK(pref_spin_int_cb), value_var);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
537 }
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 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
540 void pref_spin_set_blocking(GtkWidget *spin, gdouble value, gpointer block_data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
541 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
542 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
543 gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
544 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
545 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
546 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
547
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
548 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
549 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
550 GtkWidget *widget = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
551
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
552 gtk_widget_set_sensitive(widget, GTK_WIDGET_IS_SENSITIVE(watch));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
553 }
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 void pref_link_sensitivity(GtkWidget *widget, GtkWidget *watch)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
556 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
557 g_signal_connect(G_OBJECT(watch), "state_changed",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
558 G_CALLBACK(pref_link_sensitivity_cb), widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
559 }
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 void pref_signal_block_data(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
562 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
563 g_signal_handlers_block_matched(widget, G_SIGNAL_MATCH_DATA,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
564 0, 0, NULL, NULL, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
565 }
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 void pref_signal_unblock_data(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
568 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
569 g_signal_handlers_unblock_matched(widget, G_SIGNAL_MATCH_DATA,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
570 0, 0, NULL, NULL, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
571 }
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 GtkWidget *pref_table_new(GtkWidget *parent_box, gint columns, gint rows,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
574 gint homogenious, gint fill)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
575 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
576 GtkWidget *table;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
577
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
578 table = gtk_table_new(rows, columns, homogenious);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
579 gtk_table_set_row_spacings(GTK_TABLE(table), PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
580 gtk_table_set_col_spacings(GTK_TABLE(table), PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
581
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
582 if (parent_box)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
583 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
584 gtk_box_pack_start(GTK_BOX(parent_box), table, fill, fill, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
585 gtk_widget_show(table);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
586 }
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 return table;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
589 }
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 GtkWidget *pref_table_box(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
592 GtkOrientation orientation, const gchar *text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
593 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
594 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
595 GtkWidget *shell;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
596
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
597 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
598 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
599 shell = gtk_vbox_new(FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
600 box = pref_group_new(shell, TRUE, text, orientation);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
601 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
602 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
603 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
604 if (orientation == GTK_ORIENTATION_HORIZONTAL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
605 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
606 box = gtk_hbox_new(FALSE, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
607 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
608 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
609 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
610 box = gtk_vbox_new(FALSE, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
611 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
612 shell = box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
613 }
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 gtk_table_attach(GTK_TABLE(table), shell, column, column + 1, row, row + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
616 GTK_EXPAND | GTK_FILL, FALSE, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
617
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
618 gtk_widget_show(shell);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
619
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
620 return box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
621 }
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 GtkWidget *pref_table_label(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
624 const gchar *text, gfloat alignment)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
625 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
626 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
627 GtkWidget *align;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
628
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
629 align = gtk_alignment_new(alignment, 0.50, 0.0, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
630 gtk_table_attach(GTK_TABLE(table), align, column, column + 1, row, row + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
631 GTK_FILL, FALSE, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
632 gtk_widget_show(align);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
633 label = gtk_label_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
634 gtk_container_add(GTK_CONTAINER(align), label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
635 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
636
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
637 return label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
638 }
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 GtkWidget *pref_table_button(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
641 const gchar *stock_id, const gchar *text, gint hide_stock_text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
642 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
643 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
644 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
645
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
646 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
647 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
648 GTK_FILL, FALSE, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
649 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
650
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
651 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
652 }
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 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
655 static GtkWidget *pref_table_checkbox(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
656 const gchar *text, gint active,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
657 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
658 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
659 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
660
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
661 button = gtk_check_button_new_with_label(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
662 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
663 if (func) g_signal_connect(G_OBJECT(button), "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
664
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
665 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
666 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
667 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
668
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
669 return button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
670 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
671 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
672
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
673 GtkWidget *pref_table_spin(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
674 const gchar *text, const gchar *suffix,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
675 gdouble min, gdouble max, gdouble step, gint digits,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
676 gdouble value,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
677 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
678 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
679 GtkWidget *spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
680 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
681 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
682
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
683 spin = gtk_spin_button_new_with_range(min, max, step);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
684 gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
685 gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
686 if (func)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
687 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
688 g_signal_connect(G_OBJECT(spin), "value_changed", G_CALLBACK(func), data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
689 }
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 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
692 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
693 label = pref_table_label(table, column, row, text, 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
694 pref_link_sensitivity(label, spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
695 column++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
696 }
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 if (suffix)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
699 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
700 box = gtk_hbox_new(FALSE, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
701 gtk_box_pack_start(GTK_BOX(box), spin, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
702 gtk_widget_show(spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
703
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
704 label = pref_label_new(box, suffix);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
705 pref_link_sensitivity(label, spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
706 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
707 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
708 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
709 box = spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
710 }
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 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
713 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
714 gtk_widget_show(box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
715
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
716 return spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
717 }
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 static void pref_toolbar_destroy_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
720 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
721 GtkTooltips *tips = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
722
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
723 g_object_unref(G_OBJECT(tips));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
724 }
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 GtkWidget *pref_toolbar_new(GtkWidget *parent_box, GtkToolbarStyle style)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
727 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
728 GtkWidget *tbar;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
729 GtkTooltips *tips;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
730
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
731 tbar = gtk_toolbar_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
732 gtk_toolbar_set_style(GTK_TOOLBAR(tbar), style);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
733
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
734 if (parent_box)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
735 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
736 gtk_box_pack_start(GTK_BOX(parent_box), tbar, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
737 gtk_widget_show(tbar);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
738 }
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 tips = gtk_tooltips_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
741 g_object_ref(G_OBJECT(tips));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
742 gtk_object_sink(GTK_OBJECT(tips));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
743 g_object_set_data(G_OBJECT(tbar), "tooltips", tips);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
744 g_signal_connect(G_OBJECT(tbar), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
745 G_CALLBACK(pref_toolbar_destroy_cb), tips);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
746
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
747 gtk_tooltips_enable(tips);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
748
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
749 return tbar;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
750 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
751
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
752 GtkWidget *pref_toolbar_button(GtkWidget *toolbar, const gchar *stock_id, const gchar *label,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
753 const gchar *description,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
754 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
755 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
756 GtkWidget *item;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
757
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
758 item = GTK_WIDGET(gtk_tool_button_new_from_stock(stock_id));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
759 if (label) gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), label);
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 if (func) g_signal_connect(item, "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
762 gtk_container_add(GTK_CONTAINER(toolbar), item);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
763 gtk_widget_show(item);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
764
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
765 if (description)
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 GtkTooltips *tips;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
768
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
769 tips = g_object_get_data(G_OBJECT(toolbar), "tooltips");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
770 gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(item), tips, description, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
771 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
772
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
773 return item;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
774 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
775
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
776 GtkWidget *pref_toolbar_spacer(GtkWidget *toolbar)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
777 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
778 GtkWidget *item;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
779
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
780 item = GTK_WIDGET(gtk_separator_tool_item_new());
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
781 gtk_container_add(GTK_CONTAINER(toolbar), item);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
782 gtk_widget_show(item);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
783
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
784 return item;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
785 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
786
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
787
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
788 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
789 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
790 * date selection entry
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
791 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
792 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
793
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
794 #define DATE_SELECION_KEY "date_selection_data"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
795
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
796
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
797 typedef struct _DateSelection DateSelection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
798 struct _DateSelection
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
799 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
800 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
801
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
802 GtkWidget *spin_d;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
803 GtkWidget *spin_m;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
804 GtkWidget *spin_y;
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 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
807
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
808 GtkWidget *window;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
809 GtkWidget *calendar;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
810 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
811
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
812
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
813 static void date_selection_popup_hide(DateSelection *ds)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
814 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
815 if (!ds->window) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
816
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
817 if (GTK_WIDGET_HAS_GRAB(ds->window))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
818 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
819 gtk_grab_remove(ds->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
820 gdk_keyboard_ungrab(GDK_CURRENT_TIME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
821 gdk_pointer_ungrab(GDK_CURRENT_TIME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
822 }
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 gtk_widget_hide(ds->window);
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 gtk_widget_destroy(ds->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
827 ds->window = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
828 ds->calendar = NULL;
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 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ds->button), FALSE);
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 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
834 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
835 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
836
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
837 date_selection_popup_hide(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
838 return TRUE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
841 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
842 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
843 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
844 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
845 gint w, h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
846 gint xr, yr;
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 xr = (gint)event->x_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
849 yr = (gint)event->y_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
850
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
851 gdk_window_get_origin(ds->window->window, &x, &y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
852 gdk_drawable_get_size(ds->window->window, &w, &h);
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 if (xr < x || yr < y || xr > x + w || yr > y + h)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
855 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
856 g_signal_connect(G_OBJECT(ds->window), "button_release_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
857 G_CALLBACK(date_selection_popup_release_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
858 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
859 }
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 return FALSE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
864 static void date_selection_popup_sync(DateSelection *ds)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
865 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
866 gint day, month, year;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
867
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
868 gtk_calendar_get_date(GTK_CALENDAR(ds->calendar), &year, &month, &day);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
869 date_selection_set(ds->box, day, month + 1, year);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
870 }
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 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
873 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
874 DateSelection *ds = data;
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 switch (event->keyval)
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 case GDK_Return:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
879 case GDK_KP_Enter:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
880 case GDK_Tab:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
881 case GDK_ISO_Left_Tab:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
882 date_selection_popup_sync(ds);
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 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
885 case GDK_Escape:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
886 date_selection_popup_hide(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
887 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
888 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
889 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
890 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
891
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
892 return FALSE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
895 static void date_selection_day_cb(GtkWidget *widget, gpointer data)
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 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
898
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
899 date_selection_popup_sync(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
900 }
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 static void date_selection_doubleclick_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
903 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
904 DateSelection *ds = data;
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 date_selection_popup_hide(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
907 }
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 static void date_selection_popup(DateSelection *ds)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
910 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
911 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
912 gint wx, wy;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
913 gint day, month, year;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
914
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
915 if (ds->window) return;
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 ds->window = gtk_window_new(GTK_WINDOW_POPUP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
918 gtk_window_set_resizable(GTK_WINDOW(ds->window), FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
919 g_signal_connect(G_OBJECT(ds->window), "button_press_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
920 G_CALLBACK(date_selection_popup_press_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
921 g_signal_connect(G_OBJECT(ds->window), "key_press_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
922 G_CALLBACK(date_selection_popup_keypress_cb), ds);
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 ds->calendar = gtk_calendar_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
925 gtk_container_add(GTK_CONTAINER(ds->window), ds->calendar);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
926 gtk_widget_show(ds->calendar);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
927
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
928 date_selection_get(ds->box, &day, &month, &year);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
929 gtk_calendar_select_month(GTK_CALENDAR(ds->calendar), month - 1, year);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
930 gtk_calendar_select_day(GTK_CALENDAR(ds->calendar), day);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
931
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
932 g_signal_connect(G_OBJECT(ds->calendar), "day_selected",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
933 G_CALLBACK(date_selection_day_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
934 g_signal_connect(G_OBJECT(ds->calendar), "day_selected_double_click",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
935 G_CALLBACK(date_selection_doubleclick_cb), ds);
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 gtk_widget_realize(ds->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
938
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
939 gdk_window_get_origin(ds->button->window, &wx, &wy);
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 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
942 y = wy + ds->button->allocation.y + ds->button->allocation.height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
943
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
944 if (y + ds->window->allocation.height > gdk_screen_height())
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
945 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
946 y = wy + ds->button->allocation.y - ds->window->allocation.height;
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 if (x < 0) x = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
949 if (y < 0) y = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
950
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
951 gtk_window_move(GTK_WINDOW(ds->window), x, y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
952 gtk_widget_show(ds->window);
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 gtk_widget_grab_focus(ds->calendar);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
955 gdk_pointer_grab(ds->window->window, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
956 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_MOTION_MASK,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
957 NULL, NULL, GDK_CURRENT_TIME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
958 gdk_keyboard_grab(ds->window->window, TRUE, GDK_CURRENT_TIME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
959 gtk_grab_add(ds->window);
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 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ds->button), TRUE);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
964 static void date_selection_button_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
965 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
966 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
967
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
968 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
969 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
970 date_selection_popup(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
971 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
972 }
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 static void button_size_allocate_cb(GtkWidget *button, GtkAllocation *allocation, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
975 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
976 GtkWidget *spin = data;
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 if (allocation->height > spin->requisition.height)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
979 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
980 GtkAllocation button_allocation;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
981
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
982 button_allocation = button->allocation;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
983 button_allocation.height = spin->requisition.height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
984 button_allocation.y = spin->allocation.y +
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
985 (spin->allocation.height - spin->requisition.height) / 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
986 gtk_widget_size_allocate(button, &button_allocation);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
987 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
988 }
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 static void spin_increase(GtkWidget *spin, gint value)
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 GtkRequisition req;
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 gtk_widget_size_request(spin, &req);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
995 gtk_widget_set_size_request(spin, req.width + value, -1);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
998 static void date_selection_destroy_cb(GtkWidget *widget, gpointer data)
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 DateSelection *ds = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1001
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1002 date_selection_popup_hide(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1003
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1004 g_free(ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1005 }
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 GtkWidget *date_selection_new(void)
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 DateSelection *ds;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1010 GtkWidget *arrow;
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 ds = g_new0(DateSelection, 1);
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 ds->box = gtk_hbox_new(FALSE, 2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1015 g_signal_connect(G_OBJECT(ds->box), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1016 G_CALLBACK(date_selection_destroy_cb), 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 /* 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
1019 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
1020 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
1021 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
1022 spin_increase(ds->spin_y, 5);
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 ds->button = gtk_toggle_button_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1025 g_signal_connect(G_OBJECT(ds->button), "size_allocate",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1026 G_CALLBACK(button_size_allocate_cb), ds->spin_y);
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 arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1029 gtk_container_add(GTK_CONTAINER(ds->button), arrow);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1030 gtk_widget_show(arrow);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1031
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1032 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
1033 g_signal_connect(G_OBJECT(ds->button), "clicked",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1034 G_CALLBACK(date_selection_button_cb), ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1035 gtk_widget_show(ds->button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1036
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1037 g_object_set_data(G_OBJECT(ds->box), DATE_SELECION_KEY, ds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1038
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1039 return ds->box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1040 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1041
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1042 void date_selection_set(GtkWidget *widget, gint day, gint month, gint year)
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 DateSelection *ds;
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 ds = g_object_get_data(G_OBJECT(widget), DATE_SELECION_KEY);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1047 if (!ds) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1048
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1049 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
1050 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
1051 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
1052 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1053
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 void date_selection_get(GtkWidget *widget, gint *day, gint *month, gint *year)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1056 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1057 DateSelection *ds;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1058
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1059 ds = g_object_get_data(G_OBJECT(widget), DATE_SELECION_KEY);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1060 if (!ds) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1061
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1062 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
1063 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
1064 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
1065 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1066
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1067 void date_selection_time_set(GtkWidget *widget, time_t t)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1068 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1069 struct tm *lt;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1070
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1071 lt = localtime(&t);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1072 if (!lt) return;
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 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
1075 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1076
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1077 time_t date_selection_time_get(GtkWidget *widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1078 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1079 struct tm lt;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1080 gint day = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1081 gint month = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1082 gint year = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1083
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1084 date_selection_get(widget, &day, &month ,&year);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1085
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1086 lt.tm_sec = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1087 lt.tm_min = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1088 lt.tm_hour = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1089 lt.tm_mday = day;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1090 lt.tm_mon = month - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1091 lt.tm_year = year - 1900;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1092 lt.tm_isdst = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1093
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1094 return mktime(&lt);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1095 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1096
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1097
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 * Sizer, without using a GtkPaned
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1101 *-----------------------------------------------------------------------------
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1104 #define SIZER_DATA_KEY "sizer_data"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1105
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1106 typedef struct _SizerData SizerData;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1107 struct _SizerData
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1108 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1109 GtkWidget *sizer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1110 GtkWidget *parent;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1111 GtkWidget *bounding_widget;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1112 SizerPositionType position;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1113
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1114 gint hsize_min;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1115 gint hsize_max;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1116 gint vsize_min;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1117 gint vsize_max;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1118
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1119 gint in_drag;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1120 gint press_x;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1121 gint press_y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1122 gint press_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1123 gint press_height;
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 gint handle_prelit;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1126 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1127
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1128
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1129 static gint sizer_default_handle_size(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1130 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1131 gint handle_size = 5;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1132 GtkWidget *paned;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1133 GtkStyle *style;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1134
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1135 paned = gtk_hpaned_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1136
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1137 style = gtk_rc_get_style(paned);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1138 gtk_widget_set_style(paned, style);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1139 gtk_widget_style_get(paned, "handle_size", &handle_size, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1140
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1141 gtk_widget_destroy(paned);
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 return handle_size;
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 static gint sizer_motion_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
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 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1149 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1150 gint w, h;
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 if (!sd->in_drag) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1153
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1154 x = sd->press_x - bevent->x_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1155 y = sd->press_y - bevent->y_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1156
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1157 w = sd->press_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1158 h = sd->press_height;
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 if (sd->position & SIZER_POS_LEFT)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1161 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1162 w += x;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1163 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1164 else if (sd->position & SIZER_POS_RIGHT)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1165 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1166 w -= x;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1167 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1168
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1169 if (sd->position & SIZER_POS_TOP)
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 h += y;
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 else if (sd->position & SIZER_POS_BOTTOM)
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 h -= y;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1178 if (sd->hsize_min >= 0) w = MAX(w, sd->hsize_min);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1179 if (sd->vsize_min >= 0) h = MAX(h, sd->vsize_min);
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 if (sd->bounding_widget)
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 w = CLAMP(w, sd->sizer->allocation.width, sd->bounding_widget->allocation.width);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1184 h = CLAMP(h, sd->sizer->allocation.height, sd->bounding_widget->allocation.height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1185 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1186 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1187 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1188 if (w < sd->sizer->allocation.width) w = sd->sizer->allocation.width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1189 if (h < sd->sizer->allocation.height) h = sd->sizer->allocation.height;
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 if (sd->hsize_max >= 0) w = MIN(w, sd->hsize_max);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1193 if (sd->vsize_max >= 0) h = MIN(h, sd->vsize_max);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1194
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1195 if (w == sd->parent->allocation.width) w = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1196 if (h == sd->parent->allocation.height) h = -1;
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 (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
1199
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1200 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1201 }
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 static gint sizer_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1204 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1205 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1206
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1207 if (bevent->button != 1) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1208
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1209 sd->in_drag = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1210 sd->press_x = bevent->x_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1211 sd->press_y = bevent->y_root;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1212
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1213 sd->press_width = sd->parent->allocation.width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1214 sd->press_height = sd->parent->allocation.height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1215
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1216 gdk_pointer_grab(sd->sizer->window, FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1217 GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1218 NULL, NULL, bevent->time);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1219 gtk_grab_add(sd->sizer);
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 return TRUE;
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 static gint sizer_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1225 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1226 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1227
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1228 if (bevent->button != 1) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1229
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1230 if (gdk_pointer_is_grabbed() && GTK_WIDGET_HAS_GRAB(sd->sizer))
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 gtk_grab_remove(sd->sizer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1233 gdk_pointer_ungrab(bevent->time);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1234 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1235
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1236 sd->in_drag = FALSE;
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 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1239 }
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 static void sizer_set_prelight(SizerData *sd, gint prelit)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1242 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1243 sd->handle_prelit = prelit;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1244 gtk_widget_queue_draw_area(sd->sizer, 0, 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1245 sd->sizer->allocation.width, sd->sizer->allocation.height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1246 }
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 static gint sizer_enter_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1249 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1250 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1251
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1252 sizer_set_prelight(sd, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1253 return TRUE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1256 static gint sizer_leave_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1257 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1258 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1259
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1260 sizer_set_prelight(sd, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1261 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1262 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1263
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1264 static gint sizer_expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1265 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1266 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1267 GdkRectangle clip;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1268 GtkOrientation orientation;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1269 GtkStateType state;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1270
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1271 gdk_region_get_clipbox(event->region, &clip);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1272
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1273 if (sd->position & SIZER_POS_LEFT || sd->position & SIZER_POS_RIGHT)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1274 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1275 orientation = GTK_ORIENTATION_VERTICAL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1276 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1277 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1278 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1279 orientation = GTK_ORIENTATION_HORIZONTAL;
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 if (sd->handle_prelit)
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 state = GTK_STATE_PRELIGHT;
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 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1287 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1288 state = widget->state;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1289 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1290
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1291 gtk_paint_handle(widget->style, widget->window, state,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1292 GTK_SHADOW_NONE, &clip, widget, "paned",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1293 0, 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1294 widget->allocation.width, widget->allocation.height,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1295 orientation);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1296
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1297 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1298 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1299
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1300 static void sizer_realize_cb(GtkWidget *widget, gpointer data)
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 SizerData *sd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1303 GdkCursorType n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1304
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1305 n = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1306 if (sd->position & SIZER_POS_TOP || sd->position & SIZER_POS_BOTTOM)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1307 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1308 n = GDK_SB_V_DOUBLE_ARROW;
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 if (sd->position & SIZER_POS_LEFT || sd->position & SIZER_POS_RIGHT)
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 n = (n != 0) ? GDK_FLEUR : GDK_SB_H_DOUBLE_ARROW;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1313 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1314
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1315 if (n != 0 && widget->window)
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 GdkCursor *cursor;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1318 cursor = gdk_cursor_new(n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1319 gdk_window_set_cursor(widget->window, cursor);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1320 gdk_cursor_unref(cursor);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1321 }
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1324 static void sizer_destroy_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1325 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1326 SizerData *sd = data;
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 g_free(sd);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1331 GtkWidget *sizer_new(GtkWidget *parent, GtkWidget *bounding_widget,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1332 SizerPositionType position)
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 SizerData *sd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1335 gint handle_size;
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 sd = g_new0(SizerData, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1338
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1339 sd->sizer = gtk_event_box_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1340 sd->parent = parent;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1341 sd->bounding_widget = bounding_widget;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1342 sd->position = position;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1343 sd->hsize_min = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1344 sd->hsize_max = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1345 sd->vsize_min = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1346 sd->vsize_max = -1;
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 sd->in_drag = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1349 sd->handle_prelit = FALSE;
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 g_signal_connect(G_OBJECT(sd->sizer), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1352 G_CALLBACK(sizer_destroy_cb), sd);
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 g_signal_connect(G_OBJECT(sd->sizer), "motion_notify_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1355 G_CALLBACK(sizer_motion_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1356 g_signal_connect(G_OBJECT(sd->sizer), "button_press_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1357 G_CALLBACK(sizer_press_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1358 g_signal_connect(G_OBJECT(sd->sizer), "button_release_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1359 G_CALLBACK(sizer_release_cb), sd);
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 g_signal_connect(G_OBJECT(sd->sizer), "enter_notify_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1362 G_CALLBACK(sizer_enter_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1363 g_signal_connect(G_OBJECT(sd->sizer), "leave_notify_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1364 G_CALLBACK(sizer_leave_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1365
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1366 gtk_widget_set_events(sd->sizer, GDK_POINTER_MOTION_MASK |
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1367 GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK |
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1368 GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
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 g_signal_connect(sd->sizer, "realize",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1371 G_CALLBACK(sizer_realize_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1372 g_signal_connect(sd->sizer, "expose_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1373 G_CALLBACK(sizer_expose_cb), sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1374
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1375 handle_size = sizer_default_handle_size();
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 gtk_widget_set_size_request(sd->sizer, handle_size, handle_size);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1378 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1379 /* use this if you add a shadow border to the handle */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1380 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
1381 handle_size + sd->sizer->style->ythickness * 2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1382 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1383
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1384 g_object_set_data(G_OBJECT(sd->sizer), SIZER_DATA_KEY,sd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1385
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1386 return sd->sizer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1387 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1388
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1389 void sizer_set_limits(GtkWidget *sizer,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1390 gint hsize_min, gint hsize_max,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1391 gint vsize_min, gint vsize_max)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1392 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1393 SizerData *sd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1394
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1395 sd = g_object_get_data(G_OBJECT(sizer), SIZER_DATA_KEY);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1396 if (!sd) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1397
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1398 sd->hsize_min = hsize_min;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1399 sd->hsize_max = hsize_max;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1400 sd->vsize_min = vsize_min;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1401 sd->vsize_max = vsize_max;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1402 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1403
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1404
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1405 /*
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 * storing data in a history list with key,data pairs
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1408 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1409 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1410
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1411 #define PREF_LIST_MARKER_INT "[INT]:"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1412 #define PREF_LIST_MARKER_DOUBLE "[DOUBLE]:"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1413 #define PREF_LIST_MARKER_STRING "[STRING]:"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1414
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1415 static GList *pref_list_find(const gchar *group, const gchar *token)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1416 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1417 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1418 gint l;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1419
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1420 l = strlen(token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1421
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1422 work = history_list_get_by_key(group);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1423 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1424 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1425 const gchar *text = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1426
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1427 if (strncmp(text, token, l) == 0) return work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1428
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1429 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1430 }
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 NULL;
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 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
1436 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1437 gchar *token;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1438 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1439 gint ret;
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 if (!group || !key || !marker)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1442 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1443 *result = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1444 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1445 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1446
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1447 token = g_strconcat(key, marker, NULL);
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 work = pref_list_find(group, token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1450 if (work)
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 *result = (const gchar *)work->data + strlen(token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1453 if (strlen(*result) == 0) *result = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1454 ret = TRUE;
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 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1457 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1458 *result = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1459 ret = FALSE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1462 g_free(token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1463
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1464 return ret;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1467 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
1468 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1469 gchar *token;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1470 gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1471 GList *work;
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 (!group || !key || !marker) return;
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 token = g_strconcat(key, marker, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1476 path = g_strconcat(token, text, NULL);
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 work = pref_list_find(group, token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1479 if (work)
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 gchar *old_path = work->data;
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 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1484 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1485 work->data = path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1486 path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1487
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1488 g_free(old_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1489 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1490 else
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 history_list_item_remove(group, old_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1493 }
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 else if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1496 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1497 history_list_add_to_key(group, path, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1498 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1499
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1500 g_free(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1501 g_free(token);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1502 }
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 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
1505 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1506 gchar *text;
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 text = g_strdup_printf("%d", value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1509 pref_list_set(group, key, PREF_LIST_MARKER_INT, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1510 g_free(text);
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 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
1514 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1515 const gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1516
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1517 if (!group || !key)
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 *result = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1520 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1521 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1522
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1523 if (pref_list_get(group, key, PREF_LIST_MARKER_INT, &text) && text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1524 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1525 *result = (gint)strtol(text, NULL, 10);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1526 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1527 }
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 *result = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1530 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1531 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1532
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1533 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
1534 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1535 gchar text[G_ASCII_DTOSTR_BUF_SIZE];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1536
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1537 g_ascii_dtostr(text, sizeof(text), value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1538 pref_list_set(group, key, PREF_LIST_MARKER_DOUBLE, text);
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 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
1542 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1543 const gchar *text;
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 if (!group || !key)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1546 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1547 *result = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1548 return FALSE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1551 if (pref_list_get(group, key, PREF_LIST_MARKER_DOUBLE, &text) && text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1552 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1553 *result = g_ascii_strtod(text, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1554 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1555 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1556
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1557 *result = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1558 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1559 }
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 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
1562 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1563 pref_list_set(group, key, PREF_LIST_MARKER_STRING, value);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1566 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
1567 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1568 return pref_list_get(group, key, PREF_LIST_MARKER_STRING, result);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1569 }
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