annotate src/layout_image.c @ 1701:2309e6150e8c

do not try to reload deleted image deleted image is replaced by the next one from the list, keep the old image displayed until the new one is set
author nadvornik
date Fri, 24 Jul 2009 12:56:54 +0000
parents bfe04f01de5e
children caf0e4b8319d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1 /*
196
f6e307c7bad6 rename GQview -> Geeqie over the code
nadvornik
parents: 175
diff changeset
2 * Geeqie
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
3 * (C) 2006 John Ellis
1284
8b89e3ff286b Add year 2009 to copyright info everywhere.
zas_
parents: 1273
diff changeset
4 * Copyright (C) 2008 - 2009 The Geeqie Team
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
5 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
6 * Author: John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
7 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
8 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
9 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
10 * This software comes with no warranty of any kind, use at your own risk!
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
11 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
12
281
9995c5fb202a gqview.h -> main.h
zas_
parents: 278
diff changeset
13 #include "main.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
14 #include "layout_image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
15
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
16 #include "collect.h"
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1397
diff changeset
17 #include "color-man.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
18 #include "dnd.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
19 #include "editors.h"
586
905688aa2317 split filelist.c to filefilter.c and filedata.c
nadvornik
parents: 530
diff changeset
20 #include "filedata.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
21 #include "fullscreen.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
22 #include "image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
23 #include "image-overlay.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
24 #include "img-view.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
25 #include "layout.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
26 #include "layout_util.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
27 #include "menu.h"
1022
9962b24b6b43 Move miscellaneous functions to their own files (new misc.[ch]).
zas_
parents: 995
diff changeset
28 #include "misc.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
29 #include "pixbuf_util.h"
1375
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
30 #include "pixbuf-renderer.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
31 #include "slideshow.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
32 #include "ui_fileops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
33 #include "ui_menu.h"
904
1698baa37871 Move uri_*() functions to separate files: uri_utils.[ch]
zas_
parents: 888
diff changeset
34 #include "uri_utils.h"
1022
9962b24b6b43 Move miscellaneous functions to their own files (new misc.[ch]).
zas_
parents: 995
diff changeset
35 #include "utilops.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
36
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
37 #include <gdk/gdkkeysyms.h> /* for keyboard values */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
38
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
39
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
40 static GtkWidget *layout_image_pop_menu(LayoutWindow *lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
41 static void layout_image_set_buttons(LayoutWindow *lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
42
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
43 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
44 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
45 * full screen overlay
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
46 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
47 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
48
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
49 void layout_image_overlay_toggle(LayoutWindow *lw)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
50 {
481
67a612985686 Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents: 479
diff changeset
51 if (!lw) return;
67a612985686 Merge view_overlay_toggle() and layout_image_overlay_toggle() into new image_osd_toggle().
zas_
parents: 479
diff changeset
52 image_osd_toggle(lw->image);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
53 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
54
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
55 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
56 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
57 * full screen
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
58 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
59 */
160
85657b4766c9 use accels also in fullscreen mode
nadvornik
parents: 156
diff changeset
60
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
61 static void layout_image_full_screen_stop_func(FullScreenData *fs, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
62 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
63 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
64
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
65 /* restore image window */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
66 lw->image = fs->normal_imd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
67
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
68 lw->full_screen = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
69 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
70
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
71 void layout_image_full_screen_start(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
72 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
73 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
74
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
75 if (lw->full_screen) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
76
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
77 lw->full_screen = fullscreen_start(lw->window, lw->image,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
78 layout_image_full_screen_stop_func, lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
79
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
80 /* set to new image window */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
81 lw->image = lw->full_screen->imd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
82
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
83 layout_image_set_buttons(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
84
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
85 g_signal_connect(G_OBJECT(lw->full_screen->window), "key_press_event",
160
85657b4766c9 use accels also in fullscreen mode
nadvornik
parents: 156
diff changeset
86 G_CALLBACK(layout_key_press_cb), lw);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
87
160
85657b4766c9 use accels also in fullscreen mode
nadvornik
parents: 156
diff changeset
88 layout_actions_add_window(lw, lw->full_screen->window);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
89 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
90 gtk_widget_set_sensitive(lw->window, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
91 if (lw->tools) gtk_widget_set_sensitive(lw->tools, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
92 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
93
1336
4179d41d1149 fixed overlay configuration
nadvornik
parents: 1317
diff changeset
94 image_osd_copy_status(lw->full_screen->normal_imd, lw->image);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
95 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
96
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
97 void layout_image_full_screen_stop(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
98 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
99 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
100 if (!lw->full_screen) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
101
1336
4179d41d1149 fixed overlay configuration
nadvornik
parents: 1317
diff changeset
102 image_osd_copy_status(lw->image, lw->full_screen->normal_imd);
621
734b6b0a3356 image_osd_get() now returns OsdShowFlags.
zas_
parents: 614
diff changeset
103
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
104 fullscreen_stop(lw->full_screen);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
105
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
106 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
107 gtk_widget_set_sensitive(lw->window, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
108 if (lw->tools) gtk_widget_set_sensitive(lw->tools, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
109 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
110 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
111
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
112 void layout_image_full_screen_toggle(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
113 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
114 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
115 if (lw->full_screen)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
116 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
117 layout_image_full_screen_stop(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
118 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
119 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
120 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
121 layout_image_full_screen_start(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
122 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
123 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
124
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
125 gboolean layout_image_full_screen_active(LayoutWindow *lw)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
126 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
127 if (!layout_valid(&lw)) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
128
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
129 return (lw->full_screen != NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
130 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
131
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
132 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
133 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
134 * slideshow
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
135 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
136 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
137
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
138 static void layout_image_slideshow_next(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
139 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
140 if (lw->slideshow) slideshow_next(lw->slideshow);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
141 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
142
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
143 static void layout_image_slideshow_prev(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
144 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
145 if (lw->slideshow) slideshow_prev(lw->slideshow);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
146 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
147
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
148 static void layout_image_slideshow_stop_func(SlideShowData *ss, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
149 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
150 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
151
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
152 lw->slideshow = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
153 layout_status_update_info(lw, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
154 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
155
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
156 void layout_image_slideshow_start(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
157 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
158 CollectionData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
159 CollectInfo *info;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
160
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
161 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
162 if (lw->slideshow) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
163
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
164 cd = image_get_collection(lw->image, &info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
165
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
166 if (cd && info)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
167 {
1627
1a134b4dc88c use layout_set_fd() for changing images from a slideshow
nadvornik
parents: 1626
diff changeset
168 lw->slideshow = slideshow_start_from_collection(lw, NULL, cd,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
169 layout_image_slideshow_stop_func, lw, info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
170 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
171 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
172 {
1627
1a134b4dc88c use layout_set_fd() for changing images from a slideshow
nadvornik
parents: 1626
diff changeset
173 lw->slideshow = slideshow_start(lw,
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
174 layout_list_get_index(lw, layout_image_get_fd(lw)),
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
175 layout_image_slideshow_stop_func, lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
176 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
177
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
178 layout_status_update_info(lw, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
179 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
180
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
181 /* note that slideshow will take ownership of the list, do not free it */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
182 void layout_image_slideshow_start_from_list(LayoutWindow *lw, GList *list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
183 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
184 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
185
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
186 if (lw->slideshow || !list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
187 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
188 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
189 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
190 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
191
1627
1a134b4dc88c use layout_set_fd() for changing images from a slideshow
nadvornik
parents: 1626
diff changeset
192 lw->slideshow = slideshow_start_from_filelist(lw, NULL, list,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
193 layout_image_slideshow_stop_func, lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
194
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
195 layout_status_update_info(lw, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
196 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
197
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
198 void layout_image_slideshow_stop(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
199 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
200 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
201
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
202 if (!lw->slideshow) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
203
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
204 slideshow_free(lw->slideshow);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
205 /* the stop_func sets lw->slideshow to NULL for us */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
206 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
207
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
208 void layout_image_slideshow_toggle(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
209 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
210 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
211
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
212 if (lw->slideshow)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
213 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
214 layout_image_slideshow_stop(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
215 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
216 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
217 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
218 layout_image_slideshow_start(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
219 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
220 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
221
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
222 gboolean layout_image_slideshow_active(LayoutWindow *lw)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
223 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
224 if (!layout_valid(&lw)) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
225
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
226 return (lw->slideshow != NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
227 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
228
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
229 gboolean layout_image_slideshow_pause_toggle(LayoutWindow *lw)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
230 {
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
231 gboolean ret;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
232
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
233 if (!layout_valid(&lw)) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
234
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
235 ret = slideshow_pause_toggle(lw->slideshow);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
236
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
237 layout_status_update_info(lw, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
238
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
239 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
240 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
241
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
242 gboolean layout_image_slideshow_paused(LayoutWindow *lw)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
243 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
244 if (!layout_valid(&lw)) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
245
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
246 return (slideshow_paused(lw->slideshow));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
247 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
248
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
249 static gboolean layout_image_slideshow_continue_check(LayoutWindow *lw)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
250 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
251 if (!lw->slideshow) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
252
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
253 if (!slideshow_should_continue(lw->slideshow))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
254 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
255 layout_image_slideshow_stop(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
256 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
257 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
258
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
259 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
260 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
261
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
262 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
263 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
264 * pop-up menus
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
265 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
266 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
267
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
268 static void li_pop_menu_zoom_in_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
269 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
270 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
271
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
272 layout_image_zoom_adjust(lw, get_zoom_increment(), FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
273 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
274
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
275 static void li_pop_menu_zoom_out_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
276 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
277 LayoutWindow *lw = data;
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
278 layout_image_zoom_adjust(lw, -get_zoom_increment(), FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
279 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
280
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
281 static void li_pop_menu_zoom_1_1_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
282 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
283 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
284
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
285 layout_image_zoom_set(lw, 1.0, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
286 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
287
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
288 static void li_pop_menu_zoom_fit_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
289 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
290 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
291
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
292 layout_image_zoom_set(lw, 0.0, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
293 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
294
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
295 static void li_pop_menu_edit_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
296 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
297 LayoutWindow *lw;
1272
e0e12512cde2 read external editors from .desktop files
nadvornik
parents: 1269
diff changeset
298 const gchar *key = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
299
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
300 lw = submenu_item_get_data(widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
301
1272
e0e12512cde2 read external editors from .desktop files
nadvornik
parents: 1269
diff changeset
302 if (!editor_window_flag_set(key))
60
9c0c402b0ef3 Mon Jun 13 17:31:46 2005 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
303 {
9c0c402b0ef3 Mon Jun 13 17:31:46 2005 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
304 layout_image_full_screen_stop(lw);
9c0c402b0ef3 Mon Jun 13 17:31:46 2005 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
305 }
1272
e0e12512cde2 read external editors from .desktop files
nadvornik
parents: 1269
diff changeset
306 file_util_start_editor_from_file(key, layout_image_get_fd(lw), lw->window);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
307 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
308
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
309 static void li_pop_menu_wallpaper_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
310 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
311 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
312
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
313 layout_image_to_root(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
314 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
315
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
316 static void li_pop_menu_alter_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
317 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
318 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
319 AlterType type;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
320
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
321 lw = submenu_item_get_data(widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
322 type = (AlterType)GPOINTER_TO_INT(data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
323
1566
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
324 image_alter_orientation(lw->image, type);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
325 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
326
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
327 static void li_pop_menu_new_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
328 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
329 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
330
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
331 view_window_new(layout_image_get_fd(lw));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
332 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
333
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
334 static GtkWidget *li_pop_menu_click_parent(GtkWidget *widget, LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
335 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
336 GtkWidget *menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
337 GtkWidget *parent;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
338
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
339 menu = gtk_widget_get_toplevel(widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
340 if (!menu) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
341
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
342 parent = g_object_get_data(G_OBJECT(menu), "click_parent");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
343
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
344 if (!parent && lw->full_screen)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
345 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
346 parent = lw->full_screen->imd->widget;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
347 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
348
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
349 return parent;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
350 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
351
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
352 static void li_pop_menu_copy_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
353 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
354 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
355
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
356 file_util_copy(layout_image_get_fd(lw), NULL, NULL,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
357 li_pop_menu_click_parent(widget, lw));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
358 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
359
497
a33badd85f16 Allow the copy of file paths to clipboard.
zas_
parents: 495
diff changeset
360 static void li_pop_menu_copy_path_cb(GtkWidget *widget, gpointer data)
a33badd85f16 Allow the copy of file paths to clipboard.
zas_
parents: 495
diff changeset
361 {
a33badd85f16 Allow the copy of file paths to clipboard.
zas_
parents: 495
diff changeset
362 LayoutWindow *lw = data;
a33badd85f16 Allow the copy of file paths to clipboard.
zas_
parents: 495
diff changeset
363
a33badd85f16 Allow the copy of file paths to clipboard.
zas_
parents: 495
diff changeset
364 file_util_copy_path_to_clipboard(layout_image_get_fd(lw));
a33badd85f16 Allow the copy of file paths to clipboard.
zas_
parents: 495
diff changeset
365 }
a33badd85f16 Allow the copy of file paths to clipboard.
zas_
parents: 495
diff changeset
366
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
367 static void li_pop_menu_move_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
368 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
369 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
370
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
371 file_util_move(layout_image_get_fd(lw), NULL, NULL,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
372 li_pop_menu_click_parent(widget, lw));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
373 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
374
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
375 static void li_pop_menu_rename_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
376 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
377 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
378
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
379 file_util_rename(layout_image_get_fd(lw), NULL,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
380 li_pop_menu_click_parent(widget, lw));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
381 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
382
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
383 static void li_pop_menu_delete_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
384 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
385 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
386
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
387 file_util_delete(layout_image_get_fd(lw), NULL,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
388 li_pop_menu_click_parent(widget, lw));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
389 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
390
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
391 static void li_pop_menu_slide_start_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
392 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
393 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
394
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
395 layout_image_slideshow_start(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
396 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
397
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
398 static void li_pop_menu_slide_stop_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
399 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
400 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
401
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
402 layout_image_slideshow_stop(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
403 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
404
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
405 static void li_pop_menu_slide_pause_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
406 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
407 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
408
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
409 layout_image_slideshow_pause_toggle(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
410 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
411
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
412 static void li_pop_menu_full_screen_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
413 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
414 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
415
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
416 layout_image_full_screen_toggle(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
417 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
418
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
419 static void li_pop_menu_hide_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
420 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
421 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
422
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
423 layout_tools_hide_toggle(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
424 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
425
368
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
426 static void li_set_layout_path_cb(GtkWidget *widget, gpointer data)
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
427 {
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
428 LayoutWindow *lw = data;
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
429 FileData *fd;
368
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
430
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
431 if (!layout_valid(&lw)) return;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
432
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
433 fd = layout_image_get_fd(lw);
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
434 if (fd) layout_set_fd(lw, fd);
368
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
435 }
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
436
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
437 static gboolean li_check_if_current_path(LayoutWindow *lw, const gchar *path)
368
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
438 {
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
439 gchar *dirname;
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
440 gboolean ret;
368
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
441
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
442 if (!path || !layout_valid(&lw) || !lw->dir_fd) return FALSE;
368
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
443
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
444 dirname = g_path_get_dirname(path);
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
445 ret = (strcmp(lw->dir_fd->path, dirname) == 0);
368
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
446 g_free(dirname);
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
447 return ret;
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
448 }
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
449
1397
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
450 static void layout_image_popup_menu_destroy_cb(GtkWidget *widget, gpointer data)
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
451 {
1698
bfe04f01de5e fixed destroying of menu data
nadvornik
parents: 1659
diff changeset
452 GList *editmenu_fd_list = data;
1397
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
453
1698
bfe04f01de5e fixed destroying of menu data
nadvornik
parents: 1659
diff changeset
454 filelist_free(editmenu_fd_list);
bfe04f01de5e fixed destroying of menu data
nadvornik
parents: 1659
diff changeset
455 }
1397
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
456
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
457 static GList *layout_image_get_fd_list(LayoutWindow *lw)
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
458 {
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
459 GList *list = NULL;
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
460 FileData *fd = layout_image_get_fd(lw);
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
461
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
462 if (fd)
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
463 list = g_list_append(NULL, file_data_ref(fd));
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
464
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
465 return list;
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
466 }
a0bd58a6535f In various Edit context menus, only display editors that match the file types in the selection.
zas_
parents: 1383
diff changeset
467
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
468 static GtkWidget *layout_image_pop_menu(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
469 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
470 GtkWidget *menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
471 GtkWidget *item;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
472 GtkWidget *submenu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
473 const gchar *path;
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
474 gboolean fullscreen;
1698
bfe04f01de5e fixed destroying of menu data
nadvornik
parents: 1659
diff changeset
475 GList *editmenu_fd_list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
476
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
477 path = layout_image_get_path(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
478 fullscreen = layout_image_full_screen_active(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
479
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
480 menu = popup_menu_short_lived();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
481
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
482 menu_item_add_stock(menu, _("Zoom _in"), GTK_STOCK_ZOOM_IN, G_CALLBACK(li_pop_menu_zoom_in_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
483 menu_item_add_stock(menu, _("Zoom _out"), GTK_STOCK_ZOOM_OUT, G_CALLBACK(li_pop_menu_zoom_out_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
484 menu_item_add_stock(menu, _("Zoom _1:1"), GTK_STOCK_ZOOM_100, G_CALLBACK(li_pop_menu_zoom_1_1_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
485 menu_item_add_stock(menu, _("Fit image to _window"), GTK_STOCK_ZOOM_FIT, G_CALLBACK(li_pop_menu_zoom_fit_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
486 menu_item_add_divider(menu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
487
1698
bfe04f01de5e fixed destroying of menu data
nadvornik
parents: 1659
diff changeset
488 editmenu_fd_list = layout_image_get_fd_list(lw);
bfe04f01de5e fixed destroying of menu data
nadvornik
parents: 1659
diff changeset
489 g_signal_connect(G_OBJECT(menu), "destroy",
bfe04f01de5e fixed destroying of menu data
nadvornik
parents: 1659
diff changeset
490 G_CALLBACK(layout_image_popup_menu_destroy_cb), editmenu_fd_list);
bfe04f01de5e fixed destroying of menu data
nadvornik
parents: 1659
diff changeset
491 submenu = submenu_add_edit(menu, &item, G_CALLBACK(li_pop_menu_edit_cb), lw, editmenu_fd_list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
492 if (!path) gtk_widget_set_sensitive(item, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
493 menu_item_add_divider(submenu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
494 menu_item_add(submenu, _("Set as _wallpaper"), G_CALLBACK(li_pop_menu_wallpaper_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
495
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
496 item = submenu_add_alter(menu, G_CALLBACK(li_pop_menu_alter_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
497
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
498 item = menu_item_add_stock(menu, _("View in _new window"), GTK_STOCK_NEW, G_CALLBACK(li_pop_menu_new_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
499 if (!path || fullscreen) gtk_widget_set_sensitive(item, FALSE);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
500
368
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
501 item = menu_item_add(menu, _("_Go to directory view"), G_CALLBACK(li_set_layout_path_cb), lw);
95fe470440ad New Go to directory view feature that permits to find and display the directory
zas_
parents: 339
diff changeset
502 if (!path || li_check_if_current_path(lw, path)) gtk_widget_set_sensitive(item, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
503
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
504 menu_item_add_divider(menu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
505
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
506 item = menu_item_add_stock(menu, _("_Copy..."), GTK_STOCK_COPY, G_CALLBACK(li_pop_menu_copy_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
507 if (!path) gtk_widget_set_sensitive(item, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
508 item = menu_item_add(menu, _("_Move..."), G_CALLBACK(li_pop_menu_move_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
509 if (!path) gtk_widget_set_sensitive(item, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
510 item = menu_item_add(menu, _("_Rename..."), G_CALLBACK(li_pop_menu_rename_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
511 if (!path) gtk_widget_set_sensitive(item, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
512 item = menu_item_add_stock(menu, _("_Delete..."), GTK_STOCK_DELETE, G_CALLBACK(li_pop_menu_delete_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
513 if (!path) gtk_widget_set_sensitive(item, FALSE);
497
a33badd85f16 Allow the copy of file paths to clipboard.
zas_
parents: 495
diff changeset
514
1513
c9ed5a43c576 dropped show_copy_path option
nadvornik
parents: 1498
diff changeset
515 item = menu_item_add(menu, _("_Copy path"), G_CALLBACK(li_pop_menu_copy_path_cb), lw);
c9ed5a43c576 dropped show_copy_path option
nadvornik
parents: 1498
diff changeset
516 if (!path) gtk_widget_set_sensitive(item, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
517
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
518 menu_item_add_divider(menu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
519
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
520 if (layout_image_slideshow_active(lw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
521 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
522 menu_item_add(menu, _("_Stop slideshow"), G_CALLBACK(li_pop_menu_slide_stop_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
523 if (layout_image_slideshow_paused(lw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
524 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
525 item = menu_item_add(menu, _("Continue slides_how"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
526 G_CALLBACK(li_pop_menu_slide_pause_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
527 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
528 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
529 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
530 item = menu_item_add(menu, _("Pause slides_how"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
531 G_CALLBACK(li_pop_menu_slide_pause_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
532 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
533 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
534 else
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
535 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
536 menu_item_add(menu, _("_Start slideshow"), G_CALLBACK(li_pop_menu_slide_start_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
537 item = menu_item_add(menu, _("Pause slides_how"), G_CALLBACK(li_pop_menu_slide_pause_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
538 gtk_widget_set_sensitive(item, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
539 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
540
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
541 if (!fullscreen)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
542 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
543 menu_item_add(menu, _("_Full screen"), G_CALLBACK(li_pop_menu_full_screen_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
544 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
545 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
546 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
547 menu_item_add(menu, _("Exit _full screen"), G_CALLBACK(li_pop_menu_full_screen_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
548 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
549
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
550 menu_item_add_divider(menu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
551
1309
55ea4962887a config file format changed to XML
nadvornik
parents: 1292
diff changeset
552 item = menu_item_add_check(menu, _("Hide file _list"), lw->options.tools_hidden,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
553 G_CALLBACK(li_pop_menu_hide_cb), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
554 if (fullscreen) gtk_widget_set_sensitive(item, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
555
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
556 return menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
557 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
558
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
559 static void layout_image_menu_pos_cb(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
560 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
561 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
562
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
563 gdk_window_get_origin(lw->image->pr->window, x, y);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
564 popup_menu_position_clamp(menu, x, y, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
565 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
566
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
567 void layout_image_menu_popup(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
568 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
569 GtkWidget *menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
570
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
571 menu = layout_image_pop_menu(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
572 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, layout_image_menu_pos_cb, lw, 0, GDK_CURRENT_TIME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
573 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
574
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
575 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
576 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
577 * dnd
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
578 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
579 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
580
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
581 static void layout_image_dnd_receive(GtkWidget *widget, GdkDragContext *context,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
582 gint x, gint y,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
583 GtkSelectionData *selection_data, guint info,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
584 guint time, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
585 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
586 LayoutWindow *lw = data;
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
587 gint i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
588
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
589
520
b5e79bcb46df Add missing spaces around equal sign.
zas_
parents: 512
diff changeset
590 for (i = 0; i < MAX_SPLIT_IMAGES; i++)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
591 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
592 if (lw->split_images[i] && lw->split_images[i]->pr == widget)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
593 break;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
594 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
595 if (i < MAX_SPLIT_IMAGES)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
596 {
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 497
diff changeset
597 DEBUG_1("dnd image activate %d", i);
1659
71b29f70d08c fixed jumping of filelist on focus_in event
nadvornik
parents: 1636
diff changeset
598 layout_image_activate(lw, i, FALSE);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
599 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
600
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
601
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
602 if (info == TARGET_URI_LIST || info == TARGET_APP_COLLECTION_MEMBER)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
603 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
604 CollectionData *source;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
605 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
606 GList *info_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
607
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
608 if (info == TARGET_URI_LIST)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
609 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
610 list = uri_filelist_from_text((gchar *)selection_data->data, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
611 source = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
612 info_list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
613 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
614 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
615 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
616 source = collection_from_dnd_data((gchar *)selection_data->data, &list, &info_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
617 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
618
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
619 if (list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
620 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
621 FileData *fd = list->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
622
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
623 if (isfile(fd->path))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
624 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
625 gchar *base;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
626 gint row;
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
627 FileData *dir_fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
628
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
629 base = remove_level_from_path(fd->path);
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
630 dir_fd = file_data_new_simple(base);
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
631 if (dir_fd != lw->dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
632 {
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
633 layout_set_fd(lw, dir_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
634 }
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
635 file_data_unref(dir_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
636 g_free(base);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
637
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
638 row = layout_list_get_index(lw, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
639 if (source && info_list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
640 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
641 layout_image_set_collection(lw, source, info_list->data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
642 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
643 else if (row == -1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
644 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
645 layout_image_set_fd(lw, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
646 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
647 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
648 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
649 layout_image_set_index(lw, row);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
650 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
651 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
652 else if (isdir(fd->path))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
653 {
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
654 layout_set_fd(lw, fd);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
655 layout_image_set_fd(lw, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
656 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
657 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
658
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
659 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
660 g_list_free(info_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
661 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
662 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
663
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
664 static void layout_image_dnd_get(GtkWidget *widget, GdkDragContext *context,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
665 GtkSelectionData *selection_data, guint info,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
666 guint time, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
667 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
668 LayoutWindow *lw = data;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
669 FileData *fd;
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
670 gint i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
671
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
672
520
b5e79bcb46df Add missing spaces around equal sign.
zas_
parents: 512
diff changeset
673 for (i = 0; i < MAX_SPLIT_IMAGES; i++)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
674 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
675 if (lw->split_images[i] && lw->split_images[i]->pr == widget)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
676 break;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
677 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
678 if (i < MAX_SPLIT_IMAGES)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
679 {
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 497
diff changeset
680 DEBUG_1("dnd get from %d", i);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
681 fd = image_get_fd(lw->split_images[i]);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
682 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
683 else
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
684 fd = layout_image_get_fd(lw);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
685
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
686 if (fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
687 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
688 gchar *text = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
689 gint len;
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
690 gboolean plain_text;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
691 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
692
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
693 switch (info)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
694 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
695 case TARGET_URI_LIST:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
696 plain_text = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
697 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
698 case TARGET_TEXT_PLAIN:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
699 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
700 plain_text = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
701 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
702 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
703 list = g_list_append(NULL, fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
704 text = uri_text_from_filelist(list, &len, plain_text);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
705 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
706 if (text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
707 {
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
708 gtk_selection_data_set(selection_data, selection_data->target,
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
709 8, (guchar *)text, len);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
710 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
711 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
712 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
713 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
714 {
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
715 gtk_selection_data_set(selection_data, selection_data->target,
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
716 8, NULL, 0);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
717 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
718 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
719
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
720 static void layout_image_dnd_end(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
721 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
722 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
723 if (context->action == GDK_ACTION_MOVE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
724 {
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
725 FileData *fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
726 gint row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
727
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
728 fd = layout_image_get_fd(lw);
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
729 row = layout_list_get_index(lw, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
730 if (row < 0) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
731
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
732 if (!isfile(fd->path))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
733 {
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 671
diff changeset
734 if ((guint) row < layout_list_count(lw, NULL) - 1)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
735 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
736 layout_image_next(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
737 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
738 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
739 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
740 layout_image_prev(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
741 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
742 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
743 layout_refresh(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
744 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
745 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
746
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
747 static void layout_image_dnd_init(LayoutWindow *lw, gint i)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
748 {
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
749 ImageWindow *imd = lw->split_images[i];
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
750
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
751 gtk_drag_source_set(imd->pr, GDK_BUTTON2_MASK,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
752 dnd_file_drag_types, dnd_file_drag_types_count,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
753 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
754 g_signal_connect(G_OBJECT(imd->pr), "drag_data_get",
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
755 G_CALLBACK(layout_image_dnd_get), lw);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
756 g_signal_connect(G_OBJECT(imd->pr), "drag_end",
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
757 G_CALLBACK(layout_image_dnd_end), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
758
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
759 gtk_drag_dest_set(imd->pr,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
760 GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
761 dnd_file_drop_types, dnd_file_drop_types_count,
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
762 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
763 g_signal_connect(G_OBJECT(imd->pr), "drag_data_received",
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
764 G_CALLBACK(layout_image_dnd_receive), lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
765 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
766
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
767
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
768 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
769 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
770 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
771 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
772 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
773
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
774 void layout_image_to_root(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
775 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
776 image_to_root_window(lw->image, (image_zoom_get(lw->image) == 0));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
777 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
778
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
779 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
780 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
781 * manipulation + accessors
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
782 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
783 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
784
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
785 void layout_image_scroll(LayoutWindow *lw, gint x, gint y, gboolean connect_scroll)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
786 {
530
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
787 gdouble dx, dy;
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
788 gint width, height, i;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
789 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
790
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
791 image_scroll(lw->image, x, y);
530
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
792
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
793 if (!connect_scroll) return;
879
0f85435ac335 Optimize a bit when connected zoom and scrolling are unset,
zas_
parents: 869
diff changeset
794
530
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
795 image_get_image_size(lw->image, &width, &height);
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
796 dx = (gdouble) x / width;
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
797 dy = (gdouble) y / height;
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
798
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
799 for (i = 0; i < MAX_SPLIT_IMAGES; i++)
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
800 {
879
0f85435ac335 Optimize a bit when connected zoom and scrolling are unset,
zas_
parents: 869
diff changeset
801 if (lw->split_images[i] && lw->split_images[i] != lw->image)
530
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
802 {
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
803 gdouble sx, sy;
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
804 image_get_scroll_center(lw->split_images[i], &sx, &sy);
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
805 sx += dx;
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
806 sy += dy;
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
807 image_set_scroll_center(lw->split_images[i], sx, sy);
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
808 }
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
809 }
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
810
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
811 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
812
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
813 void layout_image_zoom_adjust(LayoutWindow *lw, gdouble increment, gboolean connect_zoom)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
814 {
130
7ea9fbcff664 connected zoom
nadvornik
parents: 129
diff changeset
815 gint i;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
816 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
817
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
818 image_zoom_adjust(lw->image, increment);
130
7ea9fbcff664 connected zoom
nadvornik
parents: 129
diff changeset
819
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
820 if (!connect_zoom) return;
879
0f85435ac335 Optimize a bit when connected zoom and scrolling are unset,
zas_
parents: 869
diff changeset
821
520
b5e79bcb46df Add missing spaces around equal sign.
zas_
parents: 512
diff changeset
822 for (i = 0; i < MAX_SPLIT_IMAGES; i++)
130
7ea9fbcff664 connected zoom
nadvornik
parents: 129
diff changeset
823 {
879
0f85435ac335 Optimize a bit when connected zoom and scrolling are unset,
zas_
parents: 869
diff changeset
824 if (lw->split_images[i] && lw->split_images[i] != lw->image)
130
7ea9fbcff664 connected zoom
nadvornik
parents: 129
diff changeset
825 image_zoom_adjust(lw->split_images[i], increment); ;
7ea9fbcff664 connected zoom
nadvornik
parents: 129
diff changeset
826 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
827 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
828
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
829 void layout_image_zoom_adjust_at_point(LayoutWindow *lw, gdouble increment, gint x, gint y, gboolean connect_zoom)
530
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
830 {
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
831 gint i;
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
832 if (!layout_valid(&lw)) return;
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
833
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
834 image_zoom_adjust_at_point(lw->image, increment, x, y);
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
835
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
836 if (!connect_zoom) return;
879
0f85435ac335 Optimize a bit when connected zoom and scrolling are unset,
zas_
parents: 869
diff changeset
837
530
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
838 for (i = 0; i < MAX_SPLIT_IMAGES; i++)
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
839 {
879
0f85435ac335 Optimize a bit when connected zoom and scrolling are unset,
zas_
parents: 869
diff changeset
840 if (lw->split_images[i] && lw->split_images[i] != lw->image)
530
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
841 image_zoom_adjust_at_point(lw->split_images[i], increment, x, y);
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
842 }
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
843 }
1d67ef911fa8 fixed connected zoom and scroll that didn't work in some cases
nadvornik
parents: 529
diff changeset
844
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
845 void layout_image_zoom_set(LayoutWindow *lw, gdouble zoom, gboolean connect_zoom)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
846 {
130
7ea9fbcff664 connected zoom
nadvornik
parents: 129
diff changeset
847 gint i;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
848 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
849
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
850 image_zoom_set(lw->image, zoom);
130
7ea9fbcff664 connected zoom
nadvornik
parents: 129
diff changeset
851
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
852 if (!connect_zoom) return;
879
0f85435ac335 Optimize a bit when connected zoom and scrolling are unset,
zas_
parents: 869
diff changeset
853
0f85435ac335 Optimize a bit when connected zoom and scrolling are unset,
zas_
parents: 869
diff changeset
854 for (i = 0; i < MAX_SPLIT_IMAGES; i++)
130
7ea9fbcff664 connected zoom
nadvornik
parents: 129
diff changeset
855 {
879
0f85435ac335 Optimize a bit when connected zoom and scrolling are unset,
zas_
parents: 869
diff changeset
856 if (lw->split_images[i] && lw->split_images[i] != lw->image)
130
7ea9fbcff664 connected zoom
nadvornik
parents: 129
diff changeset
857 image_zoom_set(lw->split_images[i], zoom);
7ea9fbcff664 connected zoom
nadvornik
parents: 129
diff changeset
858 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
859 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
860
1269
08b4598c7cba gint -> gboolean.
zas_
parents: 1252
diff changeset
861 void layout_image_zoom_set_fill_geometry(LayoutWindow *lw, gboolean vertical, gboolean connect_zoom)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
862 {
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
863 gint i;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
864 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
865
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
866 image_zoom_set_fill_geometry(lw->image, vertical);
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
867
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
868 if (!connect_zoom) return;
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
869
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
870 for (i = 0; i < MAX_SPLIT_IMAGES; i++)
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
871 {
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
872 if (lw->split_images[i] && lw->split_images[i] != lw->image)
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
873 image_zoom_set_fill_geometry(lw->split_images[i], vertical);
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
874 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
875 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
876
1566
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
877 void layout_image_alter_orientation(LayoutWindow *lw, AlterType type)
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
878 {
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
879 if (!layout_valid(&lw)) return;
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
880
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
881 image_alter_orientation(lw->image, type);
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
882 }
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
883
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
884 void layout_image_set_desaturate(LayoutWindow *lw, gboolean desaturate)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
885 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
886 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
887
1566
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
888 image_set_desaturate(lw->image, desaturate);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
889 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
890
1566
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
891 gboolean layout_image_get_desaturate(LayoutWindow *lw)
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
892 {
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
893 if (!layout_valid(&lw)) return FALSE;
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
894
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
895 return image_get_desaturate(lw->image);
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
896 }
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
897
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
898
3d9f5c078521 separated Orientation and Grayscale functions
nadvornik
parents: 1549
diff changeset
899
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
900 const gchar *layout_image_get_path(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
901 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
902 if (!layout_valid(&lw)) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
903
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
904 return image_get_path(lw->image);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
905 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
906
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
907 const gchar *layout_image_get_name(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
908 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
909 if (!layout_valid(&lw)) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
910
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
911 return image_get_name(lw->image);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
912 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
913
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
914 FileData *layout_image_get_fd(LayoutWindow *lw)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
915 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
916 if (!layout_valid(&lw)) return NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
917
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
918 return image_get_fd(lw->image);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
919 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
920
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
921 CollectionData *layout_image_get_collection(LayoutWindow *lw, CollectInfo **info)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
922 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
923 if (!layout_valid(&lw)) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
924
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
925 return image_get_collection(lw->image, info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
926 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
927
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
928 gint layout_image_get_index(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
929 {
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
930 return layout_list_get_index(lw, image_get_fd(lw->image));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
931 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
932
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
933 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
934 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
935 * image changers
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
936 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
937 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
938
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
939 void layout_image_set_fd(LayoutWindow *lw, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
940 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
941 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
942
885
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 879
diff changeset
943 image_change_fd(lw->image, fd, image_zoom_get_default(lw->image));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
944
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
945 layout_list_sync_fd(lw, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
946 layout_image_slideshow_continue_check(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
947 layout_bars_new_image(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
948 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
949
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
950 void layout_image_set_with_ahead(LayoutWindow *lw, FileData *fd, FileData *read_ahead_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
951 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
952 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
953
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 138
diff changeset
954 /*
2310066cc55a fixed preloading images in file list
nadvornik
parents: 138
diff changeset
955 This should be handled at the caller: in vflist_select_image
2310066cc55a fixed preloading images in file list
nadvornik
parents: 138
diff changeset
956 if (path)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
957 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
958 const gchar *old_path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
959
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
960 old_path = layout_image_get_path(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
961 if (old_path && strcmp(path, old_path) == 0) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
962 }
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
963 */
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
964 layout_image_set_fd(lw, fd);
334
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
965 if (options->image.enable_read_ahead) image_prebuffer_set(lw->image, read_ahead_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
966 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
967
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
968 void layout_image_set_index(LayoutWindow *lw, gint index)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
969 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
970 FileData *fd;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
971 FileData *read_ahead_fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
972 gint old;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
973
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
974 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
975
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
976 old = layout_list_get_index(lw, layout_image_get_fd(lw));
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
977 fd = layout_list_get_fd(lw, index);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
978
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
979 if (old > index)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
980 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
981 read_ahead_fd = layout_list_get_fd(lw, index - 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
982 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
983 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
984 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
985 read_ahead_fd = layout_list_get_fd(lw, index + 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
986 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
987
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 993
diff changeset
988 if (layout_selection_count(lw, 0) > 1)
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
989 {
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 993
diff changeset
990 GList *x = layout_selection_list_by_index(lw);
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 993
diff changeset
991 GList *y;
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 993
diff changeset
992 GList *last;
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
993
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 993
diff changeset
994 for (last = y = x; y; y = y->next)
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 993
diff changeset
995 last = y;
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
996 for (y = x; y && (GPOINTER_TO_INT(y->data)) != index; y = y->next)
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
997 ;
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
998
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
999 if (y)
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1000 {
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1001 gint newindex;
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1002
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1003 if ((index > old && (index != GPOINTER_TO_INT(last->data) || old != GPOINTER_TO_INT(x->data)))
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 993
diff changeset
1004 || (old == GPOINTER_TO_INT(last->data) && index == GPOINTER_TO_INT(x->data)))
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1005 {
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1006 if (y->next)
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1007 newindex = GPOINTER_TO_INT(y->next->data);
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1008 else
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1009 newindex = GPOINTER_TO_INT(x->data);
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1010 }
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1011 else
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1012 {
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1013 if (y->prev)
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1014 newindex = GPOINTER_TO_INT(y->prev->data);
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1015 else
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1016 newindex = GPOINTER_TO_INT(last->data);
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 993
diff changeset
1017 }
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1018
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1019 read_ahead_fd = layout_list_get_fd(lw, newindex);
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1020 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1021
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1022 while (x)
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1023 x = g_list_remove(x, x->data);
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1024 }
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1025
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1026 layout_image_set_with_ahead(lw, fd, read_ahead_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1027 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1028
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
1029 static void layout_image_set_collection_real(LayoutWindow *lw, CollectionData *cd, CollectInfo *info, gboolean forward)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1030 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1031 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1032
885
ad420f2eb789 Use a specific enum for image.zoom_mode values (ZoomMode) and
zas_
parents: 879
diff changeset
1033 image_change_from_collection(lw->image, cd, info, image_zoom_get_default(lw->image));
334
df868b947aa0 Rename image-related options.
zas_
parents: 327
diff changeset
1034 if (options->image.enable_read_ahead)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1035 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1036 CollectInfo *r_info;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1037 if (forward)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1038 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1039 r_info = collection_next_by_info(cd, info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1040 if (!r_info) r_info = collection_prev_by_info(cd, info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1041 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1042 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1043 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1044 r_info = collection_prev_by_info(cd, info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1045 if (!r_info) r_info = collection_next_by_info(cd, info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1046 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1047 if (r_info) image_prebuffer_set(lw->image, r_info->fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1048 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1049
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1050 layout_image_slideshow_continue_check(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1051 layout_bars_new_image(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1052 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1053
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1054 void layout_image_set_collection(LayoutWindow *lw, CollectionData *cd, CollectInfo *info)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1055 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1056 layout_image_set_collection_real(lw, cd, info, TRUE);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1057 layout_list_sync_fd(lw, layout_image_get_fd(lw));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1058 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1059
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1060 void layout_image_refresh(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1061 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1062 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1063
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1064 image_reload(lw->image);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1065 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1066
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1067 void layout_image_color_profile_set(LayoutWindow *lw,
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1547
diff changeset
1068 gint input_type,
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1397
diff changeset
1069 gboolean use_image)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1070 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1071 if (!layout_valid(&lw)) return;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1072
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1547
diff changeset
1073 image_color_profile_set(lw->image, input_type, use_image);
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1074 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1075
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1397
diff changeset
1076 gboolean layout_image_color_profile_get(LayoutWindow *lw,
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1547
diff changeset
1077 gint *input_type,
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1397
diff changeset
1078 gboolean *use_image)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1079 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1080 if (!layout_valid(&lw)) return FALSE;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1081
1548
b5608391f479 support X11 screen profile
nadvornik
parents: 1547
diff changeset
1082 return image_color_profile_get(lw->image, input_type, use_image);
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1083 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1084
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1397
diff changeset
1085 void layout_image_color_profile_set_use(LayoutWindow *lw, gboolean enable)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1086 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1087 if (!layout_valid(&lw)) return;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1088
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1089 image_color_profile_set_use(lw->image, enable);
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1090 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1091
1431
7e180091e0b7 More gboolean and tidy up.
zas_
parents: 1397
diff changeset
1092 gboolean layout_image_color_profile_get_use(LayoutWindow *lw)
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1093 {
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1094 if (!layout_valid(&lw)) return FALSE;
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1095
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1096 return image_color_profile_get_use(lw->image);
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1097 }
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1098
1549
7302ff300a52 show color management status on statusbar
nadvornik
parents: 1548
diff changeset
1099 gboolean layout_image_color_profile_get_status(LayoutWindow *lw, gchar **image_profile, gchar **screen_profile)
426
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 369
diff changeset
1100 {
1549
7302ff300a52 show color management status on statusbar
nadvornik
parents: 1548
diff changeset
1101 if (!layout_valid(&lw)) return FALSE;
426
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 369
diff changeset
1102
1549
7302ff300a52 show color management status on statusbar
nadvornik
parents: 1548
diff changeset
1103 return image_color_profile_get_status(lw->image, image_profile, screen_profile);
426
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 369
diff changeset
1104 }
9fe0ca1b5263 show the AdobeRGB profile in the menu, indicate input profile from image
nadvornik
parents: 369
diff changeset
1105
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1106 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1107 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1108 * list walkers
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1109 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1110 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1111
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1112 void layout_image_next(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1113 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1114 gint current;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1115 CollectionData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1116 CollectInfo *info;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1117
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1118 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1119
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1120 if (layout_image_slideshow_active(lw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1121 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1122 layout_image_slideshow_next(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1123 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1124 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1125
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1126 if (layout_selection_count(lw, 0) > 1)
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1127 {
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1128 GList *x = layout_selection_list_by_index(lw);
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
1129 gint old = layout_list_get_index(lw, layout_image_get_fd(lw));
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1130 GList *y;
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1131
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1132 for (y = x; y && (GPOINTER_TO_INT(y->data)) != old; y = y->next)
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1133 ;
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1134 if (y)
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1135 {
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1136 if (y->next)
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1137 layout_image_set_index(lw, GPOINTER_TO_INT(y->next->data));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1138 else
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1139 layout_image_set_index(lw, GPOINTER_TO_INT(x->data));
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1140 }
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1141 while (x)
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1142 x = g_list_remove(x, x->data);
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1143 if (y) /* not dereferenced */
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1144 return;
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1145 }
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1146
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1147 cd = image_get_collection(lw->image, &info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1148
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1149 if (cd && info)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1150 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1151 info = collection_next_by_info(cd, info);
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1152 if (info)
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1153 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1154 layout_image_set_collection_real(lw, cd, info, TRUE);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1155 }
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1156 else
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1157 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1158 image_osd_icon(lw->image, IMAGE_OSD_LAST, -1);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1159 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1160 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1161 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1162
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1163 current = layout_image_get_index(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1164
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1165 if (current >= 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1166 {
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 671
diff changeset
1167 if ((guint) current < layout_list_count(lw, NULL) - 1)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1168 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1169 layout_image_set_index(lw, current + 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1170 }
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1171 else
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1172 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1173 image_osd_icon(lw->image, IMAGE_OSD_LAST, -1);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1174 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1175 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1176 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1177 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1178 layout_image_set_index(lw, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1179 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1180 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1181
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1182 void layout_image_prev(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1183 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1184 gint current;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1185 CollectionData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1186 CollectInfo *info;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1187
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1188 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1189
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1190 if (layout_image_slideshow_active(lw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1191 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1192 layout_image_slideshow_prev(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1193 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1194 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1195
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1196 if (layout_selection_count(lw, 0) > 1)
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1197 {
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1198 GList *x = layout_selection_list_by_index(lw);
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
1199 gint old = layout_list_get_index(lw, layout_image_get_fd(lw));
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1200 GList *y;
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1201 GList *last;
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1202
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1203 for (last = y = x; y; y = y->next)
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1204 last = y;
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1205 for (y = x; y && (GPOINTER_TO_INT(y->data)) != old; y = y->next)
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1206 ;
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1207 if (y)
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1208 {
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1209 if (y->prev)
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1210 layout_image_set_index(lw, GPOINTER_TO_INT(y->prev->data));
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1211 else
529
8815fea478ee fix warning cast from pointer to integer of different size (when an integer is
bruclik
parents: 520
diff changeset
1212 layout_image_set_index(lw, GPOINTER_TO_INT(last->data));
220
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1213 }
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1214 while (x)
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1215 x = g_list_remove(x, x->data);
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1216 if (y) /* not dereferenced */
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1217 return;
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1218 }
7670d5653e1f Honor selection while fullscreen navigation.
zas_
parents: 208
diff changeset
1219
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1220 cd = image_get_collection(lw->image, &info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1221
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1222 if (cd && info)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1223 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1224 info = collection_prev_by_info(cd, info);
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1225 if (info)
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1226 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1227 layout_image_set_collection_real(lw, cd, info, FALSE);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1228 }
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1229 else
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1230 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1231 image_osd_icon(lw->image, IMAGE_OSD_FIRST, -1);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1232 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1233 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1234 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1235
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1236 current = layout_image_get_index(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1237
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1238 if (current >= 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1239 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1240 if (current > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1241 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1242 layout_image_set_index(lw, current - 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1243 }
122
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1244 else
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1245 {
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1246 image_osd_icon(lw->image, IMAGE_OSD_FIRST, -1);
e2a8b7f2165b Sat Dec 2 16:44:48 2006 John Ellis <johne@verizon.net>
gqview
parents: 117
diff changeset
1247 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1248 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1249 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1250 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1251 layout_image_set_index(lw, layout_list_count(lw, NULL) - 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1252 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1253 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1254
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1255 void layout_image_first(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1256 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1257 gint current;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1258 CollectionData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1259 CollectInfo *info;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1260
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1261 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1262
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1263 cd = image_get_collection(lw->image, &info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1264
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1265 if (cd && info)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1266 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1267 CollectInfo *new;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1268 new = collection_get_first(cd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1269 if (new != info) layout_image_set_collection_real(lw, cd, new, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1270 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1271 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1272
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1273 current = layout_image_get_index(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1274 if (current != 0 && layout_list_count(lw, NULL) > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1275 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1276 layout_image_set_index(lw, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1277 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1278 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1279
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1280 void layout_image_last(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1281 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1282 gint current;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1283 gint count;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1284 CollectionData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1285 CollectInfo *info;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1286
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1287 if (!layout_valid(&lw)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1288
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1289 cd = image_get_collection(lw->image, &info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1290
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1291 if (cd && info)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1292 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1293 CollectInfo *new;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1294 new = collection_get_last(cd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1295 if (new != info) layout_image_set_collection_real(lw, cd, new, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1296 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1297 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1298
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1299 current = layout_image_get_index(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1300 count = layout_list_count(lw, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1301 if (current != count - 1 && count > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1302 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1303 layout_image_set_index(lw, count - 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1304 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1305 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1306
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1307 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1308 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1309 * mouse callbacks
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1310 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1311 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1312
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1313 static gint image_idx(LayoutWindow *lw, ImageWindow *imd)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1314 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1315 gint i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1316
520
b5e79bcb46df Add missing spaces around equal sign.
zas_
parents: 512
diff changeset
1317 for (i = 0; i < MAX_SPLIT_IMAGES; i++)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1318 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1319 if (lw->split_images[i] == imd)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1320 break;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1321 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1322 if (i < MAX_SPLIT_IMAGES)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1323 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1324 return i;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1325 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1326 return -1;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1327 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1328
1481
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1329 static void layout_image_focus_in_cb(ImageWindow *imd, gpointer data)
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1330 {
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1331 LayoutWindow *lw = data;
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1332
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1333 gint i = image_idx(lw, imd);
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1334
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1335 if (i != -1)
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1336 {
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1337 DEBUG_1("image activate focus_in %d", i);
1659
71b29f70d08c fixed jumping of filelist on focus_in event
nadvornik
parents: 1636
diff changeset
1338 layout_image_activate(lw, i, FALSE);
1481
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1339 }
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1340 }
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1341
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1342
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1343 static void layout_image_button_cb(ImageWindow *imd, GdkEventButton *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1344 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1345 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1346 GtkWidget *menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1347
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1348 switch (event->button)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1349 {
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
1350 case MOUSE_BUTTON_LEFT:
1286
eba0b4ae413b do not switch to the next image on mouse click in split mode
nadvornik
parents: 1284
diff changeset
1351 if (lw->split_mode == SPLIT_NONE)
eba0b4ae413b do not switch to the next image on mouse click in split mode
nadvornik
parents: 1284
diff changeset
1352 layout_image_next(lw);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1353 break;
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
1354 case MOUSE_BUTTON_MIDDLE:
1286
eba0b4ae413b do not switch to the next image on mouse click in split mode
nadvornik
parents: 1284
diff changeset
1355 if (lw->split_mode == SPLIT_NONE)
eba0b4ae413b do not switch to the next image on mouse click in split mode
nadvornik
parents: 1284
diff changeset
1356 layout_image_prev(lw);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1357 break;
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
1358 case MOUSE_BUTTON_RIGHT:
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1359 menu = layout_image_pop_menu(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1360 if (imd == lw->image)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1361 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1362 g_object_set_data(G_OBJECT(menu), "click_parent", imd->widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1363 }
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1364 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, event->time);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1365 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1366 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1367 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1368 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1369 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1370
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1371 static void layout_image_scroll_cb(ImageWindow *imd, GdkEventScroll *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1372 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1373 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1374
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1375 gint i = image_idx(lw, imd);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1376
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1377 if (i != -1)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1378 {
506
fc9c8a3e1a8b Handle the newline in DEBUG_N() macro instead of adding one
zas_
parents: 497
diff changeset
1379 DEBUG_1("image activate scroll %d", i);
1659
71b29f70d08c fixed jumping of filelist on focus_in event
nadvornik
parents: 1636
diff changeset
1380 layout_image_activate(lw, i, FALSE);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1381 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1382
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1383
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1384 if (event->state & GDK_CONTROL_MASK)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1385 {
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1386 switch (event->direction)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1387 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1388 case GDK_SCROLL_UP:
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
1389 layout_image_zoom_adjust_at_point(lw, get_zoom_increment(), event->x, event->y, event->state & GDK_SHIFT_MASK);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1390 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1391 case GDK_SCROLL_DOWN:
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
1392 layout_image_zoom_adjust_at_point(lw, -get_zoom_increment(), event->x, event->y, event->state & GDK_SHIFT_MASK);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1393 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1394 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1395 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1396 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1397 }
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
1398 else if (options->mousewheel_scrolls)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1399 {
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1400 switch (event->direction)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1401 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1402 case GDK_SCROLL_UP:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1403 image_scroll(imd, 0, -MOUSEWHEEL_SCROLL_SIZE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1404 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1405 case GDK_SCROLL_DOWN:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1406 image_scroll(imd, 0, MOUSEWHEEL_SCROLL_SIZE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1407 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1408 case GDK_SCROLL_LEFT:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1409 image_scroll(imd, -MOUSEWHEEL_SCROLL_SIZE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1410 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1411 case GDK_SCROLL_RIGHT:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1412 image_scroll(imd, MOUSEWHEEL_SCROLL_SIZE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1413 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1414 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1415 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1416 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1417 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1418 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1419 {
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1420 switch (event->direction)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1421 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1422 case GDK_SCROLL_UP:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1423 layout_image_prev(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1424 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1425 case GDK_SCROLL_DOWN:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1426 layout_image_next(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1427 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1428 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1429 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1430 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1431 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1432 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1433
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1434 static void layout_image_drag_cb(ImageWindow *imd, GdkEventButton *event, gdouble dx, gdouble dy, gpointer data)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1435 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1436 gint i;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1437 LayoutWindow *lw = data;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1438
1047
81ec7d977d5f use SHIFT for connected scroll and zoom
nadvornik
parents: 1043
diff changeset
1439 if (!(event->state & GDK_SHIFT_MASK)) return;
869
371a1c3d4504 layout_image_drag_cb(): optimize when connected scrolling is unset.
zas_
parents: 868
diff changeset
1440
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1441 for (i = 0; i < MAX_SPLIT_IMAGES; i++)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1442 {
869
371a1c3d4504 layout_image_drag_cb(): optimize when connected scrolling is unset.
zas_
parents: 868
diff changeset
1443 if (lw->split_images[i] && lw->split_images[i] != imd)
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1444 {
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1445 gdouble sx, sy;
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1446
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1447 if (event->state & GDK_CONTROL_MASK)
129
89fc00ffbce2 started relative scroll, keep scroll position
nadvornik
parents: 128
diff changeset
1448 {
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1449 image_get_scroll_center(imd, &sx, &sy);
129
89fc00ffbce2 started relative scroll, keep scroll position
nadvornik
parents: 128
diff changeset
1450 }
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1451 else
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1452 {
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1453 image_get_scroll_center(lw->split_images[i], &sx, &sy);
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1454 sx += dx;
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1455 sy += dy;
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1456 }
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1457 image_set_scroll_center(lw->split_images[i], sx, sy);
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1458 }
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1459 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1460 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1461
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1462 static void layout_image_button_inactive_cb(ImageWindow *imd, GdkEventButton *event, gpointer data)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1463 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1464 LayoutWindow *lw = data;
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1465 GtkWidget *menu;
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1466 gint i = image_idx(lw, imd);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1467
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1468 if (i != -1)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1469 {
1659
71b29f70d08c fixed jumping of filelist on focus_in event
nadvornik
parents: 1636
diff changeset
1470 layout_image_activate(lw, i, FALSE);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1471 }
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1472
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1473 switch (event->button)
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1474 {
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
1475 case MOUSE_BUTTON_RIGHT:
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1476 menu = layout_image_pop_menu(lw);
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1477 if (imd == lw->image)
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1478 {
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1479 g_object_set_data(G_OBJECT(menu), "click_parent", imd->widget);
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1480 }
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1481 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, event->time);
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1482 break;
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1483 default:
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1484 break;
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1485 }
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1486
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1487 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1488
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1489 static void layout_image_drag_inactive_cb(ImageWindow *imd, GdkEventButton *event, gdouble dx, gdouble dy, gpointer data)
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1490 {
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1491 LayoutWindow *lw = data;
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1492 gint i = image_idx(lw, imd);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1493
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1494 if (i != -1)
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1495 {
1659
71b29f70d08c fixed jumping of filelist on focus_in event
nadvornik
parents: 1636
diff changeset
1496 layout_image_activate(lw, i, FALSE);
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1497 }
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1498
129
89fc00ffbce2 started relative scroll, keep scroll position
nadvornik
parents: 128
diff changeset
1499 /* continue as with active image */
868
db6977f8b0f1 Reduce number of parameters (mostly unused), just pass the event pointer.
zas_
parents: 837
diff changeset
1500 layout_image_drag_cb(imd, event, dx, dy, data);
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1501 }
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1502
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1503
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1504 static void layout_image_set_buttons(LayoutWindow *lw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1505 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1506 image_set_button_func(lw->image, layout_image_button_cb, lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1507 image_set_scroll_func(lw->image, layout_image_scroll_cb, lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1508 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1509
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1510 static void layout_image_set_buttons_inactive(LayoutWindow *lw, gint i)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1511 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1512 image_set_button_func(lw->split_images[i], layout_image_button_inactive_cb, lw);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1513 image_set_scroll_func(lw->split_images[i], layout_image_scroll_cb, lw);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1514 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1515
1377
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1516 /* Returns the length of an integer */
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1517 static gint num_length(gint num)
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1518 {
1433
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
1519 gint len = 0;
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
1520 if (num < 0) num = -num;
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
1521 while (num)
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
1522 {
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
1523 num /= 10;
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
1524 len++;
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
1525 }
b4ad1d201279 Use gboolean where applicable, minor cleanup and indentations fixes.
zas_
parents: 1432
diff changeset
1526 return len;
1377
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1527 }
1375
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1528
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1529 void layout_status_update_pixel_cb(PixbufRenderer *pr, gpointer data)
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1530 {
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1531 LayoutWindow *lw = data;
1377
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1532 gint x_pixel, y_pixel;
1584
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1533 gint width, height;
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1534 gchar *text;
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1535 PangoAttrList *attrs;
1375
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1536
1377
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1537 if (!data || !layout_valid(&lw) || !lw->image
1584
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1538 || !lw->options.show_info_pixel || lw->image->unknown) return;
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1539
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1540 pixbuf_renderer_get_image_size(pr, &width, &height);
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1541 if (width < 1 || height < 1) return;
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1542
1377
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1543 pixbuf_renderer_get_mouse_position(pr, &x_pixel, &y_pixel);
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1544
1492
c350242b1a5d Fixed bug where pixel/color information at x=0 coordinates werent shown:
zas_
parents: 1481
diff changeset
1545 if(x_pixel >= 0 && y_pixel >= 0)
1377
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1546 {
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1547 gint r_mouse, g_mouse, b_mouse;
1375
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1548
1377
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1549 pixbuf_renderer_get_pixel_colors(pr, x_pixel, y_pixel,
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1550 &r_mouse, &g_mouse, &b_mouse);
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1551
1584
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1552 text = g_strdup_printf(_("[%*d,%*d]: RGB(%3d,%3d,%3d)"),
1377
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1553 num_length(width - 1), x_pixel,
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1554 num_length(height - 1), y_pixel,
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1555 r_mouse, g_mouse, b_mouse);
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1556
1375
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1557 }
1377
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1558 else
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1559 {
1584
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1560 text = g_strdup_printf(_("[%*s,%*s]: RGB(---,---,---)"),
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1561 num_length(width - 1), " ",
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1562 num_length(height - 1), " ");
1377
dab37628f5d8 layout_status_update_pixel_cb(): cleanup and optimization, drop pango markup in i18n string, use a small function to calculate numbers length, only allocate text when needed.
zas_
parents: 1375
diff changeset
1563 }
1584
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1564
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1565 attrs = pango_attr_list_new();
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1566 pango_attr_list_insert(attrs, pango_attr_family_new("Monospace"));
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1567 gtk_label_set_text(GTK_LABEL(lw->info_pixel), text);
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1568 gtk_label_set_attributes(GTK_LABEL(lw->info_pixel), attrs);
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1569 pango_attr_list_unref(attrs);
0cd2268f500b improved pixel info, changed the menu entry from "Hide" to "Show",
nadvornik
parents: 1566
diff changeset
1570 g_free(text);
1375
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1571 }
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1572
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1573
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1574 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1575 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1576 * setup
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1577 *----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1578 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1579
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1580 static void layout_image_update_cb(ImageWindow *imd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1581 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1582 LayoutWindow *lw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1583 layout_status_update_image(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1584 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1585
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1586 GtkWidget *layout_image_new(LayoutWindow *lw, gint i)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1587 {
837
f8c22438376c use GtkSizeGroup to control initial size of split images
nadvornik
parents: 836
diff changeset
1588 if (!lw->split_image_sizegroup) lw->split_image_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);
f8c22438376c use GtkSizeGroup to control initial size of split images
nadvornik
parents: 836
diff changeset
1589
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1590 if (!lw->split_images[i])
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1591 {
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1592 lw->split_images[i] = image_new(TRUE);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1593
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1037
diff changeset
1594 #if GTK_CHECK_VERSION(2,12,0)
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1037
diff changeset
1595 g_object_ref(lw->split_images[i]->widget);
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1037
diff changeset
1596 #else
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1597 gtk_widget_ref(lw->split_images[i]->widget);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1037
diff changeset
1598 #endif
1375
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1599
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1600 g_signal_connect(G_OBJECT(lw->split_images[i]->pr), "update-pixel",
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1601 G_CALLBACK(layout_status_update_pixel_cb), lw);
df58e511d90e Display pixel coordinates and rgb - patch by Ruben Stein
nadvornik
parents: 1373
diff changeset
1602
1626
1d7941c147be Add an option to Image preferences to restrict custom border to fullscreen mode only. Bug 2798062.
zas_
parents: 1584
diff changeset
1603 image_background_set_color_from_options(lw->split_images[i], FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1604
888
d8e1e820cee7 reload changed images
nadvornik
parents: 885
diff changeset
1605 image_auto_refresh_enable(lw->split_images[i], TRUE);
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 86
diff changeset
1606
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1607 layout_image_dnd_init(lw, i);
207
ec068409bee7 fixed color management initialization
nadvornik
parents: 196
diff changeset
1608 image_color_profile_set(lw->split_images[i],
327
049d6b00cc14 Rename color profile options.
zas_
parents: 320
diff changeset
1609 options->color_profile.input_type,
049d6b00cc14 Rename color profile options.
zas_
parents: 320
diff changeset
1610 options->color_profile.use_image);
049d6b00cc14 Rename color profile options.
zas_
parents: 320
diff changeset
1611 image_color_profile_set_use(lw->split_images[i], options->color_profile.enabled);
837
f8c22438376c use GtkSizeGroup to control initial size of split images
nadvornik
parents: 836
diff changeset
1612
f8c22438376c use GtkSizeGroup to control initial size of split images
nadvornik
parents: 836
diff changeset
1613 gtk_size_group_add_widget(lw->split_image_sizegroup, lw->split_images[i]->widget);
1383
3c9abbc05792 use standard GtkHPaned for sidebar width
nadvornik
parents: 1377
diff changeset
1614 gtk_widget_set_size_request(lw->split_images[i]->widget, IMAGE_MIN_WIDTH, -1);
3c9abbc05792 use standard GtkHPaned for sidebar width
nadvornik
parents: 1377
diff changeset
1615
1481
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1616 image_set_focus_in_func(lw->split_images[i], layout_image_focus_in_cb, lw);
96897bd5f6cd active image follows keyboard focus
nadvornik
parents: 1433
diff changeset
1617
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1618 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1619
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1620 return lw->split_images[i]->widget;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1621 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1622
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1623 void layout_image_deactivate(LayoutWindow *lw, gint i)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1624 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1625 if (!lw->split_images[i]) return;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1626 image_set_update_func(lw->split_images[i], NULL, NULL);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1627 layout_image_set_buttons_inactive(lw, i);
129
89fc00ffbce2 started relative scroll, keep scroll position
nadvornik
parents: 128
diff changeset
1628 image_set_drag_func(lw->split_images[i], layout_image_drag_inactive_cb, lw);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1629
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1630 image_attach_window(lw->split_images[i], NULL, NULL, NULL, FALSE);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1631 image_select(lw->split_images[i], FALSE);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1632 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1633
1659
71b29f70d08c fixed jumping of filelist on focus_in event
nadvornik
parents: 1636
diff changeset
1634 /* force should be set after change of lw->split_mode */
71b29f70d08c fixed jumping of filelist on focus_in event
nadvornik
parents: 1636
diff changeset
1635 void layout_image_activate(LayoutWindow *lw, gint i, gboolean force)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1636 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1637 FileData *fd;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1638
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1639 if (!lw->split_images[i]) return;
1659
71b29f70d08c fixed jumping of filelist on focus_in event
nadvornik
parents: 1636
diff changeset
1640 if (!force && lw->active_split_image == i) return;
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1641
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1642 /* deactivate currently active */
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1643 if (lw->active_split_image != i)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1644 layout_image_deactivate(lw, lw->active_split_image);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1645
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1646 lw->image = lw->split_images[i];
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1647 lw->active_split_image = i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1648
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1649 image_set_update_func(lw->image, layout_image_update_cb, lw);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1650 layout_image_set_buttons(lw);
128
98e2632b5d3d improved connected scroll and active image switching
nadvornik
parents: 127
diff changeset
1651 image_set_drag_func(lw->image, layout_image_drag_cb, lw);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1652
288
d1f74154463e Replace occurences of Geeqie / geeqie by constants defined in main.h.
zas_
parents: 281
diff changeset
1653 image_attach_window(lw->image, lw->window, NULL, GQ_APPNAME, FALSE);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1654
152
2c534c7c8c1f do not hilight selected image in SPLIT_NONE
nadvornik
parents: 144
diff changeset
1655 /* do not hilight selected image in SPLIT_NONE */
2c534c7c8c1f do not hilight selected image in SPLIT_NONE
nadvornik
parents: 144
diff changeset
1656 /* maybe the image should be selected always and hilight should be controled by
2c534c7c8c1f do not hilight selected image in SPLIT_NONE
nadvornik
parents: 144
diff changeset
1657 another image option */
2c534c7c8c1f do not hilight selected image in SPLIT_NONE
nadvornik
parents: 144
diff changeset
1658 if (lw->split_mode != SPLIT_NONE)
2c534c7c8c1f do not hilight selected image in SPLIT_NONE
nadvornik
parents: 144
diff changeset
1659 image_select(lw->split_images[i], TRUE);
2c534c7c8c1f do not hilight selected image in SPLIT_NONE
nadvornik
parents: 144
diff changeset
1660 else
2c534c7c8c1f do not hilight selected image in SPLIT_NONE
nadvornik
parents: 144
diff changeset
1661 image_select(lw->split_images[i], FALSE);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1662
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1663 fd = image_get_fd(lw->image);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1664
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1665 if (fd)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1666 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1667 // layout_list_sync_path(lw, path);
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 753
diff changeset
1668 layout_set_fd(lw, fd);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1669 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1670 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1671
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1672
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1673 static void layout_image_setup_split_common(LayoutWindow *lw, gint n)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1674 {
1636
157ef2c48fa2 do not show wide frame in single image mode
nadvornik
parents: 1627
diff changeset
1675 gboolean frame = (n > 1) || (!lw->options.tools_float && !lw->options.tools_hidden);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1676 gint i;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1677
1169
cb699bd2742d layout_image_setup_split_*(): simplify code.
zas_
parents: 1168
diff changeset
1678 for (i = 0; i < n; i++)
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1679 if (!lw->split_images[i])
153
0e54267762f6 fixed copying zoom an scroll values from the original image on splitting
nadvornik
parents: 152
diff changeset
1680 {
1172
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1681 FileData *img_fd = NULL;
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1682 double zoom = 0.0;
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1683
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1684 layout_image_new(lw, i);
1170
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1685 image_set_frame(lw->split_images[i], frame);
1636
157ef2c48fa2 do not show wide frame in single image mode
nadvornik
parents: 1627
diff changeset
1686 image_set_selectable(lw->split_images[i], (n > 1));
1173
52ce0263cb7c Use the last selected images for the splitted views. Ie. when 5 images are selected, the last one is displayed, split quad while open images 5,4,3,2. It seems better to me.
zas_
parents: 1172
diff changeset
1687
1373
168e5597ddc7 overlay now survives image split
nadvornik
parents: 1347
diff changeset
1688 if (lw->image)
168e5597ddc7 overlay now survives image split
nadvornik
parents: 1347
diff changeset
1689 {
168e5597ddc7 overlay now survives image split
nadvornik
parents: 1347
diff changeset
1690 image_osd_copy_status(lw->image, lw->split_images[i]);
168e5597ddc7 overlay now survives image split
nadvornik
parents: 1347
diff changeset
1691 }
168e5597ddc7 overlay now survives image split
nadvornik
parents: 1347
diff changeset
1692
1172
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1693 if (layout_selection_count(lw, 0) > 1)
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1694 {
1173
52ce0263cb7c Use the last selected images for the splitted views. Ie. when 5 images are selected, the last one is displayed, split quad while open images 5,4,3,2. It seems better to me.
zas_
parents: 1172
diff changeset
1695 GList *work = g_list_last(layout_selection_list(lw));
1172
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1696 gint j = 0;
1173
52ce0263cb7c Use the last selected images for the splitted views. Ie. when 5 images are selected, the last one is displayed, split quad while open images 5,4,3,2. It seems better to me.
zas_
parents: 1172
diff changeset
1697
52ce0263cb7c Use the last selected images for the splitted views. Ie. when 5 images are selected, the last one is displayed, split quad while open images 5,4,3,2. It seems better to me.
zas_
parents: 1172
diff changeset
1698 if (work) work = work->prev;
1172
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1699
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1700 while (work && j < i)
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1701 {
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1702 FileData *fd = work->data;
1173
52ce0263cb7c Use the last selected images for the splitted views. Ie. when 5 images are selected, the last one is displayed, split quad while open images 5,4,3,2. It seems better to me.
zas_
parents: 1172
diff changeset
1703 work = work->prev;
1172
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1704
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1705 j++;
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1706 if (!fd || !*fd->path) continue;
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1707 img_fd = fd;
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1708 }
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1709 }
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1710
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1711 if (!img_fd && lw->image)
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1712 {
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1713 img_fd = image_get_fd(lw->image);
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1714 zoom = image_zoom_get(lw->image);
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1715 }
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1716
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1717 if (img_fd)
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1718 {
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1719 gdouble sx, sy;
1172
08ef8c605723 When more than one image is selected, Split Horizontal, Vertical and Quad will use selected images when initialized.
zas_
parents: 1171
diff changeset
1720 image_change_fd(lw->split_images[i], img_fd, zoom);
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1721 image_get_scroll_center(lw->image, &sx, &sy);
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1722 image_set_scroll_center(lw->split_images[i], sx, sy);
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1723 }
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1724 layout_image_deactivate(lw, i);
153
0e54267762f6 fixed copying zoom an scroll values from the original image on splitting
nadvornik
parents: 152
diff changeset
1725 }
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1726 else
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1727 {
1170
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1728 image_set_frame(lw->split_images[i], frame);
1636
157ef2c48fa2 do not show wide frame in single image mode
nadvornik
parents: 1627
diff changeset
1729 image_set_selectable(lw->split_images[i], (n > 1));
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1730 }
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1731
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1732 for (i = n; i < MAX_SPLIT_IMAGES; i++)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1733 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1734 if (lw->split_images[i])
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1735 {
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1037
diff changeset
1736 #if GTK_CHECK_VERSION(2,12,0)
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1037
diff changeset
1737 g_object_unref(lw->split_images[i]->widget);
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1037
diff changeset
1738 #else
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1739 gtk_widget_unref(lw->split_images[i]->widget);
1043
5fc64d6252e7 Replaced gtk depreceated code.
bruclik
parents: 1037
diff changeset
1740 #endif
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1741 lw->split_images[i] = NULL;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1742 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1743 }
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1744
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1745 if (!lw->image || lw->active_split_image < 0 || lw->active_split_image >= n)
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1746 {
1659
71b29f70d08c fixed jumping of filelist on focus_in event
nadvornik
parents: 1636
diff changeset
1747 layout_image_activate(lw, 0, TRUE);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1748 }
1273
1ac2baeb8dc9 fixed switch from single to split image
nadvornik
parents: 1272
diff changeset
1749 else
1ac2baeb8dc9 fixed switch from single to split image
nadvornik
parents: 1272
diff changeset
1750 {
1ac2baeb8dc9 fixed switch from single to split image
nadvornik
parents: 1272
diff changeset
1751 /* this will draw the frame around selected image (image_select)
1ac2baeb8dc9 fixed switch from single to split image
nadvornik
parents: 1272
diff changeset
1752 on switch from single to split images */
1659
71b29f70d08c fixed jumping of filelist on focus_in event
nadvornik
parents: 1636
diff changeset
1753 layout_image_activate(lw, lw->active_split_image, TRUE);
1273
1ac2baeb8dc9 fixed switch from single to split image
nadvornik
parents: 1272
diff changeset
1754 }
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1755 }
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1756
1170
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1757 GtkWidget *layout_image_setup_split_none(LayoutWindow *lw)
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1758 {
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1759 lw->split_mode = SPLIT_NONE;
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1760
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1761 layout_image_setup_split_common(lw, 1);
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1762
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1763 lw->split_image_widget = lw->split_images[0]->widget;
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1764
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1765 return lw->split_image_widget;
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1766 }
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1767
159f225985c5 Use common code for layout_image_setup_split_none() too.
zas_
parents: 1169
diff changeset
1768
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1769 GtkWidget *layout_image_setup_split_hv(LayoutWindow *lw, gboolean horizontal)
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1770 {
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1771 GtkWidget *paned;
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1772
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1773 lw->split_mode = horizontal ? SPLIT_HOR : SPLIT_VERT;
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1774
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1775 layout_image_setup_split_common(lw, 2);
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1776
156
dd6dc0a55d3d better integration of split image functions into menu
nadvornik
parents: 153
diff changeset
1777 /* horizontal split means vpaned and vice versa */
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1778 if (horizontal)
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1779 paned = gtk_vpaned_new();
156
dd6dc0a55d3d better integration of split image functions into menu
nadvornik
parents: 153
diff changeset
1780 else
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1781 paned = gtk_hpaned_new();
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1782
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1783 gtk_paned_pack1(GTK_PANED(paned), lw->split_images[0]->widget, TRUE, TRUE);
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1784 gtk_paned_pack2(GTK_PANED(paned), lw->split_images[1]->widget, TRUE, TRUE);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1785
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1786 gtk_widget_show(lw->split_images[0]->widget);
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1787 gtk_widget_show(lw->split_images[1]->widget);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1788
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1789 lw->split_image_widget = paned;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1790
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1791 return lw->split_image_widget;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1792
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1793 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1794
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1795 GtkWidget *layout_image_setup_split_quad(LayoutWindow *lw)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1796 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1797 GtkWidget *hpaned;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1798 GtkWidget *vpaned1;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1799 GtkWidget *vpaned2;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1800 gint i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1801
152
2c534c7c8c1f do not hilight selected image in SPLIT_NONE
nadvornik
parents: 144
diff changeset
1802 lw->split_mode = SPLIT_QUAD;
2c534c7c8c1f do not hilight selected image in SPLIT_NONE
nadvornik
parents: 144
diff changeset
1803
1168
0c7534002b0a layout_image_setup_split_*(): move common code to a new function layout_image_setup_split_common().
zas_
parents: 1055
diff changeset
1804 layout_image_setup_split_common(lw, 4);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1805
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1806 hpaned = gtk_hpaned_new();
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1807 vpaned1 = gtk_vpaned_new();
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1808 vpaned2 = gtk_vpaned_new();
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1809
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1810 gtk_paned_pack1(GTK_PANED(vpaned1), lw->split_images[0]->widget, TRUE, TRUE);
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1811 gtk_paned_pack2(GTK_PANED(vpaned1), lw->split_images[2]->widget, TRUE, TRUE);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1812
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1813 gtk_paned_pack1(GTK_PANED(vpaned2), lw->split_images[1]->widget, TRUE, TRUE);
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1814 gtk_paned_pack2(GTK_PANED(vpaned2), lw->split_images[3]->widget, TRUE, TRUE);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1815
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1816 gtk_paned_pack1(GTK_PANED(hpaned), vpaned1, TRUE, TRUE);
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1817 gtk_paned_pack2(GTK_PANED(hpaned), vpaned2, TRUE, TRUE);
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1818
520
b5e79bcb46df Add missing spaces around equal sign.
zas_
parents: 512
diff changeset
1819 for (i = 0; i < 4; i++)
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1820 gtk_widget_show(lw->split_images[i]->widget);
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1821
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1822 gtk_widget_show(vpaned1);
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1823 gtk_widget_show(vpaned2);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1824
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1825 lw->split_image_widget = hpaned;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1826
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1827 return lw->split_image_widget;
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1828
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1829 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1830
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1831 GtkWidget *layout_image_setup_split(LayoutWindow *lw, ImageSplitMode mode)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1832 {
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1833 switch (mode)
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1834 {
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 426
diff changeset
1835 case SPLIT_HOR:
127
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1836 return layout_image_setup_split_hv(lw, TRUE);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1837 case SPLIT_VERT:
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1838 return layout_image_setup_split_hv(lw, FALSE);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1839 case SPLIT_QUAD:
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1840 return layout_image_setup_split_quad(lw);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1841 case SPLIT_NONE:
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1842 default:
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1843 return layout_image_setup_split_none(lw);
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1844 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1845 }
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1846
271afad04d07 implemented split windows
nadvornik
parents: 122
diff changeset
1847
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1848 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1849 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1850 * maintenance (for rename, move, remove)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1851 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1852 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1853
796
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1854 static void layout_image_maint_renamed(LayoutWindow *lw, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1855 {
1171
8721675f80ce Tidy up.
zas_
parents: 1170
diff changeset
1856 if (fd == layout_image_get_fd(lw))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1857 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 131
diff changeset
1858 image_set_fd(lw->image, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1859 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1860 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1861
796
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1862 static void layout_image_maint_removed(LayoutWindow *lw, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1863 {
1171
8721675f80ce Tidy up.
zas_
parents: 1170
diff changeset
1864 if (fd == layout_image_get_fd(lw))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1865 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1866 CollectionData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1867 CollectInfo *info;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1868
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1869 cd = image_get_collection(lw->image, &info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1870 if (cd && info)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1871 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1872 CollectInfo *new;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1873
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1874 new = collection_next_by_info(cd, info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1875 if (!new) new = collection_prev_by_info(cd, info);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1876
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1877 if (new)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1878 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1879 layout_image_set_collection(lw, cd, new);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1880 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1881 }
1701
2309e6150e8c do not try to reload deleted image
nadvornik
parents: 1698
diff changeset
1882 layout_image_set_fd(lw, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1883 }
1701
2309e6150e8c do not try to reload deleted image
nadvornik
parents: 1698
diff changeset
1884
2309e6150e8c do not try to reload deleted image
nadvornik
parents: 1698
diff changeset
1885 /* the image will be set to the next image from the list soon,
2309e6150e8c do not try to reload deleted image
nadvornik
parents: 1698
diff changeset
1886 setting it to NULL here is not necessary*/
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1887 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1888 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1889
796
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1890
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1891 void layout_image_notify_cb(FileData *fd, NotifyType type, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1892 {
796
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1893 LayoutWindow *lw = data;
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1894
1432
cf4029d10d38 improved notification system
nadvornik
parents: 1431
diff changeset
1895 if (!(type & NOTIFY_CHANGE) || !fd->change) return;
1498
5f49f305a6b6 improved debug messages
nadvornik
parents: 1492
diff changeset
1896
5f49f305a6b6 improved debug messages
nadvornik
parents: 1492
diff changeset
1897 DEBUG_1("Notify layout_image: %s %04x", fd->path, type);
796
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1898
1347
79937bc55f3a Add missing space between switch and first parenthesis.
zas_
parents: 1336
diff changeset
1899 switch (fd->change->type)
796
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1900 {
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1901 case FILEDATA_CHANGE_MOVE:
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1902 case FILEDATA_CHANGE_RENAME:
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1903 layout_image_maint_renamed(lw, fd);
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1904 break;
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1905 case FILEDATA_CHANGE_DELETE:
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1906 layout_image_maint_removed(lw, fd);
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1907 break;
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1908 case FILEDATA_CHANGE_COPY:
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1909 case FILEDATA_CHANGE_UNSPECIFIED:
1211
e2bbe90b0dcd most of the metadata options now works
nadvornik
parents: 1173
diff changeset
1910 case FILEDATA_CHANGE_WRITE_METADATA:
796
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1911 break;
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1912 }
0be132a51f51 use new notification in layout and layout_image
nadvornik
parents: 783
diff changeset
1913
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1914 }
1055
1646720364cf Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents: 1047
diff changeset
1915 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */