annotate src/view_file_list.c @ 1291:50ae02a4a675

replaced bar_info with an universal bar, restored the original functionality (more or less) bar configuration is not yet saved
author nadvornik
date Sat, 14 Feb 2009 19:50:54 +0000
parents 8b89e3ff286b
children 4a3ae0e6f1eb
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: 169
diff changeset
2 * Geeqie
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3 * (C) 2004 John Ellis
1284
8b89e3ff286b Add year 2009 to copyright info everywhere.
zas_
parents: 1264
diff changeset
4 * Copyright (C) 2008 - 2009 The Geeqie Team
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
5 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
6 * Author: John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
7 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
8 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
9 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
10 * This software comes with no warranty of any kind, use at your own risk!
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
11 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
12
281
9995c5fb202a gqview.h -> main.h
zas_
parents: 259
diff changeset
13 #include "main.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
14 #include "view_file_list.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
15
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
16 #include "bar_info.h"
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
17 #include "bar.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
18 #include "cache_maint.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 "layout.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
24 #include "layout_image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
25 #include "menu.h"
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
26 #include "metadata.h"
9
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_fileops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
30 #include "ui_menu.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
31 #include "ui_tree_edit.h"
904
1698baa37871 Move uri_*() functions to separate files: uri_utils.[ch]
zas_
parents: 852
diff changeset
32 #include "uri_utils.h"
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
33 #include "view_file.h"
9
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
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
37 /* Index to tree store */
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
38 enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
39 FILE_COLUMN_POINTER = 0,
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
40 FILE_COLUMN_VERSION,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
41 FILE_COLUMN_THUMB,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
42 FILE_COLUMN_NAME,
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
43 FILE_COLUMN_MULTILINE,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
44 FILE_COLUMN_SIZE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
45 FILE_COLUMN_DATE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
46 FILE_COLUMN_COLOR,
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
47 FILE_COLUMN_MARKS,
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
48 FILE_COLUMN_MARKS_LAST = FILE_COLUMN_MARKS + FILEDATA_MARKS_SIZE - 1,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
49 FILE_COLUMN_COUNT
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
52
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
53 /* Index to tree view */
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
54 enum {
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
55 FILE_VIEW_COLUMN_MARKS = 0,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
56 FILE_VIEW_COLUMN_MARKS_LAST = FILE_VIEW_COLUMN_MARKS + FILEDATA_MARKS_SIZE - 1,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
57 FILE_VIEW_COLUMN_THUMB,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
58 FILE_VIEW_COLUMN_MULTILINE,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
59 FILE_VIEW_COLUMN_NAME,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
60 FILE_VIEW_COLUMN_SIZE,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
61 FILE_VIEW_COLUMN_DATE,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
62 FILE_VIEW_COLUMN_COUNT
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
63 };
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
64
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
65
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
66
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
67 static gint vflist_row_is_selected(ViewFile *vf, FileData *fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
68 static gint vflist_row_rename_cb(TreeEditData *td, const gchar *old, const gchar *new, gpointer data);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
69 static void vflist_populate_view(ViewFile *vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
70
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
71
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
72 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
73 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
74 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
75 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
76 */
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
77 typedef struct {
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
78 FileData *fd;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
79 GtkTreeIter *iter;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
80 gint found;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
81 gint row;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
82 } ViewFileFindRowData;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
83
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
84 static gboolean vflist_find_row_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
85 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
86 ViewFileFindRowData *find = data;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
87 FileData *fd;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
88 gtk_tree_model_get(model, iter, FILE_COLUMN_POINTER, &fd, -1);
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
89 if (fd == find->fd)
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
90 {
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
91 *find->iter = *iter;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
92 find->found = 1;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
93 return TRUE;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
94 }
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
95 find->row++;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
96 return FALSE;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
97 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
98
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
99 static gint vflist_find_row(ViewFile *vf, FileData *fd, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
100 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
101 GtkTreeModel *store;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
102 ViewFileFindRowData data = {fd, iter, 0, 0};
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
103
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
104 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
105 gtk_tree_model_foreach(store, vflist_find_row_cb, &data);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
106
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
107 if (data.found)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
108 {
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
109 return data.row;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
110 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
111
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
112 return -1;
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
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
115 static FileData *vflist_find_data_by_coord(ViewFile *vf, gint x, gint y, GtkTreeIter *iter)
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
116 {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
117 GtkTreePath *tpath;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
118 GtkTreeViewColumn *column;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
119
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
120 if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vf->listview), x, y,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
121 &tpath, &column, NULL, NULL))
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
122 {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
123 GtkTreeModel *store;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
124 GtkTreeIter row;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
125 FileData *fd;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
126
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
127 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
128 gtk_tree_model_get_iter(store, &row, tpath);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
129 gtk_tree_path_free(tpath);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
130 gtk_tree_model_get(store, &row, FILE_COLUMN_POINTER, &fd, -1);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
131
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
132 return fd;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
133 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
134
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
135 return NULL;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
136 }
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
137
1005
ec2788ff6791 Comment out unused functions.
zas_
parents: 995
diff changeset
138 #if 0
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
139 static gint vflist_find_sidecar_list_idx(GList *work, FileData *fd)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
140 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
141 gint i = 0;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
142 while (work)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
143 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
144 FileData *fd_p = work->data;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
145 if (fd == fd_p) return i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
146
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
147 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
148
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
149 GList *work2 = fd_p->sidecar_files;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
150 while (work2)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
151 {
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
152 fd_p = work2->data;
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
153 if (fd == fd_p) return i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
154
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
155 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
156 work2 = work2->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
157 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
158 work = work->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
159 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
160 return -1;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
161 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
162
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
163 static gint vflist_sidecar_list_count(GList *work)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
164 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
165 gint i = 0;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
166 while (work)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
167 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
168 FileData *fd = work->data;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
169 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
170
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
171 GList *work2 = fd->sidecar_files;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
172 while (work2)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
173 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
174 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
175 work2 = work2->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
176 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
177 work = work->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
178 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
179 return i;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
180 }
1005
ec2788ff6791 Comment out unused functions.
zas_
parents: 995
diff changeset
181 #endif
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
182
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
183 static gboolean vflist_store_clear_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
184 {
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
185 FileData *fd;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
186 gtk_tree_model_get(model, iter, FILE_COLUMN_POINTER, &fd, -1);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
187 file_data_unref(fd);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
188 return FALSE;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
189 }
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
190
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
191 static void vflist_store_clear(ViewFile *vf)
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
192 {
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
193 GtkTreeModel *store;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
194 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
195 gtk_tree_model_foreach(store, vflist_store_clear_cb, NULL);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
196 gtk_tree_store_clear(GTK_TREE_STORE(store));
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
197 }
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
198
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
199 void vflist_color_set(ViewFile *vf, FileData *fd, gint color_set)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
200 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
201 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
202 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
203
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
204 if (vflist_find_row(vf, fd, &iter) < 0) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
205 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
206 gtk_tree_store_set(GTK_TREE_STORE(store), &iter, FILE_COLUMN_COLOR, color_set, -1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
207 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
208
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
209 static void vflist_move_cursor(ViewFile *vf, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
210 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
211 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
212 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
213
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
214 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
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 tpath = gtk_tree_model_get_path(store, iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
217 gtk_tree_view_set_cursor(GTK_TREE_VIEW(vf->listview), tpath, NULL, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
218 gtk_tree_path_free(tpath);
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
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
221
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
222 static gint vflist_column_idx(ViewFile *vf, gint store_idx)
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
223 {
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
224 GList *columns, *work;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
225 gint i = 0;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
226
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
227 columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(vf->listview));
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
228 work = columns;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
229 while (work)
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
230 {
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
231 GtkTreeViewColumn *column = work->data;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
232 if (store_idx == GPOINTER_TO_INT(g_object_get_data (G_OBJECT(column), "column_store_idx")))
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
233 break;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
234 work = work->next;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
235 i++;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
236 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
237
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
238 g_list_free(columns);
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
239 return i;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
240 }
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
241
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
242
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
243 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
244 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
245 * dnd
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
246 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
247 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
248
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
249 static void vflist_dnd_get(GtkWidget *widget, GdkDragContext *context,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
250 GtkSelectionData *selection_data, guint info,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
251 guint time, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
252 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
253 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
254 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
255 gchar *uri_text = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
256 gint total;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
257
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
258 if (!VFLIST(vf)->click_fd) return;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
259
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
260 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
261 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
262 list = vf_selection_get_list(vf);
9
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 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
265 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
266 list = g_list_append(NULL, file_data_ref(VFLIST(vf)->click_fd));
9
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
269 if (!list) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
270
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
271 uri_text = uri_text_from_filelist(list, &total, (info == TARGET_TEXT_PLAIN));
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
272 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
273
1164
3692efcbd325 Fix compilation warnings.
zas_
parents: 1055
diff changeset
274 DEBUG_1("%s", uri_text);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
275
64
04ff0df3ad2f Mon Aug 15 17:13:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
276 gtk_selection_data_set(selection_data, selection_data->target,
04ff0df3ad2f Mon Aug 15 17:13:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
277 8, (guchar *)uri_text, total);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
278 g_free(uri_text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
279 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
280
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
281 static void vflist_dnd_begin(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
282 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
283 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
284
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
285 vflist_color_set(vf, VFLIST(vf)->click_fd, TRUE);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
286
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
287 if (VFLIST(vf)->thumbs_enabled &&
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
288 VFLIST(vf)->click_fd && VFLIST(vf)->click_fd->thumb_pixbuf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
289 {
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
290 guint items;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
291
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
292 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
293 items = vf_selection_count(vf, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
294 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
295 items = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
296
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
297 dnd_set_drag_icon(widget, context, VFLIST(vf)->click_fd->thumb_pixbuf, items);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
298 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
299 }
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 vflist_dnd_end(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
302 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
303 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
304
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
305 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
306
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
307 if (context->action == GDK_ACTION_MOVE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
308 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
309 vf_refresh(vf);
9
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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
312
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
313 static void vflist_drag_data_received(GtkWidget *entry_widget, GdkDragContext *context,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
314 int x, int y, GtkSelectionData *selection,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
315 guint info, guint time, gpointer data)
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
316 {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
317 ViewFile *vf = data;
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
318
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
319 if (info == TARGET_TEXT_PLAIN) {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
320 FileData *fd = vflist_find_data_by_coord(vf, x, y, NULL);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
321
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
322 if (fd) {
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
323 /* Add keywords to file */
1264
de24174d9e55 Silent two minor warnings: GtkSelectionData data field is guchar* while g_strndup() wants gchar * as first parameter.
zas_
parents: 1254
diff changeset
324 gchar *str = g_strndup((gchar *)selection->data, selection->length);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
325 GList *kw_list = string_to_keywords_list(str);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
326
1238
947e603a52c6 simplified metadata interface, dropped metadata_read,
nadvornik
parents: 1233
diff changeset
327 metadata_append_list(fd, KEYWORD_KEY, kw_list);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
328 string_list_free(kw_list);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
329 g_free(str);
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
330 /*
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
331 file notification should handle this automatically
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
332 if (vf->layout && vf->layout->bar_info) {
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
333 bar_set_fd(vf->layout->bar_info, fd);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
334 }
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
335 */
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
336 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
337 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
338 }
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
339
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
340 void vflist_dnd_init(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
341 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
342 gtk_drag_source_set(vf->listview, GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
343 dnd_file_drag_types, dnd_file_drag_types_count,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
344 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
345 gtk_drag_dest_set(vf->listview, GTK_DEST_DEFAULT_ALL,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
346 dnd_file_drag_types, dnd_file_drag_types_count,
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
347 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
348
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
349 g_signal_connect(G_OBJECT(vf->listview), "drag_data_get",
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
350 G_CALLBACK(vflist_dnd_get), vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
351 g_signal_connect(G_OBJECT(vf->listview), "drag_begin",
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
352 G_CALLBACK(vflist_dnd_begin), vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
353 g_signal_connect(G_OBJECT(vf->listview), "drag_end",
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
354 G_CALLBACK(vflist_dnd_end), vf);
1202
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
355 g_signal_connect(G_OBJECT(vf->listview), "drag_data_received",
8bf3fff49ddd Allow to drag keywords on files in list or icon view. Dragged text is appended to keywords list of the destination file.
zas_
parents: 1164
diff changeset
356 G_CALLBACK(vflist_drag_data_received), vf);
9
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 * pop-up menu
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
634
92208e71673b Introduce vf_pop_menu_file_list() as a wrapper to
zas_
parents: 633
diff changeset
365 GList *vflist_pop_menu_file_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
366 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
367 if (!VFLIST(vf)->click_fd) return NULL;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
368
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
369 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
370 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
371 return vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
372 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
373
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
374 return g_list_append(NULL, file_data_ref(VFLIST(vf)->click_fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
375 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
376
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
377 void vflist_pop_menu_view_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
378 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
379 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
380
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
381 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
382 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
383 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
384
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
385 list = vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
386 view_window_new_from_list(list);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
387 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
388 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
389 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
390 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
391 view_window_new(VFLIST(vf)->click_fd);
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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
394
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
395 void vflist_pop_menu_rename_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
396 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
397 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
398 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
399
634
92208e71673b Introduce vf_pop_menu_file_list() as a wrapper to
zas_
parents: 633
diff changeset
400 list = vf_pop_menu_file_list(vf);
341
15c6b94545a2 Move safe_delete* and in place rename options to file_ops
zas_
parents: 334
diff changeset
401 if (options->file_ops.enable_in_place_rename &&
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
402 list && !list->next && VFLIST(vf)->click_fd)
9
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 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
405 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
406
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
407 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
408
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
409 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
410 if (vflist_find_row(vf, VFLIST(vf)->click_fd, &iter) >= 0)
9
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 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
413
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
414 tpath = gtk_tree_model_get_path(store, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
415 tree_edit_by_path(GTK_TREE_VIEW(vf->listview), tpath,
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
416 vflist_column_idx(vf, FILE_COLUMN_NAME), VFLIST(vf)->click_fd->name,
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
417 vflist_row_rename_cb, vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
418 gtk_tree_path_free(tpath);
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;
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
423 file_util_rename(NULL, list, vf->listview);
9
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
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
426 void vflist_pop_menu_thumbs_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
427 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
428 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
429
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
430 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
431 if (vf->layout)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
432 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
433 layout_thumb_set(vf->layout, !VFLIST(vf)->thumbs_enabled);
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 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
436 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
437 vflist_thumb_set(vf, !VFLIST(vf)->thumbs_enabled);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
438 }
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
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
441 void vflist_pop_menu_refresh_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
442 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
443 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
444
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
445 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
446 vf_refresh(vf);
9
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
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
449 void vflist_popup_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
450 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
451 ViewFile *vf = data;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
452 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
453 VFLIST(vf)->click_fd = NULL;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
454 vf->popup = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
455 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
456
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
457
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
458 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
459 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
460 * callbacks
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
461 *-----------------------------------------------------------------------------
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
464 static gint vflist_row_rename_cb(TreeEditData *td, const gchar *old, const gchar *new, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
465 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
466 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
467 gchar *old_path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
468 gchar *new_path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
469
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
470 if (strlen(new) == 0) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
471
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
472 old_path = g_build_filename(vf->dir_fd->path, old, NULL);
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
473 new_path = g_build_filename(vf->dir_fd->path, new, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
474
726
a1dcef8cd1ae Use G_DIR_SEPARATOR where applicable.
zas_
parents: 702
diff changeset
475 if (strchr(new, G_DIR_SEPARATOR) != NULL)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
476 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
477 gchar *text = g_strdup_printf(_("Invalid file name:\n%s"), new);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
478 file_util_warning_dialog(_("Error renaming file"), text, GTK_STOCK_DIALOG_ERROR, vf->listview);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
479 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
480 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
481 else
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
482 {
850
ff937cdfaee9 fixed in-place renaming
nadvornik
parents: 845
diff changeset
483 FileData *fd = file_data_new_simple(old_path); /* get the fd from cache */
ff937cdfaee9 fixed in-place renaming
nadvornik
parents: 845
diff changeset
484 file_util_rename_simple(fd, new_path, vf->listview);
ff937cdfaee9 fixed in-place renaming
nadvornik
parents: 845
diff changeset
485 file_data_unref(fd);
9
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 g_free(old_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
488 g_free(new_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
489
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
490 return FALSE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
493 static void vflist_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
494 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
495 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
496 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
497 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
498 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
499 gint cw, ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
500
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
501 if (vflist_find_row(vf, VFLIST(vf)->click_fd, &iter) < 0) return;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
502 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
503 tpath = gtk_tree_model_get_path(store, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
504 tree_view_get_cell_clamped(GTK_TREE_VIEW(vf->listview), tpath, FILE_COLUMN_NAME - 1, TRUE, x, y, &cw, &ch);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
505 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
506 *y += ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
507 popup_menu_position_clamp(menu, x, y, 0);
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
510 gint vflist_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
511 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
512 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
513 GtkTreePath *tpath;
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 if (event->keyval != GDK_Menu) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
516
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
517 gtk_tree_view_get_cursor(GTK_TREE_VIEW(vf->listview), &tpath, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
518 if (tpath)
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 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
521 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
522
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
523 store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
524 gtk_tree_model_get_iter(store, &iter, tpath);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
525 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &VFLIST(vf)->click_fd, -1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
526 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
527 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
528 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
529 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
530 VFLIST(vf)->click_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
531 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
532
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
533 vf->popup = vf_pop_menu(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
534 gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, vflist_menu_position_cb, vf, 0, GDK_CURRENT_TIME);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
535
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
536 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
537 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
538
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
539 gint vflist_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
540 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
541 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
542 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
543 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
544 FileData *fd = NULL;
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
545 GtkTreeViewColumn *column;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
546
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
547 vf->clicked_mark = 0;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
548
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
549 if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bevent->x, bevent->y,
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
550 &tpath, &column, NULL, NULL))
9
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 GtkTreeModel *store;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
553 gint col_idx = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(column), "column_store_idx"));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
554
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
555 if (bevent->button == MOUSE_BUTTON_LEFT &&
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
556 col_idx >= FILE_COLUMN_MARKS && col_idx <= FILE_COLUMN_MARKS_LAST)
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
557 return FALSE;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
558
655
beacc4c68c53 Fix last patch, only set vf->clicked_mark for a valid mark.
zas_
parents: 654
diff changeset
559 if (col_idx >= FILE_COLUMN_MARKS && col_idx <= FILE_COLUMN_MARKS_LAST)
beacc4c68c53 Fix last patch, only set vf->clicked_mark for a valid mark.
zas_
parents: 654
diff changeset
560 vf->clicked_mark = 1 + (col_idx - FILE_COLUMN_MARKS);
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
561
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
562 store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
9
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 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
565 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
566 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
567 gtk_tree_view_set_cursor(GTK_TREE_VIEW(widget), tpath, NULL, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
568 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
569 gtk_tree_path_free(tpath);
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
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
572 VFLIST(vf)->click_fd = fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
573
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
574 if (bevent->button == MOUSE_BUTTON_RIGHT)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
575 {
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
576 vf->popup = vf_pop_menu(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
577 gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, NULL, NULL,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
578 bevent->button, bevent->time);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
579 return TRUE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
582 if (!fd) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
583
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
584 if (bevent->button == MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
585 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
586 if (!vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
587 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
588 vflist_color_set(vf, fd, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
589 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
590 return TRUE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
593
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
594 if (bevent->button == MOUSE_BUTTON_LEFT && bevent->type == GDK_BUTTON_PRESS &&
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
595 !(bevent->state & GDK_SHIFT_MASK ) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
596 !(bevent->state & GDK_CONTROL_MASK ) &&
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
597 vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
598 {
526
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
599 GtkTreeSelection *selection;
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
600
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
601 gtk_widget_grab_focus(widget);
526
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
602
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
603
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
604 /* returning FALSE and further processing of the event is needed for
526
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
605 correct operation of the expander, to show the sidecar files.
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
606 It however resets the selection of multiple files. With this condition
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
607 it should work for both cases */
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
608 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
609 return (gtk_tree_selection_count_selected_rows(selection) > 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
610 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
611
1206
d79305a42a9b Switch to fullscreen when double clicking on file in icon or list view. Feature request 1966042. The code was there since a long time but disabled, please report any issue.
zas_
parents: 1202
diff changeset
612 #if 1
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
613 if (bevent->button == MOUSE_BUTTON_LEFT && bevent->type == GDK_2BUTTON_PRESS)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
614 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
615 if (vf->layout) layout_image_full_screen_start(vf->layout);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
616 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
617 #endif
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 return FALSE;
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
622 gint vflist_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
623 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
624 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
625 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
626 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
627 FileData *fd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
628
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
629 if (bevent->button == MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
630 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
631 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
632 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
633
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
634 if (bevent->button != MOUSE_BUTTON_LEFT && bevent->button != MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
635 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
636 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
637 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
638
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
639 if ((bevent->x != 0 || bevent->y != 0) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
640 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bevent->x, bevent->y,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
641 &tpath, NULL, NULL, NULL))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
642 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
643 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
644
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
645 store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
646 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
647 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
648 gtk_tree_path_free(tpath);
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
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
651 if (bevent->button == MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
652 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
653 if (fd && VFLIST(vf)->click_fd == fd)
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 GtkTreeSelection *selection;
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 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
658 if (vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
659 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
660 gtk_tree_selection_unselect_iter(selection, &iter);
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 else
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 gtk_tree_selection_select_iter(selection, &iter);
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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
667 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
668 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
669
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
670 if (fd && VFLIST(vf)->click_fd == fd &&
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
671 !(bevent->state & GDK_SHIFT_MASK ) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
672 !(bevent->state & GDK_CONTROL_MASK ) &&
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
673 vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
674 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
675 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
676
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
677 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
678 gtk_tree_selection_unselect_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
679 gtk_tree_selection_select_iter(selection, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
680 vflist_move_cursor(vf, &iter);
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
681 // return TRUE;// FIXME - expand
9
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
684 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
685 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
686
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
687 static void vflist_select_image(ViewFile *vf, FileData *sel_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
688 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
689 FileData *read_ahead_fd = NULL;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
690 gint row;
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 143
diff changeset
691 FileData *cur_fd;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
692 if (!sel_fd) return;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
693
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
694 cur_fd = layout_image_get_fd(vf->layout);
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 143
diff changeset
695 if (sel_fd == cur_fd) return; /* no change */
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
696
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
697 row = g_list_index(vf->list, sel_fd);
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
698 // FIXME sidecar data
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
699
334
df868b947aa0 Rename image-related options.
zas_
parents: 333
diff changeset
700 if (sel_fd && options->image.enable_read_ahead && row >= 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
701 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
702 if (row > g_list_index(vf->list, cur_fd) &&
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
703 (guint) (row + 1) < vf_count(vf, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
704 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
705 read_ahead_fd = vf_index_get_data(vf, row + 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
706 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
707 else if (row > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
708 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
709 read_ahead_fd = vf_index_get_data(vf, row - 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
710 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
711 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
712
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
713 layout_image_set_with_ahead(vf->layout, sel_fd, read_ahead_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
714 }
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 static gint vflist_select_idle_cb(gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
717 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
718 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
719
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
720 if (!vf->layout)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
721 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
722 VFLIST(vf)->select_idle_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
723 return FALSE;
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
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
726 vf_send_update(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
727
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
728 if (VFLIST(vf)->select_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
729 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
730 vflist_select_image(vf, VFLIST(vf)->select_fd);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
731 VFLIST(vf)->select_fd = NULL;
9
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
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
734 VFLIST(vf)->select_idle_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
735 return FALSE;
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
738 static void vflist_select_idle_cancel(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
739 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
740 if (VFLIST(vf)->select_idle_id != -1) g_source_remove(VFLIST(vf)->select_idle_id);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
741 VFLIST(vf)->select_idle_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
742 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
743
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
744 static gboolean vflist_select_cb(GtkTreeSelection *selection, GtkTreeModel *store, GtkTreePath *tpath,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
745 gboolean path_currently_selected, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
746 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
747 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
748 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
749
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
750 if (!path_currently_selected &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
751 gtk_tree_model_get_iter(store, &iter, tpath))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
752 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
753 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &VFLIST(vf)->select_fd, -1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
754 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
755 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
756 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
757 VFLIST(vf)->select_fd = NULL;
9
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
760 if (vf->layout &&
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
761 VFLIST(vf)->select_idle_id == -1)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
762 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
763 VFLIST(vf)->select_idle_id = g_idle_add(vflist_select_idle_cb, vf);
9
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
766 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
767 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
768
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
769 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
770 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
771 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
772 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
773 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
774
259
fa7d69e7d02d Comment out unused code.
zas_
parents: 250
diff changeset
775 /*
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
776 static gboolean vflist_dummy_select_cb(GtkTreeSelection *selection, GtkTreeModel *store, GtkTreePath *tpath,
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
777 gboolean path_currently_selected, gpointer data)
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
778 {
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
779 return TRUE;
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
780 }
259
fa7d69e7d02d Comment out unused code.
zas_
parents: 250
diff changeset
781 */
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
782
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
783 static void vflist_setup_iter(ViewFile *vf, GtkTreeStore *store, GtkTreeIter *iter, FileData *fd)
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
784 {
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
785 gchar *size;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
786 gchar *sidecars = NULL;
834
e5cb9f4389f4 join name and sidecars to one string
nadvornik
parents: 833
diff changeset
787 gchar *name_sidecars;
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
788 gchar *multiline;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
789 const gchar *time = text_from_time(fd->date);
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
790 gchar *link = islink(fd->path) ? GQ_LINK_STR : "";
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
791
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
792
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
793 if (fd->sidecar_files)
834
e5cb9f4389f4 join name and sidecars to one string
nadvornik
parents: 833
diff changeset
794 {
596
f8c93e1d728d use some of the new functions in filedata.c
nadvornik
parents: 578
diff changeset
795 sidecars = file_data_sc_list_to_string(fd);
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
796 name_sidecars = g_strdup_printf("%s%s %s", link, fd->name, sidecars);
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
797 }
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
798 else
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
799 {
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
800 name_sidecars = g_strdup_printf("%s%s", link, fd->name);
834
e5cb9f4389f4 join name and sidecars to one string
nadvornik
parents: 833
diff changeset
801 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
802 size = text_from_size(fd->size);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
803
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
804 multiline = g_strdup_printf("%s\n%s\n%s", name_sidecars, size, time);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
805
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
806 gtk_tree_store_set(store, iter, FILE_COLUMN_POINTER, fd,
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
807 FILE_COLUMN_VERSION, fd->version,
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
808 FILE_COLUMN_THUMB, fd->thumb_pixbuf,
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
809 FILE_COLUMN_MULTILINE, multiline,
834
e5cb9f4389f4 join name and sidecars to one string
nadvornik
parents: 833
diff changeset
810 FILE_COLUMN_NAME, name_sidecars,
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
811 FILE_COLUMN_SIZE, size,
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
812 FILE_COLUMN_DATE, time,
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
813 #define STORE_SET_IS_SLOW 1
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
814 #if STORE_SET_IS_SLOW
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
815 /* this is 3x faster on a directory with 20000 files */
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
816 FILE_COLUMN_MARKS + 0, file_data_get_mark(fd, 0),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
817 FILE_COLUMN_MARKS + 1, file_data_get_mark(fd, 1),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
818 FILE_COLUMN_MARKS + 2, file_data_get_mark(fd, 2),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
819 FILE_COLUMN_MARKS + 3, file_data_get_mark(fd, 3),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
820 FILE_COLUMN_MARKS + 4, file_data_get_mark(fd, 4),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
821 FILE_COLUMN_MARKS + 5, file_data_get_mark(fd, 5),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
822 #if FILEDATA_MARKS_SIZE != 6
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
823 #error this needs to be updated
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
824 #endif
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
825 #endif
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
826 FILE_COLUMN_COLOR, FALSE, -1);
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
827
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
828 #if !STORE_SET_IS_SLOW
830
a06d885de883 Silent unused variable warning.
zas_
parents: 829
diff changeset
829 {
a06d885de883 Silent unused variable warning.
zas_
parents: 829
diff changeset
830 gint i;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
831 for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
832 gtk_tree_store_set(store, iter, FILE_COLUMN_MARKS + i, file_data_get_mark(fd, i), -1);
830
a06d885de883 Silent unused variable warning.
zas_
parents: 829
diff changeset
833 }
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
834 #endif
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
835 g_free(size);
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
836 g_free(sidecars);
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
837 g_free(name_sidecars);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
838 g_free(multiline);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
839 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
840
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
841 static void vflist_setup_iter_recursive(ViewFile *vf, GtkTreeStore *store, GtkTreeIter *parent_iter, GList *list, GList *selected)
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
842 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
843 GList *work;
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
844 GtkTreeIter iter;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
845 gint valid;
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
846 gint num_ordered = 0;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
847 gint num_prepended = 0;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
848
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
849 valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(store), &iter, parent_iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
850
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
851 work = list;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
852 while (work)
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
853 {
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
854 gint match;
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
855 FileData *fd = work->data;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
856 gint done = FALSE;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
857
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
858 while (!done)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
859 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
860 FileData *old_fd = NULL;
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
861 gint old_version = 0;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
862
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
863 if (valid)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
864 {
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
865 num_ordered++;
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
866 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter,
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
867 FILE_COLUMN_POINTER, &old_fd,
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
868 FILE_COLUMN_VERSION, &old_version,
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
869 -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
870
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
871 if (fd == old_fd)
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
872 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
873 match = 0;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
874 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
875 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
876 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
877 if (parent_iter)
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
878 match = filelist_sort_compare_filedata_full(fd, old_fd, SORT_NAME, TRUE); /* always sort sidecars by name */
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
879 else
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
880 match = filelist_sort_compare_filedata_full(fd, old_fd, vf->sort_method, vf->sort_ascend);
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
881
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
882 if (match == 0) g_warning("multiple fd for the same path");
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
883 }
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
884
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
885 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
886 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
887 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
888 match = -1;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
889 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
890
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
891 if (match < 0)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
892 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
893 GtkTreeIter new;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
894
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
895 if (valid)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
896 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
897 gtk_tree_store_insert_before(store, &new, parent_iter, &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
898 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
899 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
900 {
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
901 /*
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
902 here should be used gtk_tree_store_append, but this function seems to be O(n)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
903 and it seems to be much faster to add new entries to the beginning and reorder later
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
904 */
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
905 num_prepended++;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
906 gtk_tree_store_prepend(store, &new, parent_iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
907 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
908
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
909 vflist_setup_iter(vf, store, &new, file_data_ref(fd));
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
910 vflist_setup_iter_recursive(vf, store, &new, fd->sidecar_files, selected);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
911
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
912 if (g_list_find(selected, fd))
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
913 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
914 /* renamed files - the same fd appears at different position - select it again*/
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
915 GtkTreeSelection *selection;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
916 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
917 gtk_tree_selection_select_iter(selection, &new);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
918 }
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
919
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
920 done = TRUE;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
921 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
922 else if (match > 0)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
923 {
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
924 file_data_unref(old_fd);
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
925 valid = gtk_tree_store_remove(store, &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
926 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
927 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
928 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
929 if (fd->version != old_version)
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
930 {
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
931 vflist_setup_iter(vf, store, &iter, fd);
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
932 vflist_setup_iter_recursive(vf, store, &iter, fd->sidecar_files, selected);
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
933 }
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
934
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
935 if (valid) valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
936
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
937 done = TRUE;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
938 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
939 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
940 work = work->next;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
941 }
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
942
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
943 while (valid)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
944 {
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
945 FileData *old_fd;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
946 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &old_fd, -1);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
947 file_data_unref(old_fd);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
948
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
949 valid = gtk_tree_store_remove(store, &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
950 }
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
951
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
952 /* move the prepended entries to the correct position */
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
953 if (num_prepended)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
954 {
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
955 gint i;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
956 gint num_total = num_prepended + num_ordered;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
957 gint *new_order = g_malloc(num_total * sizeof(gint));
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
958
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
959 for (i = 0; i < num_total; i++)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
960 {
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
961 if (i < num_ordered)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
962 new_order[i] = num_prepended + i;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
963 else
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
964 new_order[i] = num_total - 1 - i;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
965 }
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
966 gtk_tree_store_reorder(store, parent_iter, new_order);
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
967
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
968 g_free(new_order);
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
969 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
970 }
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
971
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
972 void vflist_sort_set(ViewFile *vf, SortType type, gint ascend)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
973 {
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
974 gint i;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
975 GHashTable *fd_idx_hash = g_hash_table_new(NULL, NULL);
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
976 gint *new_order;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
977 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
978 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
979
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
980 if (vf->sort_method == type && vf->sort_ascend == ascend) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
981 if (!vf->list) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
982
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
983 work = vf->list;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
984 i = 0;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
985 while (work)
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
986 {
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
987 FileData *fd = work->data;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
988 g_hash_table_insert(fd_idx_hash, fd, GINT_TO_POINTER(i));
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
989 i++;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
990 work = work->next;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
991 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
992
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
993 vf->sort_method = type;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
994 vf->sort_ascend = ascend;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
995
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
996 vf->list = filelist_sort(vf->list, vf->sort_method, vf->sort_ascend);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
997
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
998 new_order = g_malloc(i * sizeof(gint));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
999
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1000 work = vf->list;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1001 i = 0;
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1002 while (work)
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1003 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1004 FileData *fd = work->data;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1005 new_order[i] = GPOINTER_TO_INT(g_hash_table_lookup(fd_idx_hash, fd));
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1006 i++;
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1007 work = work->next;
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1008 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1009
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1010 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1011 gtk_tree_store_reorder(store, NULL, new_order);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1012
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1013 g_free(new_order);
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1014 g_hash_table_destroy(fd_idx_hash);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1015 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1016
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1017 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1018 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1019 * thumb updates
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1020 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1021 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1022
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1023 static gint vflist_thumb_next(ViewFile *vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1024
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1025 static void vflist_thumb_progress_count(GList *list, gint *count, gint *done)
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1026 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1027 GList *work = list;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1028 while (work)
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1029 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1030 FileData *fd = work->data;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1031 work = work->next;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1032
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1033 if (fd->thumb_pixbuf) (*done)++;
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1034
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1035 if (fd->sidecar_files)
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1036 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1037 vflist_thumb_progress_count(fd->sidecar_files, count, done);
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1038 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1039 (*count)++;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1040 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1041 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1042
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1043 static gdouble vflist_thumb_progress(ViewFile *vf)
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1044 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1045 gint count = 0;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1046 gint done = 0;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1047
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1048 vflist_thumb_progress_count(vf->list, &count, &done);
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1049
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1050 DEBUG_1("thumb progress: %d of %d", done, count);
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1051 return (gdouble)done / count;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1052 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1053
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1054
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1055 static void vflist_thumb_status(ViewFile *vf, gdouble val, const gchar *text)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1056 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1057 if (vf->func_thumb_status)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1058 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1059 vf->func_thumb_status(vf, val, text, vf->data_thumb_status);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1060 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1061 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1062
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1063 static void vflist_thumb_cleanup(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1064 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1065 vflist_thumb_status(vf, 0.0, NULL);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1066
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1067 vf->thumbs_running = FALSE;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1068
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1069 thumb_loader_free(vf->thumbs_loader);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1070 vf->thumbs_loader = NULL;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1071
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1072 vf->thumbs_filedata = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1073 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1074
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1075 static void vflist_thumb_stop(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1076 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1077 if (vf->thumbs_running) vflist_thumb_cleanup(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1078 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1079
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1080 static void vflist_thumb_do(ViewFile *vf, ThumbLoader *tl, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1081 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1082 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1083 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1084
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1085 if (!fd || vflist_find_row(vf, fd, &iter) < 0) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1086
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1087 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1088 gtk_tree_store_set(store, &iter, FILE_COLUMN_THUMB, fd->thumb_pixbuf, -1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1089
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1090 vflist_thumb_status(vf, vflist_thumb_progress(vf), _("Loading thumbs..."));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1091 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1092
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1093 static void vflist_thumb_error_cb(ThumbLoader *tl, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1094 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1095 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1096
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1097 if (vf->thumbs_filedata && vf->thumbs_loader == tl)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1098 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1099 vflist_thumb_do(vf, tl, vf->thumbs_filedata);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1100 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1101
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1102 while (vflist_thumb_next(vf));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1103 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1104
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1105 static void vflist_thumb_done_cb(ThumbLoader *tl, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1106 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1107 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1108
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1109 if (vf->thumbs_filedata && vf->thumbs_loader == tl)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1110 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1111 vflist_thumb_do(vf, tl, vf->thumbs_filedata);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1112 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1113
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1114 while (vflist_thumb_next(vf));
9
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1117 static gint vflist_thumb_next(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1118 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1119 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1120 FileData *fd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1121
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1122 /* first check the visible files */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1123
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1124 if (GTK_WIDGET_REALIZED(vf->listview) &&
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1125 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(vf->listview), 0, 0, &tpath, NULL, NULL, NULL))
9
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 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1128 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1129 gint valid = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1130
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1131 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1132 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1133 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1134
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1135 while (!fd && valid && tree_view_row_get_visibility(GTK_TREE_VIEW(vf->listview), &iter, FALSE) == 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1136 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1137 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1138 if (fd->thumb_pixbuf) fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1139
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1140 valid = gtk_tree_model_iter_next(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1141 }
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1144 /* then find first undone */
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 if (!fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1147 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1148 GList *work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1149 while (work && !fd)
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 FileData *fd_p = work->data;
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1152 if (!fd_p->thumb_pixbuf)
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1153 fd = fd_p;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1154 else
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1155 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1156 GList *work2 = fd_p->sidecar_files;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1157
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1158 while (work2 && !fd)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1159 {
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1160 fd_p = work2->data;
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1161 if (!fd_p->thumb_pixbuf) fd = fd_p;
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1162 work2 = work2->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1163 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1164 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1165 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1166 }
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 (!fd)
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 /* done */
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1172 vflist_thumb_cleanup(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1173 return FALSE;
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1176 vf->thumbs_filedata = fd;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1177
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1178 thumb_loader_free(vf->thumbs_loader);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1179
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1180 vf->thumbs_loader = thumb_loader_new(options->thumbnails.max_width, options->thumbnails.max_height);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1181 thumb_loader_set_callbacks(vf->thumbs_loader,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1182 vflist_thumb_done_cb,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1183 vflist_thumb_error_cb,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1184 NULL,
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1185 vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1186
838
9bd49e725ad3 use FileData in thumb_loader
nadvornik
parents: 835
diff changeset
1187 if (!thumb_loader_start(vf->thumbs_loader, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1188 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1189 /* set icon to unknown, continue */
838
9bd49e725ad3 use FileData in thumb_loader
nadvornik
parents: 835
diff changeset
1190 DEBUG_1("thumb loader start failed %s", fd->path);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1191 vflist_thumb_do(vf, vf->thumbs_loader, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1192
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1193 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1194 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1195
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1196 return FALSE;
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1199 static void vflist_thumb_update(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1200 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1201 vflist_thumb_stop(vf);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1202 if (!VFLIST(vf)->thumbs_enabled) return;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1203
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1204 vflist_thumb_status(vf, 0.0, _("Loading thumbs..."));
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1205 vf->thumbs_running = TRUE;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1206
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1207 while (vflist_thumb_next(vf));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1208 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1209
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1210 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1211 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1212 * row stuff
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 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1215
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1216 FileData *vflist_index_get_data(ViewFile *vf, gint row)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1217 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1218 return g_list_nth_data(vf->list, row);
9
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
664
db373fb1b9d8 Merge vflist_row_by_path() into vflist_index_by_path().
zas_
parents: 659
diff changeset
1221 gint vflist_index_by_path(ViewFile *vf, const gchar *path)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1222 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1223 gint p = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1224 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1225
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1226 if (!path) return -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1227
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1228 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1229 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1230 {
664
db373fb1b9d8 Merge vflist_row_by_path() into vflist_index_by_path().
zas_
parents: 659
diff changeset
1231 FileData *fd = work->data;
db373fb1b9d8 Merge vflist_row_by_path() into vflist_index_by_path().
zas_
parents: 659
diff changeset
1232 if (strcmp(path, fd->path) == 0) return p;
db373fb1b9d8 Merge vflist_row_by_path() into vflist_index_by_path().
zas_
parents: 659
diff changeset
1233
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1234 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1235 p++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1236 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1237
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1238 return -1;
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
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
1241 guint vflist_count(ViewFile *vf, gint64 *bytes)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1242 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1243 if (bytes)
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 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1246 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1247
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1248 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1249 while (work)
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 FileData *fd = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1252 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1253 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1254 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1255
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1256 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1257 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1258
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1259 return g_list_length(vf->list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1260 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1261
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1262 GList *vflist_get_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1263 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1264 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1265 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1266
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1267 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1268 while (work)
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 FileData *fd = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1271 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1272
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
1273 list = g_list_prepend(list, file_data_ref(fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1274 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1275
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1276 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1277 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1278
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1279 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1280 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1281 * selections
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1282 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1283 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1284
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1285 static gint vflist_row_is_selected(ViewFile *vf, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1286 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1287 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1288 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1289 GList *slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1290 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1291 gint found = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1292
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1293 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1294 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1295 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1296 while (!found && work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1297 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1298 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1299 FileData *fd_n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1300 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1301
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1302 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1303 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd_n, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1304 if (fd_n == fd) found = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1305 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1306 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1307 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1308 g_list_free(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1309
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1310 return found;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1311 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1312
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1313 gint vflist_index_is_selected(ViewFile *vf, gint row)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1314 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1315 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1316
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1317 fd = vf_index_get_data(vf, row);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1318 return vflist_row_is_selected(vf, fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1319 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1320
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
1321 guint vflist_selection_count(ViewFile *vf, gint64 *bytes)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1322 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1323 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1324 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1325 GList *slist;
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
1326 guint count;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1327
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1328 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1329 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1330
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1331 if (bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1332 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1333 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1334 GList *work;
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 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1337 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1338 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1339 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1340 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1341 FileData *fd;
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 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1344 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1345 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1346
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1347 work = work->next;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1350 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1351 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1352
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1353 count = g_list_length(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1354 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1355 g_list_free(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1356
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1357 return count;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1358 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1359
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1360 GList *vflist_selection_get_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1361 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1362 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1363 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1364 GList *slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1365 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1366 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1367
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1368 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1369 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1370 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1371 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1372 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1373 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1374 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1375 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1376
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1377 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1378 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1379
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
1380 list = g_list_prepend(list, file_data_ref(fd));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1381
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1382 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1383 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1384 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1385 g_list_free(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1386
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1387 return g_list_reverse(list);
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1390 GList *vflist_selection_get_list_by_index(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1391 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1392 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1393 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1394 GList *slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1395 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1396 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1397
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1398 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1399 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1400 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1401 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1402 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1403 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1404 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1405 GtkTreeIter iter;
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 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1408 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1409
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1410 list = g_list_prepend(list, GINT_TO_POINTER(g_list_index(vf->list, fd)));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1411
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1412 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1413 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1414 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1415 g_list_free(slist);
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 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1418 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1419
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1420 void vflist_select_all(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1421 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1422 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1423
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1424 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1425 gtk_tree_selection_select_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1426
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1427 VFLIST(vf)->select_fd = NULL;
9
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1430 void vflist_select_none(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1431 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1432 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1433
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1434 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1435 gtk_tree_selection_unselect_all(selection);
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
601
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1438 static gboolean tree_model_iter_prev(GtkTreeModel *store, GtkTreeIter *iter)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1439 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1440 GtkTreePath *tpath;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1441 gboolean result;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1442
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1443 tpath = gtk_tree_model_get_path(store, iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1444 result = gtk_tree_path_prev(tpath);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1445 if (result)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1446 gtk_tree_model_get_iter(store, iter, tpath);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1447
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1448 gtk_tree_path_free(tpath);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1449
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1450 return result;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1451 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1452
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1453 static gboolean tree_model_get_iter_last(GtkTreeModel *store, GtkTreeIter *iter)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1454 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1455 if (!gtk_tree_model_get_iter_first(store, iter))
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1456 return FALSE;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1457
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1458 while (TRUE)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1459 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1460 GtkTreeIter next = *iter;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1461
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1462 if (gtk_tree_model_iter_next(store, &next))
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1463 *iter = next;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1464 else
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1465 break;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1466 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1467
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1468 return TRUE;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1469 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1470
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1471 void vflist_select_invert(ViewFile *vf)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1472 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1473 GtkTreeIter iter;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1474 GtkTreeSelection *selection;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1475 GtkTreeModel *store;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1476 gboolean valid;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1477
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1478 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1479 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1480
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1481 /* Backward iteration prevents scrolling to the end of the list,
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1482 * it scrolls to the first selected row instead. */
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1483 valid = tree_model_get_iter_last(store, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1484
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1485 while (valid)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1486 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1487 gint selected = gtk_tree_selection_iter_is_selected(selection, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1488
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1489 if (selected)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1490 gtk_tree_selection_unselect_iter(selection, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1491 else
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1492 gtk_tree_selection_select_iter(selection, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1493
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1494 valid = tree_model_iter_prev(store, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1495 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1496 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1497
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1498 void vflist_select_by_fd(ViewFile *vf, FileData *fd)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
1499 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1500 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1501
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1502 if (vflist_find_row(vf, fd, &iter) < 0) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1503
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1504 tree_view_row_make_visible(GTK_TREE_VIEW(vf->listview), &iter, TRUE);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1505
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1506 if (!vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1507 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1508 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1509 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1510 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1511
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1512 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1513 gtk_tree_selection_unselect_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1514 gtk_tree_selection_select_iter(selection, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1515 vflist_move_cursor(vf, &iter);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1516
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1517 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1518 tpath = gtk_tree_model_get_path(store, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1519 gtk_tree_view_set_cursor(GTK_TREE_VIEW(vf->listview), tpath, NULL, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1520 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1521 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1522 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1523
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1524 static void vflist_select_closest(ViewFile *vf, FileData *sel_fd)
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1525 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1526 GList *work;
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1527 FileData *fd = NULL;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1528
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1529 if (sel_fd->parent) sel_fd = sel_fd->parent;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1530 work = vf->list;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1531
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1532 while (work)
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1533 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1534 gint match;
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1535 fd = work->data;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1536 work = work->next;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1537
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1538 match = filelist_sort_compare_filedata_full(fd, sel_fd, vf->sort_method, vf->sort_ascend);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1539
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1540 if (match >= 0) break;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1541 }
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1542
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1543 if (fd) vflist_select_by_fd(vf, fd);
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1544
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1545 }
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1546
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1547 void vflist_mark_to_selection(ViewFile *vf, gint mark, MarkToSelectionMode mode)
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1548 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1549 GtkTreeModel *store;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1550 GtkTreeIter iter;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1551 GtkTreeSelection *selection;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1552 gint valid;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1553 gint n = mark - 1;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1554
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1555 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1556
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1557 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1558 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1559
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1560 valid = gtk_tree_model_get_iter_first(store, &iter);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1561 while (valid)
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1562 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1563 FileData *fd;
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1564 gboolean mark_val, selected;
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1565 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1566
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1567 mark_val = file_data_get_mark(fd, n);
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1568 selected = gtk_tree_selection_iter_is_selected(selection, &iter);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1569
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1570 switch (mode)
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1571 {
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1572 case MTS_MODE_SET: selected = mark_val;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1573 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1574 case MTS_MODE_OR: selected = mark_val | selected;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1575 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1576 case MTS_MODE_AND: selected = mark_val & selected;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1577 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1578 case MTS_MODE_MINUS: selected = !mark_val & selected;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1579 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1580 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1581
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1582 if (selected)
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1583 gtk_tree_selection_select_iter(selection, &iter);
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1584 else
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1585 gtk_tree_selection_unselect_iter(selection, &iter);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1586
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1587 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1588 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1589 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1590
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1591 void vflist_selection_to_mark(ViewFile *vf, gint mark, SelectionToMarkMode mode)
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1592 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1593 GtkTreeModel *store;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1594 GtkTreeSelection *selection;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1595 GList *slist;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1596 GList *work;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1597 gint n = mark - 1;
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1598
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1599 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1600
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1601 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1602 slist = gtk_tree_selection_get_selected_rows(selection, &store);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1603 work = slist;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1604 while (work)
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1605 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1606 GtkTreePath *tpath = work->data;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1607 FileData *fd;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1608 GtkTreeIter iter;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1609
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1610 gtk_tree_model_get_iter(store, &iter, tpath);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1611 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1612
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1613 file_data_unregister_notify_func(vf_notify_cb, vf); /* we don't need the notification */
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1614
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1615 switch (mode)
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1616 {
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1617 case STM_MODE_SET: file_data_set_mark(fd, n, 1);
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1618 break;
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1619 case STM_MODE_RESET: file_data_set_mark(fd, n, 0);
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1620 break;
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1621 case STM_MODE_TOGGLE: file_data_set_mark(fd, n, !file_data_get_mark(fd, n));
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1622 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1623 }
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
1624
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1625 if (!file_data_filter_marks(fd, vf_marks_get_filter(vf))) /* file no longer matches the filter -> remove it */
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1626 {
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1627 vf_refresh_idle(vf);
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1628 }
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1629
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1630
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1631 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1632
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1633 gtk_tree_store_set(GTK_TREE_STORE(store), &iter, FILE_COLUMN_MARKS + n, file_data_get_mark(fd, n), -1);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1634
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1635 work = work->next;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1636 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1637 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1638 g_list_free(slist);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1639 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1640
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1641 /*
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 * core (population)
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 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1646
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1647 static void vflist_listview_set_columns(GtkWidget *listview, gint thumb)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1648 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1649 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1650 GtkCellRenderer *cell;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1651 GList *list;
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1652 gboolean multiline;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1653
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1654 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_THUMB);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1655 if (!column) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1656
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1657 gtk_tree_view_column_set_fixed_width(column, options->thumbnails.max_width + 4);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1658
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1659 list = gtk_tree_view_column_get_cell_renderers(column);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1660 if (!list) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1661 cell = list->data;
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
802
3cfc54c77b30 fixed switching thumbnails in listview on and off - bug 1984825
nadvornik
parents: 801
diff changeset
1664 g_object_set(G_OBJECT(cell), "height", options->thumbnails.max_height, NULL);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1665 gtk_tree_view_column_set_visible(column, thumb);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1666
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1667 multiline = (thumb && options->thumbnails.max_height >= 48);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1668
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1669 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_MULTILINE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1670 if (!column) return;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1671 gtk_tree_view_column_set_visible(column, multiline);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1672 if (multiline) gtk_tree_view_set_expander_column(GTK_TREE_VIEW(listview), column);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1673
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1674 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_NAME);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1675 if (!column) return;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1676 gtk_tree_view_column_set_visible(column, !multiline);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1677 if (!multiline) gtk_tree_view_set_expander_column(GTK_TREE_VIEW(listview), column);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1678
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1679 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_SIZE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1680 if (!column) return;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1681 gtk_tree_view_column_set_visible(column, !multiline);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1682
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1683 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_DATE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1684 if (!column) return;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1685 gtk_tree_view_column_set_visible(column, !multiline);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1686
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1687 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1688 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1689
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1690 static void vflist_populate_view(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1691 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1692 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1693 gint thumbs;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1694 GList *selected;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1695
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1696 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1697 thumbs = VFLIST(vf)->thumbs_enabled;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1698
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1699 vflist_thumb_stop(vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1700
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1701 if (!vf->list)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1702 {
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1703 vflist_store_clear(vf);
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1704 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1705 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1706 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1707
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1708 vflist_listview_set_columns(vf->listview, thumbs);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1709
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1710 selected = vflist_selection_get_list(vf);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1711
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1712 vflist_setup_iter_recursive(vf, store, NULL, vf->list, selected);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1713
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1714 if (selected && vflist_selection_count(vf, NULL) == 0)
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1715 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1716 /* all selected files disappeared */
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1717 vflist_select_closest(vf, selected->data);
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1718 }
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1719
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1720 filelist_free(selected);
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
1721
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1722 vf_send_update(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1723 vflist_thumb_update(vf);
9
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1726 gint vflist_refresh(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1727 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1728 GList *old_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1729 gint ret = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1730
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1731 old_list = vf->list;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1732 vf->list = NULL;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1733
762
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1734 DEBUG_1("%s vflist_refresh: read dir", get_exec_time());
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1735 if (vf->dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1736 {
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1737 file_data_unregister_notify_func(vf_notify_cb, vf); /* we don't need the notification of changes detected by filelist_read */
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1738
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1739 ret = filelist_read(vf->dir_fd, &vf->list, NULL);
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1740 vf->list = file_data_filter_marks_list(vf->list, vf_marks_get_filter(vf));
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1741 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1742
780
44128da39e13 Drop initialization to NULL since filelist_read() will take care of it.
zas_
parents: 775
diff changeset
1743 DEBUG_1("%s vflist_refresh: sort", get_exec_time());
44128da39e13 Drop initialization to NULL since filelist_read() will take care of it.
zas_
parents: 775
diff changeset
1744 vf->list = filelist_sort(vf->list, vf->sort_method, vf->sort_ascend);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1745 }
762
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1746
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1747 DEBUG_1("%s vflist_refresh: populate view", get_exec_time());
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1748
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1749 vflist_populate_view(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1750
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1751 filelist_free(old_list);
762
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1752 DEBUG_1("%s vflist_refresh: done", get_exec_time());
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1753
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1754 return ret;
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
772
f53c2bb5b1b1 replaced vflist_maint functions by vflist_refresh - it allows to follow
nadvornik
parents: 771
diff changeset
1757
f53c2bb5b1b1 replaced vflist_maint functions by vflist_refresh - it allows to follow
nadvornik
parents: 771
diff changeset
1758
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1759 /* this overrides the low default of a GtkCellRenderer from 100 to CELL_HEIGHT_OVERRIDE, something sane for our purposes */
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 #define CELL_HEIGHT_OVERRIDE 512
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1762
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1763 static void cell_renderer_height_override(GtkCellRenderer *renderer)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1764 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1765 GParamSpec *spec;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1766
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1767 spec = g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(renderer)), "height");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1768 if (spec && G_IS_PARAM_SPEC_INT(spec))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1769 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1770 GParamSpecInt *spec_int;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1771
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1772 spec_int = G_PARAM_SPEC_INT(spec);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1773 if (spec_int->maximum < CELL_HEIGHT_OVERRIDE) spec_int->maximum = CELL_HEIGHT_OVERRIDE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1774 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1775 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1776
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1777 static GdkColor *vflist_listview_color_shifted(GtkWidget *widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1778 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1779 static GdkColor color;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1780 static GtkWidget *done = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1781
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1782 if (done != widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1783 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1784 GtkStyle *style;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1785
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1786 style = gtk_widget_get_style(widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1787 memcpy(&color, &style->base[GTK_STATE_NORMAL], sizeof(color));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1788 shift_color(&color, -1, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1789 done = widget;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1792 return &color;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1795 static void vflist_listview_color_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1796 GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1797 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1798 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1799 gboolean set;
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 gtk_tree_model_get(tree_model, iter, FILE_COLUMN_COLOR, &set, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1802 g_object_set(G_OBJECT(cell),
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1803 "cell-background-gdk", vflist_listview_color_shifted(vf->listview),
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1804 "cell-background-set", set, NULL);
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1807 static void vflist_listview_add_column(ViewFile *vf, gint n, const gchar *title, gint image, gint right_justify, gint expand)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1808 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1809 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1810 GtkCellRenderer *renderer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1811
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1812 column = gtk_tree_view_column_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1813 gtk_tree_view_column_set_title(column, title);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1814 gtk_tree_view_column_set_min_width(column, 4);
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 if (!image)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1817 {
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1818 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1819 renderer = gtk_cell_renderer_text_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1820 if (right_justify)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1821 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1822 g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL);
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 gtk_tree_view_column_pack_start(column, renderer, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1825 gtk_tree_view_column_add_attribute(column, renderer, "text", n);
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1826 if (expand)
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1827 gtk_tree_view_column_set_expand(column, TRUE);
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1828 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1829 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1830 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1831 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1832 renderer = gtk_cell_renderer_pixbuf_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1833 cell_renderer_height_override(renderer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1834 gtk_tree_view_column_pack_start(column, renderer, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1835 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", n);
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1838 gtk_tree_view_column_set_cell_data_func(column, renderer, vflist_listview_color_cb, vf, NULL);
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1839 g_object_set_data(G_OBJECT(column), "column_store_idx", GUINT_TO_POINTER(n));
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1840 g_object_set_data(G_OBJECT(renderer), "column_store_idx", GUINT_TO_POINTER(n));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1841
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1842 gtk_tree_view_append_column(GTK_TREE_VIEW(vf->listview), column);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1843 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1844
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1845 static void vflist_listview_mark_toggled_cb(GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1846 {
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1847 ViewFile *vf = data;
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1848 GtkTreeStore *store;
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1849 GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1850 GtkTreeIter iter;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1851 FileData *fd;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1852 gboolean mark;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1853 guint col_idx;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1854
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1855 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1856 if (!path || !gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1857 return;
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1858
513
985fdfebd89e Remove whitespace between function name and first parenthesis for the sake of consistency. (pass 2)
zas_
parents: 512
diff changeset
1859 col_idx = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cell), "column_store_idx"));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1860
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1861 g_assert(col_idx >= FILE_COLUMN_MARKS && col_idx <= FILE_COLUMN_MARKS_LAST);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1862
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1863 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, col_idx, &mark, -1);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1864 mark = !mark;
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1865 file_data_unregister_notify_func(vf_notify_cb, vf); /* we don't need the notification */
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1866 file_data_set_mark(fd, col_idx - FILE_COLUMN_MARKS, mark);
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1867 if (!file_data_filter_marks(fd, vf_marks_get_filter(vf))) /* file no longer matches the filter -> remove it */
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1868 {
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1869 vf_refresh_idle(vf);
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1870 }
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1871 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1872
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1873 gtk_tree_store_set(store, &iter, col_idx, mark, -1);
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1874 gtk_tree_path_free(path);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1875 }
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1876
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1877 static void vflist_listview_add_column_toggle(ViewFile *vf, gint n, const gchar *title)
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1878 {
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1879 GtkTreeViewColumn *column;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1880 GtkCellRenderer *renderer;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1881 GtkTreeStore *store;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1882 gint index;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1883
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1884 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1885
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1886 renderer = gtk_cell_renderer_toggle_new();
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1887 column = gtk_tree_view_column_new_with_attributes(title, renderer, "active", n, NULL);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1888
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1889 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
512
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1890 g_object_set_data(G_OBJECT(column), "column_store_idx", GUINT_TO_POINTER(n));
f9bf33be53ff Remove whitespace between function name and first parenthesis for the sake of consistency.
zas_
parents: 507
diff changeset
1891 g_object_set_data(G_OBJECT(renderer), "column_store_idx", GUINT_TO_POINTER(n));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1892
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1893 index = gtk_tree_view_append_column(GTK_TREE_VIEW(vf->listview), column);
1254
3814f5828376 adjusted marks spacing to align them with the marks filter
nadvornik
parents: 1242
diff changeset
1894 gtk_tree_view_column_set_fixed_width(column, 22);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1895 gtk_tree_view_column_set_visible(column, vf->marks_enabled);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1896
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1897
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1898 g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(vflist_listview_mark_toggled_cb), vf);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1899 }
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1900
9
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 * base
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 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1906
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1907 gint vflist_set_fd(ViewFile *vf, FileData *dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1908 {
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1909 if (!dir_fd) return FALSE;
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1910 if (vf->dir_fd == dir_fd) return TRUE;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1911
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1912 file_data_unref(vf->dir_fd);
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1913 vf->dir_fd = file_data_ref(dir_fd);
9
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 /* force complete reload */
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1916 vflist_store_clear(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1917
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1918 filelist_free(vf->list);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1919 vf->list = NULL;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1920
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1921 return vf_refresh(vf);
9
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1924 void vflist_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1925 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1926 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1927
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1928 file_data_unregister_notify_func(vf_notify_cb, vf);
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1929
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1930 vflist_select_idle_cancel(vf);
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1931 vf_refresh_idle_cancel(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1932 vflist_thumb_stop(vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1933
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1934 filelist_free(vf->list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1935 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1936
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1937 ViewFile *vflist_new(ViewFile *vf, FileData *dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1938 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1939 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1940 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1941
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1942 GType flist_types[FILE_COLUMN_COUNT];
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1943 gint i;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1944 gint column;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1945
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1946 vf->info = g_new0(ViewFileInfoList, 1);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1947
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1948 VFLIST(vf)->click_fd = NULL;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1949 VFLIST(vf)->select_fd = NULL;
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1950 VFLIST(vf)->thumbs_enabled = FALSE;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1951
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1952 VFLIST(vf)->select_idle_id = -1;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1953
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1954 flist_types[FILE_COLUMN_POINTER] = G_TYPE_POINTER;
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
1955 flist_types[FILE_COLUMN_VERSION] = G_TYPE_INT;
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1956 flist_types[FILE_COLUMN_THUMB] = GDK_TYPE_PIXBUF;
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1957 flist_types[FILE_COLUMN_NAME] = G_TYPE_STRING;
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1958 flist_types[FILE_COLUMN_MULTILINE] = G_TYPE_STRING;
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1959 flist_types[FILE_COLUMN_SIZE] = G_TYPE_STRING;
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1960 flist_types[FILE_COLUMN_DATE] = G_TYPE_STRING;
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1961 flist_types[FILE_COLUMN_COLOR] = G_TYPE_BOOLEAN;
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1962 for (i = FILE_COLUMN_MARKS; i < FILE_COLUMN_MARKS + FILEDATA_MARKS_SIZE; i++)
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
1963 flist_types[i] = G_TYPE_BOOLEAN;
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1964
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1965 store = gtk_tree_store_newv(FILE_COLUMN_COUNT, flist_types);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1966
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1967 vf->listview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1968 g_object_unref(store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1969
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1970 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1971 gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_MULTIPLE);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1972 gtk_tree_selection_set_select_function(selection, vflist_select_cb, vf, NULL);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1973
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1974 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(vf->listview), FALSE);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1975 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(vf->listview), FALSE);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1976
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1977 column = 0;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1978
518
e56c74e89da9 Add missing space.
zas_
parents: 517
diff changeset
1979 for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1980 {
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1981 vflist_listview_add_column_toggle(vf, i + FILE_COLUMN_MARKS, "");
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1982 g_assert(column == FILE_VIEW_COLUMN_MARKS + i);
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1983 column++;
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1984 }
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1985
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1986 vflist_listview_add_column(vf, FILE_COLUMN_THUMB, "", TRUE, FALSE, FALSE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1987 g_assert(column == FILE_VIEW_COLUMN_THUMB);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1988 column++;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1989
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1990 vflist_listview_add_column(vf, FILE_COLUMN_MULTILINE, _("Name"), FALSE, FALSE, TRUE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1991 g_assert(column == FILE_VIEW_COLUMN_MULTILINE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1992 column++;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1993
834
e5cb9f4389f4 join name and sidecars to one string
nadvornik
parents: 833
diff changeset
1994 vflist_listview_add_column(vf, FILE_COLUMN_NAME, _("Name"), FALSE, FALSE, TRUE);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1995 g_assert(column == FILE_VIEW_COLUMN_NAME);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1996 column++;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1997
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1998 vflist_listview_add_column(vf, FILE_COLUMN_SIZE, _("Size"), FALSE, TRUE, FALSE);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1999 g_assert(column == FILE_VIEW_COLUMN_SIZE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2000 column++;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2001
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2002 vflist_listview_add_column(vf, FILE_COLUMN_DATE, _("Date"), FALSE, TRUE, FALSE);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2003 g_assert(column == FILE_VIEW_COLUMN_DATE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2004 column++;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2005
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
2006 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2007 return vf;
9
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
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2010 void vflist_thumb_set(ViewFile *vf, gint enable)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2011 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
2012 if (VFLIST(vf)->thumbs_enabled == enable) return;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2013
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
2014 VFLIST(vf)->thumbs_enabled = enable;
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
2015 if (vf->layout) vf_refresh(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2016 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2017
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2018 void vflist_marks_set(ViewFile *vf, gint enable)
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
2019 {
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2020 GList *columns, *work;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2021
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2022 columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(vf->listview));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2023
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2024 work = columns;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2025 while (work)
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2026 {
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2027 GtkTreeViewColumn *column = work->data;
513
985fdfebd89e Remove whitespace between function name and first parenthesis for the sake of consistency. (pass 2)
zas_
parents: 512
diff changeset
2028 gint col_idx = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(column), "column_store_idx"));
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2029 work = work->next;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2030
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2031 if (col_idx <= FILE_COLUMN_MARKS_LAST && col_idx >= FILE_COLUMN_MARKS)
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2032 gtk_tree_view_column_set_visible(column, enable);
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2033 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2034
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2035 g_list_free(columns);
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
2036 //vf_refresh(vf);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
2037 }
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
2038
1055
1646720364cf Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents: 1005
diff changeset
2039 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */