annotate src/collect.c @ 2878:8b1c451c8ff2

Additional remote commands --get-filelist:[<FOLDER>] Get list of files and class --get-filelist-recurse:[<FOLDER>] Get list of files and class recursive --get-collection:<COLLECTION> Get collection content --get-collection-list Get list of collections Changed command: --tell Print filename of current image [and Collection, if collection being displayed]
author Colin Clark <colin.clark@cclark.uk>
date Fri, 04 Jan 2019 13:44:58 +0000
parents b20a96b979a3
children 2e7fd08bfbe4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1 /*
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
2 * Copyright (C) 2006 John Ellis
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
3 * Copyright (C) 2008 - 2016 The Geeqie Team
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
4 *
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
5 * Author: John Ellis
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
6 *
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
7 * This program is free software; you can redistribute it and/or modify
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
8 * it under the terms of the GNU General Public License as published by
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
10 * (at your option) any later version.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
11 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
12 * This program is distributed in the hope that it will be useful,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
15 * GNU General Public License for more details.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
16 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
17 * You should have received a copy of the GNU General Public License along
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
18 * with this program; if not, write to the Free Software Foundation, Inc.,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2274
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
20 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
21
281
b1c2c2cf19d4 gqview.h -> main.h
Laurent Monin <geeqie@norz.org>
parents: 259
diff changeset
22 #include "main.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
23 #include "collect.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
24
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
25 #include "collect-dlg.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
26 #include "collect-io.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
27 #include "collect-table.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
28 #include "editors.h"
586
122fc2223b42 split filelist.c to filefilter.c and filedata.c
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 516
diff changeset
29 #include "filedata.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
30 #include "img-view.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
31 #include "layout.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
32 #include "layout_image.h"
2694
4126aaeef776 Context-sensitve help
Colin Clark <colin.clark@cclark.uk>
parents: 2595
diff changeset
33 #include "layout_util.h"
1022
d09059a8b243 Move miscellaneous functions to their own files (new misc.[ch]).
Laurent Monin <geeqie@norz.org>
parents: 816
diff changeset
34 #include "misc.h"
91
d6b6f5cfa048 Wed Nov 1 11:39:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 85
diff changeset
35 #include "pixbuf_util.h"
94
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
36 #include "print.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
37 #include "ui_fileops.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
38 #include "ui_tree_edit.h"
1022
d09059a8b243 Move miscellaneous functions to their own files (new misc.[ch]).
Laurent Monin <geeqie@norz.org>
parents: 816
diff changeset
39 #include "utilops.h"
648
36e8da5a771d Move some functions from main.[ch] to new window.[ch].
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
40 #include "window.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
41
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
42 #include <gdk/gdkkeysyms.h> /* for keyboard values */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
43
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
44
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
45 #define COLLECT_DEF_WIDTH 440
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
46 #define COLLECT_DEF_HEIGHT 450
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
47
2583
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
48 /**
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
49 * list of paths to collections */
2582
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
50
2583
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
51 /**
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
52 * @brief List of currently open Collections.
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
53 *
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
54 * Type ::_CollectionData
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
55 */
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
56 static GList *collection_list = NULL;
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
57
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
58 /**
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
59 * @brief List of currently open Collection windows.
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
60 *
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
61 * Type ::_CollectWindow
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
62 */
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
63 static GList *collection_window_list = NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
64
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
65 static void collection_window_get_geometry(CollectWindow *cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
66 static void collection_window_refresh(CollectWindow *cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
67 static void collection_window_update_title(CollectWindow *cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
68 static void collection_window_add(CollectWindow *cw, CollectInfo *ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
69 static void collection_window_insert(CollectWindow *cw, CollectInfo *ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
70 static void collection_window_remove(CollectWindow *cw, CollectInfo *ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
71 static void collection_window_update(CollectWindow *cw, CollectInfo *ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
72
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
73 static void collection_window_close(CollectWindow *cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
74
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
75 static void collection_notify_cb(FileData *fd, NotifyType type, gpointer data);
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
76
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
77 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
78 *-------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
79 * data, list handling
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
80 *-------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
81 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
82
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
83 CollectInfo *collection_info_new(FileData *fd, struct stat *st, GdkPixbuf *pixbuf)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
84 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
85 CollectInfo *ci;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
86
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
87 if (!fd) return NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
88
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
89 ci = g_new0(CollectInfo, 1);
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
90 ci->fd = file_data_ref(fd);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
91
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
92 ci->pixbuf = pixbuf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
93 if (ci->pixbuf) g_object_ref(ci->pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
94
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
95 return ci;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
96 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
97
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
98 void collection_info_free_thumb(CollectInfo *ci)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
99 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
100 if (ci->pixbuf) g_object_unref(ci->pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
101 ci->pixbuf = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
102 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
103
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
104 void collection_info_free(CollectInfo *ci)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
105 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
106 if (!ci) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
107
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
108 file_data_unref(ci->fd);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
109 collection_info_free_thumb(ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
110 g_free(ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
111 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
112
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
113 void collection_info_set_thumb(CollectInfo *ci, GdkPixbuf *pixbuf)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
114 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
115 if (pixbuf) g_object_ref(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
116 collection_info_free_thumb(ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
117 ci->pixbuf = pixbuf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
118 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
119
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
120 gboolean collection_info_load_thumb(CollectInfo *ci)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
121 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
122 if (!ci) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
123
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
124 collection_info_free_thumb(ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
125
673
c9c2bc042e10 Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
126 log_printf("collection_info_load_thumb not implemented!\n(because an instant thumb loader not implemented)");
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
127 return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
128 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
129
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
130 void collection_list_free(GList *list)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
131 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
132 GList *work;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
133 work = list;
516
768d10237b88 Convert the minority of while() to while ().
Laurent Monin <geeqie@norz.org>
parents: 513
diff changeset
134 while (work)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
135 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
136 collection_info_free((CollectInfo *)work->data);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
137 work = work->next;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
138 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
139 g_list_free(list);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
140 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
141
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
142 /* an ugly static var, well what ya gonna do ? */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
143 static SortType collection_list_sort_method = SORT_NAME;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
144
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
145 static gint collection_list_sort_cb(gconstpointer a, gconstpointer b)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
146 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
147 const CollectInfo *cia = a;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
148 const CollectInfo *cib = b;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
149
1347
84d289bde1ea Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents: 1292
diff changeset
150 switch (collection_list_sort_method)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
151 {
785
9c54f243c2c6 Use uft8_collate_key() to sort utf8 strings.
Laurent Monin <geeqie@norz.org>
parents: 753
diff changeset
152 case SORT_NAME:
9c54f243c2c6 Use uft8_collate_key() to sort utf8 strings.
Laurent Monin <geeqie@norz.org>
parents: 753
diff changeset
153 break;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
154 case SORT_NONE:
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
155 return 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
156 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
157 case SORT_SIZE:
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
158 if (cia->fd->size < cib->fd->size) return -1;
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
159 if (cia->fd->size > cib->fd->size) return 1;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
160 return 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
161 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
162 case SORT_TIME:
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
163 if (cia->fd->date < cib->fd->date) return -1;
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
164 if (cia->fd->date > cib->fd->date) return 1;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
165 return 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
166 break;
2274
046675ca4d54 Applying that sort method also to collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2233
diff changeset
167 case SORT_CTIME:
046675ca4d54 Applying that sort method also to collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2233
diff changeset
168 if (cia->fd->cdate < cib->fd->cdate) return -1;
046675ca4d54 Applying that sort method also to collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2233
diff changeset
169 if (cia->fd->cdate > cib->fd->cdate) return 1;
046675ca4d54 Applying that sort method also to collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2233
diff changeset
170 return 0;
046675ca4d54 Applying that sort method also to collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2233
diff changeset
171 break;
2698
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
172 case SORT_EXIFTIME:
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
173 if (cia->fd->exifdate < cib->fd->exifdate) return -1;
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
174 if (cia->fd->exifdate > cib->fd->exifdate) return 1;
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
175 break;
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
176 case SORT_EXIFTIMEDIGITIZED:
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
177 if (cia->fd->exifdate_digitized < cib->fd->exifdate_digitized) return -1;
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
178 if (cia->fd->exifdate_digitized > cib->fd->exifdate_digitized) return 1;
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
179 break;
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
180 case SORT_RATING:
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
181 if (cia->fd->rating < cib->fd->rating) return -1;
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
182 if (cia->fd->rating > cib->fd->rating) return 1;
940f217da9ec Sort/search on Exif.Photo.DateTimeDigitized
Colin Clark <colin.clark@cclark.uk>
parents: 2696
diff changeset
183 break;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
184 case SORT_PATH:
786
cdcd3668e870 Compare paths using utf8_collate_key() since paths are utf8-encoded.
Laurent Monin <geeqie@norz.org>
parents: 785
diff changeset
185 return utf8_compare(cia->fd->path, cib->fd->path, options->file_sort.case_sensitive);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
186 break;
2696
f090fbf9362f Sort/search on file class
Colin Clark <colin.clark@cclark.uk>
parents: 2694
diff changeset
187 case SORT_CLASS:
f090fbf9362f Sort/search on file class
Colin Clark <colin.clark@cclark.uk>
parents: 2694
diff changeset
188 if (cia->fd->format_class < cib->fd->format_class) return -1;
f090fbf9362f Sort/search on file class
Colin Clark <colin.clark@cclark.uk>
parents: 2694
diff changeset
189 if (cia->fd->format_class > cib->fd->format_class) return 1;
f090fbf9362f Sort/search on file class
Colin Clark <colin.clark@cclark.uk>
parents: 2694
diff changeset
190 break;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
191 #ifdef HAVE_STRVERSCMP
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
192 case SORT_NUMBER:
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
193 return strverscmp(cia->fd->name, cib->fd->name);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
194 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
195 #endif
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
196 default:
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
197 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
198 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
199
785
9c54f243c2c6 Use uft8_collate_key() to sort utf8 strings.
Laurent Monin <geeqie@norz.org>
parents: 753
diff changeset
200 if (options->file_sort.case_sensitive)
9c54f243c2c6 Use uft8_collate_key() to sort utf8 strings.
Laurent Monin <geeqie@norz.org>
parents: 753
diff changeset
201 return strcmp(cia->fd->collate_key_name, cib->fd->collate_key_name);
9c54f243c2c6 Use uft8_collate_key() to sort utf8 strings.
Laurent Monin <geeqie@norz.org>
parents: 753
diff changeset
202 else
9c54f243c2c6 Use uft8_collate_key() to sort utf8 strings.
Laurent Monin <geeqie@norz.org>
parents: 753
diff changeset
203 return strcmp(cia->fd->collate_key_name_nocase, cib->fd->collate_key_name_nocase);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
204 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
205
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
206 GList *collection_list_sort(GList *list, SortType method)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
207 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
208 if (method == SORT_NONE) return list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
209
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
210 collection_list_sort_method = method;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
211
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
212 return g_list_sort(list, collection_list_sort_cb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
213 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
214
1535
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
215 GList *collection_list_randomize(GList *list)
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
216 {
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
217 guint random, length, i;
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
218 gpointer tmp;
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
219 GList *nlist, *olist;
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
220
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
221 length = g_list_length(list);
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
222 if (!length) return NULL;
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
223
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
224 srand((unsigned int)time(NULL)); // Initialize random generator (hasn't to be that much strong)
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
225
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
226 for (i = 0; i < length; i++)
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
227 {
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
228 random = (guint) (1.0 * length * rand()/(RAND_MAX + 1.0));
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
229 olist = g_list_nth(list, i);
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
230 nlist = g_list_nth(list, random);
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
231 tmp = olist->data;
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
232 olist->data = nlist->data;
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
233 nlist->data = tmp;
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
234 }
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
235
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
236 return list;
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
237 }
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
238
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
239 GList *collection_list_add(GList *list, CollectInfo *ci, SortType method)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
240 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
241 if (method != SORT_NONE)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
242 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
243 collection_list_sort_method = method;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
244 list = g_list_insert_sorted(list, ci, collection_list_sort_cb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
245 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
246 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
247 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
248 list = g_list_append(list, ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
249 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
250
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
251 return list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
252 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
253
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
254 GList *collection_list_insert(GList *list, CollectInfo *ci, CollectInfo *insert_ci, SortType method)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
255 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
256 if (method != SORT_NONE)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
257 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
258 collection_list_sort_method = method;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
259 list = g_list_insert_sorted(list, ci, collection_list_sort_cb);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
260 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
261 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
262 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
263 GList *point;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
264
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
265 point = g_list_find(list, insert_ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
266 list = uig_list_insert_link(list, point, ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
267 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
268
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
269 return list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
270 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
271
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
272 GList *collection_list_remove(GList *list, CollectInfo *ci)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
273 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
274 list = g_list_remove(list, ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
275 collection_info_free(ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
276 return list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
277 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
278
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
279 CollectInfo *collection_list_find_fd(GList *list, FileData *fd)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
280 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
281 GList *work = list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
282
516
768d10237b88 Convert the minority of while() to while ().
Laurent Monin <geeqie@norz.org>
parents: 513
diff changeset
283 while (work)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
284 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
285 CollectInfo *ci = work->data;
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
286 if (ci->fd == fd) return ci;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
287 work = work->next;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
288 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
289
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
290 return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
291 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
292
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
293 GList *collection_list_to_filelist(GList *list)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
294 {
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
295 GList *filelist = NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
296 GList *work = list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
297
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
298 while (work)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
299 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
300 CollectInfo *info = work->data;
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
301 filelist = g_list_prepend(filelist, file_data_ref(info->fd));
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
302 work = work->next;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
303 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
304
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
305 filelist = g_list_reverse(filelist);
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
306 return filelist;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
307 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
308
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
309 CollectWindow *collection_window_find(CollectionData *cd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
310 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
311 GList *work;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
312
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
313 work = collection_window_list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
314 while (work)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
315 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
316 CollectWindow *cw = work->data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
317 if (cw->cd == cd) return cw;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
318 work = work->next;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
319 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
320
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
321 return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
322 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
323
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
324 CollectWindow *collection_window_find_by_path(const gchar *path)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
325 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
326 GList *work;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
327
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
328 if (!path) return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
329
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
330 work = collection_window_list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
331 while (work)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
332 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
333 CollectWindow *cw = work->data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
334 if (cw->cd->path && strcmp(cw->cd->path, path) == 0) return cw;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
335 work = work->next;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
336 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
337
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
338 return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
339 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
340
2583
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
341 /**
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
342 * @brief Checks string for existence of Collection.
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
343 * @param[in] param Filename, with or without extension of any collection
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
344 * @returns full pathname if found or NULL
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
345 *
2582
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
346 * Return value must be freed with g_free()
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
347 */
2878
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
348 gchar *collection_path(const gchar *param)
2582
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
349 {
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
350 gchar *path = NULL;
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
351 gchar *full_name = NULL;
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
352
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
353 if (file_extension_match(param, GQ_COLLECTION_EXT))
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
354 {
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
355 path = g_build_filename(get_collections_dir(), param, NULL);
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
356 }
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
357 else if (file_extension_match(param, NULL))
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
358 {
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
359 full_name = g_strconcat(param, GQ_COLLECTION_EXT, NULL);
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
360 path = g_build_filename(get_collections_dir(), full_name, NULL);
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
361 }
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
362
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
363 if (!isfile(path))
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
364 {
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
365 g_free(path);
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
366 path = NULL;
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
367 }
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
368
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
369 g_free(full_name);
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
370 return path;
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
371 }
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
372
2583
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
373 /**
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
374 * @brief Checks input string for existence of Collection.
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
375 * @param[in] param Filename with or without extension of any collection
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
376 * @returns TRUE if found
2582
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
377 *
2583
6e92c0ad76f2 Change recent code comments to Doxygen style
Colin Clark <colin.clark@cclark.uk>
parents: 2582
diff changeset
378 *
2582
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
379 */
2878
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
380 gboolean is_collection(const gchar *param)
2582
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
381 {
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
382 gchar *name = NULL;
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
383
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
384 name = collection_path(param);
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
385 if (name)
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
386 {
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
387 g_free(name);
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
388 return TRUE;
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
389 }
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
390 return FALSE;
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
391 }
03014a1eb7e7 Right-click menus - collections
Colin Clark <colin.clark@cclark.uk>
parents: 2581
diff changeset
392
2878
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
393 /**
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
394 * @brief Creates a text list of the image paths of the contents of a Collection
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
395 * @param[in] name The name of the collection, with or wihout extension
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
396 * @param[inout] contents A GString to which the image paths are appended
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
397 *
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
398 *
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
399 */
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
400 void collection_contents(const gchar *name, GString **contents)
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
401 {
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
402 gchar *path;
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
403 CollectionData *cd;
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
404 CollectInfo *ci;
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
405 GList *work;
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
406 FileData *fd;
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
407
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
408 if (is_collection(name))
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
409 {
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
410 path = collection_path(name);
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
411 cd = collection_new("");
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
412 collection_load(cd, path, COLLECTION_LOAD_APPEND);
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
413 work = cd->list;
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
414 while (work)
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
415 {
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
416 ci = work->data;
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
417 fd = ci->fd;
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
418 *contents = g_string_append(*contents, g_strdup(fd->path));
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
419 *contents = g_string_append(*contents, "\n");
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
420
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
421 work = work->next;
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
422 }
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
423 g_free(path);
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
424 collection_free(cd);
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
425 }
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
426 }
8b1c451c8ff2 Additional remote commands
Colin Clark <colin.clark@cclark.uk>
parents: 2860
diff changeset
427
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
428 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
429 *-------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
430 * please use these to actually add/remove stuff
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
431 *-------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
432 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
433
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
434 CollectionData *collection_new(const gchar *path)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
435 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
436 CollectionData *cd;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
437 static gint untitled_counter = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
438
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
439 cd = g_new0(CollectionData, 1);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
440
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
441 cd->ref = 1; /* starts with a ref of 1 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
442 cd->sort_method = SORT_NONE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
443 cd->window_w = COLLECT_DEF_WIDTH;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
444 cd->window_h = COLLECT_DEF_HEIGHT;
303
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
445 cd->existence = g_hash_table_new(NULL, NULL);
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
446
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
447 if (path)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
448 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
449 cd->path = g_strdup(path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
450 cd->name = g_strdup(filename_from_path(cd->path));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
451 /* load it */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
452 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
453 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
454 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
455 if (untitled_counter == 0)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
456 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
457 cd->name = g_strdup(_("Untitled"));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
458 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
459 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
460 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
461 cd->name = g_strdup_printf(_("Untitled (%d)"), untitled_counter + 1);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
462 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
463
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
464 untitled_counter++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
465 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
466
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
467 file_data_register_notify_func(collection_notify_cb, cd, NOTIFY_PRIORITY_MEDIUM);
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
468
1367
625746ed03d8 When g_new0() is used, drop redundant initializations to NULL, FALSE or 0, second pass.
Laurent Monin <geeqie@norz.org>
parents: 1347
diff changeset
469
625746ed03d8 When g_new0() is used, drop redundant initializations to NULL, FALSE or 0, second pass.
Laurent Monin <geeqie@norz.org>
parents: 1347
diff changeset
470 collection_list = g_list_append(collection_list, cd);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2151
diff changeset
471
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
472 return cd;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
473 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
474
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
475 void collection_free(CollectionData *cd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
476 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
477 if (!cd) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
478
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
479 DEBUG_1("collection \"%s\" freed", cd->name);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
480
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
481 collection_load_stop(cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
482 collection_list_free(cd->list);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2151
diff changeset
483
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
484 file_data_unregister_notify_func(collection_notify_cb, cd);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
485
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
486 collection_list = g_list_remove(collection_list, cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
487
303
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
488 g_hash_table_destroy(cd->existence);
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 358
diff changeset
489
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
490 g_free(cd->path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
491 g_free(cd->name);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
492
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
493 g_free(cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
494 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
495
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
496 void collection_ref(CollectionData *cd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
497 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
498 cd->ref++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
499
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
500 DEBUG_1("collection \"%s\" ref count = %d", cd->name, cd->ref);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
501 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
502
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
503 void collection_unref(CollectionData *cd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
504 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
505 cd->ref--;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
506
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
507 DEBUG_1("collection \"%s\" ref count = %d", cd->name, cd->ref);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
508
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
509 if (cd->ref < 1)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
510 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
511 collection_free(cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
512 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
513 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
514
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
515 void collection_path_changed(CollectionData *cd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
516 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
517 collection_window_update_title(collection_window_find(cd));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
518 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
519
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
520 gint collection_to_number(CollectionData *cd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
521 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
522 return g_list_index(collection_list, cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
523 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
524
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
525 CollectionData *collection_from_number(gint n)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
526 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
527 return g_list_nth_data(collection_list, n);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
528 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
529
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
530 CollectionData *collection_from_dnd_data(const gchar *data, GList **list, GList **info_list)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
531 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
532 CollectionData *cd;
816
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
533 gint collection_number;
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
534 const gchar *ptr;
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
535
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
536 if (list) *list = NULL;
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
537 if (info_list) *info_list = NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
538
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
539 if (strncmp(data, "COLLECTION:", 11) != 0) return NULL;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2151
diff changeset
540
816
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
541 ptr = data + 11;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2151
diff changeset
542
816
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
543 collection_number = atoi(ptr);
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
544 cd = collection_from_number(collection_number);
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
545 if (!cd) return NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
546
816
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
547 if (!list && !info_list) return cd;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2151
diff changeset
548
816
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
549 while (*ptr != '\0' && *ptr != '\n' ) ptr++;
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
550 if (*ptr == '\0') return cd;
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
551 ptr++;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
552
816
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
553 while (*ptr != '\0')
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
554 {
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
555 guint item_number;
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
556 CollectInfo *info;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2151
diff changeset
557
816
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
558 item_number = (guint) atoi(ptr);
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
559 while (*ptr != '\n' && *ptr != '\0') ptr++;
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
560 if (*ptr == '\0')
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
561 break;
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
562 else
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
563 while (*ptr == '\n') ptr++;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
564
816
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
565 info = g_list_nth_data(cd->list, item_number);
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
566 if (!info) continue;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
567
816
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
568 if (list) *list = g_list_append(*list, file_data_ref(info->fd));
dac96224a5e0 collection_from_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 815
diff changeset
569 if (info_list) *info_list = g_list_append(*info_list, info);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
570 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2151
diff changeset
571
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
572 return cd;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
573 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
574
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
575 gchar *collection_info_list_to_dnd_data(CollectionData *cd, GList *list, gint *length)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
576 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
577 GList *work;
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
578 GList *temp = NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
579 gchar *ptr;
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
580 gchar *text;
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
581 gchar *uri_text;
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
582 gint collection_number;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
583
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
584 *length = 0;
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
585 if (!list) return NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
586
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
587 collection_number = collection_to_number(cd);
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
588 if (collection_number < 0) return NULL;
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
589
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
590 text = g_strdup_printf("COLLECTION:%d\n", collection_number);
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
591 *length += strlen(text);
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
592 temp = g_list_prepend(temp, text);
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
593
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
594 work = list;
516
768d10237b88 Convert the minority of while() to while ().
Laurent Monin <geeqie@norz.org>
parents: 513
diff changeset
595 while (work)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
596 {
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
597 gint item_number = g_list_index(cd->list, work->data);
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
598
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
599 work = work->next;
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
600
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
601 if (item_number < 0) continue;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2151
diff changeset
602
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
603 text = g_strdup_printf("%d\n", item_number);
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
604 temp = g_list_prepend(temp, text);
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
605 *length += strlen(text);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
606 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
607
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
608 *length += 1; /* ending nul char */
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
609
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
610 uri_text = g_malloc(*length);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
611 ptr = uri_text;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
612
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
613 work = g_list_last(temp);
516
768d10237b88 Convert the minority of while() to while ().
Laurent Monin <geeqie@norz.org>
parents: 513
diff changeset
614 while (work)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
615 {
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
616 gint len;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
617 gchar *text = work->data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
618
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
619 work = work->prev;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
620
815
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
621 len = strlen(text);
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
622 memcpy(ptr, text, len);
392ef0ab0370 collection_info_list_to_dnd_data(): simplify and optimize.
Laurent Monin <geeqie@norz.org>
parents: 803
diff changeset
623 ptr += len;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
624 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
625
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
626 ptr[0] = '\0';
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
627
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
628 string_list_free(temp);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
629
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
630 return uri_text;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
631 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
632
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
633 gint collection_info_valid(CollectionData *cd, CollectInfo *info)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
634 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
635 if (collection_to_number(cd) < 0) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
636
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
637 return (g_list_index(cd->list, info) != 0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
638 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
639
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
640 CollectInfo *collection_next_by_info(CollectionData *cd, CollectInfo *info)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
641 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
642 GList *work;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
643
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
644 work = g_list_find(cd->list, info);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
645
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
646 if (!work) return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
647 work = work->next;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
648 if (work) return work->data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
649 return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
650 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
651
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
652 CollectInfo *collection_prev_by_info(CollectionData *cd, CollectInfo *info)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
653 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
654 GList *work;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
655
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
656 work = g_list_find(cd->list, info);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
657
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
658 if (!work) return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
659 work = work->prev;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
660 if (work) return work->data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
661 return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
662 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
663
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
664 CollectInfo *collection_get_first(CollectionData *cd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
665 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
666 if (cd->list) return cd->list->data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
667
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
668 return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
669 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
670
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
671 CollectInfo *collection_get_last(CollectionData *cd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
672 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
673 GList *list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
674
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
675 list = g_list_last(cd->list);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
676
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
677 if (list) return list->data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
678
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
679 return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
680 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
681
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
682 void collection_set_sort_method(CollectionData *cd, SortType method)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
683 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
684 if (!cd) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
685
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
686 if (cd->sort_method == method) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
687
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
688 cd->sort_method = method;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
689 cd->list = collection_list_sort(cd->list, cd->sort_method);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
690 if (cd->list) cd->changed = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
691
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
692 collection_window_refresh(collection_window_find(cd));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
693 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
694
1535
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
695 void collection_randomize(CollectionData *cd)
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
696 {
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
697 if (!cd) return;
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
698
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
699 cd->list = collection_list_randomize(cd->list);
1536
ed00c47adf06 Just update the internal sort method
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1535
diff changeset
700 cd->sort_method = SORT_NONE;
1535
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
701 if (cd->list) cd->changed = TRUE;
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
702
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
703 collection_window_refresh(collection_window_find(cd));
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
704 }
4be0a5710458 Implement random sort method for collections
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1498
diff changeset
705
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
706 void collection_set_update_info_func(CollectionData *cd,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
707 void (*func)(CollectionData *, CollectInfo *, gpointer), gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
708 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
709 cd->info_updated_func = func;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
710 cd->info_updated_data = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
711 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
712
303
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
713 static CollectInfo *collection_info_new_if_not_exists(CollectionData *cd, struct stat *st, FileData *fd)
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
714 {
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
715 CollectInfo *ci;
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
716
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
717 if (g_hash_table_lookup(cd->existence, fd->path)) return NULL;
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
718
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
719 ci = collection_info_new(fd, st, NULL);
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
720 if (ci) g_hash_table_insert(cd->existence, fd->path, "");
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
721 return ci;
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
722 }
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
723
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
724 gboolean collection_add_check(CollectionData *cd, FileData *fd, gboolean sorted, gboolean must_exist)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
725 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
726 struct stat st;
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
727 gboolean valid;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
728
2233
083592055bcd Fix crash when loading collection listing inexistent files.
Laurent Monin <zas@norz.org>
parents: 2185
diff changeset
729 if (!fd) return FALSE;
083592055bcd Fix crash when loading collection listing inexistent files.
Laurent Monin <zas@norz.org>
parents: 2185
diff changeset
730
083592055bcd Fix crash when loading collection listing inexistent files.
Laurent Monin <zas@norz.org>
parents: 2185
diff changeset
731 g_assert(fd->magick == FD_MAGICK);
083592055bcd Fix crash when loading collection listing inexistent files.
Laurent Monin <zas@norz.org>
parents: 2185
diff changeset
732
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
733 if (must_exist)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
734 {
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
735 valid = (stat_utf8(fd->path, &st) && !S_ISDIR(st.st_mode));
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
736 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
737 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
738 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
739 valid = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
740 st.st_size = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
741 st.st_mtime = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
742 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
743
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
744 if (valid)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
745 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
746 CollectInfo *ci;
303
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
747
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
748 ci = collection_info_new_if_not_exists(cd, &st, fd);
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
749 if (!ci) return FALSE;
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
750 DEBUG_3("add to collection: %s", fd->path);
303
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
751
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
752 cd->list = collection_list_add(cd->list, ci, sorted ? cd->sort_method : SORT_NONE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
753 cd->changed = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
754
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
755 if (!sorted || cd->sort_method == SORT_NONE)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
756 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
757 collection_window_add(collection_window_find(cd), ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
758 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
759 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
760 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
761 collection_window_insert(collection_window_find(cd), ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
762 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
763 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
764
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
765 return valid;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
766 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
767
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
768 gboolean collection_add(CollectionData *cd, FileData *fd, gboolean sorted)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
769 {
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
770 return collection_add_check(cd, fd, sorted, TRUE);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
771 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
772
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
773 gboolean collection_insert(CollectionData *cd, FileData *fd, CollectInfo *insert_ci, gboolean sorted)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
774 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
775 struct stat st;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
776
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
777 if (!insert_ci) return collection_add(cd, fd, sorted);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
778
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
779 if (stat_utf8(fd->path, &st) >= 0 && !S_ISDIR(st.st_mode))
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
780 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
781 CollectInfo *ci;
303
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
782
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
783 ci = collection_info_new_if_not_exists(cd, &st, fd);
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
784 if (!ci) return FALSE;
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
785
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
786 DEBUG_3("insert in collection: %s", fd->path);
303
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
787
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
788 cd->list = collection_list_insert(cd->list, ci, insert_ci, sorted ? cd->sort_method : SORT_NONE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
789 cd->changed = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
790
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
791 collection_window_insert(collection_window_find(cd), ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
792
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
793 return TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
794 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
795
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
796 return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
797 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
798
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
799 gboolean collection_remove(CollectionData *cd, FileData *fd)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
800 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
801 CollectInfo *ci;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
802
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
803 ci = collection_list_find_fd(cd->list, fd);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
804
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
805 if (!ci) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
806
303
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
807 g_hash_table_remove(cd->existence, fd->path);
dd8e3d1267cc Prevent multiple insertion of the same file in a collection.
Laurent Monin <geeqie@norz.org>
parents: 289
diff changeset
808
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
809 cd->list = g_list_remove(cd->list, ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
810 cd->changed = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
811
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
812 collection_window_remove(collection_window_find(cd), ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
813 collection_info_free(ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
814
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
815 return TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
816 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
817
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
818 static void collection_remove_by_info(CollectionData *cd, CollectInfo *info)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
819 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
820 if (!info || !g_list_find(cd->list, info)) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
821
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
822 cd->list = g_list_remove(cd->list, info);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
823 cd->changed = (cd->list != NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
824
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
825 collection_window_remove(collection_window_find(cd), info);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
826 collection_info_free(info);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
827 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
828
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
829 void collection_remove_by_info_list(CollectionData *cd, GList *list)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
830 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
831 GList *work;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
832
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
833 if (!list) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
834
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
835 if (!list->next)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
836 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
837 /* more efficient (in collect-table) to remove a single item this way */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
838 collection_remove_by_info(cd, (CollectInfo *)list->data);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
839 return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
840 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
841
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
842 work = list;
516
768d10237b88 Convert the minority of while() to while ().
Laurent Monin <geeqie@norz.org>
parents: 513
diff changeset
843 while (work)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
844 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
845 cd->list = collection_list_remove(cd->list, work->data);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
846 work = work->next;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
847 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
848 cd->changed = (cd->list != NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
849
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
850 collection_window_refresh(collection_window_find(cd));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
851 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
852
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
853 gboolean collection_rename(CollectionData *cd, FileData *fd)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
854 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
855 CollectInfo *ci;
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
856 ci = collection_list_find_fd(cd->list, fd);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
857
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
858 if (!ci) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
859
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
860 cd->changed = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
861
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
862 collection_window_update(collection_window_find(cd), ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
863
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
864 return TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
865 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
866
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
867 void collection_update_geometry(CollectionData *cd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
868 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
869 collection_window_get_geometry(collection_window_find(cd));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
870 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
871
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
872 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
873 *-------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
874 * simple maintenance for renaming, deleting
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
875 *-------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
876 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
877
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
878 static void collection_notify_cb(FileData *fd, NotifyType type, gpointer data)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
879 {
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
880 CollectionData *cd = data;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
881
1432
7f454e7d07a3 improved notification system
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1420
diff changeset
882 if (!(type & NOTIFY_CHANGE) || !fd->change) return;
1498
2b0712dcf139 improved debug messages
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1436
diff changeset
883
2b0712dcf139 improved debug messages
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1436
diff changeset
884 DEBUG_1("Notify collection: %s %04x", fd->path, type);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2151
diff changeset
885
1347
84d289bde1ea Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents: 1292
diff changeset
886 switch (fd->change->type)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
887 {
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
888 case FILEDATA_CHANGE_MOVE:
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
889 case FILEDATA_CHANGE_RENAME:
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
890 collection_rename(cd, fd);
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
891 break;
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
892 case FILEDATA_CHANGE_COPY:
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
893 break;
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
894 case FILEDATA_CHANGE_DELETE:
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
895 while (collection_remove(cd, fd));
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
896 break;
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
897 case FILEDATA_CHANGE_UNSPECIFIED:
1211
cc4d3023ced3 most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1176
diff changeset
898 case FILEDATA_CHANGE_WRITE_METADATA:
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
899 break;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
900 }
799
e8085600fd69 use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 786
diff changeset
901
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
902 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
903
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
904
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
905 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
906 *-------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
907 * window key presses
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
908 *-------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
909 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
910
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
911 static gboolean collection_window_keypress(GtkWidget *widget, GdkEventKey *event, gpointer data)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
912 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
913 CollectWindow *cw = data;
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
914 gboolean stop_signal = FALSE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
915 GList *list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
916
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
917 if (event->state & GDK_CONTROL_MASK)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
918 {
85
f5f7943f2f60 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
919 stop_signal = TRUE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
920 switch (event->keyval)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
921 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
922 case '1':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
923 case '2':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
924 case '3':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
925 case '4':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
926 case '5':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
927 case '6':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
928 case '7':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
929 case '8':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
930 case '9':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
931 case '0':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
932 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
933 case 'A': case 'a':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
934 if (event->state & GDK_SHIFT_MASK)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
935 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
936 collection_table_unselect_all(cw->table);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
937 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
938 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
939 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
940 collection_table_select_all(cw->table);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
941 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
942 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
943 case 'L': case 'l':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
944 list = layout_list(NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
945 if (list)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
946 {
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
947 collection_table_add_filelist(cw->table, list);
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
948 filelist_free(list);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
949 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
950 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
951 case 'C': case 'c':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
952 file_util_copy(NULL, collection_table_selection_get_list(cw->table), NULL, cw->window);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
953 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
954 case 'M': case 'm':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
955 file_util_move(NULL, collection_table_selection_get_list(cw->table), NULL, cw->window);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
956 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
957 case 'R': case 'r':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
958 file_util_rename(NULL, collection_table_selection_get_list(cw->table), cw->window);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
959 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
960 case 'D': case 'd':
2860
b20a96b979a3 Fix #437: Delete to standard Trash directory
Colin Clark <colin.clark@cclark.uk>
parents: 2793
diff changeset
961 options->file_ops.safe_delete_enable = TRUE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
962 file_util_delete(NULL, collection_table_selection_get_list(cw->table), cw->window);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
963 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
964 case 'S': case 's':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
965 collection_dialog_save_as(NULL, cw->cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
966 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
967 case 'W': case 'w':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
968 collection_window_close(cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
969 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
970 default:
85
f5f7943f2f60 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
971 stop_signal = FALSE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
972 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
973 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
974 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
975 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
976 {
85
f5f7943f2f60 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
977 stop_signal = TRUE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
978 switch (event->keyval)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
979 {
2036
472c094c0154 changed GDK_<key> to GDK_KEY_<key>
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2034
diff changeset
980 case GDK_KEY_Return: case GDK_KEY_KP_Enter:
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
981 layout_image_set_collection(NULL, cw->cd,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
982 collection_table_get_focus_info(cw->table));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
983 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
984 case 'V': case 'v':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
985 view_window_new_from_collection(cw->cd,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
986 collection_table_get_focus_info(cw->table));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
987 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
988 case 'S': case 's':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
989 if (!cw->cd->path)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
990 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
991 collection_dialog_save_as(NULL, cw->cd);
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 358
diff changeset
992 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
993 else if (!collection_save(cw->cd, cw->cd->path))
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
994 {
673
c9c2bc042e10 Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
995 log_printf("failed saving to collection path: %s\n", cw->cd->path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
996 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
997 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
998 case 'A': case 'a':
85
f5f7943f2f60 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
999 collection_dialog_append(NULL, cw->cd);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1000 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1001 case 'N': case 'n':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1002 collection_set_sort_method(cw->cd, SORT_NAME);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1003 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1004 #ifdef HAVE_STRVERSCMP
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1005 case 'I': case 'i':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1006 collection_set_sort_method(cw->cd, SORT_NUMBER);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1007 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1008 #endif
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1009 case 'D': case 'd':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1010 collection_set_sort_method(cw->cd, SORT_TIME);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1011 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1012 case 'B': case 'b':
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1013 collection_set_sort_method(cw->cd, SORT_SIZE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1014 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1015 case 'P': case 'p':
94
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1016 if (event->state & GDK_SHIFT_MASK)
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1017 {
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1018 CollectInfo *info;
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1019
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1020 info = collection_table_get_focus_info(cw->table);
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1021
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
1022 print_window_new(info->fd, collection_table_selection_get_list(cw->table),
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 94
diff changeset
1023 collection_list_to_filelist(cw->cd->list), cw->window);
94
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1024 }
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1025 else
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1026 {
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1027 collection_set_sort_method(cw->cd, SORT_PATH);
7bd3d907ca2b Thu Nov 2 17:51:31 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 91
diff changeset
1028 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1029 break;
2423
ba806fc7a4c1 Rectangular selection
Colin Clark <cclark@mcb.net>
parents: 2422
diff changeset
1030 case 'R': case 'r':
ba806fc7a4c1 Rectangular selection
Colin Clark <cclark@mcb.net>
parents: 2422
diff changeset
1031 if (event->state & GDK_MOD1_MASK)
ba806fc7a4c1 Rectangular selection
Colin Clark <cclark@mcb.net>
parents: 2422
diff changeset
1032 {
ba806fc7a4c1 Rectangular selection
Colin Clark <cclark@mcb.net>
parents: 2422
diff changeset
1033 options->collections.rectangular_selection = !(options->collections.rectangular_selection);
ba806fc7a4c1 Rectangular selection
Colin Clark <cclark@mcb.net>
parents: 2422
diff changeset
1034 }
ba806fc7a4c1 Rectangular selection
Colin Clark <cclark@mcb.net>
parents: 2422
diff changeset
1035 break;
2036
472c094c0154 changed GDK_<key> to GDK_KEY_<key>
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2034
diff changeset
1036 case GDK_KEY_Delete: case GDK_KEY_KP_Delete:
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1037 list = g_list_copy(cw->table->selection);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1038 if (list)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1039 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1040 collection_remove_by_info_list(cw->cd, list);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1041 g_list_free(list);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1042 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1043 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1044 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1045 collection_remove_by_info(cw->cd, collection_table_get_focus_info(cw->table));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1046 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1047 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1048 default:
85
f5f7943f2f60 Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
1049 stop_signal = FALSE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1050 break;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1051 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1052 }
2694
4126aaeef776 Context-sensitve help
Colin Clark <colin.clark@cclark.uk>
parents: 2595
diff changeset
1053 if (!stop_signal && is_help_key(event))
4126aaeef776 Context-sensitve help
Colin Clark <colin.clark@cclark.uk>
parents: 2595
diff changeset
1054 {
4126aaeef776 Context-sensitve help
Colin Clark <colin.clark@cclark.uk>
parents: 2595
diff changeset
1055 help_window_show("GuideCollections.html");
4126aaeef776 Context-sensitve help
Colin Clark <colin.clark@cclark.uk>
parents: 2595
diff changeset
1056 stop_signal = TRUE;
4126aaeef776 Context-sensitve help
Colin Clark <colin.clark@cclark.uk>
parents: 2595
diff changeset
1057 }
4126aaeef776 Context-sensitve help
Colin Clark <colin.clark@cclark.uk>
parents: 2595
diff changeset
1058
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1059 return stop_signal;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1060 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1061
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1062 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1063 *-------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1064 * window
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1065 *-------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1066 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1067 static void collection_window_get_geometry(CollectWindow *cw)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1068 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1069 CollectionData *cd;
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
1070 GdkWindow *window;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1071
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1072 if (!cw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1073
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1074 cd = cw->cd;
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
1075 window = gtk_widget_get_window(cw->window);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
1076 gdk_window_get_position(window, &cd->window_x, &cd->window_y);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
1077 cd->window_w = gdk_window_get_width(window);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
1078 cd->window_h = gdk_window_get_height(window);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1079 cd->window_read = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1080 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1081
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1082 static void collection_window_refresh(CollectWindow *cw)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1083 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1084 if (!cw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1085
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1086 collection_table_refresh(cw->table);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1087 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1088
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1089 static void collection_window_update_title(CollectWindow *cw)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1090 {
1176
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1091 gboolean free_name = FALSE;
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1092 gchar *name;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1093 gchar *buf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1094
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1095 if (!cw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1096
1176
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1097 if (file_extension_match(cw->cd->name, GQ_COLLECTION_EXT))
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1098 {
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1099 name = remove_extension_from_path(cw->cd->name);
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1100 free_name = TRUE;
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1101 }
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1102 else
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1103 {
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1104 name = cw->cd->name;
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1105 }
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1106
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1107 buf = g_strdup_printf(_("%s - Collection - %s"), name, GQ_APPNAME);
0a61b5ce9d20 Hide .gqv extension from collection name in collection window title and recent menu list.
Laurent Monin <geeqie@norz.org>
parents: 1174
diff changeset
1108 if (free_name) g_free(name);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1109 gtk_window_set_title(GTK_WINDOW(cw->window), buf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1110 g_free(buf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1111 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1112
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1113 static void collection_window_update_info(CollectionData *cd, CollectInfo *ci, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1114 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1115 CollectWindow *cw = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1116
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1117 collection_table_file_update(cw->table, ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1118 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1119
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1120 static void collection_window_add(CollectWindow *cw, CollectInfo *ci)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1121 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1122 if (!cw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1123
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1124 if (!ci->pixbuf) collection_load_thumb_idle(cw->cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1125 collection_table_file_add(cw->table, ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1126 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1127
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1128 static void collection_window_insert(CollectWindow *cw, CollectInfo *ci)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1129 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1130 if (!cw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1131
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1132 if (!ci->pixbuf) collection_load_thumb_idle(cw->cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1133 collection_table_file_insert(cw->table, ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1134 if (!cw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1135 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1136
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1137 static void collection_window_remove(CollectWindow *cw, CollectInfo *ci)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1138 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1139 if (!cw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1140
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1141 collection_table_file_remove(cw->table, ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1142 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1143
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1144 static void collection_window_update(CollectWindow *cw, CollectInfo *ci)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1145 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1146 if (!cw) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1147
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1148 collection_table_file_update(cw->table, ci);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1149 collection_table_file_update(cw->table, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1150 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1151
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1152 static void collection_window_close_final(CollectWindow *cw)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1153 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1154 if (cw->close_dialog) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1155
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1156 collection_window_list = g_list_remove(collection_window_list, cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1157 collection_window_get_geometry(cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1158
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1159 gtk_widget_destroy(cw->window);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1160
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1161 collection_set_update_info_func(cw->cd, NULL, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1162 collection_unref(cw->cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1163
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1164 g_free(cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1165 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1166
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1167 static void collection_close_save_cb(GenericDialog *gd, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1168 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1169 CollectWindow *cw = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1170
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1171 cw->close_dialog = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1172 generic_dialog_close(gd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1173
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1174 if (!cw->cd->path)
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 358
diff changeset
1175 {
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1176 collection_dialog_save_close(NULL, cw->cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1177 return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1178 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1179 else if (!collection_save(cw->cd, cw->cd->path))
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1180 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1181 gchar *buf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1182 buf = g_strdup_printf(_("Failed to save the collection:\n%s"), cw->cd->path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1183 warning_dialog(_("Save Failed"), buf, GTK_STOCK_DIALOG_ERROR, cw->window);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1184 g_free(buf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1185 return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1186 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1187
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1188 collection_window_close_final(cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1189 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1190
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1191 static void collection_close_close_cb(GenericDialog *gd, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1192 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1193 CollectWindow *cw = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1194
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1195 cw->close_dialog = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1196 generic_dialog_close(gd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1197
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1198 collection_window_close_final(cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1199 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1200
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1201 static void collection_close_cancel_cb(GenericDialog *gd, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1202 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1203 CollectWindow *cw = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1204
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1205 cw->close_dialog = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1206 generic_dialog_close(gd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1207 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1208
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1209 static void collection_close_dlg_show(CollectWindow *cw)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1210 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1211 GenericDialog *gd;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1212
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1213 if (cw->close_dialog)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1214 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1215 gtk_window_present(GTK_WINDOW(cw->close_dialog));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1216 return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1217 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1218
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1219 gd = generic_dialog_new(_("Close collection"),
1174
f809d57aed0c Drop useless wmclass stuff. Gtk will take care of it and as said in the documentation using gtk_window_set_wmclass() is sort of pointless.
Laurent Monin <geeqie@norz.org>
parents: 1055
diff changeset
1220 "close_collection", cw->window, FALSE,
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1221 collection_close_cancel_cb, cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1222 generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1223 _("Close collection"),
2587
c6f9494f6be1 Fix #508: Copy and Move windows scale incorrectly
cclark <colin.clark@cclark.uk>
parents: 2583
diff changeset
1224 _("Collection has been modified.\nSave first?"), TRUE);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1225
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1226 generic_dialog_add_button(gd, GTK_STOCK_SAVE, NULL, collection_close_save_cb, TRUE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1227 generic_dialog_add_button(gd, GTK_STOCK_DELETE, _("_Discard"), collection_close_close_cb, FALSE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1228
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1229 cw->close_dialog = gd->dialog;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1230
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1231 gtk_widget_show(gd->dialog);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1232 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1233
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1234 static void collection_window_close(CollectWindow *cw)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1235 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1236 if (!cw->cd->changed && !cw->close_dialog)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1237 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1238 collection_window_close_final(cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1239 return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1240 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1241
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1242 collection_close_dlg_show(cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1243 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1244
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1245 void collection_window_close_by_collection(CollectionData *cd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1246 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1247 CollectWindow *cw;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1248
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1249 cw = collection_window_find(cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1250 if (cw) collection_window_close_final(cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1251 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1252
2595
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1253 /**
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1254 * @brief Check if any Collection windows have unsaved data
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1255 * @returns TRUE if unsaved data exists
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1256 *
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1257 * Also saves window geometry for Collection windows that have
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1258 * no unsaved data
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1259 */
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
1260 gboolean collection_window_modified_exists(void)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1261 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1262 GList *work;
2595
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1263 gboolean ret;
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1264
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1265 ret = FALSE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1266
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1267 work = collection_window_list;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1268 while (work)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1269 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1270 CollectWindow *cw = work->data;
2595
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1271 if (cw->cd->changed)
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1272 {
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1273 ret = TRUE;
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1274 }
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1275 else
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1276 {
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1277 if (!collection_save(cw->table->cd, cw->table->cd->path))
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1278 {
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1279 log_printf("failed saving to collection path: %s\n", cw->table->cd->path);
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1280 }
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1281 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1282 work = work->next;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1283 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1284
2595
7b75f6d95758 Save Collection window geometry
Colin Clark <colin.clark@cclark.uk>
parents: 2587
diff changeset
1285 return ret;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1286 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1287
1420
6cda3d9d6a7b Use gboolean where applicable, for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
1288 static gboolean collection_window_delete(GtkWidget *widget, GdkEvent *event, gpointer data)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1289 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1290 CollectWindow *cw = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1291 collection_window_close(cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1292
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1293 return TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1294 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1295
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1296 CollectWindow *collection_window_new(const gchar *path)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1297 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1298 CollectWindow *cw;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1299 GtkWidget *vbox;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1300 GtkWidget *frame;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1301 GtkWidget *status_label;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1302 GtkWidget *extra_label;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1303 GdkGeometry geometry;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1304
2581
e6847b39721f Bug fix: Collection in multiple windows
Colin Clark <colin.clark@cclark.uk>
parents: 2472
diff changeset
1305 /* If the collection is already opened in another window, return that one */
e6847b39721f Bug fix: Collection in multiple windows
Colin Clark <colin.clark@cclark.uk>
parents: 2472
diff changeset
1306 cw = collection_window_find_by_path(path);
e6847b39721f Bug fix: Collection in multiple windows
Colin Clark <colin.clark@cclark.uk>
parents: 2472
diff changeset
1307 if (cw)
e6847b39721f Bug fix: Collection in multiple windows
Colin Clark <colin.clark@cclark.uk>
parents: 2472
diff changeset
1308 {
e6847b39721f Bug fix: Collection in multiple windows
Colin Clark <colin.clark@cclark.uk>
parents: 2472
diff changeset
1309 return cw;
e6847b39721f Bug fix: Collection in multiple windows
Colin Clark <colin.clark@cclark.uk>
parents: 2472
diff changeset
1310 }
e6847b39721f Bug fix: Collection in multiple windows
Colin Clark <colin.clark@cclark.uk>
parents: 2472
diff changeset
1311
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1312 cw = g_new0(CollectWindow, 1);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1313
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1314 collection_window_list = g_list_append(collection_window_list, cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1315
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1316 cw->cd = collection_new(path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1317
289
d4d7e7aa0d88 Simplify and unify gtk_window creation with the help of
Laurent Monin <geeqie@norz.org>
parents: 288
diff changeset
1318 cw->window = window_new(GTK_WINDOW_TOPLEVEL, "collection", PIXBUF_INLINE_ICON_BOOK, NULL, NULL);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1319
1029
b1a912dee214 Use a constant for minimal window size. Set it to 32 for all dialogs.
Laurent Monin <geeqie@norz.org>
parents: 1022
diff changeset
1320 geometry.min_width = DEFAULT_MINIMAL_WINDOW_SIZE;
b1a912dee214 Use a constant for minimal window size. Set it to 32 for all dialogs.
Laurent Monin <geeqie@norz.org>
parents: 1022
diff changeset
1321 geometry.min_height = DEFAULT_MINIMAL_WINDOW_SIZE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1322 geometry.base_width = COLLECT_DEF_WIDTH;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1323 geometry.base_height = COLLECT_DEF_HEIGHT;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1324 gtk_window_set_geometry_hints(GTK_WINDOW(cw->window), NULL, &geometry,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1325 GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1326
2793
2feed80bcd34 Collections changes
Colin Clark <colin.clark@cclark.uk>
parents: 2698
diff changeset
1327 if (options->collections_on_top)
2feed80bcd34 Collections changes
Colin Clark <colin.clark@cclark.uk>
parents: 2698
diff changeset
1328 {
2feed80bcd34 Collections changes
Colin Clark <colin.clark@cclark.uk>
parents: 2698
diff changeset
1329 gtk_window_set_keep_above(GTK_WINDOW(cw->window), TRUE);
2feed80bcd34 Collections changes
Colin Clark <colin.clark@cclark.uk>
parents: 2698
diff changeset
1330 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1331
1436
13d61fe760fb completely separated global and layout window options
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1432
diff changeset
1332 if (options->save_window_positions && path && collection_load_only_geometry(cw->cd, path))
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1333 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1334 gtk_window_set_default_size(GTK_WINDOW(cw->window), cw->cd->window_w, cw->cd->window_h);
2472
11455ee1aaf3 Eliminate a FIXME: Collection window position
Colin Clark <colin.clark@cclark.uk>
parents: 2439
diff changeset
1335 gtk_window_move(GTK_WINDOW(cw->window), cw->cd->window_x, cw->cd->window_y);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1336 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1337 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1338 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1339 gtk_window_set_default_size(GTK_WINDOW(cw->window), COLLECT_DEF_WIDTH, COLLECT_DEF_HEIGHT);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1340 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1341
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1342 gtk_window_set_resizable(GTK_WINDOW(cw->window), TRUE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1343 collection_window_update_title(cw);
513
6743a5928e09 Remove whitespace between function name and first parenthesis for the sake of consistency. (pass 2)
Laurent Monin <geeqie@norz.org>
parents: 512
diff changeset
1344 gtk_container_set_border_width(GTK_CONTAINER(cw->window), 0);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1345
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1346 g_signal_connect(G_OBJECT(cw->window), "delete_event",
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1347 G_CALLBACK(collection_window_delete), cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1348
513
6743a5928e09 Remove whitespace between function name and first parenthesis for the sake of consistency. (pass 2)
Laurent Monin <geeqie@norz.org>
parents: 512
diff changeset
1349 g_signal_connect(G_OBJECT(cw->window), "key_press_event",
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1350 G_CALLBACK(collection_window_keypress), cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1351
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1352 vbox = gtk_vbox_new(FALSE, 0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1353 gtk_container_add(GTK_CONTAINER(cw->window), vbox);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1354 gtk_widget_show(vbox);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1355
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1356 cw->table = collection_table_new(cw->cd);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1357 gtk_box_pack_start(GTK_BOX(vbox), cw->table->scrolled, TRUE, TRUE, 0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1358 gtk_widget_show(cw->table->scrolled);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1359
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1360 cw->status_box = gtk_hbox_new(TRUE, 0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1361 gtk_box_pack_start(GTK_BOX(vbox), cw->status_box, FALSE, FALSE, 0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1362 gtk_widget_show(cw->status_box);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1363
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1364 frame = gtk_frame_new(NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1365 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1366 gtk_box_pack_start(GTK_BOX(cw->status_box), frame, TRUE, TRUE, 0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1367 gtk_widget_show(frame);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1368
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1369 status_label = gtk_label_new("");
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1370 gtk_container_add(GTK_CONTAINER(frame), status_label);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1371 gtk_widget_show(status_label);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1372
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1373 extra_label = gtk_progress_bar_new();
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1374 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(extra_label), 0.0);
2439
f48a3335c672 Fix progress bar text
Colin Clark <cclark@mcb.net>
parents: 2423
diff changeset
1375 #if GTK_CHECK_VERSION(3,0,0)
f48a3335c672 Fix progress bar text
Colin Clark <cclark@mcb.net>
parents: 2423
diff changeset
1376 gtk_progress_bar_set_text(GTK_PROGRESS_BAR(extra_label), "");
f48a3335c672 Fix progress bar text
Colin Clark <cclark@mcb.net>
parents: 2423
diff changeset
1377 gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(extra_label), TRUE);
f48a3335c672 Fix progress bar text
Colin Clark <cclark@mcb.net>
parents: 2423
diff changeset
1378 #endif
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1379 gtk_box_pack_start(GTK_BOX(cw->status_box), extra_label, TRUE, TRUE, 0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1380 gtk_widget_show(extra_label);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1381
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1382 collection_table_set_labels(cw->table, status_label, extra_label);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1383
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1384 gtk_widget_show(cw->window);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1385 gtk_widget_grab_focus(cw->table->listview);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1386
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1387 collection_set_update_info_func(cw->cd, collection_window_update_info, cw);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1388
726
5166ed61c537 Use G_DIR_SEPARATOR where applicable.
Laurent Monin <geeqie@norz.org>
parents: 673
diff changeset
1389 if (path && *path == G_DIR_SEPARATOR) collection_load_begin(cw->cd, NULL, COLLECTION_LOAD_NONE);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1390
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1391 return cw;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1392 }
1055
4bbdfab3c89a Adding a vim modeline to all files - patch by Klaus Ethgen
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1029
diff changeset
1393 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */