Mercurial > geeqie
annotate src/layout_util.c @ 1672:994169573393
Complete commit @1747 (intltool usage)
With using intltool the localisation will fail cause of missing
desktop.in file. Also the old desktop files are obsoleted by this
commit.
Also it is not necessary any more to have a './' in front of the files
in POTFILES.in.
author | mow |
---|---|
date | Sat, 27 Jun 2009 22:57:56 +0000 |
parents | daab013a0dcf |
children | 0035002fad26 |
rev | line source |
---|---|
9 | 1 /* |
196 | 2 * Geeqie |
9 | 3 * (C) 2004 John Ellis |
1284 | 4 * Copyright (C) 2008 - 2009 The Geeqie Team |
9 | 5 * |
6 * Author: John Ellis | |
7 * | |
8 * This software is released under the GNU General Public License (GNU GPL). | |
9 * Please read the included file COPYING for more information. | |
10 * This software comes with no warranty of any kind, use at your own risk! | |
11 */ | |
12 | |
13 | |
281 | 14 #include "main.h" |
9 | 15 #include "layout_util.h" |
16 | |
1293
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
17 #include "advanced_exif.h" |
9 | 18 #include "bar_sort.h" |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
19 #include "bar.h" |
9 | 20 #include "cache_maint.h" |
21 #include "collect.h" | |
22 #include "collect-dlg.h" | |
457
5e9c24d3b3a8
Add a replacement for gtk_radio_action_set_current_value() which
zas_
parents:
454
diff
changeset
|
23 #include "compat.h" |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
24 #include "color-man.h" |
9 | 25 #include "dupe.h" |
26 #include "editors.h" | |
586 | 27 #include "filedata.h" |
902 | 28 #include "history_list.h" |
284 | 29 #include "image-overlay.h" |
1665 | 30 #include "histogram.h" |
94
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
31 #include "img-view.h" |
9 | 32 #include "layout_image.h" |
678
6d6f042b8ca5
Add a log window that shows normal and debug messages. For now, it was added to Help menu.
zas_
parents:
654
diff
changeset
|
33 #include "logwindow.h" |
1022
9962b24b6b43
Move miscellaneous functions to their own files (new misc.[ch]).
zas_
parents:
1004
diff
changeset
|
34 #include "misc.h" |
12
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
35 #include "pan-view.h" |
9 | 36 #include "pixbuf_util.h" |
37 #include "preferences.h" | |
38 #include "print.h" | |
39 #include "search.h" | |
40 #include "ui_fileops.h" | |
41 #include "ui_menu.h" | |
42 #include "ui_misc.h" | |
43 #include "ui_tabcomp.h" | |
1022
9962b24b6b43
Move miscellaneous functions to their own files (new misc.[ch]).
zas_
parents:
1004
diff
changeset
|
44 #include "utilops.h" |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
45 #include "view_dir.h" |
648
e34c1002e553
Move some functions from main.[ch] to new window.[ch].
zas_
parents:
601
diff
changeset
|
46 #include "window.h" |
1214
31402ecb2aed
write metadata after timeout, image change or dir change
nadvornik
parents:
1176
diff
changeset
|
47 #include "metadata.h" |
1335 | 48 #include "rcfile.h" |
1479 | 49 #include "desktop_file.h" |
9 | 50 |
51 #include <gdk/gdkkeysyms.h> /* for keyboard values */ | |
52 | |
53 | |
54 #define MENU_EDIT_ACTION_OFFSET 16 | |
55 | |
1317 | 56 static gboolean layout_bar_enabled(LayoutWindow *lw); |
1320 | 57 static gboolean layout_bar_sort_enabled(LayoutWindow *lw); |
1665 | 58 static void layout_util_sync_views(LayoutWindow *lw); |
9 | 59 |
60 /* | |
61 *----------------------------------------------------------------------------- | |
62 * keyboard handler | |
63 *----------------------------------------------------------------------------- | |
64 */ | |
65 | |
66 static guint tree_key_overrides[] = { | |
67 GDK_Page_Up, GDK_KP_Page_Up, | |
68 GDK_Page_Down, GDK_KP_Page_Down, | |
69 GDK_Home, GDK_KP_Home, | |
70 GDK_End, GDK_KP_End | |
71 }; | |
72 | |
736 | 73 static gboolean layout_key_match(guint keyval) |
9 | 74 { |
736 | 75 guint i; |
9 | 76 |
77 for (i = 0; i < sizeof(tree_key_overrides) / sizeof(guint); i++) | |
78 { | |
79 if (keyval == tree_key_overrides[i]) return TRUE; | |
80 } | |
81 | |
82 return FALSE; | |
83 } | |
84 | |
1433
b4ad1d201279
Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents:
1412
diff
changeset
|
85 gboolean layout_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) |
9 | 86 { |
87 LayoutWindow *lw = data; | |
1433
b4ad1d201279
Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents:
1412
diff
changeset
|
88 gboolean stop_signal = FALSE; |
9 | 89 gint x = 0; |
90 gint y = 0; | |
91 | |
92 if (lw->path_entry && GTK_WIDGET_HAS_FOCUS(lw->path_entry)) | |
93 { | |
783 | 94 if (event->keyval == GDK_Escape && lw->dir_fd) |
9 | 95 { |
783 | 96 gtk_entry_set_text(GTK_ENTRY(lw->path_entry), lw->dir_fd->path); |
9 | 97 } |
98 | |
99 /* the gtkaccelgroup of the window is stealing presses before they get to the entry (and more), | |
100 * so when the some widgets have focus, give them priority (HACK) | |
101 */ | |
102 if (gtk_widget_event(lw->path_entry, (GdkEvent *)event)) | |
103 { | |
104 return TRUE; | |
105 } | |
106 } | |
1309 | 107 if (lw->vd && lw->options.dir_view_type == DIRVIEW_TREE && GTK_WIDGET_HAS_FOCUS(lw->vd->view) && |
9 | 108 !layout_key_match(event->keyval) && |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
109 gtk_widget_event(lw->vd->view, (GdkEvent *)event)) |
9 | 110 { |
111 return TRUE; | |
112 } | |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
113 if (lw->bar && |
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
114 bar_event(lw->bar, (GdkEvent *)event)) |
9 | 115 { |
116 return TRUE; | |
117 } | |
118 | |
160 | 119 /* |
120 if (event->type == GDK_KEY_PRESS && lw->full_screen && | |
995 | 121 gtk_accel_groups_activate(G_OBJECT(lw->window), event->keyval, event->state)) |
160 | 122 return TRUE; |
123 */ | |
124 | |
9 | 125 if (lw->image && |
160 | 126 (GTK_WIDGET_HAS_FOCUS(lw->image->widget) || (lw->tools && widget == lw->window) || lw->full_screen) ) |
9 | 127 { |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
128 stop_signal = TRUE; |
9 | 129 switch (event->keyval) |
130 { | |
131 case GDK_Left: case GDK_KP_Left: | |
132 x -= 1; | |
133 break; | |
134 case GDK_Right: case GDK_KP_Right: | |
135 x += 1; | |
136 break; | |
137 case GDK_Up: case GDK_KP_Up: | |
138 y -= 1; | |
139 break; | |
140 case GDK_Down: case GDK_KP_Down: | |
141 y += 1; | |
142 break; | |
84
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
143 default: |
ba3c39002a24
Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net>
gqview
parents:
82
diff
changeset
|
144 stop_signal = FALSE; |
9 | 145 break; |
146 } | |
94
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
147 |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
148 if (!stop_signal && |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
149 !(event->state & GDK_CONTROL_MASK)) |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
150 { |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
151 stop_signal = TRUE; |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
152 switch (event->keyval) |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
153 { |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
154 case GDK_Menu: |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
155 layout_image_menu_popup(lw); |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
156 break; |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
157 default: |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
158 stop_signal = FALSE; |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
159 break; |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
160 } |
50dc5a14d37b
Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
gqview
parents:
86
diff
changeset
|
161 } |
9 | 162 } |
163 | |
164 if (x != 0 || y!= 0) | |
165 { | |
166 keyboard_scroll_calc(&x, &y, event); | |
1047 | 167 layout_image_scroll(lw, x, y, (event->state & GDK_SHIFT_MASK)); |
9 | 168 } |
169 | |
170 return stop_signal; | |
171 } | |
172 | |
173 void layout_keyboard_init(LayoutWindow *lw, GtkWidget *window) | |
174 { | |
175 g_signal_connect(G_OBJECT(window), "key_press_event", | |
176 G_CALLBACK(layout_key_press_cb), lw); | |
177 } | |
178 | |
179 /* | |
180 *----------------------------------------------------------------------------- | |
181 * menu callbacks | |
182 *----------------------------------------------------------------------------- | |
183 */ | |
442 | 184 |
185 | |
160 | 186 static GtkWidget *layout_window(LayoutWindow *lw) |
187 { | |
188 return lw->full_screen ? lw->full_screen->window : lw->window; | |
189 } | |
9 | 190 |
894 | 191 static void layout_exit_fullscreen(LayoutWindow *lw) |
192 { | |
193 if (!lw->full_screen) return; | |
194 layout_image_full_screen_stop(lw); | |
195 } | |
196 | |
9 | 197 static void layout_menu_new_window_cb(GtkAction *action, gpointer data) |
198 { | |
199 LayoutWindow *lw = data; | |
200 LayoutWindow *nw; | |
1472 | 201 LayoutOptions lop; |
1436
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
202 gboolean tmp = options->save_window_positions; |
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
203 options->save_window_positions = FALSE; /* let the windowmanager decide for the first time */ |
1472 | 204 |
894 | 205 layout_exit_fullscreen(lw); |
160 | 206 |
1436
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
207 layout_sync_options_with_current_state(lw); |
1472 | 208 lop = lw->options; /* we can copy it directly, no strings are modified */ |
209 | |
210 lop.id = NULL; /* get a new id */ | |
211 nw = layout_new(NULL, &lop); | |
329 | 212 layout_sort_set(nw, options->file_sort.method, options->file_sort.ascending); |
783 | 213 layout_set_fd(nw, lw->dir_fd); |
1436
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
214 options->save_window_positions = tmp; |
9 | 215 } |
216 | |
217 static void layout_menu_new_cb(GtkAction *action, gpointer data) | |
218 { | |
160 | 219 LayoutWindow *lw = data; |
894 | 220 |
221 layout_exit_fullscreen(lw); | |
9 | 222 collection_window_new(NULL); |
223 } | |
224 | |
225 static void layout_menu_open_cb(GtkAction *action, gpointer data) | |
226 { | |
160 | 227 LayoutWindow *lw = data; |
894 | 228 |
229 layout_exit_fullscreen(lw); | |
9 | 230 collection_dialog_load(NULL); |
231 } | |
232 | |
233 static void layout_menu_search_cb(GtkAction *action, gpointer data) | |
234 { | |
235 LayoutWindow *lw = data; | |
236 | |
894 | 237 layout_exit_fullscreen(lw); |
783 | 238 search_new(lw->dir_fd, layout_image_get_fd(lw)); |
9 | 239 } |
240 | |
241 static void layout_menu_dupes_cb(GtkAction *action, gpointer data) | |
242 { | |
160 | 243 LayoutWindow *lw = data; |
244 | |
894 | 245 layout_exit_fullscreen(lw); |
9 | 246 dupe_window_new(DUPE_MATCH_NAME); |
247 } | |
248 | |
12
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
249 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
|
250 { |
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
251 LayoutWindow *lw = data; |
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
252 |
894 | 253 layout_exit_fullscreen(lw); |
783 | 254 pan_window_new(lw->dir_fd); |
12
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
255 } |
147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
256 |
9 | 257 static void layout_menu_print_cb(GtkAction *action, gpointer data) |
258 { | |
259 LayoutWindow *lw = data; | |
260 | |
160 | 261 print_window_new(layout_image_get_fd(lw), layout_selection_list(lw), layout_list(lw), layout_window(lw)); |
9 | 262 } |
263 | |
264 static void layout_menu_dir_cb(GtkAction *action, gpointer data) | |
265 { | |
266 LayoutWindow *lw = data; | |
267 | |
1637 | 268 if (lw->vd) vd_new_folder(lw->vd, lw->dir_fd); |
9 | 269 } |
270 | |
271 static void layout_menu_copy_cb(GtkAction *action, gpointer data) | |
272 { | |
273 LayoutWindow *lw = data; | |
274 | |
160 | 275 file_util_copy(NULL, layout_selection_list(lw), NULL, layout_window(lw)); |
9 | 276 } |
277 | |
497 | 278 static void layout_menu_copy_path_cb(GtkAction *action, gpointer data) |
279 { | |
280 LayoutWindow *lw = data; | |
281 | |
282 file_util_copy_path_list_to_clipboard(layout_selection_list(lw)); | |
283 } | |
284 | |
9 | 285 static void layout_menu_move_cb(GtkAction *action, gpointer data) |
286 { | |
287 LayoutWindow *lw = data; | |
288 | |
160 | 289 file_util_move(NULL, layout_selection_list(lw), NULL, layout_window(lw)); |
9 | 290 } |
291 | |
292 static void layout_menu_rename_cb(GtkAction *action, gpointer data) | |
293 { | |
294 LayoutWindow *lw = data; | |
295 | |
160 | 296 file_util_rename(NULL, layout_selection_list(lw), layout_window(lw)); |
9 | 297 } |
298 | |
299 static void layout_menu_delete_cb(GtkAction *action, gpointer data) | |
300 { | |
301 LayoutWindow *lw = data; | |
302 | |
160 | 303 file_util_delete(NULL, layout_selection_list(lw), layout_window(lw)); |
9 | 304 } |
305 | |
1598 | 306 static void layout_menu_disable_grouping_cb(GtkAction *action, gpointer data) |
307 { | |
308 LayoutWindow *lw = data; | |
309 | |
310 file_data_disable_grouping_list(layout_selection_list(lw), TRUE); | |
311 } | |
312 | |
313 static void layout_menu_enable_grouping_cb(GtkAction *action, gpointer data) | |
314 { | |
315 LayoutWindow *lw = data; | |
316 | |
317 file_data_disable_grouping_list(layout_selection_list(lw), FALSE); | |
318 } | |
319 | |
9 | 320 static void layout_menu_close_cb(GtkAction *action, gpointer data) |
321 { | |
322 LayoutWindow *lw = data; | |
323 | |
894 | 324 layout_exit_fullscreen(lw); |
9 | 325 layout_close(lw); |
326 } | |
327 | |
328 static void layout_menu_exit_cb(GtkAction *action, gpointer data) | |
329 { | |
278 | 330 exit_program(); |
9 | 331 } |
332 | |
333 static void layout_menu_alter_90_cb(GtkAction *action, gpointer data) | |
334 { | |
335 LayoutWindow *lw = data; | |
336 | |
1566 | 337 layout_image_alter_orientation(lw, ALTER_ROTATE_90); |
9 | 338 } |
339 | |
340 static void layout_menu_alter_90cc_cb(GtkAction *action, gpointer data) | |
341 { | |
342 LayoutWindow *lw = data; | |
343 | |
1566 | 344 layout_image_alter_orientation(lw, ALTER_ROTATE_90_CC); |
9 | 345 } |
346 | |
347 static void layout_menu_alter_180_cb(GtkAction *action, gpointer data) | |
348 { | |
349 LayoutWindow *lw = data; | |
350 | |
1566 | 351 layout_image_alter_orientation(lw, ALTER_ROTATE_180); |
9 | 352 } |
353 | |
354 static void layout_menu_alter_mirror_cb(GtkAction *action, gpointer data) | |
355 { | |
356 LayoutWindow *lw = data; | |
357 | |
1566 | 358 layout_image_alter_orientation(lw, ALTER_MIRROR); |
9 | 359 } |
360 | |
361 static void layout_menu_alter_flip_cb(GtkAction *action, gpointer data) | |
362 { | |
363 LayoutWindow *lw = data; | |
364 | |
1566 | 365 layout_image_alter_orientation(lw, ALTER_FLIP); |
9 | 366 } |
367 | |
1566 | 368 static void layout_menu_alter_desaturate_cb(GtkToggleAction *action, gpointer data) |
82
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
369 { |
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
370 LayoutWindow *lw = data; |
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
371 |
1566 | 372 layout_image_set_desaturate(lw, gtk_toggle_action_get_active(action)); |
82
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
373 } |
a4c1b7014e6e
Thu Oct 19 15:20:51 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
374 |
439 | 375 static void layout_menu_alter_none_cb(GtkAction *action, gpointer data) |
376 { | |
377 LayoutWindow *lw = data; | |
378 | |
1566 | 379 layout_image_alter_orientation(lw, ALTER_NONE); |
439 | 380 } |
381 | |
9 | 382 static void layout_menu_config_cb(GtkAction *action, gpointer data) |
383 { | |
160 | 384 LayoutWindow *lw = data; |
385 | |
894 | 386 layout_exit_fullscreen(lw); |
9 | 387 show_config_window(); |
388 } | |
389 | |
1479 | 390 static void layout_menu_editors_cb(GtkAction *action, gpointer data) |
391 { | |
392 LayoutWindow *lw = data; | |
393 | |
394 layout_exit_fullscreen(lw); | |
395 show_editor_list_window(); | |
396 } | |
397 | |
1436
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
398 static void layout_menu_layout_config_cb(GtkAction *action, gpointer data) |
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
399 { |
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
400 LayoutWindow *lw = data; |
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
401 |
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
402 layout_exit_fullscreen(lw); |
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
403 layout_show_config_window(lw); |
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
404 } |
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
405 |
9 | 406 static void layout_menu_remove_thumb_cb(GtkAction *action, gpointer data) |
407 { | |
160 | 408 LayoutWindow *lw = data; |
409 | |
894 | 410 layout_exit_fullscreen(lw); |
9 | 411 cache_manager_show(); |
412 } | |
413 | |
414 static void layout_menu_wallpaper_cb(GtkAction *action, gpointer data) | |
415 { | |
416 LayoutWindow *lw = data; | |
417 | |
418 layout_image_to_root(lw); | |
419 } | |
420 | |
1047 | 421 /* single window zoom */ |
9 | 422 static void layout_menu_zoom_in_cb(GtkAction *action, gpointer data) |
423 { | |
424 LayoutWindow *lw = data; | |
425 | |
1047 | 426 layout_image_zoom_adjust(lw, get_zoom_increment(), FALSE); |
9 | 427 } |
428 | |
429 static void layout_menu_zoom_out_cb(GtkAction *action, gpointer data) | |
430 { | |
431 LayoutWindow *lw = data; | |
432 | |
1047 | 433 layout_image_zoom_adjust(lw, -get_zoom_increment(), FALSE); |
9 | 434 } |
435 | |
436 static void layout_menu_zoom_1_1_cb(GtkAction *action, gpointer data) | |
437 { | |
438 LayoutWindow *lw = data; | |
439 | |
1047 | 440 layout_image_zoom_set(lw, 1.0, FALSE); |
9 | 441 } |
442 | |
443 static void layout_menu_zoom_fit_cb(GtkAction *action, gpointer data) | |
444 { | |
445 LayoutWindow *lw = data; | |
446 | |
1047 | 447 layout_image_zoom_set(lw, 0.0, FALSE); |
9 | 448 } |
449 | |
159 | 450 static void layout_menu_zoom_fit_hor_cb(GtkAction *action, gpointer data) |
451 { | |
452 LayoutWindow *lw = data; | |
453 | |
1268
8c39e0bd7e08
Invert Horizontally vs vertically zoom fit, it was a TRUE/FALSE mismatch, reported by Christopher Beland.
zas_
parents:
1231
diff
changeset
|
454 layout_image_zoom_set_fill_geometry(lw, FALSE, FALSE); |
159 | 455 } |
456 | |
457 static void layout_menu_zoom_fit_vert_cb(GtkAction *action, gpointer data) | |
458 { | |
459 LayoutWindow *lw = data; | |
460 | |
1268
8c39e0bd7e08
Invert Horizontally vs vertically zoom fit, it was a TRUE/FALSE mismatch, reported by Christopher Beland.
zas_
parents:
1231
diff
changeset
|
461 layout_image_zoom_set_fill_geometry(lw, TRUE, FALSE); |
159 | 462 } |
463 | |
464 static void layout_menu_zoom_2_1_cb(GtkAction *action, gpointer data) | |
465 { | |
466 LayoutWindow *lw = data; | |
467 | |
1047 | 468 layout_image_zoom_set(lw, 2.0, FALSE); |
159 | 469 } |
470 | |
471 static void layout_menu_zoom_3_1_cb(GtkAction *action, gpointer data) | |
472 { | |
473 LayoutWindow *lw = data; | |
474 | |
1047 | 475 layout_image_zoom_set(lw, 3.0, FALSE); |
159 | 476 } |
477 static void layout_menu_zoom_4_1_cb(GtkAction *action, gpointer data) | |
478 { | |
479 LayoutWindow *lw = data; | |
480 | |
1047 | 481 layout_image_zoom_set(lw, 4.0, FALSE); |
159 | 482 } |
483 | |
484 static void layout_menu_zoom_1_2_cb(GtkAction *action, gpointer data) | |
485 { | |
486 LayoutWindow *lw = data; | |
487 | |
1047 | 488 layout_image_zoom_set(lw, -2.0, FALSE); |
159 | 489 } |
490 | |
491 static void layout_menu_zoom_1_3_cb(GtkAction *action, gpointer data) | |
492 { | |
493 LayoutWindow *lw = data; | |
494 | |
1047 | 495 layout_image_zoom_set(lw, -3.0, FALSE); |
159 | 496 } |
497 | |
498 static void layout_menu_zoom_1_4_cb(GtkAction *action, gpointer data) | |
499 { | |
500 LayoutWindow *lw = data; | |
501 | |
1047 | 502 layout_image_zoom_set(lw, -4.0, FALSE); |
503 } | |
504 | |
505 /* connected zoom */ | |
506 static void layout_menu_connect_zoom_in_cb(GtkAction *action, gpointer data) | |
507 { | |
508 LayoutWindow *lw = data; | |
509 | |
510 layout_image_zoom_adjust(lw, get_zoom_increment(), TRUE); | |
511 } | |
512 | |
513 static void layout_menu_connect_zoom_out_cb(GtkAction *action, gpointer data) | |
514 { | |
515 LayoutWindow *lw = data; | |
516 | |
517 layout_image_zoom_adjust(lw, -get_zoom_increment(), TRUE); | |
518 } | |
519 | |
520 static void layout_menu_connect_zoom_1_1_cb(GtkAction *action, gpointer data) | |
521 { | |
522 LayoutWindow *lw = data; | |
523 | |
524 layout_image_zoom_set(lw, 1.0, TRUE); | |
525 } | |
526 | |
527 static void layout_menu_connect_zoom_fit_cb(GtkAction *action, gpointer data) | |
528 { | |
529 LayoutWindow *lw = data; | |
530 | |
531 layout_image_zoom_set(lw, 0.0, TRUE); | |
532 } | |
533 | |
534 static void layout_menu_connect_zoom_fit_hor_cb(GtkAction *action, gpointer data) | |
535 { | |
536 LayoutWindow *lw = data; | |
537 | |
1268
8c39e0bd7e08
Invert Horizontally vs vertically zoom fit, it was a TRUE/FALSE mismatch, reported by Christopher Beland.
zas_
parents:
1231
diff
changeset
|
538 layout_image_zoom_set_fill_geometry(lw, FALSE, TRUE); |
1047 | 539 } |
540 | |
541 static void layout_menu_connect_zoom_fit_vert_cb(GtkAction *action, gpointer data) | |
542 { | |
543 LayoutWindow *lw = data; | |
544 | |
1268
8c39e0bd7e08
Invert Horizontally vs vertically zoom fit, it was a TRUE/FALSE mismatch, reported by Christopher Beland.
zas_
parents:
1231
diff
changeset
|
545 layout_image_zoom_set_fill_geometry(lw, TRUE, TRUE); |
1047 | 546 } |
547 | |
548 static void layout_menu_connect_zoom_2_1_cb(GtkAction *action, gpointer data) | |
549 { | |
550 LayoutWindow *lw = data; | |
551 | |
552 layout_image_zoom_set(lw, 2.0, TRUE); | |
553 } | |
554 | |
555 static void layout_menu_connect_zoom_3_1_cb(GtkAction *action, gpointer data) | |
556 { | |
557 LayoutWindow *lw = data; | |
558 | |
559 layout_image_zoom_set(lw, 3.0, TRUE); | |
560 } | |
561 static void layout_menu_connect_zoom_4_1_cb(GtkAction *action, gpointer data) | |
562 { | |
563 LayoutWindow *lw = data; | |
564 | |
565 layout_image_zoom_set(lw, 4.0, TRUE); | |
566 } | |
567 | |
568 static void layout_menu_connect_zoom_1_2_cb(GtkAction *action, gpointer data) | |
569 { | |
570 LayoutWindow *lw = data; | |
571 | |
572 layout_image_zoom_set(lw, -2.0, TRUE); | |
573 } | |
574 | |
575 static void layout_menu_connect_zoom_1_3_cb(GtkAction *action, gpointer data) | |
576 { | |
577 LayoutWindow *lw = data; | |
578 | |
579 layout_image_zoom_set(lw, -3.0, TRUE); | |
580 } | |
581 | |
582 static void layout_menu_connect_zoom_1_4_cb(GtkAction *action, gpointer data) | |
583 { | |
584 LayoutWindow *lw = data; | |
585 | |
586 layout_image_zoom_set(lw, -4.0, TRUE); | |
159 | 587 } |
588 | |
589 | |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
590 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
|
591 { |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
592 LayoutWindow *lw = data; |
894 | 593 ImageSplitMode mode; |
160 | 594 |
894 | 595 layout_exit_fullscreen(lw); |
596 mode = gtk_radio_action_get_current_value(action); | |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
597 layout_split_change(lw, mode); |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
598 } |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
599 |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
600 |
9 | 601 static void layout_menu_thumb_cb(GtkToggleAction *action, gpointer data) |
602 { | |
603 LayoutWindow *lw = data; | |
604 | |
605 layout_thumb_set(lw, gtk_toggle_action_get_active(action)); | |
606 } | |
607 | |
132 | 608 |
9 | 609 static void layout_menu_list_cb(GtkRadioAction *action, GtkRadioAction *current, gpointer data) |
610 { | |
611 LayoutWindow *lw = data; | |
894 | 612 |
613 layout_exit_fullscreen(lw); | |
1668
8ebc26a4383f
use radio buttons for file and dir mode in popup menu
nadvornik
parents:
1667
diff
changeset
|
614 layout_views_set(lw, lw->options.dir_view_type, (FileViewType) gtk_radio_action_get_current_value(action)); |
9 | 615 } |
616 | |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
617 static void layout_menu_view_dir_as_cb(GtkRadioAction *action, GtkRadioAction *current, gpointer data) |
9 | 618 { |
619 LayoutWindow *lw = data; | |
620 | |
894 | 621 layout_exit_fullscreen(lw); |
1412 | 622 layout_views_set(lw, (DirViewType) gtk_radio_action_get_current_value(action), lw->options.file_view_type); |
9 | 623 } |
624 | |
159 | 625 static void layout_menu_view_in_new_window_cb(GtkAction *action, gpointer data) |
626 { | |
627 LayoutWindow *lw = data; | |
628 | |
894 | 629 layout_exit_fullscreen(lw); |
159 | 630 view_window_new(layout_image_get_fd(lw)); |
631 } | |
632 | |
9 | 633 static void layout_menu_fullscreen_cb(GtkAction *action, gpointer data) |
634 { | |
635 LayoutWindow *lw = data; | |
636 | |
637 layout_image_full_screen_toggle(lw); | |
638 } | |
639 | |
428
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
640 static void layout_menu_escape_cb(GtkAction *action, gpointer data) |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
641 { |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
642 LayoutWindow *lw = data; |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
643 |
894 | 644 layout_exit_fullscreen(lw); |
645 | |
646 /* FIXME:interrupting thumbs no longer allowed */ | |
428
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
647 #if 0 |
894 | 648 interrupt_thumbs(); |
428
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
649 #endif |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
650 } |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
651 |
1665 | 652 static void layout_menu_overlay_toggle_cb(GtkAction *action, gpointer data) |
159 | 653 { |
654 LayoutWindow *lw = data; | |
655 | |
482 | 656 image_osd_toggle(lw->image); |
1665 | 657 layout_util_sync_views(lw); |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
658 } |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
659 |
1665 | 660 |
661 static void layout_menu_overlay_cb(GtkToggleAction *action, gpointer data) | |
662 { | |
663 LayoutWindow *lw = data; | |
664 GtkToggleAction *histogram_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(lw->action_group, "ImageHistogram")); | |
665 | |
666 if (gtk_toggle_action_get_active(action)) | |
667 { | |
668 OsdShowFlags flags = image_osd_get(lw->image); | |
669 | |
1666 | 670 if ((flags | OSD_SHOW_INFO | OSD_SHOW_STATUS) != flags) |
1665 | 671 image_osd_set(lw->image, flags | OSD_SHOW_INFO | OSD_SHOW_STATUS); |
672 } | |
673 else | |
674 { | |
675 image_osd_set(lw->image, OSD_SHOW_NOTHING); | |
676 gtk_toggle_action_set_active(histogram_action, FALSE); /* this calls layout_menu_histogram_cb */ | |
677 } | |
678 } | |
679 | |
680 static void layout_menu_histogram_cb(GtkToggleAction *action, gpointer data) | |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
681 { |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
682 LayoutWindow *lw = data; |
1665 | 683 GtkToggleAction *overlay_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(lw->action_group, "ImageOverlay")); |
684 | |
685 if (gtk_toggle_action_get_active(action)) | |
686 { | |
687 image_osd_set(lw->image, OSD_SHOW_INFO | OSD_SHOW_STATUS | OSD_SHOW_HISTOGRAM); | |
688 gtk_toggle_action_set_active(overlay_action, TRUE); /* this calls layout_menu_overlay_cb */ | |
689 } | |
690 else | |
691 { | |
692 OsdShowFlags flags = image_osd_get(lw->image); | |
693 if (flags & OSD_SHOW_HISTOGRAM) | |
694 image_osd_set(lw->image, flags & ~OSD_SHOW_HISTOGRAM); | |
695 } | |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
696 } |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
697 |
1665 | 698 static void layout_menu_histogram_toggle_channel_cb(GtkAction *action, gpointer data) |
699 { | |
700 LayoutWindow *lw = data; | |
701 | |
702 image_osd_histogram_toggle_channel(lw->image); | |
703 layout_util_sync_views(lw); | |
704 } | |
705 | |
706 static void layout_menu_histogram_toggle_mode_cb(GtkAction *action, gpointer data) | |
273
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
707 { |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
708 LayoutWindow *lw = data; |
e0e2c2b72c5a
reworked the histogram patch by Uwe Ohse, most of the code is in
nadvornik
parents:
249
diff
changeset
|
709 |
1665 | 710 image_osd_histogram_toggle_mode(lw->image); |
711 layout_util_sync_views(lw); | |
712 } | |
713 | |
714 static void layout_menu_histogram_channel_cb(GtkRadioAction *action, GtkRadioAction *current, gpointer data) | |
715 { | |
716 LayoutWindow *lw = data; | |
717 gint channel = gtk_radio_action_get_current_value(action); | |
718 GtkToggleAction *histogram_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(lw->action_group, "ImageHistogram")); | |
719 | |
720 if (channel < 0 || channel >= HCHAN_COUNT) return; | |
721 | |
722 gtk_toggle_action_set_active(histogram_action, TRUE); /* this calls layout_menu_histogram_cb */ | |
723 image_osd_histogram_set_channel(lw->image, channel); | |
724 } | |
725 | |
726 static void layout_menu_histogram_mode_cb(GtkRadioAction *action, GtkRadioAction *current, gpointer data) | |
727 { | |
728 LayoutWindow *lw = data; | |
729 gint mode = gtk_radio_action_get_current_value(action); | |
730 GtkToggleAction *histogram_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(lw->action_group, "ImageHistogram")); | |
731 | |
732 if (mode < 0 || mode > 1) return; | |
733 | |
734 gtk_toggle_action_set_active(histogram_action, TRUE); /* this calls layout_menu_histogram_cb */ | |
735 image_osd_histogram_set_mode(lw->image, mode); | |
159 | 736 } |
737 | |
9 | 738 static void layout_menu_refresh_cb(GtkAction *action, gpointer data) |
739 { | |
740 LayoutWindow *lw = data; | |
741 | |
742 layout_refresh(lw); | |
743 } | |
744 | |
1410 | 745 static void layout_menu_bar_exif_cb(GtkAction *action, gpointer data) |
746 { | |
747 LayoutWindow *lw = data; | |
748 | |
749 layout_exit_fullscreen(lw); | |
750 layout_exif_window_new(lw); | |
751 } | |
752 | |
9 | 753 static void layout_menu_float_cb(GtkToggleAction *action, gpointer data) |
754 { | |
755 LayoutWindow *lw = data; | |
756 | |
1309 | 757 if (lw->options.tools_float == gtk_toggle_action_get_active(action)) return; |
1318
fb76c291b00f
fixed --fullscreen option together with enabled bar
nadvornik
parents:
1317
diff
changeset
|
758 |
fb76c291b00f
fixed --fullscreen option together with enabled bar
nadvornik
parents:
1317
diff
changeset
|
759 layout_exit_fullscreen(lw); |
894 | 760 layout_tools_float_toggle(lw); |
9 | 761 } |
762 | |
763 static void layout_menu_hide_cb(GtkAction *action, gpointer data) | |
764 { | |
765 LayoutWindow *lw = data; | |
766 | |
894 | 767 layout_exit_fullscreen(lw); |
9 | 768 layout_tools_hide_toggle(lw); |
769 } | |
770 | |
771 static void layout_menu_toolbar_cb(GtkToggleAction *action, gpointer data) | |
772 { | |
773 LayoutWindow *lw = data; | |
894 | 774 |
1318
fb76c291b00f
fixed --fullscreen option together with enabled bar
nadvornik
parents:
1317
diff
changeset
|
775 if (lw->options.toolbar_hidden == gtk_toggle_action_get_active(action)) return; |
9 | 776 |
1318
fb76c291b00f
fixed --fullscreen option together with enabled bar
nadvornik
parents:
1317
diff
changeset
|
777 layout_exit_fullscreen(lw); |
894 | 778 layout_toolbar_toggle(lw); |
9 | 779 } |
780 | |
1375
df58e511d90e
Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents:
1348
diff
changeset
|
781 static void layout_menu_info_pixel_cb(GtkToggleAction *action, gpointer data) |
df58e511d90e
Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents:
1348
diff
changeset
|
782 { |
df58e511d90e
Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents:
1348
diff
changeset
|
783 LayoutWindow *lw = data; |
df58e511d90e
Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents:
1348
diff
changeset
|
784 |
1584
0cd2268f500b
improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents:
1583
diff
changeset
|
785 if (lw->options.show_info_pixel == gtk_toggle_action_get_active(action)) return; |
1375
df58e511d90e
Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents:
1348
diff
changeset
|
786 |
df58e511d90e
Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents:
1348
diff
changeset
|
787 layout_exit_fullscreen(lw); |
1584
0cd2268f500b
improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents:
1583
diff
changeset
|
788 layout_info_pixel_set(lw, !lw->options.show_info_pixel); |
1375
df58e511d90e
Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents:
1348
diff
changeset
|
789 } |
df58e511d90e
Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents:
1348
diff
changeset
|
790 |
1318
fb76c291b00f
fixed --fullscreen option together with enabled bar
nadvornik
parents:
1317
diff
changeset
|
791 /* NOTE: these callbacks are called also from layout_util_sync_views */ |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
792 static void layout_menu_bar_cb(GtkToggleAction *action, gpointer data) |
9 | 793 { |
794 LayoutWindow *lw = data; | |
894 | 795 |
1318
fb76c291b00f
fixed --fullscreen option together with enabled bar
nadvornik
parents:
1317
diff
changeset
|
796 if (layout_bar_enabled(lw) == gtk_toggle_action_get_active(action)) return; |
9 | 797 |
1318
fb76c291b00f
fixed --fullscreen option together with enabled bar
nadvornik
parents:
1317
diff
changeset
|
798 layout_exit_fullscreen(lw); |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
799 layout_bar_toggle(lw); |
9 | 800 } |
801 | |
802 static void layout_menu_bar_sort_cb(GtkToggleAction *action, gpointer data) | |
803 { | |
804 LayoutWindow *lw = data; | |
894 | 805 |
1320 | 806 if (layout_bar_sort_enabled(lw) == gtk_toggle_action_get_active(action)) return; |
9 | 807 |
1318
fb76c291b00f
fixed --fullscreen option together with enabled bar
nadvornik
parents:
1317
diff
changeset
|
808 layout_exit_fullscreen(lw); |
894 | 809 layout_bar_sort_toggle(lw); |
9 | 810 } |
811 | |
812 static void layout_menu_slideshow_cb(GtkAction *action, gpointer data) | |
813 { | |
814 LayoutWindow *lw = data; | |
815 | |
816 layout_image_slideshow_toggle(lw); | |
817 } | |
818 | |
428
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
819 static void layout_menu_slideshow_pause_cb(GtkAction *action, gpointer data) |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
820 { |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
821 LayoutWindow *lw = data; |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
822 |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
823 layout_image_slideshow_pause_toggle(lw); |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
824 } |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
825 |
9 | 826 static void layout_menu_help_cb(GtkAction *action, gpointer data) |
827 { | |
160 | 828 LayoutWindow *lw = data; |
894 | 829 |
830 layout_exit_fullscreen(lw); | |
9 | 831 help_window_show("html_contents"); |
832 } | |
833 | |
834 static void layout_menu_help_keys_cb(GtkAction *action, gpointer data) | |
835 { | |
160 | 836 LayoutWindow *lw = data; |
894 | 837 |
838 layout_exit_fullscreen(lw); | |
9 | 839 help_window_show("documentation"); |
840 } | |
841 | |
842 static void layout_menu_notes_cb(GtkAction *action, gpointer data) | |
843 { | |
160 | 844 LayoutWindow *lw = data; |
894 | 845 |
846 layout_exit_fullscreen(lw); | |
9 | 847 help_window_show("release_notes"); |
848 } | |
849 | |
850 static void layout_menu_about_cb(GtkAction *action, gpointer data) | |
851 { | |
160 | 852 LayoutWindow *lw = data; |
894 | 853 |
854 layout_exit_fullscreen(lw); | |
9 | 855 show_about_window(); |
856 } | |
857 | |
678
6d6f042b8ca5
Add a log window that shows normal and debug messages. For now, it was added to Help menu.
zas_
parents:
654
diff
changeset
|
858 static void layout_menu_log_window_cb(GtkAction *action, gpointer data) |
6d6f042b8ca5
Add a log window that shows normal and debug messages. For now, it was added to Help menu.
zas_
parents:
654
diff
changeset
|
859 { |
6d6f042b8ca5
Add a log window that shows normal and debug messages. For now, it was added to Help menu.
zas_
parents:
654
diff
changeset
|
860 LayoutWindow *lw = data; |
894 | 861 |
862 layout_exit_fullscreen(lw); | |
678
6d6f042b8ca5
Add a log window that shows normal and debug messages. For now, it was added to Help menu.
zas_
parents:
654
diff
changeset
|
863 log_window_new(); |
6d6f042b8ca5
Add a log window that shows normal and debug messages. For now, it was added to Help menu.
zas_
parents:
654
diff
changeset
|
864 } |
6d6f042b8ca5
Add a log window that shows normal and debug messages. For now, it was added to Help menu.
zas_
parents:
654
diff
changeset
|
865 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
866 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
867 /* |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
868 *----------------------------------------------------------------------------- |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
869 * select menu |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
870 *----------------------------------------------------------------------------- |
442 | 871 */ |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
872 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
873 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
|
874 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
875 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
876 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
877 layout_select_all(lw); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
878 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
879 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
880 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
|
881 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
882 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
883 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
884 layout_select_none(lw); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
885 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
886 |
601 | 887 static void layout_menu_invert_selection_cb(GtkAction *action, gpointer data) |
888 { | |
889 LayoutWindow *lw = data; | |
890 | |
891 layout_select_invert(lw); | |
892 } | |
893 | |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
894 static void layout_menu_marks_cb(GtkToggleAction *action, gpointer data) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
895 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
896 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
897 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
898 layout_marks_set(lw, gtk_toggle_action_get_active(action)); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
899 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
900 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
901 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
902 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
|
903 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
904 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
905 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
|
906 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
442 | 907 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
908 layout_selection_to_mark(lw, mark, STM_MODE_SET); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
909 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
910 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
911 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
|
912 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
913 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
914 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
|
915 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
442 | 916 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
917 layout_selection_to_mark(lw, mark, STM_MODE_RESET); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
918 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
919 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
920 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
|
921 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
922 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
923 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
|
924 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
442 | 925 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
926 layout_selection_to_mark(lw, mark, STM_MODE_TOGGLE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
927 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
928 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
929 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
|
930 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
931 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
932 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
|
933 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
442 | 934 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
935 layout_mark_to_selection(lw, mark, MTS_MODE_SET); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
936 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
937 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
938 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
|
939 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
940 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
941 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
|
942 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
442 | 943 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
944 layout_mark_to_selection(lw, mark, MTS_MODE_OR); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
945 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
946 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
947 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
|
948 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
949 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
950 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
|
951 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
442 | 952 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
953 layout_mark_to_selection(lw, mark, MTS_MODE_AND); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
954 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
955 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
956 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
|
957 { |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
958 LayoutWindow *lw = data; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
959 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
|
960 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
442 | 961 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
962 layout_mark_to_selection(lw, mark, MTS_MODE_MINUS); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
963 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
964 |
1635
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
965 static void layout_menu_mark_filter_toggle_cb(GtkAction *action, gpointer data) |
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
966 { |
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
967 LayoutWindow *lw = data; |
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
968 gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(action), "mark_num")); |
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
969 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); |
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
970 |
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
971 layout_marks_set(lw, TRUE); |
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
972 layout_mark_filter_toggle(lw, mark); |
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
973 } |
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
974 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
975 |
9 | 976 /* |
977 *----------------------------------------------------------------------------- | |
159 | 978 * go menu |
979 *----------------------------------------------------------------------------- | |
442 | 980 */ |
159 | 981 |
982 static void layout_menu_image_first_cb(GtkAction *action, gpointer data) | |
983 { | |
984 LayoutWindow *lw = data; | |
985 layout_image_first(lw); | |
986 } | |
987 | |
988 static void layout_menu_image_prev_cb(GtkAction *action, gpointer data) | |
989 { | |
990 LayoutWindow *lw = data; | |
991 layout_image_prev(lw); | |
992 } | |
993 | |
994 static void layout_menu_image_next_cb(GtkAction *action, gpointer data) | |
995 { | |
996 LayoutWindow *lw = data; | |
997 layout_image_next(lw); | |
998 } | |
999 | |
1000 static void layout_menu_image_last_cb(GtkAction *action, gpointer data) | |
1001 { | |
1002 LayoutWindow *lw = data; | |
1003 layout_image_last(lw); | |
1004 } | |
1005 | |
1334 | 1006 static void layout_menu_back_cb(GtkAction *action, gpointer data) |
1007 { | |
1008 LayoutWindow *lw = data; | |
1009 FileData *dir_fd; | |
1010 gchar *path = NULL; | |
1011 GList *list = history_list_get_by_key("path_list"); | |
1012 gint n = 0; | |
1013 | |
1014 while (list) | |
1015 { | |
1016 if (n == 1) { | |
1017 /* Previous path from history */ | |
1018 path = (gchar *)list->data; | |
1019 break; | |
1020 } | |
1021 list = list->next; | |
1022 n++; | |
1023 } | |
1024 | |
1025 if (!path) return; | |
1026 | |
1027 /* Open previous path */ | |
1028 dir_fd = file_data_new_simple(path); | |
1029 layout_set_fd(lw, dir_fd); | |
1030 file_data_unref(dir_fd); | |
1031 } | |
1032 | |
1033 static void layout_menu_home_cb(GtkAction *action, gpointer data) | |
1034 { | |
1436
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
1035 LayoutWindow *lw = data; |
1334 | 1036 const gchar *path; |
1037 | |
1436
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
1038 if (lw->options.home_path && *lw->options.home_path) |
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
1039 path = lw->options.home_path; |
1334 | 1040 else |
1041 path = homedir(); | |
1042 | |
1043 if (path) | |
1044 { | |
1045 FileData *dir_fd = file_data_new_simple(path); | |
1046 layout_set_fd(lw, dir_fd); | |
1047 file_data_unref(dir_fd); | |
1048 } | |
1049 } | |
1050 | |
159 | 1051 |
1052 /* | |
1053 *----------------------------------------------------------------------------- | |
9 | 1054 * edit menu |
1055 *----------------------------------------------------------------------------- | |
442 | 1056 */ |
9 | 1057 |
1058 static void layout_menu_edit_cb(GtkAction *action, gpointer data) | |
1059 { | |
1060 LayoutWindow *lw = data; | |
1272 | 1061 const gchar *key = gtk_action_get_name(action); |
1062 | |
1063 if (!editor_window_flag_set(key)) | |
894 | 1064 layout_exit_fullscreen(lw); |
160 | 1065 |
1656 | 1066 file_util_start_editor_from_filelist(key, layout_selection_list(lw), layout_get_path(lw), lw->window); |
9 | 1067 } |
1068 | |
1272 | 1069 #if 0 |
9 | 1070 static void layout_menu_edit_update(LayoutWindow *lw) |
1071 { | |
1072 gint i; | |
1073 | |
1074 /* main edit menu */ | |
1075 | |
1076 if (!lw->action_group) return; | |
1077 | |
569
fd51eac09ead
Use GQ_EDITOR_GENERIC_SLOTS instead of hardcoded value.
zas_
parents:
556
diff
changeset
|
1078 for (i = 0; i < GQ_EDITOR_GENERIC_SLOTS; i++) |
9 | 1079 { |
1080 gchar *key; | |
1081 GtkAction *action; | |
731
fa8f7d7396cf
Introduce an helper function that returns the name of an editor.
zas_
parents:
730
diff
changeset
|
1082 const gchar *name; |
fa8f7d7396cf
Introduce an helper function that returns the name of an editor.
zas_
parents:
730
diff
changeset
|
1083 |
9 | 1084 key = g_strdup_printf("Editor%d", i); |
1085 | |
1086 action = gtk_action_group_get_action(lw->action_group, key); | |
1087 g_object_set_data(G_OBJECT(action), "edit_index", GINT_TO_POINTER(i)); | |
1088 | |
731
fa8f7d7396cf
Introduce an helper function that returns the name of an editor.
zas_
parents:
730
diff
changeset
|
1089 name = editor_get_name(i); |
fa8f7d7396cf
Introduce an helper function that returns the name of an editor.
zas_
parents:
730
diff
changeset
|
1090 if (name) |
9 | 1091 { |
731
fa8f7d7396cf
Introduce an helper function that returns the name of an editor.
zas_
parents:
730
diff
changeset
|
1092 gchar *text = g_strdup_printf(_("_%d %s..."), i, name); |
9 | 1093 |
1094 g_object_set(action, "label", text, | |
1095 "sensitive", TRUE, NULL); | |
1096 g_free(text); | |
1097 } | |
1098 else | |
1099 { | |
454 | 1100 gchar *text; |
1101 | |
1102 text = g_strdup_printf(_("_%d empty"), i); | |
1103 g_object_set(action, "label", text, "sensitive", FALSE, NULL); | |
1104 g_free(text); | |
9 | 1105 } |
1106 | |
1107 g_free(key); | |
1108 } | |
1109 } | |
1110 | |
1111 void layout_edit_update_all(void) | |
1112 { | |
1113 GList *work; | |
1114 | |
1115 work = layout_window_list; | |
1116 while (work) | |
1117 { | |
1118 LayoutWindow *lw = work->data; | |
1119 work = work->next; | |
1120 | |
1121 layout_menu_edit_update(lw); | |
1122 } | |
1123 } | |
1124 | |
1272 | 1125 #endif |
1126 | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1127 static void layout_menu_metadata_write_cb(GtkAction *action, gpointer data) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1128 { |
1586
249b539cc952
force the metadata dialog if it was triggered by the menu or the button
nadvornik
parents:
1585
diff
changeset
|
1129 metadata_write_queue_confirm(TRUE, NULL, NULL); |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1130 } |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1131 |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1132 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1133 /* |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1134 *----------------------------------------------------------------------------- |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1135 * color profile button (and menu) |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1136 *----------------------------------------------------------------------------- |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1137 */ |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1138 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1139 static void layout_color_menu_enable_cb(GtkToggleAction *action, gpointer data) |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1140 { |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1141 #ifdef HAVE_LCMS |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1142 LayoutWindow *lw = data; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1143 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1144 layout_image_color_profile_set_use(lw, gtk_toggle_action_get_active(action)); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1145 layout_util_sync_color(lw); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1146 layout_image_refresh(lw); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1147 #endif |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1148 } |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1149 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1150 static void layout_color_menu_use_image_cb(GtkToggleAction *action, gpointer data) |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1151 { |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1152 #ifdef HAVE_LCMS |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1153 LayoutWindow *lw = data; |
1548 | 1154 gint input; |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1155 gboolean use_image; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1156 |
1548 | 1157 if (!layout_image_color_profile_get(lw, &input, &use_image)) return; |
1158 layout_image_color_profile_set(lw, input, gtk_toggle_action_get_active(action)); | |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1159 layout_util_sync_color(lw); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1160 layout_image_refresh(lw); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1161 #endif |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1162 } |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1163 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1164 static void layout_color_menu_input_cb(GtkRadioAction *action, GtkRadioAction *current, gpointer data) |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1165 { |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1166 #ifdef HAVE_LCMS |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1167 LayoutWindow *lw = data; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1168 gint type; |
1548 | 1169 gint input; |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1170 gboolean use_image; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1171 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1172 type = gtk_radio_action_get_current_value(action); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1173 if (type < 0 || type >= COLOR_PROFILE_FILE + COLOR_PROFILE_INPUTS) return; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1174 |
1548 | 1175 if (!layout_image_color_profile_get(lw, &input, &use_image)) return; |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1176 if (type == input) return; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1177 |
1548 | 1178 layout_image_color_profile_set(lw, type, use_image); |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1179 layout_image_refresh(lw); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1180 #endif |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1181 } |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1182 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1183 |
9 | 1184 /* |
1185 *----------------------------------------------------------------------------- | |
1186 * recent menu | |
1187 *----------------------------------------------------------------------------- | |
1188 */ | |
1189 | |
1190 static void layout_menu_recent_cb(GtkWidget *widget, gpointer data) | |
1191 { | |
1192 gint n; | |
1193 gchar *path; | |
1194 | |
1195 n = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "recent_index")); | |
1196 | |
1197 path = g_list_nth_data(history_list_get_by_key("recent"), n); | |
1198 | |
1199 if (!path) return; | |
1200 | |
1201 /* make a copy of it */ | |
1202 path = g_strdup(path); | |
1203 collection_window_new(path); | |
1204 g_free(path); | |
1205 } | |
1206 | |
1207 static void layout_menu_recent_update(LayoutWindow *lw) | |
1208 { | |
1209 GtkWidget *menu; | |
1210 GtkWidget *recent; | |
1211 GtkWidget *item; | |
1212 GList *list; | |
1213 gint n; | |
1214 | |
1215 if (!lw->ui_manager) return; | |
1216 | |
1217 list = history_list_get_by_key("recent"); | |
1218 n = 0; | |
1219 | |
1220 menu = gtk_menu_new(); | |
1221 | |
1222 while (list) | |
1223 { | |
1176
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1224 const gchar *filename = filename_from_path((gchar *)list->data); |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1225 gchar *name; |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1226 gboolean free_name = FALSE; |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1227 |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1228 if (file_extension_match(filename, GQ_COLLECTION_EXT)) |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1229 { |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1230 name = remove_extension_from_path(filename); |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1231 free_name = TRUE; |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1232 } |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1233 else |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1234 { |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1235 name = (gchar *) filename; |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1236 } |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1237 |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1238 item = menu_item_add_simple(menu, name, G_CALLBACK(layout_menu_recent_cb), lw); |
d3e51e1a02f8
Hide .gqv extension from collection name in collection window title and recent menu list.
zas_
parents:
1167
diff
changeset
|
1239 if (free_name) g_free(name); |
9 | 1240 g_object_set_data(G_OBJECT(item), "recent_index", GINT_TO_POINTER(n)); |
1241 list = list->next; | |
1242 n++; | |
1243 } | |
1244 | |
1245 if (n == 0) | |
1246 { | |
1247 menu_item_add(menu, _("Empty"), NULL, NULL); | |
1248 } | |
1249 | |
1250 recent = gtk_ui_manager_get_widget(lw->ui_manager, "/MainMenu/FileMenu/OpenRecent"); | |
1251 gtk_menu_item_set_submenu(GTK_MENU_ITEM(recent), menu); | |
1252 gtk_widget_set_sensitive(recent, (n != 0)); | |
1253 } | |
1254 | |
1255 void layout_recent_update_all(void) | |
1256 { | |
1257 GList *work; | |
1258 | |
1259 work = layout_window_list; | |
1260 while (work) | |
1261 { | |
1262 LayoutWindow *lw = work->data; | |
1263 work = work->next; | |
1264 | |
1265 layout_menu_recent_update(lw); | |
1266 } | |
1267 } | |
1268 | |
1269 void layout_recent_add_path(const gchar *path) | |
1270 { | |
1271 if (!path) return; | |
1272 | |
343
63380ea3e65d
Rename recent_list_max/open_recent_max to open_recent_list_maxsize.
zas_
parents:
341
diff
changeset
|
1273 history_list_add_to_key("recent", path, options->open_recent_list_maxsize); |
9 | 1274 |
1275 layout_recent_update_all(); | |
1276 } | |
1277 | |
1278 /* | |
1279 *----------------------------------------------------------------------------- | |
1280 * menu | |
1281 *----------------------------------------------------------------------------- | |
442 | 1282 */ |
9 | 1283 |
1284 #define CB G_CALLBACK | |
1285 | |
1286 static GtkActionEntry menu_entries[] = { | |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1287 { "FileMenu", NULL, N_("_File"), NULL, NULL, NULL }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1288 { "GoMenu", NULL, N_("_Go"), NULL, NULL, NULL }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1289 { "EditMenu", NULL, N_("_Edit"), NULL, NULL, NULL }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1290 { "SelectMenu", NULL, N_("_Select"), NULL, NULL, NULL }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1291 { "OrientationMenu", NULL, N_("_Orientation"), NULL, NULL, NULL }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1292 { "ExternalMenu", NULL, N_("E_xternal Editors"), NULL, NULL, NULL }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1293 { "ViewMenu", NULL, N_("_View"), NULL, NULL, NULL }, |
1666 | 1294 { "FileDirMenu", NULL, N_("_Files and Folders"), NULL, NULL, NULL }, |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1295 { "ZoomMenu", NULL, N_("_Zoom"), NULL, NULL, NULL }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1296 { "ColorMenu", NULL, N_("Color _Management"), NULL, NULL, NULL }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1297 { "ConnectZoomMenu", NULL, N_("_Connected Zoom"), NULL, NULL, NULL }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1298 { "SplitMenu", NULL, N_("_Split"), NULL, NULL, NULL }, |
1665 | 1299 { "OverlayMenu", NULL, N_("_Image Overlay"), NULL, NULL, NULL }, |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1300 { "HelpMenu", NULL, N_("_Help"), NULL, NULL, NULL }, |
1585 | 1301 |
1302 { "FirstImage", GTK_STOCK_GOTO_TOP, N_("_First Image"), "Home", N_("First Image"), CB(layout_menu_image_first_cb) }, | |
1303 { "PrevImage", GTK_STOCK_GO_UP, N_("_Previous Image"), "BackSpace", N_("Previous Image"), CB(layout_menu_image_prev_cb) }, | |
1304 { "PrevImageAlt1", GTK_STOCK_GO_UP, N_("_Previous Image"), "Page_Up", N_("Previous Image"), CB(layout_menu_image_prev_cb) }, | |
1305 { "PrevImageAlt2", GTK_STOCK_GO_UP, N_("_Previous Image"), "KP_Page_Up", N_("Previous Image"), CB(layout_menu_image_prev_cb) }, | |
1306 { "NextImage", GTK_STOCK_GO_DOWN, N_("_Next Image"), "space", N_("Next Image"), CB(layout_menu_image_next_cb) }, | |
1307 { "NextImageAlt1", GTK_STOCK_GO_DOWN, N_("_Next Image"), "Page_Down", N_("Next Image"), CB(layout_menu_image_next_cb) }, | |
1308 { "NextImageAlt2", GTK_STOCK_GO_DOWN, N_("_Next Image"), "KP_Page_Down", N_("Next Image"), CB(layout_menu_image_next_cb) }, | |
1309 { "LastImage", GTK_STOCK_GOTO_BOTTOM, N_("_Last Image"), "End", N_("Last Image"), CB(layout_menu_image_last_cb) }, | |
1310 { "Back", GTK_STOCK_GO_BACK, N_("_Back"), NULL, N_("Back"), CB(layout_menu_back_cb) }, | |
1311 { "Home", GTK_STOCK_HOME, N_("_Home"), NULL, N_("Home"), CB(layout_menu_home_cb) }, | |
1312 | |
1313 { "NewWindow", GTK_STOCK_NEW, N_("New _window"), "<control>N", N_("New window"), CB(layout_menu_new_window_cb) }, | |
1314 { "NewCollection", GTK_STOCK_INDEX, N_("_New collection"), "C", N_("New collection"), CB(layout_menu_new_cb) }, | |
1315 { "OpenCollection", GTK_STOCK_OPEN, N_("_Open collection..."), "O", N_("Open collection..."), CB(layout_menu_open_cb) }, | |
1316 { "OpenRecent", NULL, N_("Open _recent"), NULL, N_("Open recent"), NULL }, | |
1317 { "Search", GTK_STOCK_FIND, N_("_Search..."), "F3", N_("Search..."), CB(layout_menu_search_cb) }, | |
1318 { "FindDupes", GTK_STOCK_FIND, N_("_Find duplicates..."), "D", N_("Find duplicates..."), CB(layout_menu_dupes_cb) }, | |
1319 { "PanView", NULL, N_("Pan _view"), "<control>J", N_("Pan view"), CB(layout_menu_pan_cb) }, | |
1320 { "Print", GTK_STOCK_PRINT, N_("_Print..."), "<shift>P", N_("Print..."), CB(layout_menu_print_cb) }, | |
1321 { "NewFolder", GTK_STOCK_DIRECTORY, N_("N_ew folder..."), "<control>F", N_("New folder..."), CB(layout_menu_dir_cb) }, | |
1322 { "Copy", GTK_STOCK_COPY, N_("_Copy..."), "<control>C", N_("Copy..."), CB(layout_menu_copy_cb) }, | |
1323 { "Move", NULL, N_("_Move..."), "<control>M", N_("Move..."), CB(layout_menu_move_cb) }, | |
1324 { "Rename", NULL, N_("_Rename..."), "<control>R", N_("Rename..."), CB(layout_menu_rename_cb) }, | |
1325 { "Delete", GTK_STOCK_DELETE, N_("_Delete..."), "<control>D", N_("Delete..."), CB(layout_menu_delete_cb) }, | |
1326 { "DeleteAlt1", GTK_STOCK_DELETE, N_("_Delete..."), "Delete", N_("Delete..."), CB(layout_menu_delete_cb) }, | |
1327 { "DeleteAlt2", GTK_STOCK_DELETE, N_("_Delete..."), "KP_Delete", N_("Delete..."), CB(layout_menu_delete_cb) }, | |
1598 | 1328 { "EnableGrouping", NULL, N_("Enable file _grouping"), NULL, N_("Enable file grouping"), CB(layout_menu_enable_grouping_cb) }, |
1329 { "DisableGrouping", NULL, N_("Disable file groupi_ng"), NULL, N_("Disable file grouping"), CB(layout_menu_disable_grouping_cb) }, | |
1585 | 1330 { "CopyPath", NULL, N_("_Copy path to clipboard"), NULL, N_("Copy path to clipboard"), CB(layout_menu_copy_path_cb) }, |
1331 { "CloseWindow", GTK_STOCK_CLOSE, N_("C_lose window"), "<control>W", N_("Close window"), CB(layout_menu_close_cb) }, | |
1332 { "Quit", GTK_STOCK_QUIT, N_("_Quit"), "<control>Q", N_("Quit"), CB(layout_menu_exit_cb) }, | |
1333 { "RotateCW", NULL, N_("_Rotate clockwise"), "bracketright", N_("Rotate clockwise"), CB(layout_menu_alter_90_cb) }, | |
1334 { "RotateCCW", NULL, N_("Rotate _counterclockwise"), "bracketleft", N_("Rotate counterclockwise"), CB(layout_menu_alter_90cc_cb) }, | |
1335 { "Rotate180", NULL, N_("Rotate 1_80"), "<shift>R", N_("Rotate 180"), CB(layout_menu_alter_180_cb) }, | |
1336 { "Mirror", NULL, N_("_Mirror"), "<shift>M", N_("Mirror"), CB(layout_menu_alter_mirror_cb) }, | |
1337 { "Flip", NULL, N_("_Flip"), "<shift>F", N_("Flip"), CB(layout_menu_alter_flip_cb) }, | |
1338 { "AlterNone", NULL, N_("_Original state"), "<shift>O", N_("Original state"), CB(layout_menu_alter_none_cb) }, | |
1339 { "SelectAll", NULL, N_("Select _all"), "<control>A", N_("Select all"), CB(layout_menu_select_all_cb) }, | |
1340 { "SelectNone", NULL, N_("Select _none"), "<control><shift>A", N_("Select none"), CB(layout_menu_unselect_all_cb) }, | |
1341 { "SelectInvert", NULL, N_("_Invert Selection"), "<control><shift>I", N_("Invert Selection"), CB(layout_menu_invert_selection_cb) }, | |
1342 { "Preferences", GTK_STOCK_PREFERENCES, N_("P_references..."), "<control>O", N_("Preferences..."), CB(layout_menu_config_cb) }, | |
1343 { "Editors", GTK_STOCK_PREFERENCES, N_("Configure _Editors..."), NULL, N_("Configure Editors..."), CB(layout_menu_editors_cb) }, | |
1344 { "LayoutConfig", GTK_STOCK_PREFERENCES, N_("_Configure this window..."), NULL, N_("Configure this window..."), CB(layout_menu_layout_config_cb) }, | |
1345 { "Maintenance", NULL, N_("_Thumbnail maintenance..."), NULL, N_("Thumbnail maintenance..."), CB(layout_menu_remove_thumb_cb) }, | |
1346 { "Wallpaper", NULL, N_("Set as _wallpaper"), NULL, N_("Set as wallpaper"), CB(layout_menu_wallpaper_cb) }, | |
1347 { "SaveMetadata", GTK_STOCK_SAVE, N_("_Save metadata"), "<control>S", N_("Save metadata"), CB(layout_menu_metadata_write_cb) }, | |
1348 { "ZoomIn", GTK_STOCK_ZOOM_IN, N_("Zoom _in"), "equal", N_("Zoom in"), CB(layout_menu_zoom_in_cb) }, | |
1349 { "ZoomInAlt1", GTK_STOCK_ZOOM_IN, N_("Zoom _in"), "KP_Add", N_("Zoom in"), CB(layout_menu_zoom_in_cb) }, | |
1350 { "ZoomOut", GTK_STOCK_ZOOM_OUT, N_("Zoom _out"), "minus", N_("Zoom out"), CB(layout_menu_zoom_out_cb) }, | |
1351 { "ZoomOutAlt1", GTK_STOCK_ZOOM_OUT, N_("Zoom _out"), "KP_Subtract", N_("Zoom out"), CB(layout_menu_zoom_out_cb) }, | |
1352 { "Zoom100", GTK_STOCK_ZOOM_100, N_("Zoom _1:1"), "Z", N_("Zoom 1:1"), CB(layout_menu_zoom_1_1_cb) }, | |
1353 { "Zoom100Alt1", GTK_STOCK_ZOOM_100, N_("Zoom _1:1"), "KP_Divide", N_("Zoom 1:1"), CB(layout_menu_zoom_1_1_cb) }, | |
1354 { "ZoomFit", GTK_STOCK_ZOOM_FIT, N_("_Zoom to fit"), "X", N_("Zoom to fit"), CB(layout_menu_zoom_fit_cb) }, | |
1355 { "ZoomFitAlt1", GTK_STOCK_ZOOM_FIT, N_("_Zoom to fit"), "KP_Multiply", N_("Zoom to fit"), CB(layout_menu_zoom_fit_cb) }, | |
1356 { "ZoomFillHor", NULL, N_("Fit _Horizontally"), "H", N_("Fit Horizontally"), CB(layout_menu_zoom_fit_hor_cb) }, | |
1357 { "ZoomFillVert", NULL, N_("Fit _Vertically"), "W", N_("Fit Vertically"), CB(layout_menu_zoom_fit_vert_cb) }, | |
1358 { "Zoom200", NULL, N_("Zoom _2:1"), NULL, N_("Zoom 2:1"), CB(layout_menu_zoom_2_1_cb) }, | |
1359 { "Zoom300", NULL, N_("Zoom _3:1"), NULL, N_("Zoom 3:1"), CB(layout_menu_zoom_3_1_cb) }, | |
1360 { "Zoom400", NULL, N_("Zoom _4:1"), NULL, N_("Zoom 4:1"), CB(layout_menu_zoom_4_1_cb) }, | |
1361 { "Zoom50", NULL, N_("Zoom 1:2"), NULL, N_("Zoom 1:2"), CB(layout_menu_zoom_1_2_cb) }, | |
1362 { "Zoom33", NULL, N_("Zoom 1:3"), NULL, N_("Zoom 1:3"), CB(layout_menu_zoom_1_3_cb) }, | |
1363 { "Zoom25", NULL, N_("Zoom 1:4"), NULL, N_("Zoom 1:4"), CB(layout_menu_zoom_1_4_cb) }, | |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1364 { "ConnectZoomIn", GTK_STOCK_ZOOM_IN, N_("Zoom _in"), "plus", N_("Connected Zoom in"), CB(layout_menu_connect_zoom_in_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1365 { "ConnectZoomInAlt1",GTK_STOCK_ZOOM_IN, N_("Zoom _in"), "<shift>KP_Add", N_("Connected Zoom in"), CB(layout_menu_connect_zoom_in_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1366 { "ConnectZoomOut", GTK_STOCK_ZOOM_OUT, N_("Zoom _out"), "underscore", N_("Connected Zoom out"), CB(layout_menu_connect_zoom_out_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1367 { "ConnectZoomOutAlt1",GTK_STOCK_ZOOM_OUT, N_("Zoom _out"), "<shift>KP_Subtract", N_("Connected Zoom out"), CB(layout_menu_connect_zoom_out_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1368 { "ConnectZoom100", GTK_STOCK_ZOOM_100, N_("Zoom _1:1"), "<shift>Z", N_("Connected Zoom 1:1"), CB(layout_menu_connect_zoom_1_1_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1369 { "ConnectZoom100Alt1",GTK_STOCK_ZOOM_100, N_("Zoom _1:1"), "<shift>KP_Divide", N_("Connected Zoom 1:1"), CB(layout_menu_connect_zoom_1_1_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1370 { "ConnectZoomFit", GTK_STOCK_ZOOM_FIT, N_("_Zoom to fit"), "<shift>X", N_("Connected Zoom to fit"), CB(layout_menu_connect_zoom_fit_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1371 { "ConnectZoomFitAlt1",GTK_STOCK_ZOOM_FIT, N_("_Zoom to fit"), "<shift>KP_Multiply", N_("Connected Zoom to fit"), CB(layout_menu_connect_zoom_fit_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1372 { "ConnectZoomFillHor",NULL, N_("Fit _Horizontally"), "<shift>H", N_("Connected Fit Horizontally"), CB(layout_menu_connect_zoom_fit_hor_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1373 { "ConnectZoomFillVert",NULL, N_("Fit _Vertically"), "<shift>W", N_("Connected Fit Vertically"), CB(layout_menu_connect_zoom_fit_vert_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1374 { "ConnectZoom200", NULL, N_("Zoom _2:1"), NULL, N_("Connected Zoom 2:1"), CB(layout_menu_connect_zoom_2_1_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1375 { "ConnectZoom300", NULL, N_("Zoom _3:1"), NULL, N_("Connected Zoom 3:1"), CB(layout_menu_connect_zoom_3_1_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1376 { "ConnectZoom400", NULL, N_("Zoom _4:1"), NULL, N_("Connected Zoom 4:1"), CB(layout_menu_connect_zoom_4_1_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1377 { "ConnectZoom50", NULL, N_("Zoom 1:2"), NULL, N_("Connected Zoom 1:2"), CB(layout_menu_connect_zoom_1_2_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1378 { "ConnectZoom33", NULL, N_("Zoom 1:3"), NULL, N_("Connected Zoom 1:3"), CB(layout_menu_connect_zoom_1_3_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1379 { "ConnectZoom25", NULL, N_("Zoom 1:4"), NULL, N_("Connected Zoom 1:4"), CB(layout_menu_connect_zoom_1_4_cb) }, |
1585 | 1380 { "ViewInNewWindow", NULL, N_("_View in new window"), "<control>V", N_("View in new window"), CB(layout_menu_view_in_new_window_cb) }, |
1381 { "FullScreen", GTK_STOCK_FULLSCREEN, N_("F_ull screen"), "F", N_("Full screen"), CB(layout_menu_fullscreen_cb) }, | |
1382 { "FullScreenAlt1", GTK_STOCK_FULLSCREEN, N_("F_ull screen"), "V", N_("Full screen"), CB(layout_menu_fullscreen_cb) }, | |
1383 { "FullScreenAlt2", GTK_STOCK_FULLSCREEN, N_("F_ull screen"), "F11", N_("Full screen"), CB(layout_menu_fullscreen_cb) }, | |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1384 { "Escape", GTK_STOCK_LEAVE_FULLSCREEN,N_("_Leave full screen"), "Escape", N_("Leave full screen"), CB(layout_menu_escape_cb) }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1385 { "EscapeAlt1", GTK_STOCK_LEAVE_FULLSCREEN,N_("_Leave full screen"), "Q", N_("Leave full screen"), CB(layout_menu_escape_cb) }, |
1665 | 1386 { "ImageOverlayCycle",NULL, N_("_Cycle through overlay modes"), "I", N_("Cycle through Overlay modes"), CB(layout_menu_overlay_toggle_cb) }, |
1667 | 1387 { "HistogramChanCycle",NULL, N_("Cycle through histogram ch_annels"),"K", N_("Cycle through histogram channels"), CB(layout_menu_histogram_toggle_channel_cb) }, |
1388 { "HistogramModeCycle",NULL, N_("Cycle through histogram mo_des"), "J", N_("Cycle through histogram modes"), CB(layout_menu_histogram_toggle_mode_cb) }, | |
1585 | 1389 { "HideTools", NULL, N_("_Hide file list"), "<control>H", N_("Hide file list"), CB(layout_menu_hide_cb) }, |
1588 | 1390 { "SlideShowPause", GTK_STOCK_MEDIA_PAUSE, N_("_Pause slideshow"), "P", N_("Pause slideshow"), CB(layout_menu_slideshow_pause_cb) }, |
1585 | 1391 { "Refresh", GTK_STOCK_REFRESH, N_("_Refresh"), "R", N_("Refresh"), CB(layout_menu_refresh_cb) }, |
1392 { "HelpContents", GTK_STOCK_HELP, N_("_Contents"), "F1", N_("Contents"), CB(layout_menu_help_cb) }, | |
1393 { "HelpShortcuts", NULL, N_("_Keyboard shortcuts"), NULL, N_("Keyboard shortcuts"), CB(layout_menu_help_keys_cb) }, | |
1394 { "HelpNotes", NULL, N_("_Release notes"), NULL, N_("Release notes"), CB(layout_menu_notes_cb) }, | |
1395 { "About", GTK_STOCK_ABOUT, N_("_About"), NULL, N_("About"), CB(layout_menu_about_cb) }, | |
1396 { "LogWindow", NULL, N_("_Log Window"), NULL, N_("Log Window"), CB(layout_menu_log_window_cb) }, | |
1397 { "ExifWin", NULL, N_("E_xif window"), "<control>E", N_("Exif window"), CB(layout_menu_bar_exif_cb) }, | |
1410 | 1398 |
9 | 1399 }; |
1400 | |
1401 static GtkToggleActionEntry menu_toggle_entries[] = { | |
1585 | 1402 { "Thumbnails", PIXBUF_INLINE_ICON_THUMB,N_("Show _Thumbnails"), "T", N_("Show Thumbnails"), CB(layout_menu_thumb_cb), FALSE }, |
1403 { "ShowMarks", NULL, N_("Show _Marks"), "M", N_("Show Marks"), CB(layout_menu_marks_cb), FALSE }, | |
1669 | 1404 { "ShowInfoPixel", GTK_STOCK_COLOR_PICKER, N_("Pi_xel Info"), NULL, N_("Show Pixel Info"), CB(layout_menu_info_pixel_cb), FALSE }, |
1585 | 1405 { "FloatTools", PIXBUF_INLINE_ICON_FLOAT,N_("_Float file list"), "L", N_("Float file list"), CB(layout_menu_float_cb), FALSE }, |
1406 { "HideToolbar", NULL, N_("Hide tool_bar"), NULL, N_("Hide toolbar"), CB(layout_menu_toolbar_cb), FALSE }, | |
1669 | 1407 { "SBar", NULL, N_("_Info sidebar"), "<control>K", N_("Info sidebar"), CB(layout_menu_bar_cb), FALSE }, |
1585 | 1408 { "SBarSort", NULL, N_("Sort _manager"), "<shift>S", N_("Sort manager"), CB(layout_menu_bar_sort_cb), FALSE }, |
1588 | 1409 { "SlideShow", GTK_STOCK_MEDIA_PLAY, N_("Toggle _slideshow"), "S", N_("Toggle slideshow"), CB(layout_menu_slideshow_cb), FALSE }, |
1585 | 1410 { "UseColorProfiles", GTK_STOCK_SELECT_COLOR, N_("Use _color profiles"), NULL, N_("Use color profiles"), CB(layout_color_menu_enable_cb), FALSE}, |
1411 { "UseImageProfile", NULL, N_("Use profile from _image"), NULL, N_("Use profile from image"), CB(layout_color_menu_use_image_cb), FALSE}, | |
1412 { "Grayscale", NULL, N_("Toggle _grayscale"), "<shift>G", N_("Toggle grayscale"), CB(layout_menu_alter_desaturate_cb), FALSE}, | |
1665 | 1413 { "ImageOverlay", NULL, N_("_Image Overlay"), NULL, N_("Image Overlay"), CB(layout_menu_overlay_cb), FALSE }, |
1414 { "ImageHistogram", NULL, N_("_Show Histogram"), NULL, N_("Show Histogram"), CB(layout_menu_histogram_cb), FALSE }, | |
9 | 1415 }; |
1416 | |
1417 static GtkRadioActionEntry menu_radio_entries[] = { | |
1668
8ebc26a4383f
use radio buttons for file and dir mode in popup menu
nadvornik
parents:
1667
diff
changeset
|
1418 { "ViewList", NULL, N_("Image _List"), "<control>L", N_("View Images as List"), FILEVIEW_LIST }, |
8ebc26a4383f
use radio buttons for file and dir mode in popup menu
nadvornik
parents:
1667
diff
changeset
|
1419 { "ViewIcons", NULL, N_("I_cons"), "<control>I", N_("View Images as Icons"), FILEVIEW_ICON } |
1666 | 1420 }; |
1421 | |
1422 static GtkRadioActionEntry menu_view_dir_radio_entries[] = { | |
1423 { "FolderList", NULL, N_("Folder _List"), "<meta>L", N_("View Folders as List"), DIRVIEW_LIST }, | |
1424 { "FolderTree", NULL, N_("Folder _Tree"), "<control>T", N_("View Folders as Tree"), DIRVIEW_TREE }, | |
9 | 1425 }; |
1426 | |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1427 static GtkRadioActionEntry menu_split_radio_entries[] = { |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1428 { "SplitHorizontal", NULL, N_("_Horizontal"), "E", N_("Split Horizontal"), SPLIT_HOR }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1429 { "SplitVertical", NULL, N_("_Vertical"), "U", N_("Split Vertical"), SPLIT_VERT }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1430 { "SplitQuad", NULL, N_("_Quad"), NULL, N_("Split Quad"), SPLIT_QUAD }, |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1431 { "SplitSingle", NULL, N_("_Single"), "Y", N_("Split Single"), SPLIT_NONE } |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1432 }; |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1433 |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1434 static GtkRadioActionEntry menu_color_radio_entries[] = { |
1585 | 1435 { "ColorProfile0", NULL, N_("Input _0: sRGB"), NULL, N_("Input 0: sRGB"), COLOR_PROFILE_SRGB }, |
1436 { "ColorProfile1", NULL, N_("Input _1: AdobeRGB compatible"), NULL, N_("Input 1: AdobeRGB compatible"), COLOR_PROFILE_ADOBERGB }, | |
1437 { "ColorProfile2", NULL, N_("Input _2"), NULL, N_("Input 2"), COLOR_PROFILE_FILE }, | |
1438 { "ColorProfile3", NULL, N_("Input _3"), NULL, N_("Input 3"), COLOR_PROFILE_FILE + 1 }, | |
1439 { "ColorProfile4", NULL, N_("Input _4"), NULL, N_("Input 4"), COLOR_PROFILE_FILE + 2 }, | |
1440 { "ColorProfile5", NULL, N_("Input _5"), NULL, N_("Input 5"), COLOR_PROFILE_FILE + 3 } | |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1441 }; |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1442 |
1665 | 1443 static GtkRadioActionEntry menu_histogram_channel[] = { |
1444 { "HistogramChanR", NULL, N_("Histogram on _Red"), NULL, N_("Histogram on Red"), HCHAN_R }, | |
1445 { "HistogramChanG", NULL, N_("Histogram on _Green"), NULL, N_("Histogram on Green"), HCHAN_G }, | |
1446 { "HistogramChanB", NULL, N_("Histogram on _Blue"), NULL, N_("Histogram on Blue"), HCHAN_B }, | |
1667 | 1447 { "HistogramChanRGB", NULL, N_("_Histogram on RGB"), NULL, N_("Histogram on RGB"), HCHAN_RGB }, |
1448 { "HistogramChanV", NULL, N_("Histogram on _Value"), NULL, N_("Histogram on Value"), HCHAN_MAX } | |
1665 | 1449 }; |
1450 | |
1451 static GtkRadioActionEntry menu_histogram_mode[] = { | |
1452 { "HistogramModeLin", NULL, N_("Li_near Histogram"), NULL, N_("Linear Histogram"), 0 }, | |
1667 | 1453 { "HistogramModeLog", NULL, N_("L_og Histogram"), NULL, N_("Log Histogram"), 1 }, |
1665 | 1454 }; |
1455 | |
1666 | 1456 |
9 | 1457 #undef CB |
1458 | |
1000
4fe8f9656107
For the sake of consistency, use glib basic types everywhere.
zas_
parents:
995
diff
changeset
|
1459 static const gchar *menu_ui_description = |
9 | 1460 "<ui>" |
1461 " <menubar name='MainMenu'>" | |
1462 " <menu action='FileMenu'>" | |
1463 " <menuitem action='NewWindow'/>" | |
1464 " <menuitem action='NewCollection'/>" | |
1465 " <menuitem action='OpenCollection'/>" | |
1466 " <menuitem action='OpenRecent'/>" | |
1275 | 1467 " <placeholder name='OpenSection'/>" |
9 | 1468 " <separator/>" |
1469 " <menuitem action='Search'/>" | |
1470 " <menuitem action='FindDupes'/>" | |
1275 | 1471 " <placeholder name='SearchSection'/>" |
9 | 1472 " <separator/>" |
1473 " <menuitem action='Print'/>" | |
1275 | 1474 " <placeholder name='PrintSection'/>" |
1475 " <separator/>" | |
9 | 1476 " <menuitem action='NewFolder'/>" |
1477 " <menuitem action='Copy'/>" | |
1478 " <menuitem action='Move'/>" | |
1479 " <menuitem action='Rename'/>" | |
1480 " <menuitem action='Delete'/>" | |
1275 | 1481 " <placeholder name='FileOpsSection'/>" |
9 | 1482 " <separator/>" |
1275 | 1483 " <placeholder name='QuitSection'/>" |
9 | 1484 " <menuitem action='CloseWindow'/>" |
1485 " <menuitem action='Quit'/>" | |
1272 | 1486 " <separator/>" |
9 | 1487 " </menu>" |
159 | 1488 " <menu action='GoMenu'>" |
1489 " <menuitem action='FirstImage'/>" | |
1490 " <menuitem action='PrevImage'/>" | |
1491 " <menuitem action='NextImage'/>" | |
1492 " <menuitem action='LastImage'/>" | |
1272 | 1493 " <separator/>" |
1334 | 1494 " <menuitem action='Back'/>" |
1495 " <menuitem action='Home'/>" | |
1496 " <separator/>" | |
159 | 1497 " </menu>" |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1498 " <menu action='SelectMenu'>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1499 " <menuitem action='SelectAll'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1500 " <menuitem action='SelectNone'/>" |
601 | 1501 " <menuitem action='SelectInvert'/>" |
1275 | 1502 " <placeholder name='SelectSection'/>" |
1503 " <separator/>" | |
1504 " <menuitem action='CopyPath'/>" | |
1505 " <placeholder name='ClipboardSection'/>" | |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1506 " <separator/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1507 " <menuitem action='ShowMarks'/>" |
1275 | 1508 " <placeholder name='MarksSection'/>" |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1509 " <separator/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1510 " </menu>" |
9 | 1511 " <menu action='EditMenu'>" |
1275 | 1512 " <menu action='ExternalMenu'>" |
1513 " </menu>" | |
1514 " <placeholder name='EditSection'/>" | |
1515 " <separator/>" | |
1566 | 1516 " <menu action='OrientationMenu'>" |
9 | 1517 " <menuitem action='RotateCW'/>" |
1518 " <menuitem action='RotateCCW'/>" | |
1519 " <menuitem action='Rotate180'/>" | |
1520 " <menuitem action='Mirror'/>" | |
1521 " <menuitem action='Flip'/>" | |
439 | 1522 " <menuitem action='AlterNone'/>" |
9 | 1523 " </menu>" |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1524 " <menuitem action='SaveMetadata'/>" |
1275 | 1525 " <placeholder name='PropertiesSection'/>" |
9 | 1526 " <separator/>" |
1527 " <menuitem action='Preferences'/>" | |
1479 | 1528 " <menuitem action='Editors'/>" |
1436
d7a6fb7a90dd
completely separated global and layout window options
nadvornik
parents:
1433
diff
changeset
|
1529 " <menuitem action='LayoutConfig'/>" |
9 | 1530 " <menuitem action='Maintenance'/>" |
1275 | 1531 " <placeholder name='PreferencesSection'/>" |
9 | 1532 " <separator/>" |
1533 " <menuitem action='Wallpaper'/>" | |
1272 | 1534 " <separator/>" |
9 | 1535 " </menu>" |
1536 " <menu action='ViewMenu'>" | |
159 | 1537 " <menuitem action='ViewInNewWindow'/>" |
1285 | 1538 " <menuitem action='PanView'/>" |
1669 | 1539 " <menuitem action='ExifWin'/>" |
1275 | 1540 " <placeholder name='WindowSection'/>" |
9 | 1541 " <separator/>" |
1666 | 1542 " <menu action='FileDirMenu'>" |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1543 " <menuitem action='FolderList'/>" |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1544 " <menuitem action='FolderTree'/>" |
1666 | 1545 " <placeholder name='FolderSection'/>" |
1546 " <separator/>" | |
1547 " <menuitem action='ViewList'/>" | |
1548 " <menuitem action='ViewIcons'/>" | |
1549 " <menuitem action='Thumbnails'/>" | |
1550 " <placeholder name='ListSection'/>" | |
1551 " <separator/>" | |
1552 " <menuitem action='FloatTools'/>" | |
1553 " <menuitem action='HideTools'/>" | |
1554 " <menuitem action='HideToolbar'/>" | |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1555 " </menu>" |
1275 | 1556 " <placeholder name='DirSection'/>" |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1557 " <separator/>" |
1669 | 1558 " <menu action='ZoomMenu'>" |
1559 " <menu action='ConnectZoomMenu'>" | |
1560 " <menuitem action='ConnectZoomIn'/>" | |
1561 " <menuitem action='ConnectZoomOut'/>" | |
1562 " <menuitem action='ConnectZoomFit'/>" | |
1563 " <menuitem action='ConnectZoomFillHor'/>" | |
1564 " <menuitem action='ConnectZoomFillVert'/>" | |
1565 " <menuitem action='ConnectZoom100'/>" | |
1566 " <menuitem action='ConnectZoom200'/>" | |
1567 " <menuitem action='ConnectZoom300'/>" | |
1568 " <menuitem action='ConnectZoom400'/>" | |
1569 " <menuitem action='ConnectZoom50'/>" | |
1570 " <menuitem action='ConnectZoom33'/>" | |
1571 " <menuitem action='ConnectZoom25'/>" | |
1572 " </menu>" | |
1573 " <menuitem action='ZoomIn'/>" | |
1574 " <menuitem action='ZoomOut'/>" | |
1575 " <menuitem action='ZoomFit'/>" | |
1576 " <menuitem action='ZoomFillHor'/>" | |
1577 " <menuitem action='ZoomFillVert'/>" | |
1578 " <menuitem action='Zoom100'/>" | |
1579 " <menuitem action='Zoom200'/>" | |
1580 " <menuitem action='Zoom300'/>" | |
1581 " <menuitem action='Zoom400'/>" | |
1582 " <menuitem action='Zoom50'/>" | |
1583 " <menuitem action='Zoom33'/>" | |
1584 " <menuitem action='Zoom25'/>" | |
1585 " </menu>" | |
1586 " <menu action='SplitMenu'>" | |
1587 " <menuitem action='SplitHorizontal'/>" | |
1588 " <menuitem action='SplitVertical'/>" | |
1589 " <menuitem action='SplitQuad'/>" | |
1590 " <menuitem action='SplitSingle'/>" | |
1591 " </menu>" | |
1592 " <menu action='ColorMenu'>" | |
1593 " <menuitem action='UseColorProfiles'/>" | |
1594 " <menuitem action='UseImageProfile'/>" | |
1595 " <menuitem action='ColorProfile0'/>" | |
1596 " <menuitem action='ColorProfile1'/>" | |
1597 " <menuitem action='ColorProfile2'/>" | |
1598 " <menuitem action='ColorProfile3'/>" | |
1599 " <menuitem action='ColorProfile4'/>" | |
1600 " <menuitem action='ColorProfile5'/>" | |
1601 " <separator/>" | |
1602 " <menuitem action='Grayscale'/>" | |
1603 " </menu>" | |
1665 | 1604 " <menu action='OverlayMenu'>" |
1605 " <menuitem action='ImageOverlay'/>" | |
1606 " <menuitem action='ImageHistogram'/>" | |
1607 " <menuitem action='ImageOverlayCycle'/>" | |
1608 " <separator/>" | |
1609 " <menuitem action='HistogramChanR'/>" | |
1610 " <menuitem action='HistogramChanG'/>" | |
1611 " <menuitem action='HistogramChanB'/>" | |
1612 " <menuitem action='HistogramChanRGB'/>" | |
1613 " <menuitem action='HistogramChanV'/>" | |
1614 " <menuitem action='HistogramChanCycle'/>" | |
1615 " <separator/>" | |
1616 " <menuitem action='HistogramModeLin'/>" | |
1617 " <menuitem action='HistogramModeLog'/>" | |
1618 " <menuitem action='HistogramModeCycle'/>" | |
1619 " </menu>" | |
9 | 1620 " <menuitem action='FullScreen'/>" |
1669 | 1621 " <placeholder name='ViewSection'/>" |
9 | 1622 " <separator/>" |
1669 | 1623 " <menuitem action='SBar'/>" |
1624 " <menuitem action='SBarSort'/>" | |
1584
0cd2268f500b
improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents:
1583
diff
changeset
|
1625 " <menuitem action='ShowInfoPixel'/>" |
1275 | 1626 " <placeholder name='ToolsSection'/>" |
9 | 1627 " <separator/>" |
1628 " <menuitem action='SlideShow'/>" | |
428
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1629 " <menuitem action='SlideShowPause'/>" |
9 | 1630 " <menuitem action='Refresh'/>" |
1275 | 1631 " <placeholder name='SlideShowSection'/>" |
1272 | 1632 " <separator/>" |
9 | 1633 " </menu>" |
1634 " <menu action='HelpMenu'>" | |
1635 " <separator/>" | |
1636 " <menuitem action='HelpContents'/>" | |
1637 " <menuitem action='HelpShortcuts'/>" | |
1638 " <menuitem action='HelpNotes'/>" | |
1275 | 1639 " <placeholder name='HelpSection'/>" |
9 | 1640 " <separator/>" |
1641 " <menuitem action='About'/>" | |
678
6d6f042b8ca5
Add a log window that shows normal and debug messages. For now, it was added to Help menu.
zas_
parents:
654
diff
changeset
|
1642 " <separator/>" |
6d6f042b8ca5
Add a log window that shows normal and debug messages. For now, it was added to Help menu.
zas_
parents:
654
diff
changeset
|
1643 " <menuitem action='LogWindow'/>" |
1272 | 1644 " <separator/>" |
9 | 1645 " </menu>" |
1646 " </menubar>" | |
1334 | 1647 " <toolbar name='ToolBar'>" |
1648 " </toolbar>" | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1649 " <toolbar name='StatusBar'>" |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1650 " </toolbar>" |
428
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1651 "<accelerator action='PrevImageAlt1'/>" |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1652 "<accelerator action='PrevImageAlt2'/>" |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1653 "<accelerator action='NextImageAlt1'/>" |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1654 "<accelerator action='NextImageAlt2'/>" |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1655 "<accelerator action='DeleteAlt1'/>" |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1656 "<accelerator action='DeleteAlt2'/>" |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1657 "<accelerator action='FullScreenAlt1'/>" |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1658 "<accelerator action='FullScreenAlt2'/>" |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1659 "<accelerator action='Escape'/>" |
af843364b3ea
I have finally found how to add alternative hotkeys
nadvornik
parents:
398
diff
changeset
|
1660 "<accelerator action='EscapeAlt1'/>" |
1047 | 1661 |
1662 "<accelerator action='ZoomInAlt1'/>" | |
1663 "<accelerator action='ZoomOutAlt1'/>" | |
1664 "<accelerator action='Zoom100Alt1'/>" | |
1665 "<accelerator action='ZoomFitAlt1'/>" | |
1666 | |
1667 "<accelerator action='ConnectZoomInAlt1'/>" | |
1668 "<accelerator action='ConnectZoomOutAlt1'/>" | |
1669 "<accelerator action='ConnectZoom100Alt1'/>" | |
1670 "<accelerator action='ConnectZoomFitAlt1'/>" | |
9 | 1671 "</ui>"; |
1672 | |
1673 static gchar *menu_translate(const gchar *path, gpointer data) | |
1674 { | |
1004 | 1675 return (gchar *)(_(path)); |
9 | 1676 } |
1677 | |
1433
b4ad1d201279
Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents:
1412
diff
changeset
|
1678 static void layout_actions_setup_mark(LayoutWindow *lw, gint mark, gchar *name_tmpl, |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1679 gchar *label_tmpl, gchar *accel_tmpl, gchar *tooltip_tmpl, GCallback cb) |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1680 { |
894 | 1681 gchar name[50]; |
1682 gchar label[100]; | |
1683 gchar accel[50]; | |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1684 gchar tooltip[100]; |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1685 GtkActionEntry entry = { name, NULL, label, accel, tooltip, cb }; |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1686 GtkAction *action; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1687 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1688 g_snprintf(name, sizeof(name), name_tmpl, mark); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1689 g_snprintf(label, sizeof(label), label_tmpl, mark); |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1690 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1691 if (accel_tmpl) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1692 g_snprintf(accel, sizeof(accel), accel_tmpl, mark % 10); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1693 else |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1694 entry.accelerator = NULL; |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1695 |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1696 if (tooltip_tmpl) |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1697 g_snprintf(tooltip, sizeof(tooltip), tooltip_tmpl, mark); |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1698 else |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1699 entry.tooltip = NULL; |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1700 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1701 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
|
1702 action = gtk_action_group_get_action(lw->action_group, name); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1703 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
|
1704 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1705 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1706 static void layout_actions_setup_marks(LayoutWindow *lw) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1707 { |
894 | 1708 gint mark; |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1709 GError *error; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1710 GString *desc = g_string_new( |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1711 "<ui>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1712 " <menubar name='MainMenu'>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1713 " <menu action='SelectMenu'>"); |
442 | 1714 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1715 for (mark = 1; mark <= FILEDATA_MARKS_SIZE; mark++) |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1716 { |
1619
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1717 layout_actions_setup_mark(lw, mark, "Mark%d", _("Mark _%d"), NULL, NULL, NULL); |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1718 layout_actions_setup_mark(lw, mark, "SetMark%d", _("_Set mark %d"), NULL, _("Set mark %d"), G_CALLBACK(layout_menu_set_mark_sel_cb)); |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1719 layout_actions_setup_mark(lw, mark, "ResetMark%d", _("_Reset mark %d"), NULL, _("Reset mark %d"), G_CALLBACK(layout_menu_res_mark_sel_cb)); |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1720 layout_actions_setup_mark(lw, mark, "ToggleMark%d", _("_Toggle mark %d"), "%d", _("Toggle mark %d"), G_CALLBACK(layout_menu_toggle_mark_sel_cb)); |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1721 layout_actions_setup_mark(lw, mark, "ToggleMark%dAlt1", _("_Toggle mark %d"), "KP_%d", _("Toggle mark %d"), G_CALLBACK(layout_menu_toggle_mark_sel_cb)); |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1722 layout_actions_setup_mark(lw, mark, "SelectMark%d", _("_Select mark %d"), "<control>%d", _("Select mark %d"), G_CALLBACK(layout_menu_sel_mark_cb)); |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1723 layout_actions_setup_mark(lw, mark, "SelectMark%dAlt1", _("_Select mark %d"), "<control>KP_%d", _("Select mark %d"), G_CALLBACK(layout_menu_sel_mark_cb)); |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1724 layout_actions_setup_mark(lw, mark, "AddMark%d", _("_Add mark %d"), NULL, _("Add mark %d"), G_CALLBACK(layout_menu_sel_mark_or_cb)); |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1725 layout_actions_setup_mark(lw, mark, "IntMark%d", _("_Intersection with mark %d"), NULL, _("Intersection with mark %d"), G_CALLBACK(layout_menu_sel_mark_and_cb)); |
d35a0836c6b5
do not display menus ("FileMenu" etc.) in accelerator configuration
nadvornik
parents:
1612
diff
changeset
|
1726 layout_actions_setup_mark(lw, mark, "UnselMark%d", _("_Unselect mark %d"), NULL, _("Unselect mark %d"), G_CALLBACK(layout_menu_sel_mark_minus_cb)); |
1635
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
1727 layout_actions_setup_mark(lw, mark, "FilterMark%d", _("_Filter mark %d"), NULL, _("Filter mark %d"), G_CALLBACK(layout_menu_mark_filter_toggle_cb)); |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1728 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1729 g_string_append_printf(desc, |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1730 " <menu action='Mark%d'>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1731 " <menuitem action='ToggleMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1732 " <menuitem action='SetMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1733 " <menuitem action='ResetMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1734 " <separator/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1735 " <menuitem action='SelectMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1736 " <menuitem action='AddMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1737 " <menuitem action='IntMark%d'/>" |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1738 " <menuitem action='UnselMark%d'/>" |
1635
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
1739 " <separator/>" |
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
1740 " <menuitem action='FilterMark%d'/>" |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1741 " </menu>", |
1635
5ad450d67878
added mark filter to menu - now it is possible to assign hotkeys
nadvornik
parents:
1619
diff
changeset
|
1742 mark, mark, mark, mark, mark, mark, mark, mark, mark); |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1743 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1744 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1745 g_string_append(desc, |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1746 " </menu>" |
429 | 1747 " </menubar>"); |
1748 for (mark = 1; mark <= FILEDATA_MARKS_SIZE; mark++) | |
1749 { | |
1750 g_string_append_printf(desc, | |
1751 "<accelerator action='ToggleMark%dAlt1'/>" | |
1752 "<accelerator action='SelectMark%dAlt1'/>", | |
1753 mark, mark); | |
1754 } | |
1755 g_string_append(desc, "</ui>" ); | |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1756 |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1757 error = NULL; |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1758 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
|
1759 { |
512
f9bf33be53ff
Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents:
497
diff
changeset
|
1760 g_message("building menus failed: %s", error->message); |
f9bf33be53ff
Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents:
497
diff
changeset
|
1761 g_error_free(error); |
f9bf33be53ff
Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents:
497
diff
changeset
|
1762 exit(EXIT_FAILURE); |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1763 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1764 g_string_free(desc, TRUE); |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1765 } |
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1766 |
1272 | 1767 static GList *layout_actions_editor_menu_path(EditorDescription *editor) |
1768 { | |
1769 gchar **split = g_strsplit(editor->menu_path, "/", 0); | |
1770 gint i = 0; | |
1771 GList *ret = NULL; | |
1772 | |
1773 if (split[0] == NULL) | |
1774 { | |
1775 g_strfreev(split); | |
1776 return NULL; | |
1777 } | |
1778 | |
1348
acf1797b74c7
Add missing space between while and first parenthesis.
zas_
parents:
1345
diff
changeset
|
1779 while (split[i]) |
1272 | 1780 { |
1781 ret = g_list_prepend(ret, g_strdup(split[i])); | |
1782 i++; | |
1783 } | |
1784 | |
1785 g_strfreev(split); | |
1786 | |
1787 ret = g_list_prepend(ret, g_strdup(editor->key)); | |
1788 | |
1789 return g_list_reverse(ret); | |
1790 } | |
1791 | |
1792 static void layout_actions_editor_add(GString *desc, GList *path, GList *old_path) | |
1793 { | |
1794 gint to_open, to_close, i; | |
1795 while (path && old_path && strcmp((gchar *)path->data, (gchar *)old_path->data) == 0) | |
1796 { | |
1797 path = path->next; | |
1798 old_path = old_path->next; | |
1799 } | |
1800 to_open = g_list_length(path) - 1; | |
1801 to_close = g_list_length(old_path) - 1; | |
1802 | |
1275 | 1803 if (to_close > 0) |
1804 { | |
1805 old_path = g_list_last(old_path); | |
1806 old_path = old_path->prev; | |
1807 } | |
1808 | |
1272 | 1809 for (i = 0; i < to_close; i++) |
1810 { | |
1275 | 1811 gchar *name = old_path->data; |
1812 if (g_str_has_suffix(name, "Section")) | |
1813 { | |
1814 g_string_append(desc, " </placeholder>"); | |
1815 } | |
1816 else if (g_str_has_suffix(name, "Menu")) | |
1817 { | |
1818 g_string_append(desc, " </menu>"); | |
1819 } | |
1820 else | |
1821 { | |
1822 g_warning("invalid menu path item %s", name); | |
1823 } | |
1824 old_path = old_path->prev; | |
1272 | 1825 } |
1826 | |
1827 for (i = 0; i < to_open; i++) | |
1828 { | |
1275 | 1829 gchar *name = path->data; |
1830 if (g_str_has_suffix(name, "Section")) | |
1831 { | |
1832 g_string_append_printf(desc, " <placeholder name='%s'>", name); | |
1833 } | |
1834 else if (g_str_has_suffix(name, "Menu")) | |
1835 { | |
1836 g_string_append_printf(desc, " <menu action='%s'>", name); | |
1837 } | |
1838 else | |
1839 { | |
1840 g_warning("invalid menu path item %s", name); | |
1841 } | |
1272 | 1842 path = path->next; |
1843 } | |
1844 | |
1845 if (path) | |
1846 g_string_append_printf(desc, " <menuitem action='%s'/>", (gchar *)path->data); | |
1847 } | |
1848 | |
1849 static void layout_actions_setup_editors(LayoutWindow *lw) | |
1850 { | |
1851 GError *error; | |
1852 GList *editors_list; | |
1853 GList *work; | |
1854 GList *old_path; | |
1463
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1855 GString *desc; |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1856 |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1857 lw->action_group_editors = gtk_action_group_new("MenuActionsExternal"); |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1858 gtk_ui_manager_insert_action_group(lw->ui_manager, lw->action_group_editors, 1); |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1859 |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1860 /* lw->action_group_editors contains translated entries, no translate func is required */ |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1861 desc = g_string_new( |
1272 | 1862 "<ui>" |
1863 " <menubar name='MainMenu'>"); | |
1864 | |
1865 editors_list = editor_list_get(); | |
1866 | |
1867 old_path = NULL; | |
1868 work = editors_list; | |
1348
acf1797b74c7
Add missing space between while and first parenthesis.
zas_
parents:
1345
diff
changeset
|
1869 while (work) |
1272 | 1870 { |
1871 GList *path; | |
1872 EditorDescription *editor = work->data; | |
1468 | 1873 GtkActionEntry entry = { editor->key, NULL, editor->name, editor->hotkey, editor->comment, G_CALLBACK(layout_menu_edit_cb) }; |
1341 | 1874 |
1345 | 1875 if (editor->icon && register_theme_icon_as_stock(editor->key, editor->icon)) |
1341 | 1876 { |
1877 entry.stock_id = editor->key; | |
1878 } | |
1463
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1879 gtk_action_group_add_actions(lw->action_group_editors, &entry, 1, lw); |
1272 | 1880 |
1881 path = layout_actions_editor_menu_path(editor); | |
1882 layout_actions_editor_add(desc, path, old_path); | |
1883 | |
1884 string_list_free(old_path); | |
1885 old_path = path; | |
1886 work = work->next; | |
1887 } | |
1888 | |
1889 layout_actions_editor_add(desc, NULL, old_path); | |
1890 string_list_free(old_path); | |
1891 | |
1892 g_string_append(desc, " </menubar>" | |
1893 "</ui>" ); | |
1894 | |
1895 error = NULL; | |
1463
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1896 |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1897 lw->ui_editors_id = gtk_ui_manager_add_ui_from_string(lw->ui_manager, desc->str, -1, &error); |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1898 if (!lw->ui_editors_id) |
1272 | 1899 { |
1900 g_message("building menus failed: %s", error->message); | |
1901 g_error_free(error); | |
1902 exit(EXIT_FAILURE); | |
1903 } | |
1904 g_string_free(desc, TRUE); | |
1905 g_list_free(editors_list); | |
1906 } | |
1907 | |
9 | 1908 void layout_actions_setup(LayoutWindow *lw) |
1909 { | |
1910 GError *error; | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1911 gint i; |
9 | 1912 |
1913 if (lw->ui_manager) return; | |
1914 | |
513
985fdfebd89e
Remove whitespace between function name and first parenthesis for the sake of consistency. (pass 2)
zas_
parents:
512
diff
changeset
|
1915 lw->action_group = gtk_action_group_new("MenuActions"); |
9 | 1916 gtk_action_group_set_translate_func(lw->action_group, menu_translate, NULL, NULL); |
1917 | |
1918 gtk_action_group_add_actions(lw->action_group, | |
1919 menu_entries, G_N_ELEMENTS(menu_entries), lw); | |
1920 gtk_action_group_add_toggle_actions(lw->action_group, | |
1921 menu_toggle_entries, G_N_ELEMENTS(menu_toggle_entries), lw); | |
1922 gtk_action_group_add_radio_actions(lw->action_group, | |
1923 menu_radio_entries, G_N_ELEMENTS(menu_radio_entries), | |
1924 0, G_CALLBACK(layout_menu_list_cb), lw); | |
156
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1925 gtk_action_group_add_radio_actions(lw->action_group, |
dd6dc0a55d3d
better integration of split image functions into menu
nadvornik
parents:
138
diff
changeset
|
1926 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
|
1927 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
|
1928 gtk_action_group_add_radio_actions(lw->action_group, |
523
0717bcc4f2b7
Handle the case of reduction of the number of view directory types.
zas_
parents:
513
diff
changeset
|
1929 menu_view_dir_radio_entries, VIEW_DIR_TYPES_COUNT, |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
343
diff
changeset
|
1930 0, G_CALLBACK(layout_menu_view_dir_as_cb), lw); |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1931 gtk_action_group_add_radio_actions(lw->action_group, |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1932 menu_color_radio_entries, COLOR_PROFILE_FILE + COLOR_PROFILE_INPUTS, |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1933 0, G_CALLBACK(layout_color_menu_input_cb), lw); |
1665 | 1934 gtk_action_group_add_radio_actions(lw->action_group, |
1935 menu_histogram_channel, G_N_ELEMENTS(menu_histogram_channel), | |
1936 0, G_CALLBACK(layout_menu_histogram_channel_cb), lw); | |
1937 gtk_action_group_add_radio_actions(lw->action_group, | |
1938 menu_histogram_mode, G_N_ELEMENTS(menu_histogram_mode), | |
1939 0, G_CALLBACK(layout_menu_histogram_mode_cb), lw); | |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
1940 |
9 | 1941 |
1942 lw->ui_manager = gtk_ui_manager_new(); | |
1943 gtk_ui_manager_set_add_tearoffs(lw->ui_manager, TRUE); | |
1944 gtk_ui_manager_insert_action_group(lw->ui_manager, lw->action_group, 0); | |
1945 | |
1946 error = NULL; | |
1947 if (!gtk_ui_manager_add_ui_from_string(lw->ui_manager, menu_ui_description, -1, &error)) | |
1948 { | |
512
f9bf33be53ff
Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents:
497
diff
changeset
|
1949 g_message("building menus failed: %s", error->message); |
f9bf33be53ff
Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents:
497
diff
changeset
|
1950 g_error_free(error); |
f9bf33be53ff
Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents:
497
diff
changeset
|
1951 exit(EXIT_FAILURE); |
9 | 1952 } |
497 | 1953 |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1954 for (i = 0; i < TOOLBAR_COUNT; i++) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1955 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1956 layout_toolbar_clear(lw, i); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1957 layout_toolbar_add_default(lw, i); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1958 } |
1335 | 1959 |
162
1a42a2451575
created menu "Select" with selection and marks operations
nadvornik
parents:
160
diff
changeset
|
1960 layout_actions_setup_marks(lw); |
1272 | 1961 layout_actions_setup_editors(lw); |
1470 | 1962 |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1963 layout_util_status_update_write(lw); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
1964 |
1470 | 1965 layout_actions_add_window(lw, lw->window); |
9 | 1966 } |
1967 | |
1463
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1968 void layout_editors_reload_all(void) |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1969 { |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1970 GList *work; |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1971 |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1972 work = layout_window_list; |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1973 while (work) |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1974 { |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1975 LayoutWindow *lw = work->data; |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1976 work = work->next; |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1977 |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1978 gtk_ui_manager_remove_ui(lw->ui_manager, lw->ui_editors_id); |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1979 gtk_ui_manager_remove_action_group(lw->ui_manager, lw->action_group_editors); |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1980 g_object_unref(lw->action_group_editors); |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1981 } |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1982 |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1983 editor_load_descriptions(); |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1984 |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1985 work = layout_window_list; |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1986 while (work) |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1987 { |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1988 LayoutWindow *lw = work->data; |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1989 work = work->next; |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1990 layout_actions_setup_editors(lw); |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1991 } |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1992 } |
25168240a247
added function to reload external editors at any time
nadvornik
parents:
1461
diff
changeset
|
1993 |
9 | 1994 void layout_actions_add_window(LayoutWindow *lw, GtkWidget *window) |
1995 { | |
1996 GtkAccelGroup *group; | |
1997 | |
1998 if (!lw->ui_manager) return; | |
1999 | |
2000 group = gtk_ui_manager_get_accel_group(lw->ui_manager); | |
2001 gtk_window_add_accel_group(GTK_WINDOW(window), group); | |
2002 } | |
2003 | |
2004 GtkWidget *layout_actions_menu_bar(LayoutWindow *lw) | |
2005 { | |
1470 | 2006 if (lw->menu_bar) return lw->menu_bar; |
2007 lw->menu_bar = gtk_ui_manager_get_widget(lw->ui_manager, "/MainMenu"); | |
2008 g_object_ref(lw->menu_bar); | |
2009 return lw->menu_bar; | |
9 | 2010 } |
2011 | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2012 GtkWidget *layout_actions_toolbar(LayoutWindow *lw, ToolbarType type) |
9 | 2013 { |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2014 if (lw->toolbar[type]) return lw->toolbar[type]; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2015 switch (type) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2016 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2017 case TOOLBAR_MAIN: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2018 lw->toolbar[type] = gtk_ui_manager_get_widget(lw->ui_manager, "/ToolBar"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2019 gtk_toolbar_set_icon_size(GTK_TOOLBAR(lw->toolbar[type]), GTK_ICON_SIZE_SMALL_TOOLBAR); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2020 gtk_toolbar_set_style(GTK_TOOLBAR(lw->toolbar[type]), GTK_TOOLBAR_ICONS); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2021 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2022 case TOOLBAR_STATUS: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2023 lw->toolbar[type] = gtk_ui_manager_get_widget(lw->ui_manager, "/StatusBar"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2024 gtk_toolbar_set_icon_size(GTK_TOOLBAR(lw->toolbar[type]), GTK_ICON_SIZE_MENU); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2025 gtk_toolbar_set_style(GTK_TOOLBAR(lw->toolbar[type]), GTK_TOOLBAR_ICONS); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2026 gtk_toolbar_set_show_arrow(GTK_TOOLBAR(lw->toolbar[type]), FALSE); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2027 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2028 default: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2029 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2030 } |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2031 g_object_ref(lw->toolbar[type]); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2032 return lw->toolbar[type]; |
9 | 2033 } |
2034 | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2035 void layout_toolbar_clear(LayoutWindow *lw, ToolbarType type) |
1335 | 2036 { |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2037 if (lw->toolbar_merge_id[type]) |
1335 | 2038 { |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2039 gtk_ui_manager_remove_ui(lw->ui_manager, lw->toolbar_merge_id[type]); |
1335 | 2040 gtk_ui_manager_ensure_update(lw->ui_manager); |
2041 } | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2042 string_list_free(lw->toolbar_actions[type]); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2043 lw->toolbar_actions[type] = NULL; |
1335 | 2044 |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2045 lw->toolbar_merge_id[type] = gtk_ui_manager_new_merge_id(lw->ui_manager); |
1335 | 2046 } |
2047 | |
2048 | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2049 void layout_toolbar_add(LayoutWindow *lw, ToolbarType type, const gchar *action) |
1335 | 2050 { |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2051 const gchar *path = NULL; |
1335 | 2052 if (!action || !lw->ui_manager) return; |
1469
607c60506863
added a possibility to update existing bars from config
nadvornik
parents:
1468
diff
changeset
|
2053 |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2054 if (g_list_find_custom(lw->toolbar_actions[type], action, (GCompareFunc)strcmp)) return; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2055 |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2056 switch (type) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2057 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2058 case TOOLBAR_MAIN: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2059 path = "/ToolBar"; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2060 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2061 case TOOLBAR_STATUS: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2062 path = "/StatusBar"; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2063 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2064 default: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2065 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2066 } |
1469
607c60506863
added a possibility to update existing bars from config
nadvornik
parents:
1468
diff
changeset
|
2067 |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2068 gtk_ui_manager_add_ui(lw->ui_manager, lw->toolbar_merge_id[type], path, action, action, GTK_UI_MANAGER_TOOLITEM, FALSE); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2069 lw->toolbar_actions[type] = g_list_append(lw->toolbar_actions[type], g_strdup(action)); |
1335 | 2070 } |
2071 | |
2072 | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2073 void layout_toolbar_add_default(LayoutWindow *lw, ToolbarType type) |
1335 | 2074 { |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2075 switch (type) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2076 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2077 case TOOLBAR_MAIN: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2078 layout_toolbar_add(lw, type, "Thumbnails"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2079 layout_toolbar_add(lw, type, "Back"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2080 layout_toolbar_add(lw, type, "Home"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2081 layout_toolbar_add(lw, type, "Refresh"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2082 layout_toolbar_add(lw, type, "ZoomIn"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2083 layout_toolbar_add(lw, type, "ZoomOut"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2084 layout_toolbar_add(lw, type, "ZoomFit"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2085 layout_toolbar_add(lw, type, "Zoom100"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2086 layout_toolbar_add(lw, type, "Preferences"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2087 layout_toolbar_add(lw, type, "FloatTools"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2088 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2089 case TOOLBAR_STATUS: |
1584
0cd2268f500b
improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents:
1583
diff
changeset
|
2090 layout_toolbar_add(lw, type, "ShowInfoPixel"); |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2091 layout_toolbar_add(lw, type, "UseColorProfiles"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2092 layout_toolbar_add(lw, type, "SaveMetadata"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2093 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2094 default: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2095 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2096 } |
1335 | 2097 } |
2098 | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2099 void layout_toolbar_write_config(LayoutWindow *lw, ToolbarType type, GString *outstr, gint indent) |
1335 | 2100 { |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2101 const gchar *name = NULL; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2102 GList *work = lw->toolbar_actions[type]; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2103 |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2104 switch (type) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2105 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2106 case TOOLBAR_MAIN: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2107 name = "toolbar"; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2108 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2109 case TOOLBAR_STATUS: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2110 name = "statusbar"; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2111 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2112 default: |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2113 break; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2114 } |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2115 |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2116 WRITE_NL(); WRITE_STRING("<%s>", name); |
1335 | 2117 indent++; |
1469
607c60506863
added a possibility to update existing bars from config
nadvornik
parents:
1468
diff
changeset
|
2118 WRITE_NL(); WRITE_STRING("<clear/>"); |
1335 | 2119 while (work) |
2120 { | |
2121 gchar *action = work->data; | |
2122 work = work->next; | |
1461 | 2123 WRITE_NL(); WRITE_STRING("<toolitem "); |
1335 | 2124 write_char_option(outstr, indent + 1, "action", action); |
1461 | 2125 WRITE_STRING("/>"); |
1335 | 2126 } |
2127 indent--; | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2128 WRITE_NL(); WRITE_STRING("</%s>", name); |
1335 | 2129 } |
2130 | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2131 void layout_toolbar_add_from_config(LayoutWindow *lw, ToolbarType type, const gchar **attribute_names, const gchar **attribute_values) |
1335 | 2132 { |
2133 gchar *action = NULL; | |
2134 | |
2135 while (*attribute_names) | |
2136 { | |
2137 const gchar *option = *attribute_names++; | |
2138 const gchar *value = *attribute_values++; | |
2139 | |
2140 if (READ_CHAR_FULL("action", action)) continue; | |
2141 | |
1464 | 2142 log_printf("unknown attribute %s = %s\n", option, value); |
1335 | 2143 } |
2144 | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2145 layout_toolbar_add(lw, type, action); |
1335 | 2146 g_free(action); |
2147 } | |
2148 | |
9 | 2149 /* |
2150 *----------------------------------------------------------------------------- | |
2151 * misc | |
2152 *----------------------------------------------------------------------------- | |
2153 */ | |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2154 |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2155 void layout_util_status_update_write(LayoutWindow *lw) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2156 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2157 GtkAction *action; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2158 gint n = metadata_queue_length(); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2159 action = gtk_action_group_get_action(lw->action_group, "SaveMetadata"); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2160 gtk_action_set_sensitive(action, n > 0); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2161 if (n > 0) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2162 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2163 gchar *buf = g_strdup_printf(_("Number of files with unsaved metadata: %d"), n); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2164 g_object_set(G_OBJECT(action), "tooltip", buf, NULL); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2165 g_free(buf); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2166 } |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2167 else |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2168 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2169 g_object_set(G_OBJECT(action), "tooltip", _("No unsaved metadata"), NULL); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2170 } |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2171 } |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2172 |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2173 void layout_util_status_update_write_all(void) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2174 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2175 GList *work; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2176 |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2177 work = layout_window_list; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2178 while (work) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2179 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2180 LayoutWindow *lw = work->data; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2181 work = work->next; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2182 |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2183 layout_util_status_update_write(lw); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2184 } |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2185 } |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2186 |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2187 static gchar *layout_color_name_parse(const gchar *name) |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2188 { |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2189 if (!name || !*name) return g_strdup(_("Empty")); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2190 return g_strdelimit(g_strdup(name), "_", '-'); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2191 } |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2192 |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2193 void layout_util_sync_color(LayoutWindow *lw) |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2194 { |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2195 GtkAction *action; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2196 gint input = 0; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2197 gboolean use_color; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2198 gboolean use_image = FALSE; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2199 gint i; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2200 gchar action_name[15]; |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2201 gchar *image_profile; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2202 gchar *screen_profile; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2203 |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2204 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2205 if (!lw->action_group) return; |
1548 | 2206 if (!layout_image_color_profile_get(lw, &input, &use_image)) return; |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2207 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2208 use_color = layout_image_color_profile_get_use(lw); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2209 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2210 action = gtk_action_group_get_action(lw->action_group, "UseColorProfiles"); |
1595 | 2211 #ifdef HAVE_LCMS |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2212 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), use_color); |
1582
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2213 if (layout_image_color_profile_get_status(lw, &image_profile, &screen_profile)) |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2214 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2215 gchar *buf; |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2216 buf = g_strdup_printf(_("Image profile: %s\nScreen profile: %s"), image_profile, screen_profile); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2217 g_object_set(G_OBJECT(action), "tooltip", buf, NULL); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2218 g_free(image_profile); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2219 g_free(screen_profile); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2220 g_free(buf); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2221 } |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2222 else |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2223 { |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2224 g_object_set(G_OBJECT(action), "tooltip", _("Click to enable color management"), NULL); |
2ca277a9845b
- handle color profile and write metadata buttons on statusbar by ui_manager
nadvornik
parents:
1566
diff
changeset
|
2225 } |
1595 | 2226 #else |
2227 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), FALSE); | |
2228 gtk_action_set_sensitive(action, FALSE); | |
2229 g_object_set(G_OBJECT(action), "tooltip", _("Color profiles not supported"), NULL); | |
2230 #endif | |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2231 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2232 action = gtk_action_group_get_action(lw->action_group, "UseImageProfile"); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2233 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), use_image); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2234 gtk_action_set_sensitive(action, use_color); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2235 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2236 for (i = 0; i < COLOR_PROFILE_FILE + COLOR_PROFILE_INPUTS; i++) |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2237 { |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2238 sprintf(action_name, "ColorProfile%d", i); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2239 action = gtk_action_group_get_action(lw->action_group, action_name); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2240 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2241 if (i >= COLOR_PROFILE_FILE) |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2242 { |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2243 const gchar *name = options->color_profile.input_name[i - COLOR_PROFILE_FILE]; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2244 const gchar *file = options->color_profile.input_file[i - COLOR_PROFILE_FILE]; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2245 gchar *end; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2246 gchar *buf; |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2247 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2248 if (!name || !name[0]) name = filename_from_path(file); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2249 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2250 end = layout_color_name_parse(name); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2251 buf = g_strdup_printf(_("Input _%d: %s"), i, end); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2252 g_free(end); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2253 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2254 g_object_set(G_OBJECT(action), "label", buf, NULL); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2255 g_free(buf); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2256 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2257 gtk_action_set_visible(action, file && file[0]); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2258 } |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2259 |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2260 gtk_action_set_sensitive(action, !use_image); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2261 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), (i == input)); |
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2262 } |
1566 | 2263 |
2264 action = gtk_action_group_get_action(lw->action_group, "Grayscale"); | |
2265 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), layout_image_get_desaturate(lw)); | |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2266 } |
9 | 2267 |
2268 static void layout_util_sync_views(LayoutWindow *lw) | |
2269 { | |
2270 GtkAction *action; | |
1665 | 2271 OsdShowFlags osd_flags = image_osd_get(lw->image); |
9 | 2272 |
2273 if (!lw->action_group) return; | |
2274 | |
2275 action = gtk_action_group_get_action(lw->action_group, "FolderTree"); | |
1309 | 2276 radio_action_set_current_value(GTK_RADIO_ACTION(action), lw->options.dir_view_type); |
9 | 2277 |
1480 | 2278 action = gtk_action_group_get_action(lw->action_group, "SplitSingle"); |
2279 radio_action_set_current_value(GTK_RADIO_ACTION(action), lw->split_mode); | |
2280 | |
9 | 2281 action = gtk_action_group_get_action(lw->action_group, "ViewIcons"); |
1668
8ebc26a4383f
use radio buttons for file and dir mode in popup menu
nadvornik
parents:
1667
diff
changeset
|
2282 radio_action_set_current_value(GTK_RADIO_ACTION(action), lw->options.file_view_type); |
9 | 2283 |
2284 action = gtk_action_group_get_action(lw->action_group, "FloatTools"); | |
1309 | 2285 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.tools_float); |
9 | 2286 |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2287 action = gtk_action_group_get_action(lw->action_group, "SBar"); |
1317 | 2288 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), layout_bar_enabled(lw)); |
9 | 2289 |
2290 action = gtk_action_group_get_action(lw->action_group, "SBarSort"); | |
1320 | 2291 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), layout_bar_sort_enabled(lw)); |
9 | 2292 |
2293 action = gtk_action_group_get_action(lw->action_group, "HideToolbar"); | |
1309 | 2294 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.toolbar_hidden); |
1375
df58e511d90e
Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents:
1348
diff
changeset
|
2295 |
1584
0cd2268f500b
improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents:
1583
diff
changeset
|
2296 action = gtk_action_group_get_action(lw->action_group, "ShowInfoPixel"); |
0cd2268f500b
improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents:
1583
diff
changeset
|
2297 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.show_info_pixel); |
433
5ddcf93278c7
Save Show Marks state to rc file and display current state in menu.
zas_
parents:
429
diff
changeset
|
2298 |
5ddcf93278c7
Save Show Marks state to rc file and display current state in menu.
zas_
parents:
429
diff
changeset
|
2299 action = gtk_action_group_get_action(lw->action_group, "ShowMarks"); |
1309 | 2300 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.show_marks); |
451 | 2301 |
2302 action = gtk_action_group_get_action(lw->action_group, "SlideShow"); | |
2303 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), layout_image_slideshow_active(lw)); | |
1293
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2304 |
1665 | 2305 action = gtk_action_group_get_action(lw->action_group, "ImageOverlay"); |
2306 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), osd_flags != OSD_SHOW_NOTHING); | |
2307 | |
2308 action = gtk_action_group_get_action(lw->action_group, "ImageHistogram"); | |
2309 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), osd_flags & OSD_SHOW_HISTOGRAM); | |
2310 | |
1669 | 2311 if (osd_flags & OSD_SHOW_HISTOGRAM) |
2312 { | |
2313 action = gtk_action_group_get_action(lw->action_group, "HistogramChanR"); | |
2314 radio_action_set_current_value(GTK_RADIO_ACTION(action), image_osd_histogram_get_channel(lw->image)); | |
2315 | |
2316 action = gtk_action_group_get_action(lw->action_group, "HistogramModeLin"); | |
2317 radio_action_set_current_value(GTK_RADIO_ACTION(action), image_osd_histogram_get_mode(lw->image)); | |
2318 } | |
2319 | |
2320 action = gtk_action_group_get_action(lw->action_group, "ConnectZoomMenu"); | |
2321 gtk_action_set_sensitive(action, lw->split_mode != SPLIT_NONE); | |
1665 | 2322 |
1547
2a3efbdf73b0
moved color profiles from statusbar to View menu
nadvornik
parents:
1520
diff
changeset
|
2323 layout_util_sync_color(lw); |
9 | 2324 } |
2325 | |
2326 void layout_util_sync_thumb(LayoutWindow *lw) | |
2327 { | |
2328 GtkAction *action; | |
2329 | |
2330 if (!lw->action_group) return; | |
2331 | |
2332 action = gtk_action_group_get_action(lw->action_group, "Thumbnails"); | |
1309 | 2333 gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->options.show_thumbnails); |
1412 | 2334 g_object_set(action, "sensitive", (lw->options.file_view_type == FILEVIEW_LIST), NULL); |
9 | 2335 } |
2336 | |
2337 void layout_util_sync(LayoutWindow *lw) | |
2338 { | |
2339 layout_util_sync_views(lw); | |
2340 layout_util_sync_thumb(lw); | |
2341 layout_menu_recent_update(lw); | |
1272 | 2342 // layout_menu_edit_update(lw); |
9 | 2343 } |
2344 | |
2345 | |
2346 /* | |
2347 *----------------------------------------------------------------------------- | |
2348 * sidebars | |
2349 *----------------------------------------------------------------------------- | |
2350 */ | |
2351 | |
1317 | 2352 static gboolean layout_bar_enabled(LayoutWindow *lw) |
2353 { | |
2354 return lw->bar && GTK_WIDGET_VISIBLE(lw->bar); | |
2355 } | |
2356 | |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2357 static void layout_bar_destroyed(GtkWidget *widget, gpointer data) |
9 | 2358 { |
2359 LayoutWindow *lw = data; | |
2360 | |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2361 lw->bar = NULL; |
1317 | 2362 /* |
2363 do not call layout_util_sync_views(lw) here | |
2364 this is called either when whole layout is destroyed - no need for update | |
2365 or when the bar is replaced - sync is called by upper function at the end of whole operation | |
9 | 2366 |
1317 | 2367 */ |
9 | 2368 } |
2369 | |
1317 | 2370 static void layout_bar_set_default(LayoutWindow *lw) |
489
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
482
diff
changeset
|
2371 { |
1317 | 2372 GtkWidget *bar; |
489
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
482
diff
changeset
|
2373 |
9 | 2374 if (!lw->utility_box) return; |
442 | 2375 |
1484 | 2376 bar = bar_new(lw); |
1317 | 2377 |
2378 layout_bar_set(lw, bar); | |
1484 | 2379 |
2380 bar_populate_default(bar); | |
9 | 2381 } |
442 | 2382 |
1317 | 2383 static void layout_bar_close(LayoutWindow *lw) |
9 | 2384 { |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2385 if (lw->bar) |
9 | 2386 { |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2387 bar_close(lw->bar); |
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2388 lw->bar = NULL; |
9 | 2389 } |
1309 | 2390 } |
2391 | |
1317 | 2392 |
2393 void layout_bar_set(LayoutWindow *lw, GtkWidget *bar) | |
1309 | 2394 { |
1317 | 2395 if (!lw->utility_box) return; |
2396 | |
2397 layout_bar_close(lw); /* if any */ | |
2398 | |
2399 if (!bar) return; | |
2400 lw->bar = bar; | |
2401 | |
2402 g_signal_connect(G_OBJECT(lw->bar), "destroy", | |
2403 G_CALLBACK(layout_bar_destroyed), lw); | |
2404 | |
2405 | |
1383 | 2406 // gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar, FALSE, FALSE, 0); |
2407 gtk_paned_pack2(GTK_PANED(lw->utility_paned), lw->bar, FALSE, TRUE); | |
1317 | 2408 |
2409 bar_set_fd(lw->bar, layout_image_get_fd(lw)); | |
2410 } | |
2411 | |
2412 | |
2413 void layout_bar_toggle(LayoutWindow *lw) | |
2414 { | |
2415 if (layout_bar_enabled(lw)) | |
1309 | 2416 { |
2417 gtk_widget_hide(lw->bar); | |
2418 } | |
9 | 2419 else |
2420 { | |
1317 | 2421 if (!lw->bar) |
2422 { | |
2423 layout_bar_set_default(lw); | |
2424 } | |
2425 gtk_widget_show(lw->bar); | |
1508 | 2426 bar_set_fd(lw->bar, layout_image_get_fd(lw)); |
9 | 2427 } |
1317 | 2428 layout_util_sync_views(lw); |
9 | 2429 } |
2430 | |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2431 static void layout_bar_new_image(LayoutWindow *lw) |
9 | 2432 { |
1317 | 2433 if (!layout_bar_enabled(lw)) return; |
9 | 2434 |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2435 bar_set_fd(lw->bar, layout_image_get_fd(lw)); |
9 | 2436 } |
2437 | |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2438 static void layout_bar_new_selection(LayoutWindow *lw, gint count) |
9 | 2439 { |
1317 | 2440 if (!layout_bar_enabled(lw)) return; |
9 | 2441 |
1520 | 2442 bar_notify_selection(lw->bar, count); |
9 | 2443 } |
2444 | |
1320 | 2445 static gboolean layout_bar_sort_enabled(LayoutWindow *lw) |
2446 { | |
2447 return lw->bar_sort && GTK_WIDGET_VISIBLE(lw->bar_sort); | |
2448 } | |
2449 | |
2450 | |
9 | 2451 static void layout_bar_sort_destroyed(GtkWidget *widget, gpointer data) |
2452 { | |
2453 LayoutWindow *lw = data; | |
2454 | |
2455 lw->bar_sort = NULL; | |
2456 | |
1320 | 2457 /* |
2458 do not call layout_util_sync_views(lw) here | |
2459 this is called either when whole layout is destroyed - no need for update | |
2460 or when the bar is replaced - sync is called by upper function at the end of whole operation | |
9 | 2461 |
1320 | 2462 */ |
9 | 2463 } |
2464 | |
1320 | 2465 static void layout_bar_sort_set_default(LayoutWindow *lw) |
9 | 2466 { |
1320 | 2467 GtkWidget *bar; |
2468 | |
9 | 2469 if (!lw->utility_box) return; |
2470 | |
1320 | 2471 bar = bar_sort_new_default(lw); |
2472 | |
2473 layout_bar_sort_set(lw, bar); | |
9 | 2474 } |
2475 | |
2476 static void layout_bar_sort_close(LayoutWindow *lw) | |
2477 { | |
2478 if (lw->bar_sort) | |
2479 { | |
2480 bar_sort_close(lw->bar_sort); | |
2481 lw->bar_sort = NULL; | |
2482 } | |
1320 | 2483 } |
2484 | |
2485 void layout_bar_sort_set(LayoutWindow *lw, GtkWidget *bar) | |
2486 { | |
2487 if (!lw->utility_box) return; | |
2488 | |
2489 layout_bar_sort_close(lw); /* if any */ | |
2490 | |
2491 if (!bar) return; | |
2492 lw->bar_sort = bar; | |
2493 | |
2494 g_signal_connect(G_OBJECT(lw->bar_sort), "destroy", | |
2495 G_CALLBACK(layout_bar_sort_destroyed), lw); | |
2496 | |
2497 gtk_box_pack_end(GTK_BOX(lw->utility_box), lw->bar_sort, FALSE, FALSE, 0); | |
9 | 2498 } |
2499 | |
2500 void layout_bar_sort_toggle(LayoutWindow *lw) | |
2501 { | |
1320 | 2502 if (layout_bar_sort_enabled(lw)) |
9 | 2503 { |
1320 | 2504 gtk_widget_hide(lw->bar_sort); |
9 | 2505 } |
2506 else | |
2507 { | |
1320 | 2508 if (!lw->bar_sort) |
2509 { | |
2510 layout_bar_sort_set_default(lw); | |
2511 } | |
2512 gtk_widget_show(lw->bar_sort); | |
9 | 2513 } |
1320 | 2514 layout_util_sync_views(lw); |
9 | 2515 } |
2516 | |
2517 void layout_bars_new_image(LayoutWindow *lw) | |
2518 { | |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2519 layout_bar_new_image(lw); |
1293
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2520 |
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2521 if (lw->exif_window) advanced_exif_set_fd(lw->exif_window, layout_image_get_fd(lw)); |
1214
31402ecb2aed
write metadata after timeout, image change or dir change
nadvornik
parents:
1176
diff
changeset
|
2522 |
31402ecb2aed
write metadata after timeout, image change or dir change
nadvornik
parents:
1176
diff
changeset
|
2523 /* this should be called here to handle the metadata edited in bars */ |
31402ecb2aed
write metadata after timeout, image change or dir change
nadvornik
parents:
1176
diff
changeset
|
2524 if (options->metadata.confirm_on_image_change) |
1586
249b539cc952
force the metadata dialog if it was triggered by the menu or the button
nadvornik
parents:
1585
diff
changeset
|
2525 metadata_write_queue_confirm(FALSE, NULL, NULL); |
9 | 2526 } |
2527 | |
2528 void layout_bars_new_selection(LayoutWindow *lw, gint count) | |
2529 { | |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2530 layout_bar_new_selection(lw, count); |
9 | 2531 } |
2532 | |
2533 GtkWidget *layout_bars_prepare(LayoutWindow *lw, GtkWidget *image) | |
2534 { | |
1470 | 2535 if (lw->utility_box) return lw->utility_box; |
9 | 2536 lw->utility_box = gtk_hbox_new(FALSE, PREF_PAD_GAP); |
1383 | 2537 lw->utility_paned = gtk_hpaned_new(); |
2538 gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->utility_paned, TRUE, TRUE, 0); | |
2539 | |
2540 gtk_paned_pack1(GTK_PANED(lw->utility_paned), image, TRUE, FALSE); | |
2541 gtk_widget_show(lw->utility_paned); | |
2542 | |
9 | 2543 gtk_widget_show(image); |
2544 | |
1470 | 2545 g_object_ref(lw->utility_box); |
9 | 2546 return lw->utility_box; |
2547 } | |
2548 | |
2549 void layout_bars_close(LayoutWindow *lw) | |
2550 { | |
2551 layout_bar_sort_close(lw); | |
1291
50ae02a4a675
replaced bar_info with an universal bar, restored the original
nadvornik
parents:
1285
diff
changeset
|
2552 layout_bar_close(lw); |
9 | 2553 } |
2554 | |
1293
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2555 static void layout_exif_window_destroy(GtkWidget *widget, gpointer data) |
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2556 { |
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2557 LayoutWindow *lw = data; |
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2558 lw->exif_window = NULL; |
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2559 } |
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2560 |
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2561 void layout_exif_window_new(LayoutWindow *lw) |
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2562 { |
1433
b4ad1d201279
Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents:
1412
diff
changeset
|
2563 if (lw->exif_window) return; |
b4ad1d201279
Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents:
1412
diff
changeset
|
2564 |
b4ad1d201279
Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents:
1412
diff
changeset
|
2565 lw->exif_window = advanced_exif_new(); |
b4ad1d201279
Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents:
1412
diff
changeset
|
2566 if (!lw->exif_window) return; |
b4ad1d201279
Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents:
1412
diff
changeset
|
2567 g_signal_connect(G_OBJECT(lw->exif_window), "destroy", |
b4ad1d201279
Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents:
1412
diff
changeset
|
2568 G_CALLBACK(layout_exif_window_destroy), lw); |
b4ad1d201279
Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents:
1412
diff
changeset
|
2569 advanced_exif_set_fd(lw->exif_window, layout_image_get_fd(lw)); |
1293
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2570 } |
48e064b37ba6
separated "normal" and advanced exif, "Normal" exif is now in the
nadvornik
parents:
1292
diff
changeset
|
2571 |
1055
1646720364cf
Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents:
1047
diff
changeset
|
2572 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ |