annotate src/view_file_list.c @ 1808:6c61c246506b

Fix a small issue with strptime strptime do not initialize all fields. So the undefined fields could end in crash later on.
author mow
date Sun, 28 Feb 2010 15:17:12 +0000
parents 956aab097ea7
children f405ec9b696b
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
1802
956aab097ea7 added 2010 to copyright text
nadvornik
parents: 1767
diff changeset
4 * Copyright (C) 2008 - 2010 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
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
16 #include "bar.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
17 #include "cache_maint.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
18 #include "dnd.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
19 #include "editors.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
20 #include "img-view.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
21 #include "layout.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
22 #include "layout_image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
23 #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
24 #include "metadata.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
25 #include "thumb.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
26 #include "utilops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
27 #include "ui_fileops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
28 #include "ui_menu.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
29 #include "ui_tree_edit.h"
904
1698baa37871 Move uri_*() functions to separate files: uri_utils.[ch]
zas_
parents: 852
diff changeset
30 #include "uri_utils.h"
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
31 #include "view_file.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
32
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
33 #include <gdk/gdkkeysyms.h> /* for keyboard values */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
34
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
35 /* Index to tree store */
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
36 enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
37 FILE_COLUMN_POINTER = 0,
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
38 FILE_COLUMN_VERSION,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
39 FILE_COLUMN_THUMB,
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
40 FILE_COLUMN_FORMATTED,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
41 FILE_COLUMN_NAME,
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
42 FILE_COLUMN_SIDECARS,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
43 FILE_COLUMN_SIZE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
44 FILE_COLUMN_DATE,
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
45 FILE_COLUMN_EXPANDED,
9
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,
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
58 FILE_VIEW_COLUMN_FORMATTED,
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
59 FILE_VIEW_COLUMN_SIZE,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
60 FILE_VIEW_COLUMN_DATE,
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
61 FILE_VIEW_COLUMN_COUNT
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
62 };
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
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
66 static gboolean vflist_row_is_selected(ViewFile *vf, FileData *fd);
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
67 static gboolean vflist_row_rename_cb(TreeEditData *td, const gchar *old, const gchar *new, gpointer data);
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
68 static void vflist_populate_view(ViewFile *vf, gboolean force);
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
69 static gboolean vflist_is_multiline(ViewFile *vf);
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
70 static void vflist_set_expanded(ViewFile *vf, GtkTreeIter *iter, gboolean expanded);
9
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 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
75 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
76 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
77 */
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
78 typedef struct {
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
79 FileData *fd;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
80 GtkTreeIter *iter;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
81 gboolean found;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
82 gint row;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
83 } ViewFileFindRowData;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
84
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
85 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
86 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
87 ViewFileFindRowData *find = data;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
88 FileData *fd;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
89 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
90 if (fd == find->fd)
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
91 {
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
92 *find->iter = *iter;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
93 find->found = TRUE;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
94 return TRUE;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
95 }
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
96 find->row++;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
97 return FALSE;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
98 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
99
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
100 static gint vflist_find_row(ViewFile *vf, FileData *fd, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
101 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
102 GtkTreeModel *store;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
103 ViewFileFindRowData data = {fd, iter, FALSE, 0};
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
104
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
105 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
106 gtk_tree_model_foreach(store, vflist_find_row_cb, &data);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
107
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
108 if (data.found)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
109 {
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
110 return data.row;
9
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
113 return -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
114 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
115
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
116 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
117 {
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 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
119 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
120
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 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
122 &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
123 {
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 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
125 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
126 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
127
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 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
129 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
130 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
131 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
132
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 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
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
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 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
137 }
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
138
1005
ec2788ff6791 Comment out unused functions.
zas_
parents: 995
diff changeset
139 #if 0
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
140 static gint vflist_find_sidecar_list_idx(GList *work, FileData *fd)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
141 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
142 gint i = 0;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
143 while (work)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
144 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
145 FileData *fd_p = work->data;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
146 if (fd == fd_p) return i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
147
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
148 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
149
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
150 GList *work2 = fd_p->sidecar_files;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
151 while (work2)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
152 {
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
153 fd_p = work2->data;
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
154 if (fd == fd_p) return i;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
155
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
156 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
157 work2 = work2->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
158 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
159 work = work->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
160 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
161 return -1;
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
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
164 static gint vflist_sidecar_list_count(GList *work)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
165 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
166 gint i = 0;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
167 while (work)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
168 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
169 FileData *fd = work->data;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
170 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
171
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
172 GList *work2 = fd->sidecar_files;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
173 while (work2)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
174 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
175 i++;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
176 work2 = work2->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
177 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
178 work = work->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
179 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
180 return i;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
181 }
1005
ec2788ff6791 Comment out unused functions.
zas_
parents: 995
diff changeset
182 #endif
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
183
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
184 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
185 {
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
186 FileData *fd;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
187 gtk_tree_model_get(model, iter, FILE_COLUMN_POINTER, &fd, -1);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
188 file_data_unref(fd);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
189 return FALSE;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
190 }
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
191
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
192 static void vflist_store_clear(ViewFile *vf)
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
193 {
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
194 GtkTreeModel *store;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
195 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
196 gtk_tree_model_foreach(store, vflist_store_clear_cb, NULL);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
197 gtk_tree_store_clear(GTK_TREE_STORE(store));
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
198 }
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
199
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
200 void vflist_color_set(ViewFile *vf, FileData *fd, gboolean color_set)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
201 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
202 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
203 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
204
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
205 if (vflist_find_row(vf, fd, &iter) < 0) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
206 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
207 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
208 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
209
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
210 static void vflist_move_cursor(ViewFile *vf, GtkTreeIter *iter)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
211 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
212 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
213 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
214
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
215 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
216
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
217 tpath = gtk_tree_model_get_path(store, iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
218 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
219 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
220 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
221
1740
6146ec0c9ab9 Comment out unused functions, silenting related compilation warnings.
zas_
parents: 1732
diff changeset
222 #if 0
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
223 static gint vflist_column_idx(ViewFile *vf, gint store_idx)
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
224 {
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
225 GList *columns, *work;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
226 gint i = 0;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
227
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
228 columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(vf->listview));
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
229 work = columns;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
230 while (work)
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
231 {
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
232 GtkTreeViewColumn *column = work->data;
1346
c9949c19a6d0 No space between function name and first parenthesis, it eases greping (see CODING).
zas_
parents: 1292
diff changeset
233 if (store_idx == GPOINTER_TO_INT(g_object_get_data(G_OBJECT(column), "column_store_idx")))
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
234 break;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
235 work = work->next;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
236 i++;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
237 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
238
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
239 g_list_free(columns);
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
240 return i;
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
241 }
1740
6146ec0c9ab9 Comment out unused functions, silenting related compilation warnings.
zas_
parents: 1732
diff changeset
242 #endif
157
b73743a01384 fixed in-place rename
nadvornik
parents: 150
diff changeset
243
9
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 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
246 * dnd
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
250 static void vflist_dnd_get(GtkWidget *widget, GdkDragContext *context,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
251 GtkSelectionData *selection_data, guint info,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
252 guint time, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
253 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
254 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
255 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
256 gchar *uri_text = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
257 gint total;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
258
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
259 if (!VFLIST(vf)->click_fd) return;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
260
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
261 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
262 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
263 list = vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
264 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
265 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
266 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
267 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
268 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
269
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
270 if (!list) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
271
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
272 uri_text = uri_text_from_filelist(list, &total, (info == TARGET_TEXT_PLAIN));
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
273 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
274
1164
3692efcbd325 Fix compilation warnings.
zas_
parents: 1055
diff changeset
275 DEBUG_1("%s", uri_text);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
276
64
04ff0df3ad2f Mon Aug 15 17:13:57 2005 John Ellis <johne@verizon.net>
gqview
parents: 9
diff changeset
277 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
278 8, (guchar *)uri_text, total);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
279 g_free(uri_text);
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
282 static void vflist_dnd_begin(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
283 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
284 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
285
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
286 vflist_color_set(vf, VFLIST(vf)->click_fd, TRUE);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
287
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
288 if (VFLIST(vf)->thumbs_enabled &&
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
289 VFLIST(vf)->click_fd && VFLIST(vf)->click_fd->thumb_pixbuf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
290 {
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
291 guint items;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
292
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
293 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
294 items = vf_selection_count(vf, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
295 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
296 items = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
297
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
298 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
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
302 static void vflist_dnd_end(GtkWidget *widget, GdkDragContext *context, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
303 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
304 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
305
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
306 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
307
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
308 if (context->action == GDK_ACTION_MOVE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
309 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
310 vf_refresh(vf);
9
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 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
313
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
314 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
315 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
316 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
317 {
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 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
319
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 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
321 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
322
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 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
324 /* 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
325 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
326 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
327
1238
947e603a52c6 simplified metadata interface, dropped metadata_read,
nadvornik
parents: 1233
diff changeset
328 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
329 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
330 g_free(str);
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
331 /*
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
332 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
333 if (vf->layout && vf->layout->bar_info) {
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
334 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
335 }
1291
50ae02a4a675 replaced bar_info with an universal bar, restored the original
nadvornik
parents: 1284
diff changeset
336 */
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
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 }
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
340
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
341 void vflist_dnd_init(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
342 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
343 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
344 dnd_file_drag_types, dnd_file_drag_types_count,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
345 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
346 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
347 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
348 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
349
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
350 g_signal_connect(G_OBJECT(vf->listview), "drag_data_get",
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
351 G_CALLBACK(vflist_dnd_get), vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
352 g_signal_connect(G_OBJECT(vf->listview), "drag_begin",
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
353 G_CALLBACK(vflist_dnd_begin), vf);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
354 g_signal_connect(G_OBJECT(vf->listview), "drag_end",
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
355 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
356 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
357 G_CALLBACK(vflist_drag_data_received), vf);
9
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 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
362 * pop-up menu
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
363 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
364 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
365
1761
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
366 GList *vflist_selection_get_one(ViewFile *vf, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
367 {
1761
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
368 GList *list = g_list_append(NULL, file_data_ref(fd));
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
369
1761
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
370 if (fd->sidecar_files)
1622
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
371 {
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
372 /* check if the row is expanded */
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
373 GtkTreeModel *store;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
374 GtkTreeIter iter;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
375
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
376 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
1761
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
377 if (vflist_find_row(vf, fd, &iter) >= 0)
1622
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
378 {
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
379 GtkTreePath *tpath;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
380
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
381 tpath = gtk_tree_model_get_path(store, &iter);
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
382 if (!gtk_tree_view_row_expanded(GTK_TREE_VIEW(vf->listview), tpath))
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
383 {
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
384 /* unexpanded - add whole group */
1761
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
385 GList *work = fd->sidecar_files;
1622
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
386 while (work)
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
387 {
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
388 FileData *sfd = work->data;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
389 list = g_list_prepend(list, file_data_ref(sfd));
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
390 work = work->next;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
391 }
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
392 }
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
393 gtk_tree_path_free(tpath);
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
394 }
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
395 list = g_list_reverse(list);
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
396 }
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
397
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
398 return list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
399 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
400
1761
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
401 GList *vflist_pop_menu_file_list(ViewFile *vf)
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
402 {
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
403 if (!VFLIST(vf)->click_fd) return NULL;
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
404
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
405 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
406 {
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
407 return vf_selection_get_list(vf);
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
408 }
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
409 return vflist_selection_get_one(vf, VFLIST(vf)->click_fd);
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
410 }
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
411
caf0e4b8319d consider sidecars in layout_image popup menu
nadvornik
parents: 1740
diff changeset
412
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
413 void vflist_pop_menu_view_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
414 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
415 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
416
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
417 if (vflist_row_is_selected(vf, VFLIST(vf)->click_fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
418 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
419 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
420
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
421 list = vf_selection_get_list(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
422 view_window_new_from_list(list);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
423 filelist_free(list);
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 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
426 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
427 view_window_new(VFLIST(vf)->click_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
428 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
429 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
430
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
431 void vflist_pop_menu_rename_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
432 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
433 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
434 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
435
634
92208e71673b Introduce vf_pop_menu_file_list() as a wrapper to
zas_
parents: 633
diff changeset
436 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
437 if (options->file_ops.enable_in_place_rename &&
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
438 list && !list->next && VFLIST(vf)->click_fd)
9
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 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
441 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
442
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
443 filelist_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
444
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
445 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
446 if (vflist_find_row(vf, VFLIST(vf)->click_fd, &iter) >= 0)
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 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
449
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
450 tpath = gtk_tree_model_get_path(store, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
451 tree_edit_by_path(GTK_TREE_VIEW(vf->listview), tpath,
1732
a2dc83823432 fixed in-place rename
nadvornik
parents: 1703
diff changeset
452 FILE_VIEW_COLUMN_FORMATTED, VFLIST(vf)->click_fd->name,
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
453 vflist_row_rename_cb, vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
454 gtk_tree_path_free(tpath);
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 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
457 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
458
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
459 file_util_rename(NULL, list, vf->listview);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
460 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
461
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
462 void vflist_pop_menu_thumbs_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
463 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
464 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
465
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
466 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
467 if (vf->layout)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
468 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
469 layout_thumb_set(vf->layout, !VFLIST(vf)->thumbs_enabled);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
470 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
471 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
472 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
473 vflist_thumb_set(vf, !VFLIST(vf)->thumbs_enabled);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
474 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
475 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
476
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
477 void vflist_pop_menu_refresh_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
478 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
479 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
480
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
481 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
482 vf_refresh(vf);
1700
bda2d599cc70 call gtk_tree_view_columns_autosize only when reall needed
nadvornik
parents: 1699
diff changeset
483 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
484 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
485
637
8a1202efa51e Add some wrapper functions for not yet common code.
zas_
parents: 635
diff changeset
486 void vflist_popup_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
487 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
488 ViewFile *vf = data;
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
489 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
490 VFLIST(vf)->click_fd = NULL;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
491 vf->popup = NULL;
9
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
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
494
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
495 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
496 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
497 * callbacks
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
498 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
499 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
500
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
501 static gboolean vflist_row_rename_cb(TreeEditData *td, const gchar *old, const gchar *new, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
502 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
503 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
504 gchar *new_path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
505
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
506 if (!new || !new[0]) return FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
507
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
508 new_path = g_build_filename(vf->dir_fd->path, new, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
509
726
a1dcef8cd1ae Use G_DIR_SEPARATOR where applicable.
zas_
parents: 702
diff changeset
510 if (strchr(new, G_DIR_SEPARATOR) != NULL)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
511 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
512 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
513 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
514 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
515 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
516 else
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
517 {
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
518 gchar *old_path = g_build_filename(vf->dir_fd->path, old, NULL);
850
ff937cdfaee9 fixed in-place renaming
nadvornik
parents: 845
diff changeset
519 FileData *fd = file_data_new_simple(old_path); /* get the fd from cache */
ff937cdfaee9 fixed in-place renaming
nadvornik
parents: 845
diff changeset
520 file_util_rename_simple(fd, new_path, vf->listview);
ff937cdfaee9 fixed in-place renaming
nadvornik
parents: 845
diff changeset
521 file_data_unref(fd);
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
522 g_free(old_path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
523 }
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
524
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
525 g_free(new_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
526
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
527 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
528 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
529
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
530 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
531 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
532 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
533 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
534 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
535 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
536 gint cw, ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
537
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
538 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
539 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
540 tpath = gtk_tree_model_get_path(store, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
541 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
542 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
543 *y += ch;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
544 popup_menu_position_clamp(menu, x, y, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
545 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
546
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
547 gboolean vflist_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
548 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
549 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
550 GtkTreePath *tpath;
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 if (event->keyval != GDK_Menu) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
553
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
554 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
555 if (tpath)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
556 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
557 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
558 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
559
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
560 store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
561 gtk_tree_model_get_iter(store, &iter, tpath);
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
562 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
563 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
564 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
565 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
566 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
567 VFLIST(vf)->click_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
568 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
569
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
570 vf->popup = vf_pop_menu(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
571 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
572
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
573 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
574 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
575
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
576 gboolean vflist_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
577 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
578 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
579 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
580 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
581 FileData *fd = NULL;
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
582 GtkTreeViewColumn *column;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
583
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
584 vf->clicked_mark = 0;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
585
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
586 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
587 &tpath, &column, NULL, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
588 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
589 GtkTreeModel *store;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
590 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
591
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
592 if (bevent->button == MOUSE_BUTTON_LEFT &&
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
593 col_idx >= FILE_COLUMN_MARKS && col_idx <= FILE_COLUMN_MARKS_LAST)
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
594 return FALSE;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
595
655
beacc4c68c53 Fix last patch, only set vf->clicked_mark for a valid mark.
zas_
parents: 654
diff changeset
596 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
597 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
598
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
599 store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
600
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
601 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
602 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
603 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
604 gtk_tree_view_set_cursor(GTK_TREE_VIEW(widget), tpath, NULL, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
605 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
606 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
607 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
608
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
609 VFLIST(vf)->click_fd = fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
610
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
611 if (bevent->button == MOUSE_BUTTON_RIGHT)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
612 {
659
542bb47fef04 Merge vflist_pop_menu() and vficon_pop_menu() into vf_pop_menu().
zas_
parents: 658
diff changeset
613 vf->popup = vf_pop_menu(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
614 gtk_menu_popup(GTK_MENU(vf->popup), NULL, NULL, NULL, NULL,
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
615 bevent->button, bevent->time);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
616 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
617 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
618
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
619 if (!fd) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
620
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
621 if (bevent->button == MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
622 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
623 if (!vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
624 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
625 vflist_color_set(vf, fd, TRUE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
626 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
627 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
628 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
629
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
630
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
631 if (bevent->button == MOUSE_BUTTON_LEFT && bevent->type == GDK_BUTTON_PRESS &&
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
632 !(bevent->state & GDK_SHIFT_MASK ) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
633 !(bevent->state & GDK_CONTROL_MASK ) &&
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
634 vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
635 {
526
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
636 GtkTreeSelection *selection;
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
637
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
638 gtk_widget_grab_focus(widget);
526
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
639
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
640
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
641 /* 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
642 correct operation of the expander, to show the sidecar files.
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
643 It however resets the selection of multiple files. With this condition
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
644 it should work for both cases */
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
645 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
92b5a033a279 fixed dragging multiple files from file list
nadvornik
parents: 518
diff changeset
646 return (gtk_tree_selection_count_selected_rows(selection) > 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
647 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
648
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
649 #if 1
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
650 if (bevent->button == MOUSE_BUTTON_LEFT && bevent->type == GDK_2BUTTON_PRESS)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
651 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
652 if (vf->layout) layout_image_full_screen_start(vf->layout);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
653 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
654 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
655
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
656 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
657 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
658
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
659 gboolean vflist_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
660 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
661 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
662 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
663 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
664 FileData *fd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
665
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
666 if (bevent->button == MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
667 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
668 vflist_color_set(vf, VFLIST(vf)->click_fd, FALSE);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
669 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
670
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
671 if (bevent->button != MOUSE_BUTTON_LEFT && bevent->button != MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
672 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
673 return TRUE;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
676 if ((bevent->x != 0 || bevent->y != 0) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
677 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
678 &tpath, NULL, NULL, NULL))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
679 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
680 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
681
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
682 store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
683 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
684 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
685 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
686 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
687
448
a73cc0fa14d0 Use explicit names for mouse buttons instead of numbers.
zas_
parents: 446
diff changeset
688 if (bevent->button == MOUSE_BUTTON_MIDDLE)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
689 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
690 if (fd && VFLIST(vf)->click_fd == fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
691 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
692 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
693
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
694 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
695 if (vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
696 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
697 gtk_tree_selection_unselect_iter(selection, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
698 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
699 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
700 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
701 gtk_tree_selection_select_iter(selection, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
702 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
703 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
704 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
705 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
706
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
707 if (fd && VFLIST(vf)->click_fd == fd &&
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
708 !(bevent->state & GDK_SHIFT_MASK ) &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
709 !(bevent->state & GDK_CONTROL_MASK ) &&
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
710 vflist_row_is_selected(vf, fd))
9
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 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
713
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
714 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
715 gtk_tree_selection_unselect_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
716 gtk_tree_selection_select_iter(selection, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
717 vflist_move_cursor(vf, &iter);
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
718 // return TRUE;// FIXME - expand
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
719 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
720
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
721 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
722 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
723
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
724 static void vflist_select_image(ViewFile *vf, FileData *sel_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
725 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
726 FileData *read_ahead_fd = NULL;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
727 gint row;
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 143
diff changeset
728 FileData *cur_fd;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
729
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
730 if (!sel_fd) return;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
731
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
732 cur_fd = layout_image_get_fd(vf->layout);
144
2310066cc55a fixed preloading images in file list
nadvornik
parents: 143
diff changeset
733 if (sel_fd == cur_fd) return; /* no change */
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
734
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
735 row = g_list_index(vf->list, sel_fd);
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
736 // FIXME sidecar data
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
737
334
df868b947aa0 Rename image-related options.
zas_
parents: 333
diff changeset
738 if (sel_fd && options->image.enable_read_ahead && row >= 0)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
739 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
740 if (row > g_list_index(vf->list, cur_fd) &&
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
741 (guint) (row + 1) < vf_count(vf, NULL))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
742 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
743 read_ahead_fd = vf_index_get_data(vf, row + 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
744 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
745 else if (row > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
746 {
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
747 read_ahead_fd = vf_index_get_data(vf, row - 1);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
748 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
749 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
750
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
751 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
752 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
753
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
754 static gboolean vflist_select_idle_cb(gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
755 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
756 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
757
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
758 if (!vf->layout)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
759 {
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1506
diff changeset
760 VFLIST(vf)->select_idle_id = 0;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
761 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
762 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
763
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
764 vf_send_update(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
765
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
766 if (VFLIST(vf)->select_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
767 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
768 vflist_select_image(vf, VFLIST(vf)->select_fd);
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
769 VFLIST(vf)->select_fd = NULL;
9
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
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1506
diff changeset
772 VFLIST(vf)->select_idle_id = 0;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
773 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
774 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
775
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
776 static void vflist_select_idle_cancel(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
777 {
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1506
diff changeset
778 if (VFLIST(vf)->select_idle_id)
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1506
diff changeset
779 {
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1506
diff changeset
780 g_source_remove(VFLIST(vf)->select_idle_id);
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1506
diff changeset
781 VFLIST(vf)->select_idle_id = 0;
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1506
diff changeset
782 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
783 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
784
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
785 static gboolean vflist_select_cb(GtkTreeSelection *selection, GtkTreeModel *store, GtkTreePath *tpath,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
786 gboolean path_currently_selected, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
787 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
788 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
789 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
790
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
791 if (!path_currently_selected &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
792 gtk_tree_model_get_iter(store, &iter, tpath))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
793 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
794 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
795 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
796 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
797 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
798 VFLIST(vf)->select_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
799 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
800
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
801 if (vf->layout &&
1523
24a12aa0cb54 Fix up event source ids type: gint -> guint.
zas_
parents: 1506
diff changeset
802 !VFLIST(vf)->select_idle_id)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
803 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
804 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
805 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
806
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
807 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
808 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
809
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
810 static void vflist_expand_cb(GtkTreeView *tree_view, GtkTreeIter *iter, GtkTreePath *path, gpointer data)
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
811 {
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
812 ViewFile *vf = data;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
813 vflist_set_expanded(vf, iter, TRUE);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
814 }
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
815
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
816 static void vflist_collapse_cb(GtkTreeView *tree_view, GtkTreeIter *iter, GtkTreePath *path, gpointer data)
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
817 {
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
818 ViewFile *vf = data;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
819 vflist_set_expanded(vf, iter, FALSE);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
820 }
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
821
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
822 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
823 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
824 * misc
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
825 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
826 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
827
259
fa7d69e7d02d Comment out unused code.
zas_
parents: 250
diff changeset
828 /*
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
829 static gboolean vflist_dummy_select_cb(GtkTreeSelection *selection, GtkTreeModel *store, GtkTreePath *tpath,
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
830 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
831 {
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
832 return TRUE;
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
833 }
259
fa7d69e7d02d Comment out unused code.
zas_
parents: 250
diff changeset
834 */
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
835
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
836 static gchar* vflist_get_formatted(ViewFile *vf, const gchar *name, const gchar *sidecars, const gchar *size, const gchar *time, gboolean expanded)
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
837 {
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
838 gboolean multiline = vflist_is_multiline(vf);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
839 gchar *text;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
840
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
841 if (multiline)
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
842 {
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
843 text = g_strdup_printf("%s %s\n%s\n%s", name, expanded ? "" : sidecars, size, time);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
844 }
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
845 else
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
846 {
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
847 text = g_strdup_printf("%s %s", name, expanded ? "" : sidecars);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
848 }
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
849 return text;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
850 }
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
851
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
852 static void vflist_set_expanded(ViewFile *vf, GtkTreeIter *iter, gboolean expanded)
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
853 {
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
854 GtkTreeStore *store;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
855 gchar *name;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
856 gchar *sidecars;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
857 gchar *size;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
858 gchar *time;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
859 gchar *formatted;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
860
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
861 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
862
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
863 gtk_tree_model_get(GTK_TREE_MODEL(store), iter,
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
864 FILE_COLUMN_NAME, &name,
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
865 FILE_COLUMN_SIDECARS, &sidecars,
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
866 FILE_COLUMN_SIZE, &size,
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
867 FILE_COLUMN_DATE, &time,
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
868 -1);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
869 formatted = vflist_get_formatted(vf, name, sidecars, size, time, expanded);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
870
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
871 gtk_tree_store_set(store, iter, FILE_COLUMN_FORMATTED, formatted,
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
872 FILE_COLUMN_EXPANDED, expanded,
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
873 -1);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
874 g_free(time);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
875 g_free(size);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
876 g_free(sidecars);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
877 g_free(name);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
878 g_free(formatted);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
879 }
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
880
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
881 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
882 {
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
883 gchar *size;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
884 gchar *sidecars = NULL;
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
885 gchar *name;
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
886 const gchar *time = text_from_time(fd->date);
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
887 gchar *link = islink(fd->path) ? GQ_LINK_STR : "";
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
888 const gchar *disabled_grouping;
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
889 gchar *formatted;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
890 gboolean expanded = FALSE;
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
891
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
892 if (fd->sidecar_files) /* expanded has no effect on files without sidecars */
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
893 {
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
894 gtk_tree_model_get(GTK_TREE_MODEL(store), iter, FILE_COLUMN_EXPANDED, &expanded, -1);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
895 }
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
896
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
897 sidecars = file_data_sc_list_to_string(fd);
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
898
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
899 disabled_grouping = fd->disable_grouping ? _(" [NO GROUPING]") : "";
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
900 name = g_strdup_printf("%s%s%s", link, fd->name, disabled_grouping);
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
901 size = text_from_size(fd->size);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
902
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
903 formatted = vflist_get_formatted(vf, name, sidecars, size, time, expanded);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
904
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
905 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
906 FILE_COLUMN_VERSION, fd->version,
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
907 FILE_COLUMN_THUMB, fd->thumb_pixbuf,
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
908 FILE_COLUMN_FORMATTED, formatted,
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
909 FILE_COLUMN_SIDECARS, sidecars,
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
910 FILE_COLUMN_NAME, name,
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
911 FILE_COLUMN_SIZE, size,
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
912 FILE_COLUMN_DATE, time,
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
913 #define STORE_SET_IS_SLOW 1
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
914 #if STORE_SET_IS_SLOW
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
915 /* this is 3x faster on a directory with 20000 files */
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
916 FILE_COLUMN_MARKS + 0, file_data_get_mark(fd, 0),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
917 FILE_COLUMN_MARKS + 1, file_data_get_mark(fd, 1),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
918 FILE_COLUMN_MARKS + 2, file_data_get_mark(fd, 2),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
919 FILE_COLUMN_MARKS + 3, file_data_get_mark(fd, 3),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
920 FILE_COLUMN_MARKS + 4, file_data_get_mark(fd, 4),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
921 FILE_COLUMN_MARKS + 5, file_data_get_mark(fd, 5),
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
922 #if FILEDATA_MARKS_SIZE != 6
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
923 #error this needs to be updated
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
924 #endif
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
925 #endif
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
926 FILE_COLUMN_COLOR, FALSE, -1);
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
927
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
928 #if !STORE_SET_IS_SLOW
830
a06d885de883 Silent unused variable warning.
zas_
parents: 829
diff changeset
929 {
a06d885de883 Silent unused variable warning.
zas_
parents: 829
diff changeset
930 gint i;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
931 for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
932 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
933 }
829
a204fc1d1145 optimized vflist_setup_iter
nadvornik
parents: 814
diff changeset
934 #endif
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
935 g_free(size);
1242
187e6096cc6c show symlinks in filelist
nadvornik
parents: 1238
diff changeset
936 g_free(sidecars);
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
937 g_free(name);
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
938 g_free(formatted);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
939 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
940
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
941 static void vflist_setup_iter_recursive(ViewFile *vf, GtkTreeStore *store, GtkTreeIter *parent_iter, GList *list, GList *selected, gboolean force)
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
942 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
943 GList *work;
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
944 GtkTreeIter iter;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
945 gboolean valid;
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
946 gint num_ordered = 0;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
947 gint num_prepended = 0;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
948
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
949 valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(store), &iter, parent_iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
950
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
951 work = list;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
952 while (work)
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
953 {
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
954 gint match;
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
955 FileData *fd = work->data;
1437
a3d3208b0c50 gint -> gboolean.
zas_
parents: 1365
diff changeset
956 gboolean done = FALSE;
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
957
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
958 while (!done)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
959 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
960 FileData *old_fd = NULL;
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
961 gint old_version = 0;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
962
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
963 if (valid)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
964 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
965 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter,
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
966 FILE_COLUMN_POINTER, &old_fd,
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
967 FILE_COLUMN_VERSION, &old_version,
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
968 -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
969
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
970 if (fd == old_fd)
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
971 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
972 match = 0;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
973 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
974 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
975 {
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
976 if (parent_iter)
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
977 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
978 else
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
979 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
980
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
981 if (match == 0) g_warning("multiple fd for the same path");
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
982 }
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
983
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
984 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
985 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
986 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
987 match = -1;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
988 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
989
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
990 if (match < 0)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
991 {
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
992 GtkTreeIter new;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
993
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
994 if (valid)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
995 {
1763
140b73f094c5 fixed tree_store reordering
nadvornik
parents: 1761
diff changeset
996 num_ordered++;
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
997 gtk_tree_store_insert_before(store, &new, parent_iter, &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
998 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
999 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1000 {
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1001 /*
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1002 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
1003 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
1004 */
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1005 num_prepended++;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1006 gtk_tree_store_prepend(store, &new, parent_iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1007 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1008
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1009 vflist_setup_iter(vf, store, &new, file_data_ref(fd));
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
1010 vflist_setup_iter_recursive(vf, store, &new, fd->sidecar_files, selected, force);
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1011
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1012 if (g_list_find(selected, fd))
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1013 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1014 /* 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
1015 GtkTreeSelection *selection;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1016 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
1017 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
1018 }
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1019
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1020 done = TRUE;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1021 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1022 else if (match > 0)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1023 {
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1024 file_data_unref(old_fd);
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
1025 valid = gtk_tree_store_remove(store, &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1026 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1027 else
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1028 {
1763
140b73f094c5 fixed tree_store reordering
nadvornik
parents: 1761
diff changeset
1029 num_ordered++;
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
1030 if (fd->version != old_version || force)
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
1031 {
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
1032 vflist_setup_iter(vf, store, &iter, fd);
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
1033 vflist_setup_iter_recursive(vf, store, &iter, fd->sidecar_files, selected, force);
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
1034 }
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1035
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
1036 if (valid) valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1037
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1038 done = TRUE;
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1039 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1040 }
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1041 work = work->next;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1042 }
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1043
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1044 while (valid)
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1045 {
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1046 FileData *old_fd;
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1047 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
1048 file_data_unref(old_fd);
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1049
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
1050 valid = gtk_tree_store_remove(store, &iter);
167
05bf5d364dba fixed filelist refresh
nadvornik
parents: 161
diff changeset
1051 }
833
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1052
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1053 /* move the prepended entries to the correct position */
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1054 if (num_prepended)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1055 {
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1056 gint i;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1057 gint num_total = num_prepended + num_ordered;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1058 gint *new_order = g_malloc(num_total * sizeof(gint));
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1059
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1060 for (i = 0; i < num_total; i++)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1061 {
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1062 if (i < num_ordered)
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1063 new_order[i] = num_prepended + i;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1064 else
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1065 new_order[i] = num_total - 1 - i;
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1066 }
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1067 gtk_tree_store_reorder(store, parent_iter, new_order);
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1068
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1069 g_free(new_order);
1d6fedb891dc optimized vflist_setup_iter_recursive
nadvornik
parents: 830
diff changeset
1070 }
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1071 }
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1072
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1073 void vflist_sort_set(ViewFile *vf, SortType type, gboolean ascend)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1074 {
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1075 gint i;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1076 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
1077 gint *new_order;
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1078 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1079 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1080
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1081 if (vf->sort_method == type && vf->sort_ascend == ascend) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1082 if (!vf->list) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1083
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1084 work = vf->list;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1085 i = 0;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1086 while (work)
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1087 {
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1088 FileData *fd = work->data;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1089 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
1090 i++;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1091 work = work->next;
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1092 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1093
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1094 vf->sort_method = type;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1095 vf->sort_ascend = ascend;
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 vf->list = filelist_sort(vf->list, vf->sort_method, vf->sort_ascend);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1098
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1099 new_order = g_malloc(i * sizeof(gint));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1100
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1101 work = vf->list;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1102 i = 0;
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1103 while (work)
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1104 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1105 FileData *fd = work->data;
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1106 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
1107 i++;
93
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1108 work = work->next;
f1c8f8632e23 Thu Nov 2 14:38:54 2006 John Ellis <johne@verizon.net>
gqview
parents: 64
diff changeset
1109 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1110
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1111 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
1112 gtk_tree_store_reorder(store, NULL, new_order);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1113
168
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1114 g_free(new_order);
a55ada12322a fixed vflist_find_row and vflist_sort_set to work correctly with sidecar
nadvornik
parents: 167
diff changeset
1115 g_hash_table_destroy(fd_idx_hash);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1116 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1117
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1118 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1119 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1120 * thumb updates
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 */
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
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1125 void vflist_thumb_progress_count(GList *list, gint *count, gint *done)
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1126 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1127 GList *work = list;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1128 while (work)
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1129 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1130 FileData *fd = work->data;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1131 work = work->next;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1132
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1133 if (fd->thumb_pixbuf) (*done)++;
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1134
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1135 if (fd->sidecar_files)
843
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1136 {
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1137 vflist_thumb_progress_count(fd->sidecar_files, count, done);
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1138 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1139 (*count)++;
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1140 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1141 }
add46f9c895c more robust thumbs progress bar
nadvornik
parents: 838
diff changeset
1142
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1143 void vflist_set_thumb_fd(ViewFile *vf, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1144 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1145 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1146 GtkTreeIter iter;
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 if (!fd || vflist_find_row(vf, fd, &iter) < 0) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1149
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1150 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
1151 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
1152 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1153
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1154 FileData *vflist_thumb_next_fd(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1155 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1156 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1157 FileData *fd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1158
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1159 /* first check the visible files */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1160
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1161 if (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
1162 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1163 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1164 GtkTreeIter iter;
1437
a3d3208b0c50 gint -> gboolean.
zas_
parents: 1365
diff changeset
1165 gboolean valid = TRUE;
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1166
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1167 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1168 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1169 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1170
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1171 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
1172 {
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1173 FileData *nfd;
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1174
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1175 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &nfd, -1);
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1176
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1177 if (!nfd->thumb_pixbuf) fd = nfd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1178
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1179 valid = gtk_tree_model_iter_next(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1180 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1181 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1182
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1183 /* then find first undone */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1184
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1185 if (!fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1186 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1187 GList *work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1188 while (work && !fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1189 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1190 FileData *fd_p = work->data;
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1191 if (!fd_p->thumb_pixbuf)
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1192 fd = fd_p;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1193 else
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1194 {
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1195 GList *work2 = fd_p->sidecar_files;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1196
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1197 while (work2 && !fd)
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1198 {
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1199 fd_p = work2->data;
845
06929cbcd796 renamed fd->pixbuf to fd->thumb_pixbuf
nadvornik
parents: 843
diff changeset
1200 if (!fd_p->thumb_pixbuf) fd = fd_p;
169
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1201 work2 = work2->next;
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1202 }
501010403a04 fixed loading thumbnails for sidecar files
nadvornik
parents: 168
diff changeset
1203 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1204 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1205 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1206 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1207
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1208 return fd;
9
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
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1211
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1212 void vflist_thumb_reset_all(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1213 {
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1214 GList *work = vf->list;
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1215 while (work)
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1216 {
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1217 FileData *fd = work->data;
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1218 if (fd->thumb_pixbuf)
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1219 {
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1220 g_object_unref(fd->thumb_pixbuf);
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1221 fd->thumb_pixbuf = NULL;
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1222 }
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1223 work = work->next;
1506
d352a44545a6 Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
zas_
parents: 1503
diff changeset
1224 }
9
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1227 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1228 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1229 * row stuff
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1230 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1231 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1232
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1233 FileData *vflist_index_get_data(ViewFile *vf, gint row)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1234 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1235 return g_list_nth_data(vf->list, row);
9
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
1503
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1238 gint vflist_index_by_fd(ViewFile *vf, FileData *fd)
9
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 gint p = 0;
1503
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1241 GList *work, *work2;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1242
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1243 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1244 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1245 {
1503
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1246 FileData *list_fd = work->data;
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1247 if (list_fd == fd) return p;
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1248
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1249 work2 = list_fd->sidecar_files;
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1250 while (work2)
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1251 {
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1252 /* FIXME: return the same index also for sidecars
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1253 it is sufficient for next/prev navigation but it should be rewritten
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1254 without using indexes at all
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1255 */
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1256 FileData *sidecar_fd = work2->data;
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1257 if (sidecar_fd == fd) return p;
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1258 work2 = work2->next;
331e2d60d447 improved next/prev operation on sidecar files
nadvornik
parents: 1453
diff changeset
1259 }
664
db373fb1b9d8 Merge vflist_row_by_path() into vflist_index_by_path().
zas_
parents: 659
diff changeset
1260
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1261 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1262 p++;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1265 return -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1266 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1267
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
1268 guint vflist_count(ViewFile *vf, gint64 *bytes)
9
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 if (bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1271 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1272 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1273 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1274
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1275 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1276 while (work)
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 FileData *fd = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1279 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1280 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1281 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1282
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1283 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1284 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1285
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1286 return g_list_length(vf->list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1287 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1288
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1289 GList *vflist_get_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1290 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1291 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1292 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1293
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1294 work = vf->list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1295 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1296 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1297 FileData *fd = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1298 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1299
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
1300 list = g_list_prepend(list, file_data_ref(fd));
9
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1303 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1304 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1305
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1306 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1307 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1308 * selections
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 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1311
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1312 static gboolean vflist_row_is_selected(ViewFile *vf, FileData *fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1313 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1314 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1315 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1316 GList *slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1317 GList *work;
1437
a3d3208b0c50 gint -> gboolean.
zas_
parents: 1365
diff changeset
1318 gboolean found = FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1319
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1320 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1321 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1322 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1323 while (!found && work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1324 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1325 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1326 FileData *fd_n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1327 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1328
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1329 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1330 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd_n, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1331 if (fd_n == fd) found = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1332 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1333 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1334 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1335 g_list_free(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1336
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1337 return found;
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
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1340 gboolean vflist_index_is_selected(ViewFile *vf, gint row)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1341 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1342 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1343
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1344 fd = vf_index_get_data(vf, row);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1345 return vflist_row_is_selected(vf, fd);
9
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
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
1348 guint vflist_selection_count(ViewFile *vf, gint64 *bytes)
9
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 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1351 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1352 GList *slist;
736
a7289f9e8d29 Fix signed vs unsigned warnings.
zas_
parents: 726
diff changeset
1353 guint count;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1354
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1355 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1356 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1357
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1358 if (bytes)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1359 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1360 gint64 b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1361 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1362
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1363 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1364 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1365 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1366 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1367 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1368 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1369
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1370 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1371 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1372 b += fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1373
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1374 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1375 }
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 *bytes = b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1378 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1379
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1380 count = g_list_length(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1381 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1382 g_list_free(slist);
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 return count;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1385 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1386
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1387 GList *vflist_selection_get_list(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1388 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1389 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1390 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1391 GList *slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1392 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1393 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1394
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1395 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1396 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1397 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1398 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1399 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1400 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1401 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1402 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1403
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1404 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1405 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1406
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
1407 list = g_list_prepend(list, file_data_ref(fd));
1622
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1408
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1409 if (!fd->parent && !gtk_tree_view_row_expanded(GTK_TREE_VIEW(vf->listview), tpath))
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1410 {
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1411 /* unexpanded - add whole group */
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1412 GList *work2 = fd->sidecar_files;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1413 while (work2)
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1414 {
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1415 FileData *sfd = work2->data;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1416 list = g_list_prepend(list, file_data_ref(sfd));
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1417 work2 = work2->next;
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1418 }
9e6cdef3bc3d changed selection behavior as requested at
nadvornik
parents: 1608
diff changeset
1419 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1420
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1421 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1422 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1423 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1424 g_list_free(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1425
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1426 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1427 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1428
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1429 GList *vflist_selection_get_list_by_index(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1430 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1431 GtkTreeModel *store;
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 GList *slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1434 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1435 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1436
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1437 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1438 slist = gtk_tree_selection_get_selected_rows(selection, &store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1439 work = slist;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1440 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1441 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1442 GtkTreePath *tpath = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1443 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1444 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1445
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1446 gtk_tree_model_get_iter(store, &iter, tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1447 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1448
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1449 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
1450
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1451 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1452 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1453 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1454 g_list_free(slist);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1455
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1456 return g_list_reverse(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1457 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1458
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1459 void vflist_select_all(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1460 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1461 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1462
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1463 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1464 gtk_tree_selection_select_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1465
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
1466 VFLIST(vf)->select_fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1467 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1468
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1469 void vflist_select_none(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1470 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1471 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1472
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1473 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1474 gtk_tree_selection_unselect_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1475 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1476
601
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1477 static gboolean tree_model_iter_prev(GtkTreeModel *store, GtkTreeIter *iter)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1478 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1479 GtkTreePath *tpath;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1480 gboolean result;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1481
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1482 tpath = gtk_tree_model_get_path(store, iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1483 result = gtk_tree_path_prev(tpath);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1484 if (result)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1485 gtk_tree_model_get_iter(store, iter, tpath);
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 gtk_tree_path_free(tpath);
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 return result;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1490 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1491
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1492 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
1493 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1494 if (!gtk_tree_model_get_iter_first(store, iter))
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1495 return FALSE;
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 while (TRUE)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1498 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1499 GtkTreeIter next = *iter;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1500
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1501 if (gtk_tree_model_iter_next(store, &next))
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1502 *iter = next;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1503 else
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1504 break;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1505 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1506
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1507 return TRUE;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1508 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1509
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1510 void vflist_select_invert(ViewFile *vf)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1511 {
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1512 GtkTreeIter iter;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1513 GtkTreeSelection *selection;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1514 GtkTreeModel *store;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1515 gboolean valid;
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1516
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1517 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
1518 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
1519
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1520 /* Backward iteration prevents scrolling to the end of the list,
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1521 * it scrolls to the first selected row instead. */
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1522 valid = tree_model_get_iter_last(store, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1523
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1524 while (valid)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1525 {
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1526 gboolean selected = gtk_tree_selection_iter_is_selected(selection, &iter);
601
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1527
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1528 if (selected)
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1529 gtk_tree_selection_unselect_iter(selection, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1530 else
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1531 gtk_tree_selection_select_iter(selection, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1532
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1533 valid = tree_model_iter_prev(store, &iter);
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1534 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1535 }
93c6dc4c537b Add a way to invert the current selection.
zas_
parents: 596
diff changeset
1536
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1537 void vflist_select_by_fd(ViewFile *vf, FileData *fd)
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 132
diff changeset
1538 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1539 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1540
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1541 if (vflist_find_row(vf, fd, &iter) < 0) return;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1542
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1543 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
1544
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1545 if (!vflist_row_is_selected(vf, fd))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1546 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1547 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1548 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1549 GtkTreePath *tpath;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1550
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1551 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1552 gtk_tree_selection_unselect_all(selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1553 gtk_tree_selection_select_iter(selection, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1554 vflist_move_cursor(vf, &iter);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1555
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1556 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1557 tpath = gtk_tree_model_get_path(store, &iter);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1558 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
1559 gtk_tree_path_free(tpath);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1560 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1561 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1562
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1563 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
1564 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1565 GList *work;
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1566 FileData *fd = NULL;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1567
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1568 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
1569 work = vf->list;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1570
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1571 while (work)
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1572 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1573 gint match;
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1574 fd = work->data;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1575 work = work->next;
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1576
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1577 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
1578
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1579 if (match >= 0) break;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1580 }
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1581
1233
b51874ca8642 fixed updating of selection after deleting the last image from the list
nadvornik
parents: 1206
diff changeset
1582 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
1583
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1584 }
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1585
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1586 void vflist_mark_to_selection(ViewFile *vf, gint mark, MarkToSelectionMode mode)
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1587 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1588 GtkTreeModel *store;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1589 GtkTreeIter iter;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1590 GtkTreeSelection *selection;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1591 gboolean valid;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1592 gint n = mark - 1;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1593
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1594 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1595
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1596 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview));
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1597 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1598
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1599 valid = gtk_tree_model_get_iter_first(store, &iter);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1600 while (valid)
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1601 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1602 FileData *fd;
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1603 gboolean mark_val, selected;
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1604 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1605
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1606 mark_val = file_data_get_mark(fd, n);
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1607 selected = gtk_tree_selection_iter_is_selected(selection, &iter);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1608
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1609 switch (mode)
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1610 {
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1611 case MTS_MODE_SET: selected = mark_val;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1612 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1613 case MTS_MODE_OR: selected = mark_val | selected;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1614 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1615 case MTS_MODE_AND: selected = mark_val & selected;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1616 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1617 case MTS_MODE_MINUS: selected = !mark_val & selected;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1618 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1619 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1620
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1621 if (selected)
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1622 gtk_tree_selection_select_iter(selection, &iter);
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1623 else
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1624 gtk_tree_selection_unselect_iter(selection, &iter);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1625
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1626 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1627 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1628 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1629
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1630 void vflist_selection_to_mark(ViewFile *vf, gint mark, SelectionToMarkMode mode)
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1631 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1632 GtkTreeModel *store;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1633 GtkTreeSelection *selection;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1634 GList *slist;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1635 GList *work;
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1636 gint n = mark - 1;
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1637
654
6dcfac4b356f Get rid of vflist_pop_menu() col_idx parameter, use new Viewfile field
zas_
parents: 637
diff changeset
1638 g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE);
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1639
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1640 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1641 slist = gtk_tree_selection_get_selected_rows(selection, &store);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1642 work = slist;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1643 while (work)
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1644 {
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1645 GtkTreePath *tpath = work->data;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1646 FileData *fd;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1647 GtkTreeIter iter;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1648
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1649 gtk_tree_model_get_iter(store, &iter, tpath);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1650 gtk_tree_model_get(store, &iter, FILE_COLUMN_POINTER, &fd, -1);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1651
1658
98cd4f700f35 fixed updating of marks in sidecars
nadvornik
parents: 1655
diff changeset
1652 /* the change has a very limited range and the standard notification would trigger
98cd4f700f35 fixed updating of marks in sidecars
nadvornik
parents: 1655
diff changeset
1653 complete re-read of the directory - try to do only minimal update instead */
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1654 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
1655
161
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1656 switch (mode)
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1657 {
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1658 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
1659 break;
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1660 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
1661 break;
800
a25b228978a0 various notification improvements
nadvornik
parents: 792
diff changeset
1662 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
1663 break;
08ab6367b4e6 complete set of boolean operation with marks -
nadvornik
parents: 157
diff changeset
1664 }
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
1665
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1666 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
1667 {
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1668 vf_refresh_idle(vf);
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1669 }
1539
4df9f4712d1a fixed updating of filelist marks
nadvornik
parents: 1523
diff changeset
1670 else
4df9f4712d1a fixed updating of filelist marks
nadvornik
parents: 1523
diff changeset
1671 {
4df9f4712d1a fixed updating of filelist marks
nadvornik
parents: 1523
diff changeset
1672 /* mark functions can have various side effects - update all columns to be sure */
4df9f4712d1a fixed updating of filelist marks
nadvornik
parents: 1523
diff changeset
1673 vflist_setup_iter(vf, GTK_TREE_STORE(store), &iter, fd);
1658
98cd4f700f35 fixed updating of marks in sidecars
nadvornik
parents: 1655
diff changeset
1674 /* mark functions can change sidecars too */
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
1675 vflist_setup_iter_recursive(vf, GTK_TREE_STORE(store), &iter, fd->sidecar_files, NULL, FALSE);
1539
4df9f4712d1a fixed updating of filelist marks
nadvornik
parents: 1523
diff changeset
1676 }
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1677
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1678
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1679 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1680
150
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1681 work = work->next;
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1682 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1683 g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1684 g_list_free(slist);
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1685 }
976fba0add7c more operations with file marks
nadvornik
parents: 149
diff changeset
1686
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1687 /*
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 * core (population)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1690 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1691 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1692
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
1693 static void vflist_listview_set_columns(GtkWidget *listview, gboolean thumb, gboolean multiline)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1694 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1695 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1696 GtkCellRenderer *cell;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1697 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1698
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1699 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
1700 if (!column) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1701
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1702 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
1703
1767
9a351e8f3b97 Add compatibility for GTK 2.18
mow
parents: 1763
diff changeset
1704 #if GTK_CHECK_VERSION(2,18,0)
9a351e8f3b97 Add compatibility for GTK 2.18
mow
parents: 1763
diff changeset
1705 list = gtk_cell_layout_get_cells(GTK_CELL_LAYOUT(column));
9a351e8f3b97 Add compatibility for GTK 2.18
mow
parents: 1763
diff changeset
1706 #else
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1707 list = gtk_tree_view_column_get_cell_renderers(column);
1767
9a351e8f3b97 Add compatibility for GTK 2.18
mow
parents: 1763
diff changeset
1708 #endif
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1709 if (!list) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1710 cell = list->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1711 g_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1712
802
3cfc54c77b30 fixed switching thumbnails in listview on and off - bug 1984825
nadvornik
parents: 801
diff changeset
1713 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
1714 gtk_tree_view_column_set_visible(column, thumb);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1715
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
1716 column = gtk_tree_view_get_column(GTK_TREE_VIEW(listview), FILE_VIEW_COLUMN_FORMATTED);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1717 if (!column) return;
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
1718 gtk_tree_view_set_expander_column(GTK_TREE_VIEW(listview), column);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1719
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1720 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
1721 if (!column) return;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1722 gtk_tree_view_column_set_visible(column, !multiline);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1723
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1724 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
1725 if (!column) return;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1726 gtk_tree_view_column_set_visible(column, !multiline);
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
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
1729 static gboolean vflist_is_multiline(ViewFile *vf)
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
1730 {
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
1731 return (VFLIST(vf)->thumbs_enabled && options->thumbnails.max_height >= 48);
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
1732 }
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
1733
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
1734
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
1735 static void vflist_populate_view(ViewFile *vf, gboolean force)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1736 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1737 GtkTreeStore *store;
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1738 GList *selected;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1739
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1740 store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(vf->listview)));
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1741
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1742 vf_thumb_stop(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1743
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1744 if (!vf->list)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1745 {
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1746 vflist_store_clear(vf);
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1747 vf_send_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1748 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1749 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1750
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
1751 vflist_listview_set_columns(vf->listview, VFLIST(vf)->thumbs_enabled, vflist_is_multiline(vf));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1752
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1753 selected = vflist_selection_get_list(vf);
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1754
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
1755 vflist_setup_iter_recursive(vf, store, NULL, vf->list, selected, force);
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1756
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1757 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
1758 {
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1759 /* all selected files disappeared */
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1760 vflist_select_closest(vf, selected->data);
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1761 }
771
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1762
24726eddb252 vflist_populate_view: better handle selected files that are renamed or deleted
nadvornik
parents: 770
diff changeset
1763 filelist_free(selected);
769
110462fdf31b simplified vflist_populate_view
nadvornik
parents: 763
diff changeset
1764
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
1765 vf_send_update(vf);
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1766 vf_thumb_update(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1767 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1768
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1769 gboolean vflist_refresh(ViewFile *vf)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1770 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1771 GList *old_list;
1437
a3d3208b0c50 gint -> gboolean.
zas_
parents: 1365
diff changeset
1772 gboolean ret = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1773
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1774 old_list = vf->list;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1775 vf->list = NULL;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1776
762
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1777 DEBUG_1("%s vflist_refresh: read dir", get_exec_time());
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1778 if (vf->dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1779 {
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1780 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
1781
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1782 ret = filelist_read(vf->dir_fd, &vf->list, NULL);
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1783 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
1784 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
1785
780
44128da39e13 Drop initialization to NULL since filelist_read() will take care of it.
zas_
parents: 775
diff changeset
1786 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
1787 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
1788 }
762
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1789
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1790 DEBUG_1("%s vflist_refresh: populate view", get_exec_time());
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1791
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
1792 vflist_populate_view(vf, FALSE);
9
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 filelist_free(old_list);
762
e6927cef8541 measure time of filelist update
nadvornik
parents: 753
diff changeset
1795 DEBUG_1("%s vflist_refresh: done", get_exec_time());
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1796
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1797 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1798 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1799
772
f53c2bb5b1b1 replaced vflist_maint functions by vflist_refresh - it allows to follow
nadvornik
parents: 771
diff changeset
1800
f53c2bb5b1b1 replaced vflist_maint functions by vflist_refresh - it allows to follow
nadvornik
parents: 771
diff changeset
1801
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1802 /* 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
1803
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1804 #define CELL_HEIGHT_OVERRIDE 512
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1805
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1806 static void cell_renderer_height_override(GtkCellRenderer *renderer)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1807 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1808 GParamSpec *spec;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1809
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1810 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
1811 if (spec && G_IS_PARAM_SPEC_INT(spec))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1812 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1813 GParamSpecInt *spec_int;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1814
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1815 spec_int = G_PARAM_SPEC_INT(spec);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1816 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
1817 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1818 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1819
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1820 static GdkColor *vflist_listview_color_shifted(GtkWidget *widget)
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 static GdkColor color;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1823 static GtkWidget *done = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1824
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1825 if (done != widget)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1826 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1827 GtkStyle *style;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1828
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1829 style = gtk_widget_get_style(widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1830 memcpy(&color, &style->base[GTK_STATE_NORMAL], sizeof(color));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1831 shift_color(&color, -1, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1832 done = widget;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1833 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1834
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1835 return &color;
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
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1838 static void vflist_listview_color_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1839 GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1840 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1841 ViewFile *vf = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1842 gboolean set;
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 gtk_tree_model_get(tree_model, iter, FILE_COLUMN_COLOR, &set, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1845 g_object_set(G_OBJECT(cell),
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1846 "cell-background-gdk", vflist_listview_color_shifted(vf->listview),
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1847 "cell-background-set", set, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1848 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1849
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
1850 static void vflist_listview_add_column(ViewFile *vf, gint n, const gchar *title, gboolean image, gboolean right_justify, gboolean expand)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1851 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1852 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1853 GtkCellRenderer *renderer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1854
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1855 column = gtk_tree_view_column_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1856 gtk_tree_view_column_set_title(column, title);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1857 gtk_tree_view_column_set_min_width(column, 4);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1858
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1859 if (!image)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1860 {
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1861 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
1862 renderer = gtk_cell_renderer_text_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1863 if (right_justify)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1864 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1865 g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1866 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1867 gtk_tree_view_column_pack_start(column, renderer, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1868 gtk_tree_view_column_add_attribute(column, renderer, "text", n);
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1869 if (expand)
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1870 gtk_tree_view_column_set_expand(column, TRUE);
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1871 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1872 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1873 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1874 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1875 renderer = gtk_cell_renderer_pixbuf_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1876 cell_renderer_height_override(renderer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1877 gtk_tree_view_column_pack_start(column, renderer, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1878 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1879 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1880
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
1881 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
1882 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
1883 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
1884
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1885 gtk_tree_view_append_column(GTK_TREE_VIEW(vf->listview), column);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1886 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1887
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1888 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
1889 {
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1890 ViewFile *vf = data;
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1891 GtkTreeStore *store;
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1892 GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1893 GtkTreeIter iter;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1894 FileData *fd;
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1895 gboolean marked;
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1896 guint col_idx;
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 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
1899 if (!path || !gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
1900 return;
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1901
513
985fdfebd89e Remove whitespace between function name and first parenthesis for the sake of consistency. (pass 2)
zas_
parents: 512
diff changeset
1902 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
1903
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1904 g_assert(col_idx >= FILE_COLUMN_MARKS && col_idx <= FILE_COLUMN_MARKS_LAST);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1905
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1906 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, FILE_COLUMN_POINTER, &fd, col_idx, &marked, -1);
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1907 marked = !marked;
1658
98cd4f700f35 fixed updating of marks in sidecars
nadvornik
parents: 1655
diff changeset
1908
98cd4f700f35 fixed updating of marks in sidecars
nadvornik
parents: 1655
diff changeset
1909 /* the change has a very limited range and the standard notification would trigger
98cd4f700f35 fixed updating of marks in sidecars
nadvornik
parents: 1655
diff changeset
1910 complete re-read of the directory - try to do only minimal update instead */
98cd4f700f35 fixed updating of marks in sidecars
nadvornik
parents: 1655
diff changeset
1911 file_data_unregister_notify_func(vf_notify_cb, vf);
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1912 file_data_set_mark(fd, col_idx - FILE_COLUMN_MARKS, marked);
964
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1913 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
1914 {
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1915 vf_refresh_idle(vf);
ba1d3c4bc0cd implemented marks filter
nadvornik
parents: 930
diff changeset
1916 }
1539
4df9f4712d1a fixed updating of filelist marks
nadvornik
parents: 1523
diff changeset
1917 else
4df9f4712d1a fixed updating of filelist marks
nadvornik
parents: 1523
diff changeset
1918 {
4df9f4712d1a fixed updating of filelist marks
nadvornik
parents: 1523
diff changeset
1919 /* mark functions can have various side effects - update all columns to be sure */
4df9f4712d1a fixed updating of filelist marks
nadvornik
parents: 1523
diff changeset
1920 vflist_setup_iter(vf, GTK_TREE_STORE(store), &iter, fd);
1658
98cd4f700f35 fixed updating of marks in sidecars
nadvornik
parents: 1655
diff changeset
1921 /* mark functions can change sidecars too */
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
1922 vflist_setup_iter_recursive(vf, GTK_TREE_STORE(store), &iter, fd->sidecar_files, NULL, FALSE);
1539
4df9f4712d1a fixed updating of filelist marks
nadvornik
parents: 1523
diff changeset
1923 }
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1924 file_data_register_notify_func(vf_notify_cb, vf, NOTIFY_PRIORITY_MEDIUM);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1925
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1926 gtk_tree_path_free(path);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1927 }
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1928
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1929 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
1930 {
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1931 GtkTreeViewColumn *column;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1932 GtkCellRenderer *renderer;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1933 GtkTreeStore *store;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1934 gint index;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1935
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1936 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
1937
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1938 renderer = gtk_cell_renderer_toggle_new();
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1939 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
1940
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1941 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
1942 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
1943 g_object_set_data(G_OBJECT(renderer), "column_store_idx", GUINT_TO_POINTER(n));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1944
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1945 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
1946 gtk_tree_view_column_set_fixed_width(column, 22);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1947 gtk_tree_view_column_set_visible(column, vf->marks_enabled);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1948
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1949
784
16b3a5c8aedc new notification system (used only in vflist for now)
nadvornik
parents: 783
diff changeset
1950 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
1951 }
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
1952
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1953 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1954 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1955 * base
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1956 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1957 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1958
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
1959 gboolean vflist_set_fd(ViewFile *vf, FileData *dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1960 {
1700
bda2d599cc70 call gtk_tree_view_columns_autosize only when reall needed
nadvornik
parents: 1699
diff changeset
1961 gboolean ret;
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1962 if (!dir_fd) return FALSE;
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1963 if (vf->dir_fd == dir_fd) return TRUE;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1964
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1965 file_data_unref(vf->dir_fd);
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1966 vf->dir_fd = file_data_ref(dir_fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1967
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1968 /* force complete reload */
801
9b676bb76a2e various refresh and notification fixes
nadvornik
parents: 800
diff changeset
1969 vflist_store_clear(vf);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1970
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1971 filelist_free(vf->list);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1972 vf->list = NULL;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1973
1700
bda2d599cc70 call gtk_tree_view_columns_autosize only when reall needed
nadvornik
parents: 1699
diff changeset
1974 ret = vf_refresh(vf);
bda2d599cc70 call gtk_tree_view_columns_autosize only when reall needed
nadvornik
parents: 1699
diff changeset
1975 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(vf->listview));
bda2d599cc70 call gtk_tree_view_columns_autosize only when reall needed
nadvornik
parents: 1699
diff changeset
1976 return ret;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1977 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1978
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1979 void vflist_destroy_cb(GtkWidget *widget, gpointer data)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1980 {
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1981 ViewFile *vf = data;
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1982
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1983 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
1984
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1985 vflist_select_idle_cancel(vf);
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
1986 vf_refresh_idle_cancel(vf);
1608
fe9ac4a5c969 Merge common thumb code from view_file_list and view_file_icon to view_file.
zas_
parents: 1598
diff changeset
1987 vf_thumb_stop(vf);
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1988
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
1989 filelist_free(vf->list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1990 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1991
783
d6a7fb4b8e7c replaced directory path with FileData* dir_fd
nadvornik
parents: 780
diff changeset
1992 ViewFile *vflist_new(ViewFile *vf, FileData *dir_fd)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1993 {
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
1994 GtkTreeStore *store;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1995 GtkTreeSelection *selection;
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
1996 GType flist_types[FILE_COLUMN_COUNT];
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1997 gint i;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
1998 gint column;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
1999
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2000 vf->info = g_new0(ViewFileInfoList, 1);
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2001
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
2002 flist_types[FILE_COLUMN_POINTER] = G_TYPE_POINTER;
763
81f9e8dbb4bf improved infrastructure for tracing changes, optimized vflist_populate_view
nadvornik
parents: 762
diff changeset
2003 flist_types[FILE_COLUMN_VERSION] = G_TYPE_INT;
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
2004 flist_types[FILE_COLUMN_THUMB] = GDK_TYPE_PIXBUF;
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2005 flist_types[FILE_COLUMN_FORMATTED] = G_TYPE_STRING;
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
2006 flist_types[FILE_COLUMN_NAME] = G_TYPE_STRING;
1655
6600a2754e50 improved list view
nadvornik
parents: 1622
diff changeset
2007 flist_types[FILE_COLUMN_SIDECARS] = G_TYPE_STRING;
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
2008 flist_types[FILE_COLUMN_SIZE] = G_TYPE_STRING;
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
2009 flist_types[FILE_COLUMN_DATE] = G_TYPE_STRING;
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2010 flist_types[FILE_COLUMN_EXPANDED] = G_TYPE_BOOLEAN;
139
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
2011 flist_types[FILE_COLUMN_COLOR] = G_TYPE_BOOLEAN;
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
2012 for (i = FILE_COLUMN_MARKS; i < FILE_COLUMN_MARKS + FILEDATA_MARKS_SIZE; i++)
754c1e4349b6 display sidecar extensions in filelist
nadvornik
parents: 138
diff changeset
2013 flist_types[i] = G_TYPE_BOOLEAN;
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
2014
142
b5aa95241859 display sidecar files (jpeg + raw) using gtk_tree_store
nadvornik
parents: 139
diff changeset
2015 store = gtk_tree_store_newv(FILE_COLUMN_COUNT, flist_types);
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2016
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2017 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
2018 g_object_unref(store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2019
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2020 g_signal_connect(G_OBJECT(vf->listview), "row-expanded",
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2021 G_CALLBACK(vflist_expand_cb), vf);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2022
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2023 g_signal_connect(G_OBJECT(vf->listview), "row-collapsed",
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2024 G_CALLBACK(vflist_collapse_cb), vf);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2025
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2026 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vf->listview));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2027 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
2028 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
2029
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2030 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
2031 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
2032
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2033 column = 0;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2034
518
e56c74e89da9 Add missing space.
zas_
parents: 517
diff changeset
2035 for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2036 {
995
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
2037 vflist_listview_add_column_toggle(vf, i + FILE_COLUMN_MARKS, "");
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
2038 g_assert(column == FILE_VIEW_COLUMN_MARKS + i);
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
2039 column++;
6ca2c5fd7b13 Whitespaces cleanup.
zas_
parents: 970
diff changeset
2040 }
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2041
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2042 vflist_listview_add_column(vf, FILE_COLUMN_THUMB, "", TRUE, FALSE, FALSE);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2043 g_assert(column == FILE_VIEW_COLUMN_THUMB);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2044 column++;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2045
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2046 vflist_listview_add_column(vf, FILE_COLUMN_FORMATTED, _("Name"), FALSE, FALSE, TRUE);
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2047 g_assert(column == FILE_VIEW_COLUMN_FORMATTED);
835
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2048 column++;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2049
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2050 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
2051 g_assert(column == FILE_VIEW_COLUMN_SIZE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2052 column++;
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2053
1699
81ccb9cf7ef5 do not use cell_data_func
nadvornik
parents: 1658
diff changeset
2054 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
2055 g_assert(column == FILE_VIEW_COLUMN_DATE);
1014e8f72f94 use multiline description in vflist with large thumbnails
nadvornik
parents: 834
diff changeset
2056 column++;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2057
814
721c2bbaceec moved notification to view_file.c
nadvornik
parents: 813
diff changeset
2058 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
2059 return vf;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2060 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2061
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
2062 void vflist_thumb_set(ViewFile *vf, gboolean enable)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2063 {
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
2064 if (VFLIST(vf)->thumbs_enabled == enable) return;
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2065
968
065a129fd42b Simplify things related to ViewFileInfoList * and ViewFileInfoIcon * type casting:
zas_
parents: 964
diff changeset
2066 VFLIST(vf)->thumbs_enabled = enable;
1702
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
2067
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
2068 /* vflist_populate_view is better than vf_refresh:
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
2069 - no need to re-read the directory
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
2070 - force update because the formatted string has changed
2725ab224b07 fixed switching of multiline texts
nadvornik
parents: 1700
diff changeset
2071 */
1703
80c83468a47c update column sizes after toggling thumbnails
nadvornik
parents: 1702
diff changeset
2072 if (vf->layout)
80c83468a47c update column sizes after toggling thumbnails
nadvornik
parents: 1702
diff changeset
2073 {
80c83468a47c update column sizes after toggling thumbnails
nadvornik
parents: 1702
diff changeset
2074 vflist_populate_view(vf, TRUE);
80c83468a47c update column sizes after toggling thumbnails
nadvornik
parents: 1702
diff changeset
2075 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(vf->listview));
80c83468a47c update column sizes after toggling thumbnails
nadvornik
parents: 1702
diff changeset
2076 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2077 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2078
1453
bc3f5c0432f6 gint -> gboolean where applicable. The end (ouf!).
zas_
parents: 1437
diff changeset
2079 void vflist_marks_set(ViewFile *vf, gboolean enable)
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
2080 {
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2081 GList *columns, *work;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2082
573
2996f1bbc305 Drop ViewFileList, use ViewFile and ViewFileInfoList instead.
zas_
parents: 559
diff changeset
2083 columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(vf->listview));
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2084
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2085 work = columns;
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2086 while (work)
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2087 {
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2088 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
2089 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
2090 work = work->next;
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2091
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2092 if (col_idx <= FILE_COLUMN_MARKS_LAST && col_idx >= FILE_COLUMN_MARKS)
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2093 gtk_tree_view_column_set_visible(column, enable);
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2094 }
442
4b2d7f9af171 Big whitespaces cleanup:
zas_
parents: 380
diff changeset
2095
149
f0c79a514c06 marks: fixes and cleanup
nadvornik
parents: 144
diff changeset
2096 g_list_free(columns);
633
fe700864cb5a Use vf_* functions where possible.
zas_
parents: 632
diff changeset
2097 //vf_refresh(vf);
132
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
2098 }
661cd91e5a7e First implementation of marks for all photos.
bruclik
parents: 113
diff changeset
2099
1055
1646720364cf Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents: 1005
diff changeset
2100 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */