Mercurial > geeqie.yaz
annotate src/layout_util.c @ 380:5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
data.
Specific data is now in ViewDirInfoList and ViewDirInfoTree.
Type of directory view can be specified with enum DirViewType.
This is saved to rc file as layout.dir_view_type, which replace
layout.view_as_tree.
Code was modified to reflect these changes.
This is a first to move to merge common code of view_dir_list.c
and view_dir_tree.c and ease the introduction of new types
of directory view.
author | zas_ |
---|---|
date | Wed, 16 Apr 2008 14:45:22 +0000 |
parents | 63380ea3e65d |
children | c4080362d619 |
rev | line source |
---|---|
9 | 1 /* |
196 | 2 * Geeqie |
9 | 3 * (C) 2004 John Ellis |
4 * | |
5 * Author: John Ellis | |
6 * | |
7 * This software is released under the GNU General Public License (GNU GPL). | |
8 * Please read the included file COPYING for more information. | |
9 * This software comes with no warranty of any kind, use at your own risk! | |
10 */ | |
11 | |
12 | |
281 | 13 #include "main.h" |
9 | 14 #include "layout_util.h" |
15 | |
16 #include "bar_info.h" | |
17 #include "bar_exif.h" | |
18 #include "bar_sort.h" | |
19 #include "cache_maint.h" | |
20 #include "collect.h" | |
21 #include "collect-dlg.h" | |
22 #include "dupe.h" | |
23 #include "editors.h" | |
249 | 24 #include "filelist.h" |
284 | 25 #include "image-overlay.h" |
94
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
26 #include "img-view.h" |
9 | 27 #include "info.h" |
28 #include "layout_image.h" | |
12
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
29 #include "pan-view.h" |
9 | 30 #include "pixbuf_util.h" |
31 #include "preferences.h" | |
32 #include "print.h" | |
33 #include "search.h" | |
34 #include "utilops.h" | |
35 #include "ui_bookmark.h" | |
36 #include "ui_fileops.h" | |
37 #include "ui_menu.h" | |
38 #include "ui_misc.h" | |
39 #include "ui_tabcomp.h" | |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
40 #include "view_dir.h" |
9 | 41 |
42 #include <gdk/gdkkeysyms.h> /* for keyboard values */ | |
43 | |
44 | |
45 #define MENU_EDIT_ACTION_OFFSET 16 | |
46 | |
47 | |
48 /* | |
49 *----------------------------------------------------------------------------- | |
50 * keyboard handler | |
51 *----------------------------------------------------------------------------- | |
52 */ | |
53 | |
54 static guint tree_key_overrides[] = { | |
55 GDK_Page_Up, GDK_KP_Page_Up, | |
56 GDK_Page_Down, GDK_KP_Page_Down, | |
57 GDK_Home, GDK_KP_Home, | |
58 GDK_End, GDK_KP_End | |
59 }; | |
60 | |
61 static gint layout_key_match(guint keyval) | |
62 { | |
63 gint i; | |
64 | |
65 for (i = 0; i < sizeof(tree_key_overrides) / sizeof(guint); i++) | |
66 { | |
67 if (keyval == tree_key_overrides[i]) return TRUE; | |
68 } | |
69 | |
70 return FALSE; | |
71 } | |
72 | |
160 | 73 gint layout_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) |
9 | 74 { |
75 LayoutWindow *lw = data; | |
76 gint stop_signal = FALSE; | |
77 gint x = 0; | |
78 gint y = 0; | |
79 | |
80 if (lw->path_entry && GTK_WIDGET_HAS_FOCUS(lw->path_entry)) | |
81 { | |
82 if (event->keyval == GDK_Escape && lw->path) | |
83 { | |
84 gtk_entry_set_text(GTK_ENTRY(lw->path_entry), lw->path); | |
85 } | |
86 | |
87 /* the gtkaccelgroup of the window is stealing presses before they get to the entry (and more), | |
88 * so when the some widgets have focus, give them priority (HACK) | |
89 */ | |
90 if (gtk_widget_event(lw->path_entry, (GdkEvent *)event)) | |
91 { | |
92 return TRUE; | |
93 } | |
94 } | |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
95 if (lw->vd && lw->dir_view_type == DIRVIEW_TREE && GTK_WIDGET_HAS_FOCUS(lw->vd->view) && |
9 | 96 !layout_key_match(event->keyval) && |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
97 gtk_widget_event(lw->vd->view, (GdkEvent *)event)) |
9 | 98 { |
99 return TRUE; | |
100 } | |
101 if (lw->bar_info && | |
102 bar_info_event(lw->bar_info, (GdkEvent *)event)) | |
103 { | |
104 return TRUE; | |
105 } | |
106 | |
160 | 107 /* |
108 if (event->type == GDK_KEY_PRESS && lw->full_screen && | |
109 gtk_accel_groups_activate(G_OBJECT(lw->window), event->keyval, event->state)) | |
110 return TRUE; | |
111 */ | |
112 | |
9 | 113 if (lw->image && |
160 | 114 (GTK_WIDGET_HAS_FOCUS(lw->image->widget) || (lw->tools && widget == lw->window) || lw->full_screen) ) |
9 | 115 { |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
116 stop_signal = TRUE; |
9 | 117 switch (event->keyval) |
118 { | |
119 case GDK_Left: case GDK_KP_Left: | |
120 x -= 1; | |
121 break; | |
122 case GDK_Right: case GDK_KP_Right: | |
123 x += 1; | |
124 break; | |
125 case GDK_Up: case GDK_KP_Up: | |
126 y -= 1; | |
127 break; | |
128 case GDK_Down: case GDK_KP_Down: | |
129 y += 1; | |
130 break; | |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
131 default: |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
132 stop_signal = FALSE; |
9 | 133 break; |
134 } | |
94
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
135 |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
136 if (!stop_signal && |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
137 !(event->state & GDK_CONTROL_MASK)) |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
138 { |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
139 stop_signal = TRUE; |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
140 switch (event->keyval) |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
141 { |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
142 case GDK_Menu: |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
143 layout_image_menu_popup(lw); |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
144 break; |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
145 default: |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
146 stop_signal = FALSE; |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
147 break; |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
148 } |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
149 } |
9 | 150 } |
151 | |
152 if (x != 0 || y!= 0) | |
153 { | |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
154 if (event->state & GDK_SHIFT_MASK) |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
155 { |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
156 x *= 3; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
157 y *= 3; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
158 } |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
159 |
9 | 160 keyboard_scroll_calc(&x, &y, event); |
161 layout_image_scroll(lw, x, y); | |
162 } | |
163 | |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
164 if (stop_signal) return stop_signal; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
165 |
94
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
166 if (event->state & GDK_CONTROL_MASK) |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
167 { |
159 | 168 stop_signal = FALSE; |
94
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
169 } |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
170 else |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
171 { |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
172 stop_signal = TRUE; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
173 switch (event->keyval) |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
174 { |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
175 case '+': case GDK_KP_Add: |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
176 layout_image_zoom_adjust(lw, get_zoom_increment()); |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
177 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
178 case GDK_KP_Subtract: |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
179 layout_image_zoom_adjust(lw, -get_zoom_increment()); |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
180 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
181 case GDK_KP_Multiply: |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
182 layout_image_zoom_set(lw, 0.0); |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
183 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
184 case GDK_KP_Divide: |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
185 layout_image_zoom_set(lw, 1.0); |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
186 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
187 case GDK_Page_Up: case GDK_KP_Page_Up: |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
188 layout_image_prev(lw); |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
189 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
190 case GDK_Page_Down: case GDK_KP_Page_Down: |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
191 layout_image_next(lw); |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
192 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
193 case GDK_Delete: case GDK_KP_Delete: |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
329
diff
changeset
|
194 if (options->file_ops.enable_delete_key) |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
195 { |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
196 file_util_delete(NULL, layout_selection_list(lw), widget); |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
197 } |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
198 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
199 case GDK_Escape: |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
200 /* FIXME:interrupting thumbs no longer allowed */ |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
201 #if 0 |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
202 interrupt_thumbs(); |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
203 #endif |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
204 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
205 case 'P': case 'p': |
94
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
206 if (!event->state & GDK_SHIFT_MASK) |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
207 { |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
208 layout_image_slideshow_pause_toggle(lw); |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
209 } |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
210 else |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
211 { |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
212 stop_signal = FALSE; |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
213 } |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
214 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
215 case 'V': case 'v': |
86
cade6a52a165
Mon Oct 23 05:34:29 2006 John Ellis <johne@verizon.net>
gqview
parents:
84
diff
changeset
|
216 case GDK_F11: |
94
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
217 layout_image_full_screen_toggle(lw); |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
218 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
219 default: |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
220 stop_signal = FALSE; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
221 break; |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
222 } |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
223 } |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
224 |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
225 #if 0 |
9 | 226 if (stop_signal) g_signal_stop_emission_by_name(G_OBJECT(widget), "key_press_event"); |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
227 #endif |
9 | 228 |
229 return stop_signal; | |
230 } | |
231 | |
232 void layout_keyboard_init(LayoutWindow *lw, GtkWidget *window) | |
233 { | |
234 g_signal_connect(G_OBJECT(window), "key_press_event", | |
235 G_CALLBACK(layout_key_press_cb), lw); | |
236 } | |
237 | |
238 /* | |
239 *----------------------------------------------------------------------------- | |
240 * menu callbacks | |
241 *----------------------------------------------------------------------------- | |
242 */ | |
160 | 243 |
244 | |
245 static GtkWidget *layout_window(LayoutWindow *lw) | |
246 { | |
247 return lw->full_screen ? lw->full_screen->window : lw->window; | |
248 } | |
9 | 249 |
250 static void layout_menu_new_window_cb(GtkAction *action, gpointer data) | |
251 { | |
252 LayoutWindow *lw = data; | |
253 LayoutWindow *nw; | |
254 | |
160 | 255 if (lw->full_screen) |
256 layout_image_full_screen_stop(lw); | |
257 | |
9 | 258 nw = layout_new(NULL, FALSE, FALSE); |
329 | 259 layout_sort_set(nw, options->file_sort.method, options->file_sort.ascending); |
9 | 260 layout_set_path(nw, layout_get_path(lw)); |
261 } | |
262 | |
263 static void layout_menu_new_cb(GtkAction *action, gpointer data) | |
264 { | |
160 | 265 LayoutWindow *lw = data; |
266 if (lw->full_screen) | |
267 layout_image_full_screen_stop(lw); | |
9 | 268 collection_window_new(NULL); |
269 } | |
270 | |
271 static void layout_menu_open_cb(GtkAction *action, gpointer data) | |
272 { | |
160 | 273 LayoutWindow *lw = data; |
274 if (lw->full_screen) | |
275 layout_image_full_screen_stop(lw); | |
9 | 276 collection_dialog_load(NULL); |
277 } | |
278 | |
279 static void layout_menu_search_cb(GtkAction *action, gpointer data) | |
280 { | |
281 LayoutWindow *lw = data; | |
160 | 282 if (lw->full_screen) |
283 layout_image_full_screen_stop(lw); | |
9 | 284 |
285 search_new(lw->path, layout_image_get_path(lw)); | |
286 } | |
287 | |
288 static void layout_menu_dupes_cb(GtkAction *action, gpointer data) | |
289 { | |
160 | 290 LayoutWindow *lw = data; |
291 if (lw->full_screen) | |
292 layout_image_full_screen_stop(lw); | |
293 | |
9 | 294 dupe_window_new(DUPE_MATCH_NAME); |
295 } | |
296 | |
12
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
297 static void layout_menu_pan_cb(GtkAction *action, gpointer data) |
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
298 { |
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
299 LayoutWindow *lw = data; |
160 | 300 if (lw->full_screen) |
301 layout_image_full_screen_stop(lw); | |
12
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
302 |
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
303 pan_window_new(layout_get_path(lw)); |
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
304 } |
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
305 |
9 | 306 static void layout_menu_print_cb(GtkAction *action, gpointer data) |
307 { | |
308 LayoutWindow *lw = data; | |
309 | |
160 | 310 print_window_new(layout_image_get_fd(lw), layout_selection_list(lw), layout_list(lw), layout_window(lw)); |
9 | 311 } |
312 | |
313 static void layout_menu_dir_cb(GtkAction *action, gpointer data) | |
314 { | |
315 LayoutWindow *lw = data; | |
316 | |
160 | 317 file_util_create_dir(lw->path, layout_window(lw)); |
9 | 318 } |
319 | |
320 static void layout_menu_copy_cb(GtkAction *action, gpointer data) | |
321 { | |
322 LayoutWindow *lw = data; | |
323 | |
160 | 324 file_util_copy(NULL, layout_selection_list(lw), NULL, layout_window(lw)); |
9 | 325 } |
326 | |
327 static void layout_menu_move_cb(GtkAction *action, gpointer data) | |
328 { | |
329 LayoutWindow *lw = data; | |
330 | |
160 | 331 file_util_move(NULL, layout_selection_list(lw), NULL, layout_window(lw)); |
9 | 332 } |
333 | |
334 static void layout_menu_rename_cb(GtkAction *action, gpointer data) | |
335 { | |
336 LayoutWindow *lw = data; | |
337 | |
160 | 338 file_util_rename(NULL, layout_selection_list(lw), layout_window(lw)); |
9 | 339 } |
340 | |
341 static void layout_menu_delete_cb(GtkAction *action, gpointer data) | |
342 { | |
343 LayoutWindow *lw = data; | |
344 | |
160 | 345 file_util_delete(NULL, layout_selection_list(lw), layout_window(lw)); |
9 | 346 } |
347 | |
348 static void layout_menu_close_cb(GtkAction *action, gpointer data) | |
349 { | |
350 LayoutWindow *lw = data; | |
160 | 351 if (lw->full_screen) |
352 layout_image_full_screen_stop(lw); | |
9 | 353 |
354 layout_close(lw); | |
355 } | |
356 | |
357 static void layout_menu_exit_cb(GtkAction *action, gpointer data) | |
358 { | |
278 | 359 exit_program(); |
9 | 360 } |
361 | |
362 static void layout_menu_alter_90_cb(GtkAction *action, gpointer data) | |
363 { | |
364 LayoutWindow *lw = data; | |
365 | |
366 layout_image_alter(lw, ALTER_ROTATE_90); | |
367 } | |
368 | |
369 static void layout_menu_alter_90cc_cb(GtkAction *action, gpointer data) | |
370 { | |
371 LayoutWindow *lw = data; | |
372 | |
373 layout_image_alter(lw, ALTER_ROTATE_90_CC); | |
374 } | |
375 | |
376 static void layout_menu_alter_180_cb(GtkAction *action, gpointer data) | |
377 { | |
378 LayoutWindow *lw = data; | |
379 | |
380 layout_image_alter(lw, ALTER_ROTATE_180); | |
381 } | |
382 | |
383 static void layout_menu_alter_mirror_cb(GtkAction *action, gpointer data) | |
384 { | |
385 LayoutWindow *lw = data; | |
386 | |
387 layout_image_alter(lw, ALTER_MIRROR); | |
388 } | |
389 | |
390 static void layout_menu_alter_flip_cb(GtkAction *action, gpointer data) | |
391 { | |
392 LayoutWindow *lw = data; | |
393 | |
394 layout_image_alter(lw, ALTER_FLIP); | |
395 } | |
396 | |
82
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
397 static void layout_menu_alter_desaturate_cb(GtkAction *action, gpointer data) |
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
398 { |
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
399 LayoutWindow *lw = data; |
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
400 |
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
401 layout_image_alter(lw, ALTER_DESATURATE); |
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
402 } |
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
403 |
9 | 404 static void layout_menu_info_cb(GtkAction *action, gpointer data) |
405 { | |
406 LayoutWindow *lw = data; | |
407 GList *list; | |
138 | 408 FileData *fd = NULL; |
9 | 409 |
410 list = layout_selection_list(lw); | |
138 | 411 if (!list) fd = layout_image_get_fd(lw); |
9 | 412 |
138 | 413 info_window_new(fd, list); |
9 | 414 } |
415 | |
416 | |
417 static void layout_menu_config_cb(GtkAction *action, gpointer data) | |
418 { | |
160 | 419 LayoutWindow *lw = data; |
420 if (lw->full_screen) | |
421 layout_image_full_screen_stop(lw); | |
422 | |
9 | 423 show_config_window(); |
424 } | |
425 | |
426 static void layout_menu_remove_thumb_cb(GtkAction *action, gpointer data) | |
427 { | |
160 | 428 LayoutWindow *lw = data; |
429 if (lw->full_screen) | |
430 layout_image_full_screen_stop(lw); | |
431 | |
9 | 432 cache_manager_show(); |
433 } | |
434 | |
435 static void layout_menu_wallpaper_cb(GtkAction *action, gpointer data) | |
436 { | |
437 LayoutWindow *lw = data; | |
438 | |
439 layout_image_to_root(lw); | |
440 } | |
441 | |
442 static void layout_menu_zoom_in_cb(GtkAction *action, gpointer data) | |
443 { | |
444 LayoutWindow *lw = data; | |
445 | |
446 layout_image_zoom_adjust(lw, get_zoom_increment()); | |
447 } | |
448 | |
449 static void layout_menu_zoom_out_cb(GtkAction *action, gpointer data) | |
450 { | |
451 LayoutWindow *lw = data; | |
452 | |
453 layout_image_zoom_adjust(lw, -get_zoom_increment()); | |
454 } | |
455 | |
456 static void layout_menu_zoom_1_1_cb(GtkAction *action, gpointer data) | |
457 { | |
458 LayoutWindow *lw = data; | |
459 | |
460 layout_image_zoom_set(lw, 1.0); | |
461 } | |
462 | |
463 static void layout_menu_zoom_fit_cb(GtkAction *action, gpointer data) | |
464 { | |
465 LayoutWindow *lw = data; | |
466 | |
467 layout_image_zoom_set(lw, 0.0); | |
468 } | |
469 | |
159 | 470 static void layout_menu_zoom_fit_hor_cb(GtkAction *action, gpointer data) |
471 { | |
472 LayoutWindow *lw = data; | |
473 | |
474 layout_image_zoom_set_fill_geometry(lw, TRUE); | |
475 } | |
476 | |
477 static void layout_menu_zoom_fit_vert_cb(GtkAction *action, gpointer data) | |
478 { | |
479 LayoutWindow *lw = data; | |
480 | |
481 layout_image_zoom_set_fill_geometry(lw, FALSE); | |
482 } | |
483 | |
484 static void layout_menu_zoom_2_1_cb(GtkAction *action, gpointer data) | |
485 { | |
486 LayoutWindow *lw = data; | |
487 | |
488 layout_image_zoom_set(lw, 2.0); | |
489 } | |
490 | |
491 static void layout_menu_zoom_3_1_cb(GtkAction *action, gpointer data) | |
492 { | |
493 LayoutWindow *lw = data; | |
494 | |
495 layout_image_zoom_set(lw, 3.0); | |
496 } | |
497 static void layout_menu_zoom_4_1_cb(GtkAction *action, gpointer data) | |
498 { | |
499 LayoutWindow *lw = data; | |
500 | |
501 layout_image_zoom_set(lw, 4.0); | |
502 } | |
503 | |
504 static void layout_menu_zoom_1_2_cb(GtkAction *action, gpointer data) | |
505 { | |
506 LayoutWindow *lw = data; | |
507 | |
508 layout_image_zoom_set(lw, -2.0); | |
509 } | |
510 | |
511 static void layout_menu_zoom_1_3_cb(GtkAction *action, gpointer data) | |
512 { | |
513 LayoutWindow *lw = data; | |
514 | |
515 layout_image_zoom_set(lw, -3.0); | |
516 } | |
517 | |
518 static void layout_menu_zoom_1_4_cb(GtkAction *action, gpointer data) | |
519 { | |
520 LayoutWindow *lw = data; | |
521 | |
522 layout_image_zoom_set(lw, -4.0); | |
523 } | |
524 | |
525 | |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
526 static void layout_menu_split_cb(GtkRadioAction *action, GtkRadioAction *current, gpointer data) |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
527 { |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
528 LayoutWindow *lw = data; |
160 | 529 if (lw->full_screen) |
530 layout_image_full_screen_stop(lw); | |
531 | |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
532 ImageSplitMode mode = gtk_radio_action_get_current_value(action); |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
533 |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
534 if (mode == lw->split_mode) mode = 0; /* toggle back */ |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
535 |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
536 layout_split_change(lw, mode); |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
537 } |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
538 |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
539 static void layout_menu_connect_scroll_cb(GtkToggleAction *action, gpointer data) |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
540 { |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
541 LayoutWindow *lw = data; |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
542 lw->connect_scroll = gtk_toggle_action_get_active(action); |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
543 } |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
544 |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
545 static void layout_menu_connect_zoom_cb(GtkToggleAction *action, gpointer data) |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
546 { |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
547 LayoutWindow *lw = data; |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
548 lw->connect_zoom = gtk_toggle_action_get_active(action); |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
549 } |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
550 |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
551 |
9 | 552 static void layout_menu_thumb_cb(GtkToggleAction *action, gpointer data) |
553 { | |
554 LayoutWindow *lw = data; | |
555 | |
556 layout_thumb_set(lw, gtk_toggle_action_get_active(action)); | |
557 } | |
558 | |
132 | 559 |
9 | 560 static void layout_menu_list_cb(GtkRadioAction *action, GtkRadioAction *current, gpointer data) |
561 { | |
562 LayoutWindow *lw = data; | |
160 | 563 if (lw->full_screen) |
564 layout_image_full_screen_stop(lw); | |
9 | 565 |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
566 layout_views_set(lw, lw->dir_view_type, (gtk_radio_action_get_current_value(action) == 1)); |
9 | 567 } |
568 | |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
569 static void layout_menu_view_dir_as_cb(GtkRadioAction *action, GtkRadioAction *current, gpointer data) |
9 | 570 { |
571 LayoutWindow *lw = data; | |
160 | 572 if (lw->full_screen) |
573 layout_image_full_screen_stop(lw); | |
9 | 574 |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
575 layout_views_set(lw, (DirViewType) gtk_radio_action_get_current_value(action), lw->icon_view); |
9 | 576 } |
577 | |
159 | 578 static void layout_menu_view_in_new_window_cb(GtkAction *action, gpointer data) |
579 { | |
580 LayoutWindow *lw = data; | |
581 | |
160 | 582 if (lw->full_screen) |
583 layout_image_full_screen_stop(lw); | |
159 | 584 view_window_new(layout_image_get_fd(lw)); |
585 } | |
586 | |
9 | 587 static void layout_menu_fullscreen_cb(GtkAction *action, gpointer data) |
588 { | |
589 LayoutWindow *lw = data; | |
590 | |
591 layout_image_full_screen_toggle(lw); | |
592 } | |
593 | |
159 | 594 static void layout_menu_overlay_cb(GtkAction *action, gpointer data) |
595 { | |
596 LayoutWindow *lw = data; | |
597 | |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
598 if (image_osd_get(lw->image, NULL, NULL)) |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
599 { |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
600 if (image_osd_histogram_onoff_status(lw->image)) |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
601 { |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
602 image_osd_histogram_onoff_toggle(lw->image, 0); |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
603 layout_image_overlay_update(lw); |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
604 } |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
605 else |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
606 layout_image_overlay_toggle(lw); |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
607 } |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
608 else |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
609 { |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
610 layout_image_overlay_toggle(lw); |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
611 image_osd_histogram_onoff_toggle(lw->image, 1); |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
612 layout_image_overlay_update(lw); |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
613 } |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
614 } |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
615 |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
616 static void layout_menu_histogram_chan_cb(GtkAction *action, gpointer data) |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
617 { |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
618 LayoutWindow *lw = data; |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
619 |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
620 image_osd_histogram_chan_toggle(lw->image); |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
621 layout_image_overlay_update(lw); |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
622 } |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
623 |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
624 static void layout_menu_histogram_log_cb(GtkAction *action, gpointer data) |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
625 { |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
626 LayoutWindow *lw = data; |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
627 |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
628 image_osd_histogram_log_toggle(lw->image); |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
629 layout_image_overlay_update(lw); |
159 | 630 } |
631 | |
9 | 632 static void layout_menu_refresh_cb(GtkAction *action, gpointer data) |
633 { | |
634 LayoutWindow *lw = data; | |
635 | |
636 layout_refresh(lw); | |
637 } | |
638 | |
639 static void layout_menu_float_cb(GtkToggleAction *action, gpointer data) | |
640 { | |
641 LayoutWindow *lw = data; | |
160 | 642 if (lw->full_screen) |
643 layout_image_full_screen_stop(lw); | |
9 | 644 |
645 if (lw->tools_float != gtk_toggle_action_get_active(action)) | |
646 { | |
647 layout_tools_float_toggle(lw); | |
648 } | |
649 } | |
650 | |
651 static void layout_menu_hide_cb(GtkAction *action, gpointer data) | |
652 { | |
653 LayoutWindow *lw = data; | |
160 | 654 if (lw->full_screen) |
655 layout_image_full_screen_stop(lw); | |
9 | 656 |
657 layout_tools_hide_toggle(lw); | |
658 } | |
659 | |
660 static void layout_menu_toolbar_cb(GtkToggleAction *action, gpointer data) | |
661 { | |
662 LayoutWindow *lw = data; | |
160 | 663 if (lw->full_screen) |
664 layout_image_full_screen_stop(lw); | |
9 | 665 |
666 if (lw->toolbar_hidden != gtk_toggle_action_get_active(action)) | |
667 { | |
668 layout_toolbar_toggle(lw); | |
669 } | |
670 } | |
671 | |
672 static void layout_menu_bar_info_cb(GtkToggleAction *action, gpointer data) | |
673 { | |
674 LayoutWindow *lw = data; | |
160 | 675 if (lw->full_screen) |
676 layout_image_full_screen_stop(lw); | |
9 | 677 |
678 if (lw->bar_info_enabled != gtk_toggle_action_get_active(action)) | |
679 { | |
680 layout_bar_info_toggle(lw); | |
681 } | |
682 } | |
683 | |
684 static void layout_menu_bar_exif_cb(GtkToggleAction *action, gpointer data) | |
685 { | |
686 LayoutWindow *lw = data; | |
160 | 687 if (lw->full_screen) |
688 layout_image_full_screen_stop(lw); | |
9 | 689 |
690 if (lw->bar_exif_enabled != gtk_toggle_action_get_active(action)) | |
691 { | |
692 layout_bar_exif_toggle(lw); | |
693 } | |
694 } | |
695 | |
696 static void layout_menu_bar_sort_cb(GtkToggleAction *action, gpointer data) | |
697 { | |
698 LayoutWindow *lw = data; | |
160 | 699 if (lw->full_screen) |
700 layout_image_full_screen_stop(lw); | |
9 | 701 |
702 if (lw->bar_sort_enabled != gtk_toggle_action_get_active(action)) | |
703 { | |
704 layout_bar_sort_toggle(lw); | |
705 } | |
706 } | |
707 | |
708 static void layout_menu_slideshow_cb(GtkAction *action, gpointer data) | |
709 { | |
710 LayoutWindow *lw = data; | |
711 | |
712 layout_image_slideshow_toggle(lw); | |
713 } | |
714 | |
715 static void layout_menu_help_cb(GtkAction *action, gpointer data) | |
716 { | |
160 | 717 LayoutWindow *lw = data; |
718 if (lw->full_screen) | |
719 layout_image_full_screen_stop(lw); | |
9 | 720 help_window_show("html_contents"); |
721 } | |
722 | |
723 static void layout_menu_help_keys_cb(GtkAction *action, gpointer data) | |
724 { | |
160 | 725 LayoutWindow *lw = data; |
726 if (lw->full_screen) | |
727 layout_image_full_screen_stop(lw); | |
9 | 728 help_window_show("documentation"); |
729 } | |
730 | |
731 static void layout_menu_notes_cb(GtkAction *action, gpointer data) | |
732 { | |
160 | 733 LayoutWindow *lw = data; |
734 if (lw->full_screen) | |
735 layout_image_full_screen_stop(lw); | |
9 | 736 help_window_show("release_notes"); |
737 } | |
738 | |
739 static void layout_menu_about_cb(GtkAction *action, gpointer data) | |
740 { | |
160 | 741 LayoutWindow *lw = data; |
742 if (lw->full_screen) | |
743 layout_image_full_screen_stop(lw); | |
9 | 744 show_about_window(); |
745 } | |
746 | |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
747 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
748 /* |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
749 *----------------------------------------------------------------------------- |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
750 * select menu |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
751 *----------------------------------------------------------------------------- |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
752 */ |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
753 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
754 static void layout_menu_select_all_cb(GtkAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
755 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
756 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
757 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
758 layout_select_all(lw); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
759 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
760 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
761 static void layout_menu_unselect_all_cb(GtkAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
762 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
763 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
764 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
765 layout_select_none(lw); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
766 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
767 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
768 static void layout_menu_marks_cb(GtkToggleAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
769 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
770 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
771 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
772 layout_marks_set(lw, gtk_toggle_action_get_active(action)); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
773 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
774 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
775 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
776 static void layout_menu_set_mark_sel_cb(GtkAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
777 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
778 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
779 gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(action), "mark_num")); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
780 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
781 mark--; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
782 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
783 layout_selection_to_mark(lw, mark, STM_MODE_SET); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
784 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
785 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
786 static void layout_menu_res_mark_sel_cb(GtkAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
787 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
788 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
789 gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(action), "mark_num")); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
790 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
791 mark--; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
792 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
793 layout_selection_to_mark(lw, mark, STM_MODE_RESET); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
794 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
795 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
796 static void layout_menu_toggle_mark_sel_cb(GtkAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
797 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
798 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
799 gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(action), "mark_num")); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
800 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
801 mark--; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
802 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
803 layout_selection_to_mark(lw, mark, STM_MODE_TOGGLE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
804 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
805 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
806 static void layout_menu_sel_mark_cb(GtkAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
807 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
808 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
809 gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(action), "mark_num")); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
810 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
811 mark--; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
812 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
813 layout_mark_to_selection(lw, mark, MTS_MODE_SET); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
814 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
815 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
816 static void layout_menu_sel_mark_or_cb(GtkAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
817 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
818 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
819 gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(action), "mark_num")); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
820 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
821 mark--; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
822 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
823 layout_mark_to_selection(lw, mark, MTS_MODE_OR); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
824 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
825 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
826 static void layout_menu_sel_mark_and_cb(GtkAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
827 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
828 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
829 gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(action), "mark_num")); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
830 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
831 mark--; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
832 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
833 layout_mark_to_selection(lw, mark, MTS_MODE_AND); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
834 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
835 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
836 static void layout_menu_sel_mark_minus_cb(GtkAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
837 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
838 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
839 gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(action), "mark_num")); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
840 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
841 mark--; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
842 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
843 layout_mark_to_selection(lw, mark, MTS_MODE_MINUS); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
844 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
845 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
846 |
9 | 847 /* |
848 *----------------------------------------------------------------------------- | |
159 | 849 * go menu |
850 *----------------------------------------------------------------------------- | |
851 */ | |
852 | |
853 static void layout_menu_image_first_cb(GtkAction *action, gpointer data) | |
854 { | |
855 LayoutWindow *lw = data; | |
856 layout_image_first(lw); | |
857 } | |
858 | |
859 static void layout_menu_image_prev_cb(GtkAction *action, gpointer data) | |
860 { | |
861 LayoutWindow *lw = data; | |
862 layout_image_prev(lw); | |
863 } | |
864 | |
865 static void layout_menu_image_next_cb(GtkAction *action, gpointer data) | |
866 { | |
867 LayoutWindow *lw = data; | |
868 layout_image_next(lw); | |
869 } | |
870 | |
871 static void layout_menu_image_last_cb(GtkAction *action, gpointer data) | |
872 { | |
873 LayoutWindow *lw = data; | |
874 layout_image_last(lw); | |
875 } | |
876 | |
877 | |
878 /* | |
879 *----------------------------------------------------------------------------- | |
9 | 880 * edit menu |
881 *----------------------------------------------------------------------------- | |
882 */ | |
883 | |
884 static void layout_menu_edit_cb(GtkAction *action, gpointer data) | |
885 { | |
886 LayoutWindow *lw = data; | |
887 GList *list; | |
888 gint n; | |
889 | |
890 n = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(action), "edit_index")); | |
891 | |
160 | 892 |
893 if (lw->full_screen && !editor_window_flag_set(n)) | |
894 { | |
895 layout_image_full_screen_stop(lw); | |
896 } | |
9 | 897 list = layout_selection_list(lw); |
138 | 898 start_editor_from_filelist(n, list); |
899 filelist_free(list); | |
9 | 900 } |
901 | |
902 static void layout_menu_edit_update(LayoutWindow *lw) | |
903 { | |
904 gint i; | |
905 | |
906 /* main edit menu */ | |
907 | |
908 if (!lw->action_group) return; | |
909 | |
910 for (i = 0; i < 10; i++) | |
911 { | |
912 gchar *key; | |
913 GtkAction *action; | |
914 | |
915 key = g_strdup_printf("Editor%d", i); | |
916 | |
917 action = gtk_action_group_get_action(lw->action_group, key); | |
918 g_object_set_data(G_OBJECT(action), "edit_index", GINT_TO_POINTER(i)); | |
919 | |
318 | 920 if (options->editor_command[i] && strlen(options->editor_command[i]) > 0) |
9 | 921 { |
922 gchar *text; | |
923 | |
318 | 924 if (options->editor_name[i] && strlen(options->editor_name[i]) > 0) |
9 | 925 { |
318 | 926 text = g_strdup_printf(_("in %s..."), options->editor_name[i]); |
9 | 927 } |
928 else | |
929 { | |
930 text = g_strdup(_("in (unknown)...")); | |
931 } | |
932 g_object_set(action, "label", text, | |
933 "sensitive", TRUE, NULL); | |
934 g_free(text); | |
935 } | |
936 else | |
937 { | |
938 g_object_set(action, "label", _("empty"), | |
939 "sensitive", FALSE, NULL); | |
940 } | |
941 | |
942 g_free(key); | |
943 } | |
944 } | |
945 | |
946 void layout_edit_update_all(void) | |
947 { | |
948 GList *work; | |
949 | |
950 work = layout_window_list; | |
951 while (work) | |
952 { | |
953 LayoutWindow *lw = work->data; | |
954 work = work->next; | |
955 | |
956 layout_menu_edit_update(lw); | |
957 } | |
958 } | |
959 | |
960 /* | |
961 *----------------------------------------------------------------------------- | |
962 * recent menu | |
963 *----------------------------------------------------------------------------- | |
964 */ | |
965 | |
966 static void layout_menu_recent_cb(GtkWidget *widget, gpointer data) | |
967 { | |
968 gint n; | |
969 gchar *path; | |
970 | |
971 n = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "recent_index")); | |
972 | |
973 path = g_list_nth_data(history_list_get_by_key("recent"), n); | |
974 | |
975 if (!path) return; | |
976 | |
977 /* make a copy of it */ | |
978 path = g_strdup(path); | |
979 collection_window_new(path); | |
980 g_free(path); | |
981 } | |
982 | |
983 static void layout_menu_recent_update(LayoutWindow *lw) | |
984 { | |
985 GtkWidget *menu; | |
986 GtkWidget *recent; | |
987 GtkWidget *item; | |
988 GList *list; | |
989 gint n; | |
990 | |
991 if (!lw->ui_manager) return; | |
992 | |
993 list = history_list_get_by_key("recent"); | |
994 n = 0; | |
995 | |
996 menu = gtk_menu_new(); | |
997 | |
998 while (list) | |
999 { | |
1000 item = menu_item_add_simple(menu, filename_from_path((gchar *)list->data), | |
1001 G_CALLBACK(layout_menu_recent_cb), lw); | |
1002 g_object_set_data(G_OBJECT(item), "recent_index", GINT_TO_POINTER(n)); | |
1003 list = list->next; | |
1004 n++; | |
1005 } | |
1006 | |
1007 if (n == 0) | |
1008 { | |
1009 menu_item_add(menu, _("Empty"), NULL, NULL); | |
1010 } | |
1011 | |
1012 recent = gtk_ui_manager_get_widget(lw->ui_manager, "/MainMenu/FileMenu/OpenRecent"); | |
1013 gtk_menu_item_set_submenu(GTK_MENU_ITEM(recent), menu); | |
1014 gtk_widget_set_sensitive(recent, (n != 0)); | |
1015 } | |
1016 | |
1017 void layout_recent_update_all(void) | |
1018 { | |
1019 GList *work; | |
1020 | |
1021 work = layout_window_list; | |
1022 while (work) | |
1023 { | |
1024 LayoutWindow *lw = work->data; | |
1025 work = work->next; | |
1026 | |
1027 layout_menu_recent_update(lw); | |
1028 } | |
1029 } | |
1030 | |
1031 void layout_recent_add_path(const gchar *path) | |
1032 { | |
1033 if (!path) return; | |
1034 | |
343
63380ea3e65d
Rename recent_list_max/open_recent_max to open_recent_list_maxsize.
zas_
parents:
341
diff
changeset
|
1035 history_list_add_to_key("recent", path, options->open_recent_list_maxsize); |
9 | 1036 |
1037 layout_recent_update_all(); | |
1038 } | |
1039 | |
1040 /* | |
1041 *----------------------------------------------------------------------------- | |
1042 * menu | |
1043 *----------------------------------------------------------------------------- | |
1044 */ | |
1045 | |
1046 #define CB G_CALLBACK | |
1047 | |
1048 static GtkActionEntry menu_entries[] = { | |
1049 { "FileMenu", NULL, N_("_File") }, | |
159 | 1050 { "GoMenu", NULL, N_("_Go") }, |
9 | 1051 { "EditMenu", NULL, N_("_Edit") }, |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1052 { "SelectMenu", NULL, N_("_Select") }, |
9 | 1053 { "AdjustMenu", NULL, N_("_Adjust") }, |
1054 { "ViewMenu", NULL, N_("_View") }, | |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1055 { "DirMenu", NULL, N_("_View Directory as") }, |
159 | 1056 { "ZoomMenu", NULL, N_("_Zoom") }, |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1057 { "SplitMenu", NULL, N_("_Split") }, |
9 | 1058 { "HelpMenu", NULL, N_("_Help") }, |
1059 | |
159 | 1060 { "FirstImage", GTK_STOCK_GOTO_TOP, N_("_First Image"), "Home", NULL, CB(layout_menu_image_first_cb) }, |
1061 { "PrevImage", GTK_STOCK_GO_UP, N_("_Previous Image"), "BackSpace", NULL, CB(layout_menu_image_prev_cb) }, | |
1062 { "NextImage", GTK_STOCK_GO_DOWN, N_("_Next Image"), "space", NULL, CB(layout_menu_image_next_cb) }, | |
1063 { "LastImage", GTK_STOCK_GOTO_BOTTOM, N_("_Last Image"), "End", NULL, CB(layout_menu_image_last_cb) }, | |
1064 | |
1065 | |
9 | 1066 { "NewWindow", GTK_STOCK_NEW, N_("New _window"), NULL, NULL, CB(layout_menu_new_window_cb) }, |
1067 { "NewCollection", GTK_STOCK_INDEX,N_("_New collection"), "C", NULL, CB(layout_menu_new_cb) }, | |
1068 { "OpenCollection", GTK_STOCK_OPEN, N_("_Open collection..."),"O", NULL, CB(layout_menu_open_cb) }, | |
1069 { "OpenRecent", NULL, N_("Open _recent") }, | |
1070 { "Search", GTK_STOCK_FIND, N_("_Search..."), "F3", NULL, CB(layout_menu_search_cb) }, | |
1071 { "FindDupes", GTK_STOCK_FIND, N_("_Find duplicates..."),"D", NULL, CB(layout_menu_dupes_cb) }, | |
12
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
1072 { "PanView", NULL, N_("Pan _view"), "<control>J", NULL, CB(layout_menu_pan_cb) }, |
9 | 1073 { "Print", GTK_STOCK_PRINT,N_("_Print..."), "<shift>P", NULL, CB(layout_menu_print_cb) }, |
1074 { "NewFolder", NULL, N_("N_ew folder..."), "<control>F", NULL, CB(layout_menu_dir_cb) }, | |
1075 { "Copy", NULL, N_("_Copy..."), "<control>C", NULL, CB(layout_menu_copy_cb) }, | |
1076 { "Move", NULL, N_("_Move..."), "<control>M", NULL, CB(layout_menu_move_cb) }, | |
1077 { "Rename", NULL, N_("_Rename..."), "<control>R", NULL, CB(layout_menu_rename_cb) }, | |
1078 { "Delete", GTK_STOCK_DELETE, N_("_Delete..."), "<control>D", NULL, CB(layout_menu_delete_cb) }, | |
1079 { "CloseWindow", GTK_STOCK_CLOSE,N_("C_lose window"), "<control>W", NULL, CB(layout_menu_close_cb) }, | |
1080 { "Quit", GTK_STOCK_QUIT, N_("_Quit"), "<control>Q", NULL, CB(layout_menu_exit_cb) }, | |
1081 | |
163 | 1082 { "Editor0", NULL, "editor0", NULL, NULL, CB(layout_menu_edit_cb) }, |
1083 { "Editor1", NULL, "editor1", NULL, NULL, CB(layout_menu_edit_cb) }, | |
1084 { "Editor2", NULL, "editor2", NULL, NULL, CB(layout_menu_edit_cb) }, | |
1085 { "Editor3", NULL, "editor3", NULL, NULL, CB(layout_menu_edit_cb) }, | |
1086 { "Editor4", NULL, "editor4", NULL, NULL, CB(layout_menu_edit_cb) }, | |
1087 { "Editor5", NULL, "editor5", NULL, NULL, CB(layout_menu_edit_cb) }, | |
1088 { "Editor6", NULL, "editor6", NULL, NULL, CB(layout_menu_edit_cb) }, | |
1089 { "Editor7", NULL, "editor7", NULL, NULL, CB(layout_menu_edit_cb) }, | |
1090 { "Editor8", NULL, "editor8", NULL, NULL, CB(layout_menu_edit_cb) }, | |
1091 { "Editor9", NULL, "editor9", NULL, NULL, CB(layout_menu_edit_cb) }, | |
9 | 1092 { "RotateCW", NULL, N_("_Rotate clockwise"), "bracketright", NULL, CB(layout_menu_alter_90_cb) }, |
1093 { "RotateCCW", NULL, N_("Rotate _counterclockwise"), "bracketleft", NULL, CB(layout_menu_alter_90cc_cb) }, | |
1094 { "Rotate180", NULL, N_("Rotate 1_80"), "<shift>R", NULL, CB(layout_menu_alter_180_cb) }, | |
1095 { "Mirror", NULL, N_("_Mirror"), "<shift>M", NULL, CB(layout_menu_alter_mirror_cb) }, | |
1096 { "Flip", NULL, N_("_Flip"), "<shift>F", NULL, CB(layout_menu_alter_flip_cb) }, | |
82
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
1097 { "Grayscale", NULL, N_("_Grayscale"), "<shift>G", NULL, CB(layout_menu_alter_desaturate_cb) }, |
9 | 1098 { "Properties",GTK_STOCK_PROPERTIES, N_("_Properties"), "<control>P", NULL, CB(layout_menu_info_cb) }, |
1099 { "SelectAll", NULL, N_("Select _all"), "<control>A", NULL, CB(layout_menu_select_all_cb) }, | |
1100 { "SelectNone", NULL, N_("Select _none"), "<control><shift>A",NULL, CB(layout_menu_unselect_all_cb) }, | |
1101 { "Preferences",GTK_STOCK_PREFERENCES,N_("P_references..."), "<control>O", NULL, CB(layout_menu_config_cb) }, | |
1102 { "Maintenance", NULL, N_("_Thumbnail maintenance..."),NULL, NULL, CB(layout_menu_remove_thumb_cb) }, | |
1103 { "Wallpaper", NULL, N_("Set as _wallpaper"),NULL, NULL, CB(layout_menu_wallpaper_cb) }, | |
1104 | |
1105 { "ZoomIn", GTK_STOCK_ZOOM_IN, N_("Zoom _in"), "equal", NULL, CB(layout_menu_zoom_in_cb) }, | |
1106 { "ZoomOut", GTK_STOCK_ZOOM_OUT, N_("Zoom _out"), "minus", NULL, CB(layout_menu_zoom_out_cb) }, | |
1107 { "Zoom100", GTK_STOCK_ZOOM_100, N_("Zoom _1:1"), "Z", NULL, CB(layout_menu_zoom_1_1_cb) }, | |
1108 { "ZoomFit", GTK_STOCK_ZOOM_FIT, N_("_Zoom to fit"), "X", NULL, CB(layout_menu_zoom_fit_cb) }, | |
159 | 1109 { "ZoomFillHor", NULL, N_("Fit _Horizontally"),"H", NULL, CB(layout_menu_zoom_fit_hor_cb) }, |
1110 { "ZoomFillVert", NULL, N_("Fit _Vorizontally"),"W", NULL, CB(layout_menu_zoom_fit_vert_cb) }, | |
1111 { "Zoom200", NULL, N_("Zoom _2:1"), NULL, NULL, CB(layout_menu_zoom_2_1_cb) }, | |
1112 { "Zoom300", NULL, N_("Zoom _3:1"), NULL, NULL, CB(layout_menu_zoom_3_1_cb) }, | |
1113 { "Zoom400", NULL, N_("Zoom _4:1"), NULL, NULL, CB(layout_menu_zoom_4_1_cb) }, | |
1114 { "Zoom50", NULL, N_("Zoom 1:2"), NULL, NULL, CB(layout_menu_zoom_1_2_cb) }, | |
1115 { "Zoom33", NULL, N_("Zoom 1:3"), NULL, NULL, CB(layout_menu_zoom_1_3_cb) }, | |
1116 { "Zoom25", NULL, N_("Zoom 1:4"), NULL, NULL, CB(layout_menu_zoom_1_4_cb) }, | |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1117 |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1118 |
159 | 1119 { "ViewInNewWindow", NULL, N_("_View in new window"), "<control>V", NULL, CB(layout_menu_view_in_new_window_cb) }, |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1120 |
9 | 1121 { "FullScreen", NULL, N_("F_ull screen"), "F", NULL, CB(layout_menu_fullscreen_cb) }, |
159 | 1122 { "ImageOverlay", NULL, N_("_Image Overlay"), "I", NULL, CB(layout_menu_overlay_cb) }, |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
1123 { "HistogramChan", NULL, N_("Histogram _channels"), "K", NULL, CB(layout_menu_histogram_chan_cb) }, |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
1124 { "HistogramLog", NULL, N_("Histogram _log mode"), "J", NULL, CB(layout_menu_histogram_log_cb) }, |
9 | 1125 { "HideTools", NULL, N_("_Hide file list"), "<control>H", NULL, CB(layout_menu_hide_cb) }, |
1126 { "SlideShow", NULL, N_("Toggle _slideshow"),"S", NULL, CB(layout_menu_slideshow_cb) }, | |
1127 { "Refresh", GTK_STOCK_REFRESH, N_("_Refresh"), "R", NULL, CB(layout_menu_refresh_cb) }, | |
1128 | |
1129 { "HelpContents", GTK_STOCK_HELP, N_("_Contents"), "F1", NULL, CB(layout_menu_help_cb) }, | |
1130 { "HelpShortcuts", NULL, N_("_Keyboard shortcuts"),NULL, NULL, CB(layout_menu_help_keys_cb) }, | |
1131 { "HelpNotes", NULL, N_("_Release notes"), NULL, NULL, CB(layout_menu_notes_cb) }, | |
1132 { "About", NULL, N_("_About"), NULL, NULL, CB(layout_menu_about_cb) } | |
1133 }; | |
1134 | |
1135 static GtkToggleActionEntry menu_toggle_entries[] = { | |
1136 { "Thumbnails", NULL, N_("_Thumbnails"), "T", NULL, CB(layout_menu_thumb_cb) }, | |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1137 { "ShowMarks", NULL, N_("Show _Marks"), "M", NULL, CB(layout_menu_marks_cb) }, |
9 | 1138 { "FloatTools", NULL, N_("_Float file list"), "L", NULL, CB(layout_menu_float_cb) }, |
1139 { "HideToolbar", NULL, N_("Hide tool_bar"), NULL, NULL, CB(layout_menu_toolbar_cb) }, | |
1140 { "SBarKeywords", NULL, N_("_Keywords"), "<control>K", NULL, CB(layout_menu_bar_info_cb) }, | |
1141 { "SBarExif", NULL, N_("E_xif data"), "<control>E", NULL, CB(layout_menu_bar_exif_cb) }, | |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1142 { "SBarSort", NULL, N_("Sort _manager"), "<control>S", NULL, CB(layout_menu_bar_sort_cb) }, |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1143 { "ConnectScroll", NULL, N_("Connected scroll"), "<control>U", NULL, CB(layout_menu_connect_scroll_cb) }, |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1144 { "ConnectZoom", NULL, N_("Connected zoom"), "<control>Y", NULL, CB(layout_menu_connect_zoom_cb) } |
9 | 1145 }; |
1146 | |
1147 static GtkRadioActionEntry menu_radio_entries[] = { | |
1148 { "ViewList", NULL, N_("_List"), "<control>L", NULL, 0 }, | |
1149 { "ViewIcons", NULL, N_("I_cons"), "<control>I", NULL, 1 } | |
1150 }; | |
1151 | |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1152 static GtkRadioActionEntry menu_split_radio_entries[] = { |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1153 { "SplitHorizontal", NULL, N_("Horizontal"), "E", NULL, SPLIT_HOR }, |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1154 { "SplitVertical", NULL, N_("Vertical"), "U", NULL, SPLIT_VERT }, |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1155 { "SplitQuad", NULL, N_("Quad"), "Q", NULL, SPLIT_QUAD }, |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1156 { "SplitSingle", NULL, N_("Single"), "Y", NULL, SPLIT_NONE } |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1157 }; |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1158 |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1159 |
9 | 1160 #undef CB |
1161 | |
1162 static const char *menu_ui_description = | |
1163 "<ui>" | |
1164 " <menubar name='MainMenu'>" | |
1165 " <menu action='FileMenu'>" | |
1166 " <menuitem action='NewWindow'/>" | |
1167 " <menuitem action='NewCollection'/>" | |
1168 " <menuitem action='OpenCollection'/>" | |
1169 " <menuitem action='OpenRecent'/>" | |
1170 " <separator/>" | |
1171 " <menuitem action='Search'/>" | |
1172 " <menuitem action='FindDupes'/>" | |
12
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
1173 " <menuitem action='PanView'/>" |
9 | 1174 " <separator/>" |
1175 " <menuitem action='Print'/>" | |
1176 " <menuitem action='NewFolder'/>" | |
1177 " <separator/>" | |
1178 " <menuitem action='Copy'/>" | |
1179 " <menuitem action='Move'/>" | |
1180 " <menuitem action='Rename'/>" | |
1181 " <menuitem action='Delete'/>" | |
1182 " <separator/>" | |
1183 " <menuitem action='CloseWindow'/>" | |
1184 " <menuitem action='Quit'/>" | |
1185 " </menu>" | |
159 | 1186 " <menu action='GoMenu'>" |
1187 " <menuitem action='FirstImage'/>" | |
1188 " <menuitem action='PrevImage'/>" | |
1189 " <menuitem action='NextImage'/>" | |
1190 " <menuitem action='LastImage'/>" | |
1191 " </menu>" | |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1192 " <menu action='SelectMenu'>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1193 " <menuitem action='SelectAll'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1194 " <menuitem action='SelectNone'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1195 " <separator/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1196 " <menuitem action='ShowMarks'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1197 " <separator/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1198 " </menu>" |
9 | 1199 " <menu action='EditMenu'>" |
1200 " <menuitem action='Editor0'/>" | |
1201 " <menuitem action='Editor1'/>" | |
1202 " <menuitem action='Editor2'/>" | |
1203 " <menuitem action='Editor3'/>" | |
1204 " <menuitem action='Editor4'/>" | |
1205 " <menuitem action='Editor5'/>" | |
1206 " <menuitem action='Editor6'/>" | |
1207 " <menuitem action='Editor7'/>" | |
1208 " <menuitem action='Editor8'/>" | |
1209 " <menuitem action='Editor9'/>" | |
1210 " <separator/>" | |
1211 " <menu action='AdjustMenu'>" | |
1212 " <menuitem action='RotateCW'/>" | |
1213 " <menuitem action='RotateCCW'/>" | |
1214 " <menuitem action='Rotate180'/>" | |
1215 " <menuitem action='Mirror'/>" | |
1216 " <menuitem action='Flip'/>" | |
82
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
1217 " <menuitem action='Grayscale'/>" |
9 | 1218 " </menu>" |
1219 " <menuitem action='Properties'/>" | |
1220 " <separator/>" | |
1221 " <menuitem action='Preferences'/>" | |
1222 " <menuitem action='Maintenance'/>" | |
1223 " <separator/>" | |
1224 " <menuitem action='Wallpaper'/>" | |
1225 " </menu>" | |
1226 " <menu action='ViewMenu'>" | |
159 | 1227 " <menuitem action='ViewInNewWindow'/>" |
9 | 1228 " <separator/>" |
159 | 1229 " <menu action='ZoomMenu'>" |
1230 " <menuitem action='ZoomIn'/>" | |
1231 " <menuitem action='ZoomOut'/>" | |
1232 " <menuitem action='ZoomFit'/>" | |
1233 " <menuitem action='ZoomFillHor'/>" | |
1234 " <menuitem action='ZoomFillVert'/>" | |
1235 " <menuitem action='Zoom100'/>" | |
1236 " <menuitem action='Zoom200'/>" | |
1237 " <menuitem action='Zoom300'/>" | |
1238 " <menuitem action='Zoom400'/>" | |
1239 " <menuitem action='Zoom50'/>" | |
1240 " <menuitem action='Zoom33'/>" | |
1241 " <menuitem action='Zoom25'/>" | |
1242 " </menu>" | |
9 | 1243 " <separator/>" |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1244 " <menu action='SplitMenu'>" |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1245 " <menuitem action='SplitHorizontal'/>" |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1246 " <menuitem action='SplitVertical'/>" |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1247 " <menuitem action='SplitQuad'/>" |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1248 " <menuitem action='SplitSingle'/>" |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1249 " </menu>" |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1250 " <menuitem action='ConnectScroll'/>" |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1251 " <menuitem action='ConnectZoom'/>" |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1252 " <separator/>" |
9 | 1253 " <menuitem action='Thumbnails'/>" |
1254 " <menuitem action='ViewList'/>" | |
1255 " <menuitem action='ViewIcons'/>" | |
1256 " <separator/>" | |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1257 " <menu action='DirMenu'>" |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1258 " <menuitem action='FolderList'/>" |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1259 " <menuitem action='FolderTree'/>" |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1260 " </menu>" |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1261 " <separator/>" |
159 | 1262 " <menuitem action='ImageOverlay'/>" |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
1263 " <menuitem action='HistogramChan'/>" |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
1264 " <menuitem action='HistogramLog'/>" |
9 | 1265 " <menuitem action='FullScreen'/>" |
1266 " <separator/>" | |
1267 " <menuitem action='FloatTools'/>" | |
1268 " <menuitem action='HideTools'/>" | |
1269 " <menuitem action='HideToolbar'/>" | |
1270 " <separator/>" | |
1271 " <menuitem action='SBarKeywords'/>" | |
1272 " <menuitem action='SBarExif'/>" | |
1273 " <menuitem action='SBarSort'/>" | |
1274 " <separator/>" | |
1275 " <menuitem action='SlideShow'/>" | |
1276 " <menuitem action='Refresh'/>" | |
1277 " </menu>" | |
1278 " <menu action='HelpMenu'>" | |
1279 " <separator/>" | |
1280 " <menuitem action='HelpContents'/>" | |
1281 " <menuitem action='HelpShortcuts'/>" | |
1282 " <menuitem action='HelpNotes'/>" | |
1283 " <separator/>" | |
1284 " <menuitem action='About'/>" | |
1285 " </menu>" | |
1286 " </menubar>" | |
1287 "</ui>"; | |
1288 | |
1289 | |
1290 static gchar *menu_translate(const gchar *path, gpointer data) | |
1291 { | |
1292 return _(path); | |
1293 } | |
1294 | |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1295 static void layout_actions_setup_mark(LayoutWindow *lw, gint mark, char *name_tmpl, char *label_tmpl, char *accel_tmpl, GCallback cb) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1296 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1297 char name[50]; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1298 char label[100]; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1299 char accel[50]; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1300 GtkActionEntry entry = { name, NULL, label, accel, NULL, cb }; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1301 GtkAction *action; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1302 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1303 g_snprintf(name, sizeof(name), name_tmpl, mark); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1304 g_snprintf(label, sizeof(label), label_tmpl, mark); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1305 if (accel_tmpl) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1306 g_snprintf(accel, sizeof(accel), accel_tmpl, mark % 10); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1307 else |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1308 accel[0] = 0; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1309 gtk_action_group_add_actions(lw->action_group, &entry, 1, lw); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1310 action = gtk_action_group_get_action(lw->action_group, name); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1311 g_object_set_data(G_OBJECT(action), "mark_num", GINT_TO_POINTER(mark)); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1312 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1313 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1314 static void layout_actions_setup_marks(LayoutWindow *lw) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1315 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1316 int mark; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1317 GError *error; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1318 GString *desc = g_string_new( |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1319 "<ui>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1320 " <menubar name='MainMenu'>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1321 " <menu action='SelectMenu'>"); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1322 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1323 for (mark = 1; mark <= FILEDATA_MARKS_SIZE; mark++) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1324 { |
163 | 1325 layout_actions_setup_mark(lw, mark, "Mark%d", _("Mark _%d"), NULL, NULL); |
1326 layout_actions_setup_mark(lw, mark, "SetMark%d", _("_Set mark %d"), NULL, G_CALLBACK(layout_menu_set_mark_sel_cb)); | |
1327 layout_actions_setup_mark(lw, mark, "ResetMark%d", _("_Reset mark %d"), NULL, G_CALLBACK(layout_menu_res_mark_sel_cb)); | |
1328 layout_actions_setup_mark(lw, mark, "ToggleMark%d", _("_Toggle mark %d"), "%d", G_CALLBACK(layout_menu_toggle_mark_sel_cb)); | |
1329 layout_actions_setup_mark(lw, mark, "SelectMark%d", _("_Select mark %d"), "<control>%d", G_CALLBACK(layout_menu_sel_mark_cb)); | |
1330 layout_actions_setup_mark(lw, mark, "AddMark%d", _("_Add mark %d"), NULL, G_CALLBACK(layout_menu_sel_mark_or_cb)); | |
1331 layout_actions_setup_mark(lw, mark, "IntMark%d", _("_Intersection with mark %d"), NULL, G_CALLBACK(layout_menu_sel_mark_and_cb)); | |
1332 layout_actions_setup_mark(lw, mark, "UnselMark%d", _("_Unselect mark %d"), NULL, G_CALLBACK(layout_menu_sel_mark_minus_cb)); | |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1333 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1334 g_string_append_printf(desc, |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1335 " <menu action='Mark%d'>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1336 " <menuitem action='ToggleMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1337 " <menuitem action='SetMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1338 " <menuitem action='ResetMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1339 " <separator/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1340 " <menuitem action='SelectMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1341 " <menuitem action='AddMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1342 " <menuitem action='IntMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1343 " <menuitem action='UnselMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1344 " </menu>", |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1345 mark, mark, mark, mark, mark, mark, mark, mark); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1346 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1347 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1348 g_string_append(desc, |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1349 " </menu>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1350 " </menubar>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1351 "</ui>" ); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1352 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1353 error = NULL; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1354 if (!gtk_ui_manager_add_ui_from_string(lw->ui_manager, desc->str, -1, &error)) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1355 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1356 g_message ("building menus failed: %s", error->message); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1357 g_error_free (error); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1358 exit (EXIT_FAILURE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1359 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1360 g_string_free(desc, TRUE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1361 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1362 |
9 | 1363 void layout_actions_setup(LayoutWindow *lw) |
1364 { | |
1365 GError *error; | |
1366 | |
1367 if (lw->ui_manager) return; | |
1368 | |
1369 lw->action_group = gtk_action_group_new ("MenuActions"); | |
1370 gtk_action_group_set_translate_func(lw->action_group, menu_translate, NULL, NULL); | |
1371 | |
1372 gtk_action_group_add_actions(lw->action_group, | |
1373 menu_entries, G_N_ELEMENTS(menu_entries), lw); | |
1374 gtk_action_group_add_toggle_actions(lw->action_group, | |
1375 menu_toggle_entries, G_N_ELEMENTS(menu_toggle_entries), lw); | |
1376 gtk_action_group_add_radio_actions(lw->action_group, | |
1377 menu_radio_entries, G_N_ELEMENTS(menu_radio_entries), | |
1378 0, G_CALLBACK(layout_menu_list_cb), lw); | |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1379 gtk_action_group_add_radio_actions(lw->action_group, |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1380 menu_split_radio_entries, G_N_ELEMENTS(menu_split_radio_entries), |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1381 0, G_CALLBACK(layout_menu_split_cb), lw); |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1382 gtk_action_group_add_radio_actions(lw->action_group, |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1383 menu_view_dir_radio_entries, G_N_ELEMENTS(menu_view_dir_radio_entries), |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1384 0, G_CALLBACK(layout_menu_view_dir_as_cb), lw); |
9 | 1385 |
1386 lw->ui_manager = gtk_ui_manager_new(); | |
1387 gtk_ui_manager_set_add_tearoffs(lw->ui_manager, TRUE); | |
1388 gtk_ui_manager_insert_action_group(lw->ui_manager, lw->action_group, 0); | |
1389 | |
1390 error = NULL; | |
1391 if (!gtk_ui_manager_add_ui_from_string(lw->ui_manager, menu_ui_description, -1, &error)) | |
1392 { | |
1393 g_message ("building menus failed: %s", error->message); | |
1394 g_error_free (error); | |
1395 exit (EXIT_FAILURE); | |
1396 } | |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1397 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1398 layout_actions_setup_marks(lw); |
9 | 1399 } |
1400 | |
1401 void layout_actions_add_window(LayoutWindow *lw, GtkWidget *window) | |
1402 { | |
1403 GtkAccelGroup *group; | |
1404 | |
1405 if (!lw->ui_manager) return; | |
1406 | |
1407 group = gtk_ui_manager_get_accel_group(lw->ui_manager); | |
1408 gtk_window_add_accel_group(GTK_WINDOW(window), group); | |
1409 } | |
1410 | |
1411 GtkWidget *layout_actions_menu_bar(LayoutWindow *lw) | |
1412 { | |
1413 return gtk_ui_manager_get_widget(lw->ui_manager, "/MainMenu"); | |
1414 } | |
1415 | |
1416 | |
1417 /* | |
1418 *----------------------------------------------------------------------------- | |
1419 * toolbar | |
1420 *----------------------------------------------------------------------------- | |
1421 */ | |
1422 | |
1423 static void layout_button_thumb_cb(GtkWidget *widget, gpointer data) | |
1424 { | |
1425 LayoutWindow *lw = data; | |
1426 | |
41
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1427 layout_thumb_set(lw, gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(widget))); |
9 | 1428 } |
1429 | |
1430 static void layout_button_home_cb(GtkWidget *widget, gpointer data) | |
1431 { | |
1432 LayoutWindow *lw = data; | |
1433 const gchar *path = homedir(); | |
1434 | |
1435 if (path) layout_set_path(lw, path); | |
1436 } | |
1437 | |
1438 static void layout_button_refresh_cb(GtkWidget *widget, gpointer data) | |
1439 { | |
1440 LayoutWindow *lw = data; | |
1441 | |
1442 layout_refresh(lw); | |
1443 } | |
1444 | |
1445 static void layout_button_zoom_in_cb(GtkWidget *widget, gpointer data) | |
1446 { | |
1447 LayoutWindow *lw = data; | |
1448 | |
1449 layout_image_zoom_adjust(lw, get_zoom_increment()); | |
1450 } | |
1451 | |
1452 static void layout_button_zoom_out_cb(GtkWidget *widget, gpointer data) | |
1453 { | |
1454 LayoutWindow *lw = data; | |
1455 | |
1456 layout_image_zoom_adjust(lw, -get_zoom_increment()); | |
1457 } | |
1458 | |
1459 static void layout_button_zoom_fit_cb(GtkWidget *widget, gpointer data) | |
1460 { | |
1461 LayoutWindow *lw = data; | |
1462 | |
1463 layout_image_zoom_set(lw, 0.0); | |
1464 } | |
1465 | |
1466 static void layout_button_zoom_1_1_cb(GtkWidget *widget, gpointer data) | |
1467 { | |
1468 LayoutWindow *lw = data; | |
1469 | |
1470 layout_image_zoom_set(lw, 1.0); | |
1471 } | |
1472 | |
1473 static void layout_button_config_cb(GtkWidget *widget, gpointer data) | |
1474 { | |
1475 show_config_window(); | |
1476 } | |
1477 | |
1478 static void layout_button_float_cb(GtkWidget *widget, gpointer data) | |
1479 { | |
1480 LayoutWindow *lw = data; | |
1481 | |
1482 layout_tools_float_toggle(lw); | |
1483 } | |
1484 | |
41
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1485 static void layout_button_custom_icon(GtkWidget *button, const gchar *key) |
9 | 1486 { |
1487 GtkWidget *icon; | |
41
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1488 GdkPixbuf *pixbuf; |
9 | 1489 |
41
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1490 pixbuf = pixbuf_inline(key); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1491 if (!pixbuf) return; |
9 | 1492 |
41
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1493 icon = gtk_image_new_from_pixbuf(pixbuf); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1494 g_object_unref(pixbuf); |
9 | 1495 |
41
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1496 pref_toolbar_button_set_icon(button, icon, NULL); |
9 | 1497 gtk_widget_show(icon); |
1498 } | |
1499 | |
1500 GtkWidget *layout_button_bar(LayoutWindow *lw) | |
1501 { | |
1502 GtkWidget *box; | |
41
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1503 GtkWidget *button; |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1504 |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1505 box = pref_toolbar_new(NULL, GTK_TOOLBAR_ICONS); |
9 | 1506 |
41
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1507 button = pref_toolbar_button(box, NULL, _("_Thumbnails"), TRUE, |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1508 _("Show thumbnails"), G_CALLBACK(layout_button_thumb_cb), lw); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1509 layout_button_custom_icon(button, PIXBUF_INLINE_ICON_THUMB); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1510 lw->thumb_button = button; |
9 | 1511 |
41
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1512 pref_toolbar_button(box, GTK_STOCK_HOME, NULL, FALSE, |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1513 _("Change to home folder"), G_CALLBACK(layout_button_home_cb), lw); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1514 pref_toolbar_button(box, GTK_STOCK_REFRESH, NULL, FALSE, |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1515 _("Refresh file list"), G_CALLBACK(layout_button_refresh_cb), lw); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1516 pref_toolbar_button(box, GTK_STOCK_ZOOM_IN, NULL, FALSE, |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1517 _("Zoom in"), G_CALLBACK(layout_button_zoom_in_cb), lw); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1518 pref_toolbar_button(box, GTK_STOCK_ZOOM_OUT, NULL, FALSE, |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1519 _("Zoom out"), G_CALLBACK(layout_button_zoom_out_cb), lw); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1520 pref_toolbar_button(box, GTK_STOCK_ZOOM_FIT, NULL, FALSE, |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1521 _("Fit image to window"), G_CALLBACK(layout_button_zoom_fit_cb), lw); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1522 pref_toolbar_button(box, GTK_STOCK_ZOOM_100, NULL, FALSE, |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1523 _("Set zoom 1:1"), G_CALLBACK(layout_button_zoom_1_1_cb), lw); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1524 pref_toolbar_button(box, GTK_STOCK_PREFERENCES, NULL, FALSE, |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1525 _("Configure options"), G_CALLBACK(layout_button_config_cb), lw); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1526 button = pref_toolbar_button(box, NULL, _("_Float"), FALSE, |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1527 _("Float Controls"), G_CALLBACK(layout_button_float_cb), lw); |
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1528 layout_button_custom_icon(button, PIXBUF_INLINE_ICON_FLOAT); |
9 | 1529 |
1530 return box; | |
1531 } | |
1532 | |
1533 /* | |
1534 *----------------------------------------------------------------------------- | |
1535 * misc | |
1536 *----------------------------------------------------------------------------- | |
1537 */ | |
1538 | |
1539 static void layout_util_sync_views(LayoutWindow *lw) | |
1540 { | |
1541 GtkAction *action; | |
1542 | |
1543 if (!lw->action_group) return; | |
1544 | |
1545 action = gtk_action_group_get_action(lw->action_group, "FolderTree"); | |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1546 gtk_radio_action_set_current_value(GTK_RADIO_ACTION(action), lw->dir_view_type); |
9 | 1547 |
1548 action = gtk_action_group_get_action(lw->action_group, "ViewIcons"); | |
1549 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->icon_view); | |
1550 | |
1551 action = gtk_action_group_get_action(lw->action_group, "FloatTools"); | |
1552 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->tools_float); | |
1553 | |
1554 action = gtk_action_group_get_action(lw->action_group, "SBarKeywords"); | |
1555 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_info_enabled); | |
1556 | |
1557 action = gtk_action_group_get_action(lw->action_group, "SBarExif"); | |
1558 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_exif_enabled); | |
1559 | |
1560 action = gtk_action_group_get_action(lw->action_group, "SBarSort"); | |
1561 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_sort_enabled); | |
1562 | |
1563 action = gtk_action_group_get_action(lw->action_group, "HideToolbar"); | |
1564 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->toolbar_hidden); | |
1565 } | |
1566 | |
1567 void layout_util_sync_thumb(LayoutWindow *lw) | |
1568 { | |
1569 GtkAction *action; | |
1570 | |
1571 if (!lw->action_group) return; | |
1572 | |
1573 action = gtk_action_group_get_action(lw->action_group, "Thumbnails"); | |
1574 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->thumbs_enabled); | |
1575 g_object_set(action, "sensitive", !lw->icon_view, NULL); | |
1576 | |
41
6281cc38e5ca
Wed Apr 27 15:17:57 2005 John Ellis <johne@verizon.net>
gqview
parents:
12
diff
changeset
|
1577 gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(lw->thumb_button), lw->thumbs_enabled); |
9 | 1578 gtk_widget_set_sensitive(lw->thumb_button, !lw->icon_view); |
1579 } | |
1580 | |
1581 void layout_util_sync(LayoutWindow *lw) | |
1582 { | |
1583 layout_util_sync_views(lw); | |
1584 layout_util_sync_thumb(lw); | |
1585 layout_menu_recent_update(lw); | |
1586 layout_menu_edit_update(lw); | |
1587 } | |
1588 | |
1589 /* | |
1590 *----------------------------------------------------------------------------- | |
1591 * icons (since all the toolbar icons are included here, best place as any) | |
1592 *----------------------------------------------------------------------------- | |
1593 */ | |
1594 | |
1595 PixmapFolders *folder_icons_new(void) | |
1596 { | |
1597 PixmapFolders *pf; | |
1598 | |
1599 pf = g_new0(PixmapFolders, 1); | |
1600 | |
1601 pf->close = pixbuf_inline(PIXBUF_INLINE_FOLDER_CLOSED); | |
1602 pf->open = pixbuf_inline(PIXBUF_INLINE_FOLDER_OPEN); | |
1603 pf->deny = pixbuf_inline(PIXBUF_INLINE_FOLDER_LOCKED); | |
1604 pf->parent = pixbuf_inline(PIXBUF_INLINE_FOLDER_UP); | |
1605 | |
1606 return pf; | |
1607 } | |
1608 | |
1609 void folder_icons_free(PixmapFolders *pf) | |
1610 { | |
1611 if (!pf) return; | |
1612 | |
1613 g_object_unref(pf->close); | |
1614 g_object_unref(pf->open); | |
1615 g_object_unref(pf->deny); | |
1616 g_object_unref(pf->parent); | |
1617 | |
1618 g_free(pf); | |
1619 } | |
1620 | |
1621 /* | |
1622 *----------------------------------------------------------------------------- | |
1623 * sidebars | |
1624 *----------------------------------------------------------------------------- | |
1625 */ | |
1626 | |
1627 #define SIDEBAR_WIDTH 288 | |
1628 | |
1629 static void layout_bar_info_destroyed(GtkWidget *widget, gpointer data) | |
1630 { | |
1631 LayoutWindow *lw = data; | |
1632 | |
1633 lw->bar_info = NULL; | |
1634 | |
1635 if (lw->utility_box) | |
1636 { | |
1637 /* destroyed from within itself */ | |
1638 lw->bar_info_enabled = FALSE; | |
1639 layout_util_sync_views(lw); | |
1640 } | |
1641 } | |
1642 | |
1643 static GList *layout_bar_info_list_cb(gpointer data) | |
1644 { | |
1645 LayoutWindow *lw = data; | |
1646 | |
1647 return layout_selection_list(lw); | |
1648 } | |
1649 | |
1650 static void layout_bar_info_new(LayoutWindow *lw) | |
1651 { | |
1652 if (!lw->utility_box) return; | |
1653 | |
138 | 1654 lw->bar_info = bar_info_new(layout_image_get_fd(lw), FALSE, lw->utility_box); |
9 | 1655 bar_info_set_selection_func(lw->bar_info, layout_bar_info_list_cb, lw); |
1656 bar_info_selection(lw->bar_info, layout_selection_count(lw, NULL) - 1); | |
1657 bar_info_size_request(lw->bar_info, SIDEBAR_WIDTH * 3 / 4); | |
1658 g_signal_connect(G_OBJECT(lw->bar_info), "destroy", | |
1659 G_CALLBACK(layout_bar_info_destroyed), lw); | |
1660 lw->bar_info_enabled = TRUE; | |
1661 | |
1662 gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar_info, FALSE, FALSE, 0); | |
1663 gtk_widget_show(lw->bar_info); | |
1664 } | |
1665 | |
1666 static void layout_bar_info_close(LayoutWindow *lw) | |
1667 { | |
1668 if (lw->bar_info) | |
1669 { | |
1670 bar_info_close(lw->bar_info); | |
1671 lw->bar_info = NULL; | |
1672 } | |
1673 lw->bar_info_enabled = FALSE; | |
1674 } | |
1675 | |
1676 void layout_bar_info_toggle(LayoutWindow *lw) | |
1677 { | |
1678 if (lw->bar_info_enabled) | |
1679 { | |
1680 layout_bar_info_close(lw); | |
1681 } | |
1682 else | |
1683 { | |
1684 layout_bar_info_new(lw); | |
1685 } | |
1686 } | |
1687 | |
1688 static void layout_bar_info_new_image(LayoutWindow *lw) | |
1689 { | |
1690 if (!lw->bar_info || !lw->bar_info_enabled) return; | |
1691 | |
138 | 1692 bar_info_set(lw->bar_info, layout_image_get_fd(lw)); |
9 | 1693 } |
1694 | |
1695 static void layout_bar_info_new_selection(LayoutWindow *lw, gint count) | |
1696 { | |
1697 if (!lw->bar_info || !lw->bar_info_enabled) return; | |
1698 | |
1699 bar_info_selection(lw->bar_info, count - 1); | |
1700 } | |
1701 | |
1702 static void layout_bar_info_maint_renamed(LayoutWindow *lw) | |
1703 { | |
1704 if (!lw->bar_info || !lw->bar_info_enabled) return; | |
1705 | |
138 | 1706 bar_info_maint_renamed(lw->bar_info, layout_image_get_fd(lw)); |
9 | 1707 } |
1708 | |
1709 static void layout_bar_exif_destroyed(GtkWidget *widget, gpointer data) | |
1710 { | |
1711 LayoutWindow *lw = data; | |
1712 | |
1713 if (lw->bar_exif) | |
1714 { | |
1715 lw->bar_exif_advanced = bar_exif_is_advanced(lw->bar_exif); | |
1716 } | |
1717 | |
1718 lw->bar_exif = NULL; | |
1719 if (lw->utility_box) | |
1720 { | |
1721 /* destroyed from within itself */ | |
1722 lw->bar_exif_enabled = FALSE; | |
1723 layout_util_sync_views(lw); | |
1724 } | |
1725 } | |
1726 | |
1727 static void layout_bar_exif_sized(GtkWidget *widget, GtkAllocation *allocation, gpointer data) | |
1728 { | |
1729 LayoutWindow *lw = data; | |
1730 | |
1731 if (lw->bar_exif) | |
1732 { | |
1733 lw->bar_exif_size = allocation->width; | |
1734 } | |
1735 } | |
1736 | |
1737 static void layout_bar_exif_new(LayoutWindow *lw) | |
1738 { | |
1739 if (!lw->utility_box) return; | |
1740 | |
138 | 1741 lw->bar_exif = bar_exif_new(TRUE, layout_image_get_fd(lw), |
9 | 1742 lw->bar_exif_advanced, lw->utility_box); |
1743 g_signal_connect(G_OBJECT(lw->bar_exif), "destroy", | |
1744 G_CALLBACK(layout_bar_exif_destroyed), lw); | |
1745 g_signal_connect(G_OBJECT(lw->bar_exif), "size_allocate", | |
1746 G_CALLBACK(layout_bar_exif_sized), lw); | |
1747 lw->bar_exif_enabled = TRUE; | |
1748 | |
1749 if (lw->bar_exif_size < 1) lw->bar_exif_size = SIDEBAR_WIDTH; | |
1750 gtk_widget_set_size_request(lw->bar_exif, lw->bar_exif_size, -1); | |
1751 gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar_exif, FALSE, FALSE, 0); | |
1752 if (lw->bar_info) gtk_box_reorder_child(GTK_BOX(lw->utility_box), lw->bar_exif, 1); | |
1753 gtk_widget_show(lw->bar_exif); | |
1754 } | |
1755 | |
1756 static void layout_bar_exif_close(LayoutWindow *lw) | |
1757 { | |
1758 if (lw->bar_exif) | |
1759 { | |
1760 bar_exif_close(lw->bar_exif); | |
1761 lw->bar_exif = NULL; | |
1762 } | |
1763 lw->bar_exif_enabled = FALSE; | |
1764 } | |
1765 | |
1766 void layout_bar_exif_toggle(LayoutWindow *lw) | |
1767 { | |
1768 if (lw->bar_exif_enabled) | |
1769 { | |
1770 layout_bar_exif_close(lw); | |
1771 } | |
1772 else | |
1773 { | |
1774 layout_bar_exif_new(lw); | |
1775 } | |
1776 } | |
1777 | |
1778 static void layout_bar_exif_new_image(LayoutWindow *lw) | |
1779 { | |
1780 if (!lw->bar_exif || !lw->bar_exif_enabled) return; | |
1781 | |
138 | 1782 bar_exif_set(lw->bar_exif, layout_image_get_fd(lw)); |
9 | 1783 } |
1784 | |
1785 static void layout_bar_sort_destroyed(GtkWidget *widget, gpointer data) | |
1786 { | |
1787 LayoutWindow *lw = data; | |
1788 | |
1789 lw->bar_sort = NULL; | |
1790 | |
1791 if (lw->utility_box) | |
1792 { | |
1793 /* destroyed from within itself */ | |
1794 lw->bar_sort_enabled = FALSE; | |
1795 | |
1796 layout_util_sync_views(lw); | |
1797 } | |
1798 } | |
1799 | |
1800 static void layout_bar_sort_new(LayoutWindow *lw) | |
1801 { | |
1802 if (!lw->utility_box) return; | |
1803 | |
1804 lw->bar_sort = bar_sort_new(lw); | |
1805 g_signal_connect(G_OBJECT(lw->bar_sort), "destroy", | |
1806 G_CALLBACK(layout_bar_sort_destroyed), lw); | |
1807 lw->bar_sort_enabled = TRUE; | |
1808 | |
1809 gtk_box_pack_end(GTK_BOX(lw->utility_box), lw->bar_sort, FALSE, FALSE, 0); | |
1810 gtk_widget_show(lw->bar_sort); | |
1811 } | |
1812 | |
1813 static void layout_bar_sort_close(LayoutWindow *lw) | |
1814 { | |
1815 if (lw->bar_sort) | |
1816 { | |
1817 bar_sort_close(lw->bar_sort); | |
1818 lw->bar_sort = NULL; | |
1819 } | |
1820 lw->bar_sort_enabled = FALSE; | |
1821 } | |
1822 | |
1823 void layout_bar_sort_toggle(LayoutWindow *lw) | |
1824 { | |
1825 if (lw->bar_sort_enabled) | |
1826 { | |
1827 layout_bar_sort_close(lw); | |
1828 } | |
1829 else | |
1830 { | |
1831 layout_bar_sort_new(lw); | |
1832 } | |
1833 } | |
1834 | |
1835 void layout_bars_new_image(LayoutWindow *lw) | |
1836 { | |
1837 layout_bar_info_new_image(lw); | |
1838 layout_bar_exif_new_image(lw); | |
1839 } | |
1840 | |
1841 void layout_bars_new_selection(LayoutWindow *lw, gint count) | |
1842 { | |
1843 layout_bar_info_new_selection(lw, count); | |
1844 } | |
1845 | |
1846 GtkWidget *layout_bars_prepare(LayoutWindow *lw, GtkWidget *image) | |
1847 { | |
1848 lw->utility_box = gtk_hbox_new(FALSE, PREF_PAD_GAP); | |
1849 gtk_box_pack_start(GTK_BOX(lw->utility_box), image, TRUE, TRUE, 0); | |
1850 gtk_widget_show(image); | |
1851 | |
1852 if (lw->bar_sort_enabled) | |
1853 { | |
1854 layout_bar_sort_new(lw); | |
1855 } | |
1856 | |
1857 if (lw->bar_info_enabled) | |
1858 { | |
1859 layout_bar_info_new(lw); | |
1860 } | |
1861 | |
1862 if (lw->bar_exif_enabled) | |
1863 { | |
1864 layout_bar_exif_new(lw); | |
1865 } | |
1866 | |
1867 return lw->utility_box; | |
1868 } | |
1869 | |
1870 void layout_bars_close(LayoutWindow *lw) | |
1871 { | |
1872 layout_bar_sort_close(lw); | |
1873 layout_bar_exif_close(lw); | |
1874 layout_bar_info_close(lw); | |
1875 } | |
1876 | |
1877 void layout_bars_maint_renamed(LayoutWindow *lw) | |
1878 { | |
1879 layout_bar_info_maint_renamed(lw); | |
1880 } | |
1881 |