annotate src/view_file_icon.c @ 380:5afe77bb563a

Introduce a new struct ViewDir to handle directory views common data. Specific data is now in ViewDirInfoList and ViewDirInfoTree. Type of directory view can be specified with enum DirViewType. This is saved to rc file as layout.dir_view_type, which replace layout.view_as_tree. Code was modified to reflect these changes. This is a first to move to merge common code of view_dir_list.c and view_dir_tree.c and ease the introduction of new types of directory view.
author zas_
date Wed, 16 Apr 2008 14:45:22 +0000
parents df868b947aa0
children 4b2d7f9af171
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: 167
diff changeset
2 * Geeqie
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
3 * (C) 2006 John Ellis
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
4 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
5 * Author: John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
6 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
7 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
8 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
9 * This software comes with no warranty of any kind, use at your own risk!
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
10 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
11
281
9995c5fb202a gqview.h -> main.h
zas_
parents: 272
diff changeset
12 #include "main.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
13 #include "view_file_icon.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
14
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
15 #include "cellrenderericon.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
16 #include "collect.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
17 #include "collect-io.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
18 #include "collect-table.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
19 #include "dnd.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
20 #include "editors.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
21 #include "img-view.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
22 #include "info.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
23 #include "filelist.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
24 #include "layout.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
25 #include "layout_image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
26 #include "menu.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
27 #include "thumb.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
28 #include "utilops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
29 #include "ui_bookmark.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
30 #include "ui_fileops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
31 #include "ui_menu.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
32 #include "ui_tree_edit.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
33
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
34
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
35 #include <gdk/gdkkeysyms.h> /* for keyboard values */
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 /* between these, the icon width is increased by thumb_max_width / 2 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
38 #define THUMB_MIN_ICON_WIDTH 128
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
39 #define THUMB_MAX_ICON_WIDTH 150
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
40
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
41 #define VFICON_MAX_COLUMNS 32
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
42 #define THUMB_BORDER_PADDING 2
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 #define VFICON_TIP_DELAY 500
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
45
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
46 enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
47 FILE_COLUMN_POINTER = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
48 FILE_COLUMN_COUNT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
49 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
50
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
51 typedef enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
52 SELECTION_NONE = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
53 SELECTION_SELECTED = 1 << 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
54 SELECTION_PRELIGHT = 1 << 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
55 SELECTION_FOCUS = 1 << 2
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
56 } SelectionType;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
57
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
58 typedef struct _IconData IconData;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
59 struct _IconData
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
60 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
61 SelectionType selected;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
62 gint row;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
63 FileData *fd;
9
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
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
66 static gint vficon_index_by_id(ViewFileIcon *vfi, IconData *in_id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
67
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
68 static IconData *vficon_icon_data(ViewFileIcon *vfi, FileData *fd)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
69 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
70 IconData *id = NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
71 GList *work;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
72
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
73 if (!fd) return NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
74 work = vfi->list;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
75 while (work && !id)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
76 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
77 IconData *chk = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
78 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
79 if (chk->fd == fd) id = chk;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
80 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
81 return id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
82 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
83
9
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 static gint iconlist_read(const gchar *path, GList **list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
86 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
87 GList *temp;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
88 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
89
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
90 if (!filelist_read(path, &temp, NULL)) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
91
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
92 work = temp;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
93 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
94 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
95 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
96 IconData *id;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
97
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
98 fd = work->data;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
99 g_assert(fd->magick == 0x12345678);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
100 id = g_new0(IconData, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
101
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
102 id->selected = SELECTION_NONE;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
103 id->row = -1;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
104 id->fd = fd;
9
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 work->data = id;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
107 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
108 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
109
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
110 *list = temp;
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 return TRUE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
115 static void iconlist_free(GList *list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
116 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
117 GList *work = list;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
118 while (work)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
119 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
120 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
121 file_data_unref(id->fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
122 g_free(id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
123 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
124 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
125
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
126 g_list_free(list);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
127
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
128 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
129
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
130 gint iconlist_sort_file_cb(void *a, void *b)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
131 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
132 IconData *ida = a;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
133 IconData *idb = b;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
134 return filelist_sort_compare_filedata(ida->fd, idb->fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
135 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
136 GList *iconlist_sort(GList *list, SortType method, gint ascend)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
137 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
138 return filelist_sort_full(list, method, ascend, (GCompareFunc) iconlist_sort_file_cb);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
139 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
140
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
141 GList *iconlist_insert_sort(GList *list, IconData *id, SortType method, gint ascend)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
142 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
143 return filelist_insert_sort_full(list, id, method, ascend, (GCompareFunc) iconlist_sort_file_cb);
9
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
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 static void vficon_toggle_filenames(ViewFileIcon *vfi);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
148 static void vficon_selection_remove(ViewFileIcon *vfi, IconData *id, SelectionType mask, GtkTreeIter *iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
149 static void vficon_move_focus(ViewFileIcon *vfi, gint row, gint col, gint relative);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
150 static void vficon_set_focus(ViewFileIcon *vfi, IconData *id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
151 static void vficon_thumb_update(ViewFileIcon *vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
152 static void vficon_populate_at_new_size(ViewFileIcon *vfi, gint w, gint h, gint force);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
153
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 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
157 * pop-up menu
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
158 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
159 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
160
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
161 static GList *vficon_pop_menu_file_list(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
162 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
163 if (!vfi->click_id) return NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
164
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
165 if (vfi->click_id->selected & SELECTION_SELECTED)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
166 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
167 return vficon_selection_get_list(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
168 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
169
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
170 return g_list_append(NULL, file_data_ref(vfi->click_id->fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
171 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
172
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
173 static void vficon_pop_menu_edit_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
174 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
175 ViewFileIcon *vfi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
176 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
177 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
178
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
179 vfi = submenu_item_get_data(widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
180 n = GPOINTER_TO_INT(data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
181
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
182 if (!vfi) return;
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 list = vficon_pop_menu_file_list(vfi);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
185 start_editor_from_filelist(n, list);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
186 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
187 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
188
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
189 static void vficon_pop_menu_info_cb(GtkWidget *widget, gpointer data)
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 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
192
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
193 info_window_new(NULL, vficon_pop_menu_file_list(vfi));
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
196 static void vficon_pop_menu_view_cb(GtkWidget *widget, gpointer data)
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 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
199
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
200 if (!vfi->click_id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
201
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
202 if (vfi->click_id->selected & SELECTION_SELECTED)
9
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 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
205
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
206 list = vficon_selection_get_list(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
207 view_window_new_from_list(list);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
208 filelist_free(list);
9
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 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
211 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
212 view_window_new(vfi->click_id->fd);
9
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 }
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 static void vficon_pop_menu_copy_cb(GtkWidget *widget, gpointer data)
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 ViewFileIcon *vfi = data;
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 file_util_copy(NULL, vficon_pop_menu_file_list(vfi), NULL, vfi->listview);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
221 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
222
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
223 static void vficon_pop_menu_move_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
224 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
225 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
226
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
227 file_util_move(NULL, vficon_pop_menu_file_list(vfi), NULL, vfi->listview);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
228 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
229
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
230 static void vficon_pop_menu_rename_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
231 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
232 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
233
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
234 file_util_rename(NULL, vficon_pop_menu_file_list(vfi), vfi->listview);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
235 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
236
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
237 static void vficon_pop_menu_delete_cb(GtkWidget *widget, gpointer data)
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 ViewFileIcon *vfi = data;
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 file_util_delete(NULL, vficon_pop_menu_file_list(vfi), vfi->listview);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
242 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
243
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
244 static void vficon_pop_menu_sort_cb(GtkWidget *widget, gpointer data)
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 ViewFileIcon *vfi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
247 SortType type;
113
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 111
diff changeset
248
55166d93498d Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents: 111
diff changeset
249 if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) return;
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 vfi = submenu_item_get_data(widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
252 if (!vfi) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
253
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
254 type = (SortType)GPOINTER_TO_INT(data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
255
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
256 if (vfi->layout)
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 layout_sort_set(vfi->layout, type, vfi->sort_ascend);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
259 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
260 else
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 vficon_sort_set(vfi, type, vfi->sort_ascend);
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 }
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 static void vficon_pop_menu_sort_ascend_cb(GtkWidget *widget, gpointer data)
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 ViewFileIcon *vfi = 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 if (vfi->layout)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
271 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
272 layout_sort_set(vfi->layout, vfi->sort_method, !vfi->sort_ascend);
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 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
275 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
276 vficon_sort_set(vfi, vfi->sort_method, !vfi->sort_ascend);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
277 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
278 }
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 static void vficon_pop_menu_list_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
281 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
282 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
283
380
5afe77bb563a Introduce a new struct ViewDir to handle directory views common
zas_
parents: 334
diff changeset
284 if (vfi->layout) layout_views_set(vfi->layout, vfi->layout->dir_view_type, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
285 }
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 static void vficon_pop_menu_show_names_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
288 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
289 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
290
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
291 vficon_toggle_filenames(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
292 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
293
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
294 static void vficon_pop_menu_refresh_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
295 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
296 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
297
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
298 vficon_refresh(vfi);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
301 static void vficon_popup_destroy_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
302 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
303 ViewFileIcon *vfi = data;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
304 vficon_selection_remove(vfi, vfi->click_id, SELECTION_PRELIGHT, NULL);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
305 vfi->click_id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
306 vfi->popup = NULL;
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 GtkWidget *vficon_pop_menu(ViewFileIcon *vfi, gint active)
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 GtkWidget *menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
312 GtkWidget *item;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
313 GtkWidget *submenu;
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 menu = popup_menu_short_lived();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
316
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
317 g_signal_connect(G_OBJECT(menu), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
318 G_CALLBACK(vficon_popup_destroy_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
319
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
320 submenu_add_edit(menu, &item, G_CALLBACK(vficon_pop_menu_edit_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
321 gtk_widget_set_sensitive(item, active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
322
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
323 item = menu_item_add_stock(menu, _("_Properties"), GTK_STOCK_PROPERTIES, G_CALLBACK(vficon_pop_menu_info_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
324 gtk_widget_set_sensitive(item, active);
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 item = menu_item_add_stock(menu, _("View in _new window"), GTK_STOCK_NEW, G_CALLBACK(vficon_pop_menu_view_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
327 gtk_widget_set_sensitive(item, active);
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 menu_item_add_divider(menu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
330 item = menu_item_add_stock(menu, _("_Copy..."), GTK_STOCK_COPY, G_CALLBACK(vficon_pop_menu_copy_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
331 gtk_widget_set_sensitive(item, active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
332 item = menu_item_add(menu, _("_Move..."), G_CALLBACK(vficon_pop_menu_move_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
333 gtk_widget_set_sensitive(item, active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
334 item = menu_item_add(menu, _("_Rename..."), G_CALLBACK(vficon_pop_menu_rename_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
335 gtk_widget_set_sensitive(item, active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
336 item = menu_item_add_stock(menu, _("_Delete..."), GTK_STOCK_DELETE, G_CALLBACK(vficon_pop_menu_delete_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
337 gtk_widget_set_sensitive(item, active);
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_item_add_divider(menu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
340
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
341 submenu = submenu_add_sort(NULL, G_CALLBACK(vficon_pop_menu_sort_cb), vfi,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
342 FALSE, FALSE, TRUE, vfi->sort_method);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
343 menu_item_add_divider(submenu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
344 menu_item_add_check(submenu, _("Ascending"), vfi->sort_ascend,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
345 G_CALLBACK(vficon_pop_menu_sort_ascend_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
346
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
347 item = menu_item_add(menu, _("_Sort"), NULL, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
348 gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
349
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
350 menu_item_add_check(menu, _("View as _icons"), TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
351 G_CALLBACK(vficon_pop_menu_list_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
352 menu_item_add_check(menu, _("Show filename _text"), vfi->show_text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
353 G_CALLBACK(vficon_pop_menu_show_names_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
354 menu_item_add_stock(menu, _("Re_fresh"), GTK_STOCK_REFRESH, G_CALLBACK(vficon_pop_menu_refresh_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
355
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
356 return menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
357 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
358
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
359 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
360 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
361 * signals
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
362 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
363 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
364
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
365 static void vficon_send_update(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
366 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
367 if (vfi->func_status) vfi->func_status(vfi, vfi->data_status);
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
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
370 static void vficon_send_layout_select(ViewFileIcon *vfi, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
371 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
372 FileData *read_ahead_fd = NULL;
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
373 FileData *sel_fd;
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
374 FileData *cur_fd;
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
375
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
376 if (!vfi->layout || !id || !id->fd) return;
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
377
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
378 sel_fd = id->fd;
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
379
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
380 cur_fd = layout_image_get_fd(vfi->layout);
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
381 if (sel_fd == cur_fd) return; /* no change */
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
382
334
df868b947aa0 Rename image-related options.
zas_
parents: 333
diff changeset
383 if (options->image.enable_read_ahead)
9
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 gint row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
386
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
387 row = g_list_index(vfi->list, id);
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
388 if (row > vficon_index_by_fd(vfi, cur_fd) &&
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
389 row + 1 < vficon_count(vfi, NULL))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
390 {
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
391 read_ahead_fd = vficon_index_get_data(vfi, row + 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
392 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
393 else if (row > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
394 {
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
395 read_ahead_fd = vficon_index_get_data(vfi, row - 1);
9
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
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 140
diff changeset
399 layout_image_set_with_ahead(vfi->layout, sel_fd, read_ahead_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
400 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
401
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
402 static void vficon_toggle_filenames(ViewFileIcon *vfi)
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 vfi->show_text = !vfi->show_text;
320
c74af1cbd61a Move more options to ConfOptions.
zas_
parents: 318
diff changeset
405 options->show_icon_names = vfi->show_text;
9
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 vficon_populate_at_new_size(vfi, vfi->listview->allocation.width, vfi->listview->allocation.height, TRUE);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
410 static gint vficon_get_icon_width(ViewFileIcon *vfi)
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 gint width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
413
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
414 if (!vfi->show_text) return options->thumbnails.max_width;
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
415
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
416 width = options->thumbnails.max_width + options->thumbnails.max_width / 2;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
417 if (width < THUMB_MIN_ICON_WIDTH) width = THUMB_MIN_ICON_WIDTH;
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
418 if (width > THUMB_MAX_ICON_WIDTH) width = options->thumbnails.max_width;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
419
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
420 return width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
421 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
422
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
423 /*
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 * misc utils
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
426 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
427 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
428
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
429 static gint vficon_find_position(ViewFileIcon *vfi, IconData *id, gint *row, gint *col)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
430 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
431 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
432
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
433 n = g_list_index(vfi->list, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
434
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
435 if (n < 0) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
436
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
437 *row = n / vfi->columns;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
438 *col = n - (*row * vfi->columns);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
439
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
440 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
441 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
442
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
443 static gint vficon_find_iter(ViewFileIcon *vfi, IconData *id, GtkTreeIter *iter, gint *column)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
444 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
445 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
446 gint row, col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
447
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
448 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
449 if (!vficon_find_position(vfi, id, &row, &col)) return FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
450 if (!gtk_tree_model_iter_nth_child(store, iter, NULL, row)) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
451 if (column) *column = col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
452
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
453 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
454 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
455
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
456 static IconData *vficon_find_data(ViewFileIcon *vfi, gint row, gint col, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
457 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
458 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
459 GtkTreeIter p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
460
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
461 if (row < 0 || col < 0) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
462
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
463 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
464 if (gtk_tree_model_iter_nth_child(store, &p, NULL, row))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
465 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
466 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
467
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
468 gtk_tree_model_get(store, &p, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
469 if (!list) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
470
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
471 if (iter) *iter = p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
472
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
473 return g_list_nth_data(list, col);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
474 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
475
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
476 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
477 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
478
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
479 static IconData *vficon_find_data_by_coord(ViewFileIcon *vfi, gint x, gint y, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
480 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
481 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
482 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
483
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
484 if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vfi->listview), x, y,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
485 &tpath, &column, NULL, NULL))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
486 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
487 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
488 GtkTreeIter row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
489 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
490 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
491
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
492 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
493 gtk_tree_model_get_iter(store, &row, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
494 gtk_tree_path_free(tpath);
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 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &list, -1);
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 n = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(column), "column_number"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
499 if (list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
500 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
501 if (iter) *iter = row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
502 return g_list_nth_data(list, n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
503 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
504 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
505
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
506 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
507 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
508
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
509 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
510 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
511 * tooltip type window
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
512 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
513 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
514
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
515 static void tip_show(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
516 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
517 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
518 gint x, y;
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 (vfi->tip_window) return;
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 gdk_window_get_pointer(gtk_tree_view_get_bin_window(GTK_TREE_VIEW(vfi->listview)), &x, &y, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
523
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
524 vfi->tip_id = vficon_find_data_by_coord(vfi, x, y, NULL);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
525 if (!vfi->tip_id) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
526
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
527 vfi->tip_window = gtk_window_new(GTK_WINDOW_POPUP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
528 gtk_window_set_resizable(GTK_WINDOW(vfi->tip_window), FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
529 gtk_container_set_border_width(GTK_CONTAINER(vfi->tip_window), 2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
530
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
531 label = gtk_label_new(vfi->tip_id->fd->name);
9
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 g_object_set_data(G_OBJECT(vfi->tip_window), "tip_label", label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
534 gtk_container_add(GTK_CONTAINER(vfi->tip_window), label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
535 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
536
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
537 gdk_window_get_pointer(NULL, &x, &y, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
538
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
539 if (!GTK_WIDGET_REALIZED(vfi->tip_window)) gtk_widget_realize(vfi->tip_window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
540 gtk_window_move(GTK_WINDOW(vfi->tip_window), x + 16, y + 16);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
541 gtk_widget_show(vfi->tip_window);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
544 static void tip_hide(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
545 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
546 if (vfi->tip_window) gtk_widget_destroy(vfi->tip_window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
547 vfi->tip_window = NULL;
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 static gint tip_schedule_cb(gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
551 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
552 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
553 GtkWidget *window;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
554
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
555 if (vfi->tip_delay_id == -1) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
556
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
557 window = gtk_widget_get_toplevel(vfi->listview);
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 if (GTK_WIDGET_SENSITIVE(window) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
560 GTK_WINDOW(window)->has_focus)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
561 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
562 tip_show(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
563 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
564
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
565 vfi->tip_delay_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
566 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
567 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
568
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
569 static void tip_schedule(ViewFileIcon *vfi)
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 tip_hide(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
572
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
573 if (vfi->tip_delay_id != -1)
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 g_source_remove(vfi->tip_delay_id);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
576 vfi->tip_delay_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
577 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
578
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
579 if (!vfi->show_text)
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 vfi->tip_delay_id = g_timeout_add(VFICON_TIP_DELAY, tip_schedule_cb, vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
582 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
583 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
584
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
585 static void tip_unschedule(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
586 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
587 tip_hide(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
588
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
589 if (vfi->tip_delay_id != -1) g_source_remove(vfi->tip_delay_id);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
590 vfi->tip_delay_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
591 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
592
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
593 static void tip_update(ViewFileIcon *vfi, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
594 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
595 if (vfi->tip_window)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
596 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
597 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
598
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
599 gdk_window_get_pointer(NULL, &x, &y, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
600 gtk_window_move(GTK_WINDOW(vfi->tip_window), x + 16, y + 16);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
601
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
602 if (id != vfi->tip_id)
9
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 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
605
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
606 vfi->tip_id = id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
607
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
608 if (!vfi->tip_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
609 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
610 tip_hide(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
611 tip_schedule(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
612 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
613 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
614
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
615 label = g_object_get_data(G_OBJECT(vfi->tip_window), "tip_label");
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
616 gtk_label_set_text(GTK_LABEL(label), vfi->tip_id->fd->name);
9
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 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
620 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
621 tip_schedule(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
622 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
623 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
624
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
625 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
626 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
627 * dnd
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
628 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
629 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
630
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
631 static void vficon_dnd_get(GtkWidget *widget, GdkDragContext *context,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
632 GtkSelectionData *selection_data, guint info,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
633 guint time, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
634 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
635 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
636 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
637 gchar *uri_text = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
638 gint total;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
639
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
640 if (!vfi->click_id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
641
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
642 if (vfi->click_id->selected & SELECTION_SELECTED)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
643 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
644 list = vficon_selection_get_list(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
645 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
646 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
647 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
648 list = g_list_append(NULL, file_data_ref(vfi->click_id->fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
649 }
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 if (!list) return;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
652 uri_text = uri_text_from_filelist(list, &total, (info == TARGET_TEXT_PLAIN));
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
653 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
654
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
655 if (debug) printf(uri_text);
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 gtk_selection_data_set(selection_data, selection_data->target,
64
04ff0df3ad2f Mon Aug 15 17:13:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
658 8, (guchar *)uri_text, total);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
659 g_free(uri_text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
660 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
661
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
662 static void vficon_dnd_begin(GtkWidget *widget, GdkDragContext *context, gpointer data)
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 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
665
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
666 tip_unschedule(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
667
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
668 if (vfi->click_id && vfi->click_id->fd->pixbuf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
669 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
670 gint items;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
671
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
672 if (vfi->click_id->selected & SELECTION_SELECTED)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
673 items = g_list_length(vfi->selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
674 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
675 items = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
676
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
677 dnd_set_drag_icon(widget, context, vfi->click_id->fd->pixbuf, items);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
678 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
679 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
680
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
681 static void vficon_dnd_end(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
682 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
683 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
684
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
685 vficon_selection_remove(vfi, vfi->click_id, SELECTION_PRELIGHT, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
686
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
687 if (context->action == GDK_ACTION_MOVE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
688 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
689 vficon_refresh(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
690 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
691
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
692 tip_unschedule(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
693 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
694
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
695 static void vficon_dnd_init(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
696 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
697 gtk_drag_source_set(vfi->listview, GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
698 dnd_file_drag_types, dnd_file_drag_types_count,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
699 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
700 g_signal_connect(G_OBJECT(vfi->listview), "drag_data_get",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
701 G_CALLBACK(vficon_dnd_get), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
702 g_signal_connect(G_OBJECT(vfi->listview), "drag_begin",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
703 G_CALLBACK(vficon_dnd_begin), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
704 g_signal_connect(G_OBJECT(vfi->listview), "drag_end",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
705 G_CALLBACK(vficon_dnd_end), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
706 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
707
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
708 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
709 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
710 * cell updates
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
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
714 static void vficon_selection_set(ViewFileIcon *vfi, IconData *id, SelectionType value, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
715 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
716 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
717 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
718
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
719 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
720
9
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 if (id->selected == value) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
723 id->selected = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
724
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
725 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
726 if (iter)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
727 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
728 gtk_tree_model_get(store, iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
729 if (list) gtk_list_store_set(GTK_LIST_STORE(store), iter, FILE_COLUMN_POINTER, list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
730 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
731 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
732 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
733 GtkTreeIter row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
734
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
735 if (vficon_find_iter(vfi, id, &row, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
736 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
737 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
738 if (list) gtk_list_store_set(GTK_LIST_STORE(store), &row, FILE_COLUMN_POINTER, list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
739 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
740 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
741 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
742
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
743 static void vficon_selection_add(ViewFileIcon *vfi, IconData *id, SelectionType mask, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
744 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
745 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
746
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
747 vficon_selection_set(vfi, id, id->selected | mask, iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
748 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
749
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
750 static void vficon_selection_remove(ViewFileIcon *vfi, IconData *id, SelectionType mask, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
751 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
752 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
753
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
754 vficon_selection_set(vfi, id, id->selected & ~mask, iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
755 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
756
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
757 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
758 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
759 * selections
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
760 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
761 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
762
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
763 static void vficon_verify_selections(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
764 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
765 GList *work;
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 work = vfi->selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
768 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
769 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
770 IconData *id = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
771 work = work->next;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
772 if (vficon_index_by_id(vfi, id) < 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
773 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
774 vfi->selection = g_list_remove(vfi->selection, id);
9
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 }
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 void vficon_select_all(ViewFileIcon *vfi)
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 GList *work;
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 g_list_free(vfi->selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
784 vfi->selection = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
785
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
786 work = vfi->list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
787 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
788 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
789 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
790 vfi->selection = g_list_append(vfi->selection, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
791 vficon_selection_add(vfi, work->data, SELECTION_SELECTED, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
792 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
793 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
794
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
795 vficon_send_update(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
796 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
797
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
798 void vficon_select_none(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
799 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
800 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
801
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
802 work = vfi->selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
803 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
804 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
805 vficon_selection_remove(vfi, work->data, SELECTION_SELECTED, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
806 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
807 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
808
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
809 g_list_free(vfi->selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
810 vfi->selection = NULL;
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 vficon_send_update(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
813 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
814
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
815 static void vficon_select(ViewFileIcon *vfi, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
816 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
817 vfi->prev_selection = id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
818
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
819 if (!id || id->selected & SELECTION_SELECTED) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
820
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
821 vfi->selection = g_list_append(vfi->selection, id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
822 vficon_selection_add(vfi, id, SELECTION_SELECTED, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
823
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
824 vficon_send_update(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
825 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
826
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
827 static void vficon_unselect(ViewFileIcon *vfi, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
828 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
829 vfi->prev_selection = id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
830
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
831 if (!id || !(id->selected & SELECTION_SELECTED) ) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
832
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
833 vfi->selection = g_list_remove(vfi->selection, id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
834 vficon_selection_remove(vfi, id, SELECTION_SELECTED, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
835
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
836 vficon_send_update(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
837 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
838
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
839 static void vficon_select_util(ViewFileIcon *vfi, IconData *id, gint select)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
840 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
841 if (select)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
842 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
843 vficon_select(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
844 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
845 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
846 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
847 vficon_unselect(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
848 }
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
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
851 static void vficon_select_region_util(ViewFileIcon *vfi, IconData *start, IconData *end, gint select)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
852 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
853 gint row1, col1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
854 gint row2, col2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
855 gint t;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
856 gint i, j;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
857
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
858 if (!vficon_find_position(vfi, start, &row1, &col1) ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
859 !vficon_find_position(vfi, end, &row2, &col2) ) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
860
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
861 vfi->prev_selection = end;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
862
330
57a4ced53618 Rename collection options.
zas_
parents: 320
diff changeset
863 if (!options->collections.rectangular_selection)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
864 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
865 GList *work;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
866 IconData *id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
867
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
868 if (g_list_index(vfi->list, start) > g_list_index(vfi->list, end))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
869 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
870 id = start;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
871 start = end;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
872 end = id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
873 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
874
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
875 work = g_list_find(vfi->list, start);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
876 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
877 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
878 id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
879 vficon_select_util(vfi, id, select);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
880
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
881 if (work->data != end)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
882 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
883 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
884 work = NULL;
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 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
887 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
888
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
889 if (row2 < row1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
890 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
891 t = row1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
892 row1 = row2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
893 row2 = t;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
894 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
895 if (col2 < col1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
896 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
897 t = col1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
898 col1 = col2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
899 col2 = t;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
900 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
901
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
902 if (debug) printf("table: %d x %d to %d x %d\n", row1, col1, row2, col2);
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 for (i = row1; i <= row2; i++)
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 for (j = col1; j <= col2; j++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
907 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
908 IconData *id = vficon_find_data(vfi, i, j, NULL);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
909 if (id) vficon_select_util(vfi, id, select);
9
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 }
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
914 gint vficon_index_is_selected(ViewFileIcon *vfi, gint row)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
915 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
916 IconData *id = g_list_nth_data(vfi->list, row);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
917
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
918 if (!id) return FALSE;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
919
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
920 return (id->selected & SELECTION_SELECTED);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
921 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
922
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
923 gint vficon_selection_count(ViewFileIcon *vfi, gint64 *bytes)
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 if (bytes)
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 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
928 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
929
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
930 work = vfi->selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
931 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
932 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
933 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
934 FileData *fd = id->fd;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
935 g_assert(fd->magick == 0x12345678);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
936 b += fd->size;
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 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
939 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
940
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
941 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
942 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
943
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
944 return g_list_length(vfi->selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
945 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
946
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
947 GList *vficon_selection_get_list(ViewFileIcon *vfi)
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 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
950 GList *work;
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 work = vfi->selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
953 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
954 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
955 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
956 FileData *fd = id->fd;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
957 g_assert(fd->magick == 0x12345678);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
958
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
959 list = g_list_prepend(list, file_data_ref(fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
960
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
961 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
962 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
963
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
964 list = g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
965
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
966 return list;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
969 GList *vficon_selection_get_list_by_index(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
970 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
971 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
972 GList *work;
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 work = vfi->selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
975 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
976 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
977 list = g_list_prepend(list, GINT_TO_POINTER(g_list_index(vfi->list, work->data)));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
978 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
979 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
980
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
981 return g_list_reverse(list);
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
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
984 static void vficon_select_by_id(ViewFileIcon *vfi, IconData *id)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
985 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
986 if (!id) return;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
987
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
988 if (!(id->selected & SELECTION_SELECTED))
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
989 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
990 vficon_select_none(vfi);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
991 vficon_select(vfi, id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
992 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
993
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
994 vficon_set_focus(vfi, id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
995 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
996
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
997
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
998 void vficon_select_by_path(ViewFileIcon *vfi, const gchar *path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
999 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1000 IconData *id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1001 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1002
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1003 if (!path) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1004
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1005 work = vfi->list;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1006 while (work && !id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1007 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1008 IconData *chk = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1009 work = work->next;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1010 if (strcmp(chk->fd->path, path) == 0) id = chk;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1011 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1012 vficon_select_by_id(vfi, id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1013 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1014
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1015 void vficon_select_by_fd(ViewFileIcon *vfi, FileData *fd)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1016 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1017 IconData *id = NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1018 GList *work;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1019
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1020 if (!fd) return;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1021 work = vfi->list;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1022 while (work && !id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1023 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1024 IconData *chk = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1025 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1026 if (chk->fd == fd) id = chk;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1027 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1028 vficon_select_by_id(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1029 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1030
165
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1031 void vficon_mark_to_selection(ViewFileIcon *vfi, gint mark, MarkToSelectionMode mode)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1032 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1033 GList *work;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1034
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1035 work = vfi->list;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1036 while (work)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1037 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1038 IconData *id = work->data;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1039 FileData *fd = id->fd;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1040 gboolean mark_val, selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1041
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1042 g_assert(fd->magick == 0x12345678);
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1043
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1044 mark_val = fd->marks[mark];
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1045 selected = (id->selected & SELECTION_SELECTED);
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1046
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1047 switch (mode)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1048 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1049 case MTS_MODE_SET: selected = mark_val;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1050 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1051 case MTS_MODE_OR: selected = mark_val | selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1052 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1053 case MTS_MODE_AND: selected = mark_val & selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1054 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1055 case MTS_MODE_MINUS: selected = !mark_val & selected;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1056 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1057 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1058
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1059 vficon_select_util(vfi, id, selected);
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1060
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1061 work = work->next;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1062 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1063 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1064
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1065 void vficon_selection_to_mark(ViewFileIcon *vfi, gint mark, SelectionToMarkMode mode)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1066 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1067 GList *slist;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1068 GList *work;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1069
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1070 g_assert(mark >= 0 && mark < FILEDATA_MARKS_SIZE);
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1071
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1072 slist = vficon_selection_get_list(vfi);
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1073 work = slist;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1074 while (work)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1075 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1076 FileData *fd = work->data;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1077
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1078 switch (mode)
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1079 {
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1080 case STM_MODE_SET: fd->marks[mark] = 1;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1081 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1082 case STM_MODE_RESET: fd->marks[mark] = 0;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1083 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1084 case STM_MODE_TOGGLE: fd->marks[mark] = !fd->marks[mark];
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1085 break;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1086 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1087
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1088 work = work->next;
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1089 }
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1090 filelist_free(slist);
d7067ec71042 basic support for marks in view_file_icon.c
nadvornik
parents: 144
diff changeset
1091 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1092
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1093
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1094 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1095 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1096 * focus
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1097 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1098 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1099
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1100 static void vficon_move_focus(ViewFileIcon *vfi, gint row, gint col, gint relative)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1101 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1102 gint new_row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1103 gint new_col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1104
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1105 if (relative)
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 new_row = vfi->focus_row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1108 new_col = vfi->focus_column;
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 new_row += row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1111 if (new_row < 0) new_row = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1112 if (new_row >= vfi->rows) new_row = vfi->rows - 1;
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 while(col != 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1115 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1116 if (col < 0)
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 new_col--;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1119 col++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1120 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1121 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1122 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1123 new_col++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1124 col--;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1125 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1126
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1127 if (new_col < 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1128 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1129 if (new_row > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1130 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1131 new_row--;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1132 new_col = vfi->columns - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1133 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1134 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1135 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1136 new_col = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1137 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1138 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1139 if (new_col >= vfi->columns)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1140 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1141 if (new_row < vfi->rows - 1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1142 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1143 new_row++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1144 new_col = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1145 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1146 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1147 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1148 new_col = vfi->columns - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1149 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1150 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1151 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1152 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1153 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1154 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1155 new_row = row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1156 new_col = col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1157
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1158 if (new_row >= vfi->rows)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1159 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1160 if (vfi->rows > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1161 new_row = vfi->rows - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1162 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1163 new_row = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1164 new_col = vfi->columns - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1165 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1166 if (new_col >= vfi->columns) new_col = vfi->columns - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1167 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1168
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1169 if (new_row == vfi->rows - 1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1170 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1171 gint l;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1172
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1173 /* if we moved beyond the last image, go to the last image */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1174
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1175 l = g_list_length(vfi->list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1176 if (vfi->rows > 1) l -= (vfi->rows - 1) * vfi->columns;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1177 if (new_col >= l) new_col = l - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1178 }
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 vficon_set_focus(vfi, vficon_find_data(vfi, new_row, new_col, NULL));
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
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1183 static void vficon_set_focus(ViewFileIcon *vfi, IconData *id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1184 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1185 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1186 gint row, col;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1187
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1188 if (g_list_find(vfi->list, vfi->focus_id))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1189 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1190 if (id == vfi->focus_id)
9
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 /* ensure focus row col are correct */
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1193 vficon_find_position(vfi, vfi->focus_id, &vfi->focus_row, &vfi->focus_column);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1194 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1195 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1196 vficon_selection_remove(vfi, vfi->focus_id, SELECTION_FOCUS, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1197 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1198
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1199 if (!vficon_find_position(vfi, id, &row, &col))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1200 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1201 vfi->focus_id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1202 vfi->focus_row = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1203 vfi->focus_column = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1204 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1205 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1206
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1207 vfi->focus_id = id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1208 vfi->focus_row = row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1209 vfi->focus_column = col;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1210 vficon_selection_add(vfi, vfi->focus_id, SELECTION_FOCUS, NULL);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1211
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1212 if (vficon_find_iter(vfi, vfi->focus_id, &iter, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1213 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1214 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1215 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1216 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1217
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1218 tree_view_row_make_visible(GTK_TREE_VIEW(vfi->listview), &iter, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1219
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1220 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1221 tpath = gtk_tree_model_get_path(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1222 /* focus is set to an extra column with 0 width to hide focus, we draw it ourself */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1223 column = gtk_tree_view_get_column(GTK_TREE_VIEW(vfi->listview), VFICON_MAX_COLUMNS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1224 gtk_tree_view_set_cursor(GTK_TREE_VIEW(vfi->listview), tpath, column, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1225 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1226 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1227 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1228
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1229 static void vficon_update_focus(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1230 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1231 gint new_row = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1232 gint new_col = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1233
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1234 if (vfi->focus_id && vficon_find_position(vfi, vfi->focus_id, &new_row, &new_col))
9
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 /* first find the old focus, if it exists and is valid */
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 else
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 /* (try to) stay where we were */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1241 new_row = vfi->focus_row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1242 new_col = vfi->focus_column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1243 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1244
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1245 vficon_move_focus(vfi, new_row, new_col, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1246 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1247
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1248 /* used to figure the page up/down distances */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1249 static gint page_height(ViewFileIcon *vfi)
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 GtkAdjustment *adj;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1252 gint page_size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1253 gint row_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1254 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1255
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1256 adj = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1257 page_size = (gint)adj->page_increment;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1258
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
1259 row_height = options->thumbnails.max_height + THUMB_BORDER_PADDING * 2;
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
1260 if (vfi->show_text) row_height += options->thumbnails.max_height / 3;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1261
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1262 ret = page_size / row_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1263 if (ret < 1) ret = 1;
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 return ret;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1268 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1269 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1270 * keyboard
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1274 static void vfi_menu_position_cb(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data)
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 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1277 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1278 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1279 gint column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1280 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1281 gint cw, ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1282
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1283 if (!vficon_find_iter(vfi, vfi->click_id, &iter, &column)) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1284 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1285 tpath = gtk_tree_model_get_path(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1286 tree_view_get_cell_clamped(GTK_TREE_VIEW(vfi->listview), tpath, column, FALSE, x, y, &cw, &ch);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1287 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1288 *y += ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1289 popup_menu_position_clamp(menu, x, y, 0);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1292 static gint vficon_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1293 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1294 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1295 gint focus_row = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1296 gint focus_col = 0;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1297 IconData *id;
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1298 gint stop_signal;
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1299
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1300 stop_signal = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1301 switch (event->keyval)
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 case GDK_Left: case GDK_KP_Left:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1304 focus_col = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1305 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1306 case GDK_Right: case GDK_KP_Right:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1307 focus_col = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1308 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1309 case GDK_Up: case GDK_KP_Up:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1310 focus_row = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1311 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1312 case GDK_Down: case GDK_KP_Down:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1313 focus_row = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1314 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1315 case GDK_Page_Up: case GDK_KP_Page_Up:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1316 focus_row = -page_height(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1317 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1318 case GDK_Page_Down: case GDK_KP_Page_Down:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1319 focus_row = page_height(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1320 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1321 case GDK_Home: case GDK_KP_Home:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1322 focus_row = -vfi->focus_row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1323 focus_col = -vfi->focus_column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1324 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1325 case GDK_End: case GDK_KP_End:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1326 focus_row = vfi->rows - 1 - vfi->focus_row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1327 focus_col = vfi->columns - 1 - vfi->focus_column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1328 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1329 case GDK_space:
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1330 id = vficon_find_data(vfi, vfi->focus_row, vfi->focus_column, NULL);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1331 if (id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1332 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1333 vfi->click_id = id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1334 if (event->state & GDK_CONTROL_MASK)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1335 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1336 gint selected;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1337
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1338 selected = id->selected & SELECTION_SELECTED;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1339 if (selected)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1340 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1341 vficon_unselect(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1342 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1343 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1344 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1345 vficon_select(vfi, id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1346 vficon_send_layout_select(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1347 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1348 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1349 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1350 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1351 vficon_select_none(vfi);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1352 vficon_select(vfi, id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1353 vficon_send_layout_select(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1354 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1355 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1356 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1357 case GDK_Menu:
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1358 id = vficon_find_data(vfi, vfi->focus_row, vfi->focus_column, NULL);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1359 vfi->click_id = id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1360
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1361 vficon_selection_add(vfi, vfi->click_id, SELECTION_PRELIGHT, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1362 tip_unschedule(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1363
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1364 vfi->popup = vficon_pop_menu(vfi, (id != NULL));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1365 gtk_menu_popup(GTK_MENU(vfi->popup), NULL, NULL, vfi_menu_position_cb, vfi, 0, GDK_CURRENT_TIME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1366 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1367 default:
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1368 stop_signal = FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1369 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1370 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1371
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1372 if (focus_row != 0 || focus_col != 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1373 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1374 IconData *new_id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1375 IconData *old_id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1376
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1377 old_id = vficon_find_data(vfi, vfi->focus_row, vfi->focus_column, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1378 vficon_move_focus(vfi, focus_row, focus_col, TRUE);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1379 new_id = vficon_find_data(vfi, vfi->focus_row, vfi->focus_column, NULL);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1380
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1381 if (new_id != old_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1382 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1383 if (event->state & GDK_SHIFT_MASK)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1384 {
330
57a4ced53618 Rename collection options.
zas_
parents: 320
diff changeset
1385 if (!options->collections.rectangular_selection)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1386 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1387 vficon_select_region_util(vfi, old_id, new_id, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1388 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1389 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1390 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1391 vficon_select_region_util(vfi, vfi->click_id, old_id, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1392 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1393 vficon_select_region_util(vfi, vfi->click_id, new_id, TRUE);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1394 vficon_send_layout_select(vfi, new_id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1395 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1396 else if (event->state & GDK_CONTROL_MASK)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1397 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1398 vfi->click_id = new_id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1399 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1400 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1401 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1402 vfi->click_id = new_id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1403 vficon_select_none(vfi);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1404 vficon_select(vfi, new_id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1405 vficon_send_layout_select(vfi, new_id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1406 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1407 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1408 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1409
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1410 if (stop_signal)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1411 {
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1412 #if 0
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1413 g_signal_stop_emission_by_name(GTK_OBJECT(widget), "key_press_event");
85
9d5c75b5ec28 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1414 #endif
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1415 tip_unschedule(vfi);
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 return stop_signal;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1419 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1420
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 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1423 * mouse
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1424 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1425 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1426
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1427 static gint vficon_motion_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1428 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1429 ViewFileIcon *vfi = data;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1430 IconData *id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1431
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1432 id = vficon_find_data_by_coord(vfi, (gint)bevent->x, (gint)bevent->y, NULL);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1433 tip_update(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1434
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1435 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1436 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1437
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1438 static gint vficon_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1439 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1440 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1441 GtkTreeIter iter;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1442 IconData *id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1443
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1444 tip_unschedule(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1445
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1446 id = vficon_find_data_by_coord(vfi, (gint)bevent->x, (gint)bevent->y, &iter);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1447
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1448 vfi->click_id = id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1449 vficon_selection_add(vfi, vfi->click_id, SELECTION_PRELIGHT, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1450
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1451 switch (bevent->button)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1452 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1453 case 1:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1454 if (!GTK_WIDGET_HAS_FOCUS(vfi->listview))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1455 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1456 gtk_widget_grab_focus(vfi->listview);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1457 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1458 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1459 if (bevent->type == GDK_2BUTTON_PRESS &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1460 vfi->layout)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1461 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1462 vficon_selection_remove(vfi, vfi->click_id, SELECTION_PRELIGHT, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1463 layout_image_full_screen_start(vfi->layout);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1464 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1465 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1466 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1467 case 3:
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1468 vfi->popup = vficon_pop_menu(vfi, (id != NULL));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1469 gtk_menu_popup(GTK_MENU(vfi->popup), NULL, NULL, NULL, NULL, bevent->button, bevent->time);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1470 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1471 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1472 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1473 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1474
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1475 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1476 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1477
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1478 static gint vficon_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1479 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1480 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1481 GtkTreeIter iter;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1482 IconData *id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1483 gint was_selected = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1484
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1485 tip_schedule(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1486
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1487 if ((gint)bevent->x != 0 || (gint) bevent->y != 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1488 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1489 id = vficon_find_data_by_coord(vfi, (gint)bevent->x, (gint)bevent->y, &iter);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1490 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1491
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1492 if (vfi->click_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1493 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1494 vficon_selection_remove(vfi, vfi->click_id, SELECTION_PRELIGHT, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1495 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1496
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1497 if (id) was_selected = (id->selected & SELECTION_SELECTED);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1498
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1499 if (bevent->button == 1 &&
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1500 id && vfi->click_id == id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1501 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1502 vficon_set_focus(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1503
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1504 if (bevent->state & GDK_CONTROL_MASK)
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 gint select;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1507
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1508 select = !(id->selected & SELECTION_SELECTED);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1509 if ((bevent->state & GDK_SHIFT_MASK) && vfi->prev_selection)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1510 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1511 vficon_select_region_util(vfi, vfi->prev_selection, id, select);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1512 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1513 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1514 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1515 vficon_select_util(vfi, id, select);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1516 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1517 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1518 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1519 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1520 vficon_select_none(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1521
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1522 if ((bevent->state & GDK_SHIFT_MASK) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1523 vfi->prev_selection)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1524 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1525 vficon_select_region_util(vfi, vfi->prev_selection, id, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1526 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1527 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1528 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1529 vficon_select_util(vfi, id, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1530 was_selected = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1531 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1532 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1533 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1534 else if (bevent->button == 2 &&
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1535 id && vfi->click_id == id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1536 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1537 vficon_select_util(vfi, id, !(id->selected & SELECTION_SELECTED));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1538 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1539
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1540 if (id && !was_selected &&
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1541 (id->selected & SELECTION_SELECTED))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1542 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1543 vficon_send_layout_select(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1544 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1545
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1546 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1547 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1548
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1549 static gint vficon_leave_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1550 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1551 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1552
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1553 tip_unschedule(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1554 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1555 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1556
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1557 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1558 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1559 * population
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1560 *-------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1561 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1562
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1563 static gboolean vficon_destroy_node_cb(GtkTreeModel *store, GtkTreePath *tpath, GtkTreeIter *iter, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1564 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1565 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1566
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1567 gtk_tree_model_get(store, iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1568 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1569
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1570 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1571 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1572
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1573 static void vficon_clear_store(ViewFileIcon *vfi)
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 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1576
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1577 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1578 gtk_tree_model_foreach(store, vficon_destroy_node_cb, NULL);
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 gtk_list_store_clear(GTK_LIST_STORE(store));
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1583 static void vficon_set_thumb(ViewFileIcon *vfi, FileData *fd, GdkPixbuf *pb)
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 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1586 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1587 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1588
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1589 if (!vficon_find_iter(vfi, vficon_icon_data(vfi, fd), &iter, NULL)) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1590
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1591 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1592
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1593 if (pb) g_object_ref(pb);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1594 if (fd->pixbuf) g_object_unref(fd->pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1595 fd->pixbuf = pb;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1596
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1597 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1598 gtk_list_store_set(GTK_LIST_STORE(store), &iter, FILE_COLUMN_POINTER, list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1599 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1600
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1601 static GList *vficon_add_row(ViewFileIcon *vfi, GtkTreeIter *iter)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1602 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1603 GtkListStore *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1604 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1605 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1606
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1607 for (i = 0; i < vfi->columns; i++) list = g_list_prepend(list, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1608
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1609 store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview)));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1610 gtk_list_store_append(store, iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1611 gtk_list_store_set(store, iter, FILE_COLUMN_POINTER, list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1612
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1613 return list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1614 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1615
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1616 static void vficon_populate(ViewFileIcon *vfi, gint resize, gint keep_position)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1617 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1618 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1619 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1620 gint row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1621 GList *work;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1622 IconData *visible_id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1623
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1624 vficon_verify_selections(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1625
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1626 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1627
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1628 if (keep_position && GTK_WIDGET_REALIZED(vfi->listview) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1629 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vfi->listview), 0, 0, &tpath, NULL, NULL, NULL))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1630 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1631 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1632 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1633
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1634 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1635 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1636
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1637 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1638 if (list) visible_id = list->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1639 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1640
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1641 vficon_clear_store(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1642
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1643 if (resize)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1644 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1645 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1646 gint thumb_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1647
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1648 thumb_width = vficon_get_icon_width(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1649
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1650 for (i = 0; i < VFICON_MAX_COLUMNS; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1651 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1652 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1653 GtkCellRenderer *cell;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1654 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1655
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1656 column = gtk_tree_view_get_column(GTK_TREE_VIEW(vfi->listview), i);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1657 gtk_tree_view_column_set_visible(column, (i < vfi->columns));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1658 gtk_tree_view_column_set_fixed_width(column, thumb_width + (THUMB_BORDER_PADDING * 6));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1659
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1660 list = gtk_tree_view_column_get_cell_renderers(column);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1661 cell = (list) ? list->data : NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1662 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1663
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1664 if (cell && GQV_IS_CELL_RENDERER_ICON(cell))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1665 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1666 g_object_set(G_OBJECT(cell), "fixed_width", thumb_width,
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
1667 "fixed_height", options->thumbnails.max_height,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1668 "show_text", vfi->show_text, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1669 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1670 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1671 if (GTK_WIDGET_REALIZED(vfi->listview)) gtk_tree_view_columns_autosize(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1672 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1673
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1674 row = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1675 work = vfi->list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1676 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1677 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1678 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1679 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1680
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1681 row++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1682
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1683 list = vficon_add_row(vfi, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1684 while (work && list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1685 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1686 IconData *id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1687
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1688 id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1689 id->row = row;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1690
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1691 list->data = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1692 list = list->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1693 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1694 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1695 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1696
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1697 if (visible_id &&
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1698 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vfi->listview), 0, 0, &tpath, NULL, NULL, NULL))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1699 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1700 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1701 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1702
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1703 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1704 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1705
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1706 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1707 if (g_list_find(list, visible_id) == NULL &&
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1708 vficon_find_iter(vfi, visible_id, &iter, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1709 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1710 tree_view_row_make_visible(GTK_TREE_VIEW(vfi->listview), &iter, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1711 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1712 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1713
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1714 vfi->rows = row + 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1715
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1716 vficon_send_update(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1717 vficon_thumb_update(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1718 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1719
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1720 static void vficon_populate_at_new_size(ViewFileIcon *vfi, gint w, gint h, gint force)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1721 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1722 gint new_cols;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1723 gint thumb_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1724
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1725 thumb_width = vficon_get_icon_width(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1726
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1727 new_cols = w / (thumb_width + (THUMB_BORDER_PADDING * 6));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1728 if (new_cols < 1) new_cols = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1729
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1730 if (!force && new_cols == vfi->columns) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1731
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1732 vfi->columns = new_cols;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1733
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1734 vficon_populate(vfi, TRUE, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1735
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1736 if (debug) printf("col tab pop cols=%d rows=%d\n", vfi->columns, vfi->rows);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1737 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1738
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1739 static void vficon_sync(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1740 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1741 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1742 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1743 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1744 gint r, c;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1745
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1746 if (vfi->rows == 0) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1747
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1748 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1749
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1750 r = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1751 c = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1752
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1753 work = vfi->list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1754 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1755 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1756 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1757 r++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1758 c = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1759 if (gtk_tree_model_iter_nth_child(store, &iter, NULL, r))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1760 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1761 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1762 gtk_list_store_set(GTK_LIST_STORE(store), &iter, FILE_COLUMN_POINTER, list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1763 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1764 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1765 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1766 list = vficon_add_row(vfi, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1767 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1768
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1769 while (list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1770 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1771 IconData *id;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1772
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1773 if (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1774 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1775 id = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1776 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1777 c++;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1778
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1779 id->row = r;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1780 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1781 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1782 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1783 id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1784 }
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1785
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1786 list->data = id;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
1787 list = list->next;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1788 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1789 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1790
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1791 r++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1792 while (gtk_tree_model_iter_nth_child(store, &iter, NULL, r))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1793 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1794 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1795
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1796 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1797 gtk_list_store_remove(GTK_LIST_STORE(store), &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1798 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1799 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1800
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1801 vfi->rows = r;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1802
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1803 vficon_update_focus(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1804 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1805
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1806 static gint vficon_sync_idle_cb(gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1807 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1808 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1809
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1810 if (vfi->sync_idle_id == -1) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1811 vfi->sync_idle_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1812
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1813 vficon_sync(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1814 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1815 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1816
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1817 static void vficon_sync_idle(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1818 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1819 if (vfi->sync_idle_id == -1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1820 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1821 /* high priority, the view needs to be resynced before a redraw
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1822 * may contain invalid pointers at this time
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1823 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1824 vfi->sync_idle_id = g_idle_add_full(G_PRIORITY_HIGH, vficon_sync_idle_cb, vfi, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1825 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1826 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1827
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1828 static void vficon_sized_cb(GtkWidget *widget, GtkAllocation *allocation, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1829 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1830 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1831
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1832 vficon_populate_at_new_size(vfi, allocation->width, allocation->height, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1833 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1834
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1835 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1836 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1837 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1838 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1839 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1840
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1841 void vficon_sort_set(ViewFileIcon *vfi, SortType type, gint ascend)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1842 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1843 if (vfi->sort_method == type && vfi->sort_ascend == ascend) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1844
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1845 vfi->sort_method = type;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1846 vfi->sort_ascend = ascend;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1847
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1848 if (!vfi->list) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1849
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1850 vfi->list = iconlist_sort(vfi->list, vfi->sort_method, vfi->sort_ascend);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1851 vficon_sync(vfi);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1854 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1855 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1856 * thumb updates
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1857 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1858 */
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 static gint vficon_thumb_next(ViewFileIcon *vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1861
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1862 static void vficon_thumb_status(ViewFileIcon *vfi, gdouble val, const gchar *text)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1863 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1864 if (vfi->func_thumb_status)
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 vfi->func_thumb_status(vfi, val, text, vfi->data_thumb_status);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1867 }
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1870 static void vficon_thumb_cleanup(ViewFileIcon *vfi)
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 vficon_thumb_status(vfi, 0.0, NULL);
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 g_list_free(vfi->thumbs_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1875 vfi->thumbs_list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1876 vfi->thumbs_count = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1877 vfi->thumbs_running = FALSE;
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 thumb_loader_free(vfi->thumbs_loader);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1880 vfi->thumbs_loader = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1881
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1882 vfi->thumbs_fd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1883 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1884
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1885 static void vficon_thumb_stop(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1886 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1887 if (vfi->thumbs_running) vficon_thumb_cleanup(vfi);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1890 static void vficon_thumb_do(ViewFileIcon *vfi, ThumbLoader *tl, FileData *fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1891 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1892 GdkPixbuf *pixbuf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1893
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1894 if (!fd) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1895
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1896 pixbuf = thumb_loader_get_pixbuf(tl, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1897 vficon_set_thumb(vfi, fd, pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1898 g_object_unref(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1899
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1900 vficon_thumb_status(vfi, (gdouble)(vfi->thumbs_count) / g_list_length(vfi->list), _("Loading thumbs..."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1901 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1902
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1903 static void vficon_thumb_error_cb(ThumbLoader *tl, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1904 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1905 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1906
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1907 if (vfi->thumbs_fd && vfi->thumbs_loader == tl)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1908 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1909 vficon_thumb_do(vfi, tl, vfi->thumbs_fd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1910 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1911
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1912 while (vficon_thumb_next(vfi));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1913 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1914
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1915 static void vficon_thumb_done_cb(ThumbLoader *tl, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1916 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1917 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1918
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1919 if (vfi->thumbs_fd && vfi->thumbs_loader == tl)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1920 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1921 vficon_thumb_do(vfi, tl, vfi->thumbs_fd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1922 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1923
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1924 while (vficon_thumb_next(vfi));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1925 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1926
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1927 static gint vficon_thumb_next(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1928 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1929 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1930 FileData *fd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1931
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1932 if (!GTK_WIDGET_REALIZED(vfi->listview))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1933 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1934 vficon_thumb_status(vfi, 0.0, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1935 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1936 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1937
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1938 if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vfi->listview), 0, 0, &tpath, NULL, NULL, NULL))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1939 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1940 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1941 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1942 gint valid = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1943
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1944 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1945 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1946 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1947
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1948 while (!fd && valid && tree_view_row_get_visibility(GTK_TREE_VIEW(vfi->listview), &iter, FALSE) == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1949 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1950 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1951
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1952 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1953
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1954 while (!fd && list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1955 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1956 IconData *id = list->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1957 if (id && !id->fd->pixbuf) fd = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1958 list = list->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1959 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1960
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1961 valid = gtk_tree_model_iter_next(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1962 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1963 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1964
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1965 /* then find first undone */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1966
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1967 if (!fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1968 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1969 GList *work = vfi->list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1970 while (work && !fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1971 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1972 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
1973 FileData *fd_p = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1974 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1975
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1976 if (!fd_p->pixbuf) fd = fd_p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1977 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1978 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1979
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1980 if (!fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1981 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1982 /* done */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1983 vficon_thumb_cleanup(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1984 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1985 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1986
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1987 vfi->thumbs_count++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1988
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1989 vfi->thumbs_fd = fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1990
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1991 thumb_loader_free(vfi->thumbs_loader);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1992
333
767b53cd9ab7 Rename thumbnails related options.
zas_
parents: 330
diff changeset
1993 vfi->thumbs_loader = thumb_loader_new(options->thumbnails.max_width, options->thumbnails.max_height);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1994 thumb_loader_set_callbacks(vfi->thumbs_loader,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1995 vficon_thumb_done_cb,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1996 vficon_thumb_error_cb,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1997 NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1998 vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1999
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2000 if (!thumb_loader_start(vfi->thumbs_loader, fd->path))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2001 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2002 /* set icon to unknown, continue */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2003 if (debug) printf("thumb loader start failed %s\n", vfi->thumbs_loader->path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2004 vficon_thumb_do(vfi, vfi->thumbs_loader, fd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2005
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2006 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2007 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2008
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2009 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2010 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2011
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2012 static void vficon_thumb_update(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2013 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2014 vficon_thumb_stop(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2015
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2016 vficon_thumb_status(vfi, 0.0, _("Loading thumbs..."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2017 vfi->thumbs_running = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2018
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2019 while (vficon_thumb_next(vfi));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2020 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2021
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2022 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2023 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2024 * row stuff
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2025 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2026 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2027
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2028 FileData *vficon_index_get_data(ViewFileIcon *vfi, gint row)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2029 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2030 IconData *id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2031
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2032 id = g_list_nth_data(vfi->list, row);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2033 return id ? id->fd : NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2034 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2035
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2036 gchar *vficon_index_get_path(ViewFileIcon *vfi, gint row)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2037 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2038 FileData *fd;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2039 IconData *id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2040
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2041 id = g_list_nth_data(vfi->list, row);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2042 fd = id ? id->fd : NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2043
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2044 return (fd ? fd->path : NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2045 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2046
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2047 gint vficon_index_by_path(ViewFileIcon *vfi, const gchar *path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2048 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2049 gint p = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2050 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2051
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2052 if (!path) return -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2053
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2054 work = vfi->list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2055 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2056 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2057 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2058 FileData *fd = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2059 if (strcmp(path, fd->path) == 0) return p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2060 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2061 p++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2062 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2063
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2064 return -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2065 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2066
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2067 gint vficon_index_by_fd(ViewFileIcon *vfi, FileData *in_fd)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2068 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2069 gint p = 0;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2070 GList *work;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2071
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2072 if (!in_fd) return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2073
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2074 work = vfi->list;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2075 while (work)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2076 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2077 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2078 FileData *fd = id->fd;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2079 if (fd == in_fd) return p;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2080 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2081 p++;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2082 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2083
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2084 return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2085 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2086
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2087 static gint vficon_index_by_id(ViewFileIcon *vfi, IconData *in_id)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2088 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2089 gint p = 0;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2090 GList *work;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2091
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2092 if (!in_id) return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2093
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2094 work = vfi->list;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2095 while (work)
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2096 {
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2097 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2098 if (id == in_id) return p;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2099 work = work->next;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2100 p++;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2101 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2102
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2103 return -1;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2104 }
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2105
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2106 gint vficon_count(ViewFileIcon *vfi, gint64 *bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2107 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2108 if (bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2109 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2110 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2111 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2112
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2113 work = vfi->list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2114 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2115 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2116
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2117 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2118 FileData *fd = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2119 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2120 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2121 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2122
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2123 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2124 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2125
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2126 return g_list_length(vfi->list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2127 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2128
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2129 GList *vficon_get_list(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2130 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2131 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2132 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2133
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2134 work = vfi->list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2135 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2136 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2137 IconData *id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2138 FileData *fd = id->fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2139 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2140
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2141 list = g_list_prepend(list, file_data_ref(fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2142 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2143
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2144 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2145 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2146
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2147 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2148 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2149 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2150 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2151 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2152
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2153 static gint vficon_refresh_real(ViewFileIcon *vfi, gint keep_position)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2154 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2155 gint ret = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2156 GList *old_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2157 GList *work;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2158 IconData *focus_id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2159
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2160 focus_id = vfi->focus_id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2161
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2162 old_list = vfi->list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2163 vfi->list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2164
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2165 if (vfi->path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2166 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2167 ret = iconlist_read(vfi->path, &vfi->list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2168 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2169
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2170 /* check for same files from old_list */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2171 work = old_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2172 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2173 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2174 IconData *id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2175 FileData *fd;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2176
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2177 GList *needle;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2178
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2179 id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2180 fd = id->fd;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2181
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2182 needle = vfi->list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2183 while (needle)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2184 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2185 IconData *idn = needle->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2186 FileData *fdn = idn->fd;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 165
diff changeset
2187 if (fdn == fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2188 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2189 /* swap, to retain old thumb, selection */
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2190 needle->data = id;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2191 work->data = idn;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2192 needle = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2193 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2194 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2195 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2196 needle = needle->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2197 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2198 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2199
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2200 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2201 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2202
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2203 vfi->list = iconlist_sort(vfi->list, vfi->sort_method, vfi->sort_ascend);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2204
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2205 work = old_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2206 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2207 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2208 IconData *id = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2209 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2210
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2211 if (id == vfi->prev_selection) vfi->prev_selection = NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2212 if (id == vfi->click_id) vfi->click_id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2213 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2214
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2215 vficon_populate(vfi, TRUE, keep_position);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2216
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2217 /* attempt to keep focus on same icon when refreshing */
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2218 if (focus_id && g_list_find(vfi->list, focus_id))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2219 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2220 vficon_set_focus(vfi, focus_id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2221 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2222
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2223 iconlist_free(old_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2224
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2225 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2226 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2227
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2228 gint vficon_refresh(ViewFileIcon *vfi)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2229 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2230 return vficon_refresh_real(vfi, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2231 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2232
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2233 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2234 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2235 * draw, etc.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2236 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2237 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2238
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2239 typedef struct _ColumnData ColumnData;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2240 struct _ColumnData
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2241 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2242 ViewFileIcon *vfi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2243 gint number;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2244 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2245
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2246 static void vficon_cell_data_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2247 GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2248 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2249 ColumnData *cd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2250 ViewFileIcon *vfi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2251 GtkStyle *style;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2252 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2253 GdkColor color_fg;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2254 GdkColor color_bg;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2255 IconData *id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2256
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2257 vfi = cd->vfi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2258
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2259 gtk_tree_model_get(tree_model, iter, FILE_COLUMN_POINTER, &list, -1);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2260
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2261 id = g_list_nth_data(list, cd->number);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2262
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2263 if (id) g_assert(id->fd->magick == 0x12345678);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2264
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2265 style = gtk_widget_get_style(vfi->listview);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2266 if (id && id->selected & SELECTION_SELECTED)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2267 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2268 memcpy(&color_fg, &style->text[GTK_STATE_SELECTED], sizeof(color_fg));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2269 memcpy(&color_bg, &style->base[GTK_STATE_SELECTED], sizeof(color_bg));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2270 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2271 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2272 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2273 memcpy(&color_fg, &style->text[GTK_STATE_NORMAL], sizeof(color_fg));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2274 memcpy(&color_bg, &style->base[GTK_STATE_NORMAL], sizeof(color_bg));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2275 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2276
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2277 if (id && id->selected & SELECTION_PRELIGHT)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2278 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2279 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2280 shift_color(&color_fg, -1, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2281 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2282 shift_color(&color_bg, -1, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2283 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2284
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2285 if (GQV_IS_CELL_RENDERER_ICON(cell))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2286 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2287 if (id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2288 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2289 g_object_set(cell, "pixbuf", id->fd->pixbuf,
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2290 "text", id->fd->name,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2291 "cell-background-gdk", &color_bg,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2292 "cell-background-set", TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2293 "foreground-gdk", &color_fg,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2294 "foreground-set", TRUE,
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2295 "has-focus", (vfi->focus_id == id), NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2296 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2297 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2298 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2299 g_object_set(cell, "pixbuf", NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2300 "text", NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2301 "cell-background-set", FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2302 "foreground-set", FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2303 "has-focus", FALSE, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2304 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2305 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2306 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2307
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2308 static void vficon_append_column(ViewFileIcon *vfi, gint n)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2309 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2310 ColumnData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2311 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2312 GtkCellRenderer *renderer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2313
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2314 column = gtk_tree_view_column_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2315 gtk_tree_view_column_set_min_width(column, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2316
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2317 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2318 gtk_tree_view_column_set_alignment(column, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2319
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2320 renderer = gqv_cell_renderer_icon_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2321 gtk_tree_view_column_pack_start(column, renderer, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2322 g_object_set(G_OBJECT(renderer), "xpad", THUMB_BORDER_PADDING * 2,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2323 "ypad", THUMB_BORDER_PADDING,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2324 "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2325
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2326 g_object_set_data(G_OBJECT(column), "column_number", GINT_TO_POINTER(n));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2327
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2328 cd = g_new0(ColumnData, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2329 cd->vfi = vfi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2330 cd->number = n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2331 gtk_tree_view_column_set_cell_data_func(column, renderer, vficon_cell_data_cb, cd, g_free);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2332
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2333 gtk_tree_view_append_column(GTK_TREE_VIEW(vfi->listview), column);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2334 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2335
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2336 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2337 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2338 * base
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2339 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2340 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2341
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2342 gint vficon_set_path(ViewFileIcon *vfi, const gchar *path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2343 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2344 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2345
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2346 if (!path) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2347 if (vfi->path && strcmp(path, vfi->path) == 0) return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2348
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2349 g_free(vfi->path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2350 vfi->path = g_strdup(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2351
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2352 g_list_free(vfi->selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2353 vfi->selection = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2354
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2355 iconlist_free(vfi->list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2356 vfi->list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2357
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2358 /* NOTE: populate will clear the store for us */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2359 ret = vficon_refresh_real(vfi, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2360
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2361 vfi->focus_id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2362 vficon_move_focus(vfi, 0, 0, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2363
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2364 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2365 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2366
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2367 static void vficon_destroy_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2368 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2369 ViewFileIcon *vfi = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2370
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2371 if (vfi->popup)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2372 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2373 g_signal_handlers_disconnect_matched(G_OBJECT(vfi->popup), G_SIGNAL_MATCH_DATA,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2374 0, 0, 0, NULL, vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2375 gtk_widget_destroy(vfi->popup);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2376 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2377
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2378 if (vfi->sync_idle_id != -1) g_source_remove(vfi->sync_idle_id);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2379
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2380 tip_unschedule(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2381
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2382 vficon_thumb_cleanup(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2383
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2384 g_free(vfi->path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2385
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2386 iconlist_free(vfi->list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2387 g_list_free(vfi->selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2388 g_free(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2389 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2390
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2391 ViewFileIcon *vficon_new(const gchar *path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2392 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2393 ViewFileIcon *vfi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2394 GtkListStore *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2395 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2396 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2397
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2398 vfi = g_new0(ViewFileIcon, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2399
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2400 vfi->path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2401 vfi->sort_method = SORT_NAME;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2402 vfi->sort_ascend = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2403
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2404 vfi->selection = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2405 vfi->prev_selection = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2406
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2407 vfi->tip_window = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2408 vfi->tip_delay_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2409
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2410 vfi->focus_row = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2411 vfi->focus_column = 0;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2412 vfi->focus_id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2413
320
c74af1cbd61a Move more options to ConfOptions.
zas_
parents: 318
diff changeset
2414 vfi->show_text = options->show_icon_names;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2415
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2416 vfi->sync_idle_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2417
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2418 vfi->popup = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2419
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2420 vfi->widget = gtk_scrolled_window_new(NULL, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2421 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(vfi->widget), GTK_SHADOW_IN);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2422 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(vfi->widget),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2423 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2424 g_signal_connect(G_OBJECT(vfi->widget), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2425 G_CALLBACK(vficon_destroy_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2426
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2427 store = gtk_list_store_new(1, G_TYPE_POINTER);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2428 vfi->listview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2429 g_object_unref(store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2430
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2431 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vfi->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2432 gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_NONE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2433
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2434 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(vfi->listview), FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2435 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(vfi->listview), FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2436
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2437 for (i = 0; i < VFICON_MAX_COLUMNS; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2438 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2439 vficon_append_column(vfi, i);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2440 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2441
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2442 /* zero width column to hide tree view focus, we draw it ourselves */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2443 vficon_append_column(vfi, i);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2444 /* end column to fill white space */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2445 vficon_append_column(vfi, i);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2446
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2447 g_signal_connect(G_OBJECT(vfi->listview), "size_allocate",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2448 G_CALLBACK(vficon_sized_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2449 g_signal_connect(G_OBJECT(vfi->listview), "key_press_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2450 G_CALLBACK(vficon_press_key_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2451
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2452 gtk_container_add(GTK_CONTAINER(vfi->widget), vfi->listview);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2453 gtk_widget_show(vfi->listview);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2454
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2455 vficon_dnd_init(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2456
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2457 gtk_widget_set_events(vfi->listview, GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK |
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2458 GDK_BUTTON_PRESS_MASK | GDK_LEAVE_NOTIFY_MASK);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2459 g_signal_connect(G_OBJECT(vfi->listview), "button_press_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2460 G_CALLBACK(vficon_press_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2461 g_signal_connect(G_OBJECT(vfi->listview), "button_release_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2462 G_CALLBACK(vficon_release_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2463 g_signal_connect(G_OBJECT(vfi->listview),"motion_notify_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2464 G_CALLBACK(vficon_motion_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2465 g_signal_connect(G_OBJECT(vfi->listview), "leave_notify_event",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2466 G_CALLBACK(vficon_leave_cb), vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2467
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2468 /* force vfi->columns to be at least 1 (sane) - this will be corrected in the size_cb */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2469 vficon_populate_at_new_size(vfi, 1, 1, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2470
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2471 if (path) vficon_set_path(vfi, path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2472
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2473 return vfi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2474 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2475
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2476 void vficon_set_status_func(ViewFileIcon *vfi,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2477 void (*func)(ViewFileIcon *vfi, gpointer data), gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2478 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2479 vfi->func_status = func;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2480 vfi->data_status = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2481 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2482
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2483 void vficon_set_thumb_status_func(ViewFileIcon *vfi,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2484 void (*func)(ViewFileIcon *vfi, gdouble val, const gchar *text, gpointer data),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2485 gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2486 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2487 vfi->func_thumb_status = func;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2488 vfi->data_thumb_status = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2489 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2490
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2491 void vficon_set_layout(ViewFileIcon *vfi, LayoutWindow *layout)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2492 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2493 vfi->layout = layout;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2494 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2495
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2496 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2497 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2498 * maintenance (for rename, move, remove)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2499 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2500 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2501
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2502 static gint vficon_maint_find_closest(ViewFileIcon *vfi, gint row, gint count, GList *ignore_list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2503 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2504 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2505 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2506 gint rev = row - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2507 row ++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2508
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2509 work = ignore_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2510 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2511 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2512 FileData *fd = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2513 gint f = vficon_index_by_fd(vfi, work->data);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2514 g_assert(fd->magick == 0x12345678);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2515 if (f >= 0) list = g_list_prepend(list, GINT_TO_POINTER(f));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2516 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2517 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2518
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2519 while (list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2520 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2521 gint c = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2522 work = list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2523 while (work && c)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2524 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2525 gpointer p = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2526 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2527 if (row == GPOINTER_TO_INT(p))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2528 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2529 row++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2530 c = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2531 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2532 if (rev == GPOINTER_TO_INT(p))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2533 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2534 rev--;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2535 c = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2536 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2537 if (!c) list = g_list_remove(list, p);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2538 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2539 if (c && list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2540 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2541 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2542 list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2543 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2544 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2545 if (row > count - 1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2546 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2547 if (rev < 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2548 return -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2549 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2550 return rev;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2551 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2552 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2553 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2554 return row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2555 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2556 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2557
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2558 gint vficon_maint_renamed(ViewFileIcon *vfi, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2559 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2560 gint ret = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2561 gint row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2562 gchar *source_base;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2563 gchar *dest_base;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2564 IconData *id = vficon_icon_data(vfi, fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2565
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2566 if (!id) return FALSE;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2567
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2568 row = vficon_index_by_id(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2569 if (row < 0) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2570
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2571 source_base = remove_level_from_path(fd->change->source);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2572 dest_base = remove_level_from_path(fd->change->dest);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2573
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2574 if (strcmp(source_base, dest_base) == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2575 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2576 vfi->list = g_list_remove(vfi->list, id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2577 vfi->list = iconlist_insert_sort(vfi->list, id, vfi->sort_method, vfi->sort_ascend);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2578
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
2579 vficon_sync_idle(vfi);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2580 ret = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2581 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2582 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2583 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2584 ret = vficon_maint_removed(vfi, fd, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2585 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2586
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2587 g_free(source_base);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2588 g_free(dest_base);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2589
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2590 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2591 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2592
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2593 gint vficon_maint_removed(ViewFileIcon *vfi, FileData *fd, GList *ignore_list)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2594 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2595 gint row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2596 gint new_row = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2597 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2598 GtkTreeIter iter;
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2599 IconData *id = vficon_icon_data(vfi, fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2600
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2601 if (!id) return FALSE;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2602
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2603 row = g_list_index(vfi->list, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2604 if (row < 0) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2605
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2606 if ((id->selected & SELECTION_SELECTED) &&
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2607 layout_image_get_collection(vfi->layout, NULL) == NULL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2608 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2609 vficon_unselect(vfi, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2610
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2611 if (!vfi->selection)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2612 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2613 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2614
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2615 n = vficon_count(vfi, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2616 if (ignore_list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2617 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2618 new_row = vficon_maint_find_closest(vfi, row, n, ignore_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2619 if (debug) printf("row = %d, closest is %d\n", row, new_row);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2620 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2621 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2622 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2623 if (row + 1 < n)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2624 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2625 new_row = row + 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2626 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2627 else if (row > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2628 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2629 new_row = row - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2630 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2631 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2632 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2633 else if (ignore_list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2634 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2635 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2636
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2637 work = vfi->selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2638 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2639 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2640 IconData *ignore_id;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2641 FileData *ignore_fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2642 GList *tmp;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2643 gint match = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2644
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2645 ignore_id = work->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2646 ignore_fd = ignore_id->fd;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2647 g_assert(ignore_fd->magick == 0x12345678);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2648 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2649
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2650 tmp = ignore_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2651 while (tmp && !match)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2652 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2653 FileData *ignore_list_fd = tmp->data;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2654 g_assert(ignore_list_fd->magick == 0x12345678);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2655 tmp = tmp->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2656
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2657 if (ignore_list_fd == ignore_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2658 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2659 match = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2660 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2661 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2662 if (!match)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2663 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2664 new_row = g_list_index(vfi->list, ignore_id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2665 work = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2666 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2667 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2668 if (new_row == -1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2669 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2670 /* selection all ignored, use closest */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2671 new_row = vficon_maint_find_closest(vfi, row, vficon_count(vfi, NULL), ignore_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2672 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2673 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2674 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2675 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2676 new_row = g_list_index(vfi->list, vfi->selection->data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2677 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2678 if (new_row >= 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2679 {
272
fbbb960a3857 fixed file delete notification in view_file_icon
nadvornik
parents: 250
diff changeset
2680 IconData *idn = g_list_nth_data(vfi->list, new_row);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2681
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2682 vficon_select(vfi, idn);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2683 vficon_send_layout_select(vfi, idn);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2684 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2685 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2686
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2687 /* Thumb loader check */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2688 if (fd == vfi->thumbs_fd) vfi->thumbs_fd = NULL;
111
3a69a7a3f461 Wed Nov 15 02:05:27 2006 John Ellis <johne@verizon.net>
gqview
parents: 85
diff changeset
2689 if (vfi->thumbs_count > 0) vfi->thumbs_count--;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2690
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2691 if (vfi->prev_selection == id) vfi->prev_selection = NULL;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2692 if (vfi->click_id == id) vfi->click_id = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2693
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2694 /* remove pointer to this fd from grid */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2695 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vfi->listview));
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2696 if (id->row >= 0 &&
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2697 gtk_tree_model_iter_nth_child(store, &iter, NULL, id->row))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2698 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2699 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2700
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2701 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &list, -1);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2702 list = g_list_find(list, id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2703 if (list) list->data = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2704 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2705
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2706 vfi->list = g_list_remove(vfi->list, id);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2707 file_data_unref(fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2708 g_free(id);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2709
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2710 vficon_sync_idle(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2711 vficon_send_update(vfi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2712
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2713 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2714 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2715
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2716 gint vficon_maint_moved(ViewFileIcon *vfi, FileData *fd, GList *ignore_list)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2717 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2718 gint ret = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2719 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2720
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2721 if (!fd->change->source || !vfi->path) return FALSE;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2722
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2723 buf = remove_level_from_path(fd->change->source);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2724
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2725 if (strcmp(buf, vfi->path) == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2726 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 113
diff changeset
2727 ret = vficon_maint_removed(vfi, fd, ignore_list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2728 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2729
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2730 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2731
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2732 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2733 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2734