annotate src/utilops.c @ 9:d907d608745f

Sync to GQview 1.5.9 release. ######## DO NOT BASE ENHANCEMENTS OR TRANSLATION UPDATES ON CODE IN THIS CVS! This CVS is never up to date with current development and is provided solely for reference purposes, please use the latest official release package when making any changes or translation updates. ########
author gqview
date Sat, 26 Feb 2005 00:13:35 +0000
parents c0e337a01cb7
children 3263965d5f9e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1 /*
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2 * GQview
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
3 * (C) 2004 John Ellis
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
4 *
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
5 * Author: John Ellis
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
6 *
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
7 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
8 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
9 * This software comes with no warranty of any kind, use at your own risk!
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
10 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
11
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
12
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
13 #include "gqview.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
14 #include "utilops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
15
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
16
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
17 #include "cache_maint.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
18 #include "collect.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
19 #include "dupe.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
20 #include "filelist.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
21 #include "image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
22 #include "img-view.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
23 #include "layout.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
24 #include "search.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
25 #include "ui_bookmark.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
26 #include "ui_fileops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
27 #include "ui_misc.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
28 #include "ui_tabcomp.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
29
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
30
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
31 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
32 *--------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
33 * call these when names change, files move, deleted, etc.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
34 * so that any open windows are also updated
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
35 *--------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
36 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
37
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
38 void file_maint_renamed(const gchar *source, const gchar *dest)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
39 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
40 cache_maint_moved(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
41 collection_maint_renamed(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
42
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
43 layout_maint_renamed(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
44 view_window_maint_moved(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
45 dupe_maint_renamed(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
46 search_maint_renamed(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
47 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
48
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
49 /* under most cases ignore_list should be NULL */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
50 void file_maint_removed(const gchar *path, GList *ignore_list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
51 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
52 layout_maint_removed(path, ignore_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
53 view_window_maint_removed(path, ignore_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
54 dupe_maint_removed(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
55 search_maint_removed(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
56
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
57 collection_maint_removed(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
58 cache_maint_removed(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
59 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
60
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
61 /* special case for correct main window behavior */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
62 void file_maint_moved(const gchar *source, const gchar *dest, GList *ignore_list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
63 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
64 cache_maint_moved(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
65 collection_maint_renamed(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
66
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
67 layout_maint_moved(source, dest, ignore_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
68 view_window_maint_moved(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
69 dupe_maint_renamed(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
70 search_maint_renamed(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
71 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
72
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
73 void file_maint_copied(const gchar *source, const gchar *dest)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
74 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
75 cache_maint_copied(source, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
76 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
77
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
78 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
79 *--------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
80 * The file manipulation dialogs
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
81 *--------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
82 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
83
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
84
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
85 enum {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
86 DIALOG_NEW_DIR,
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
87 DIALOG_COPY,
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
88 DIALOG_MOVE,
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
89 DIALOG_DELETE,
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
90 DIALOG_RENAME
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
91 };
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
92
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
93 typedef struct _FileDataMult FileDataMult;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
94 struct _FileDataMult
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
95 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
96 gint confirm_all;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
97 gint confirmed;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
98 gint skip;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
99 GList *source_list;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
100 GList *source_next;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
101 gchar *dest_base;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
102 gchar *source;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
103 gchar *dest;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
104 gint copy;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
105
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
106 gint rename;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
107 gint rename_auto;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
108 gint rename_all;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
109
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
110 GtkWidget *rename_box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
111 GtkWidget *rename_entry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
112 GtkWidget *rename_auto_box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
113
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
114 GtkWidget *yes_all_button;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
115 };
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
116
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
117 typedef struct _FileDataSingle FileDataSingle;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
118 struct _FileDataSingle
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
119 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
120 gint confirmed;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
121 gchar *source;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
122 gchar *dest;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
123 gint copy;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
124
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
125 gint rename;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
126 gint rename_auto;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
127
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
128 GtkWidget *rename_box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
129 GtkWidget *rename_entry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
130 GtkWidget *rename_auto_box;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
131 };
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
132
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
133 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
134 *--------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
135 * Adds 1 or 2 images (if 2, side by side) to a GenericDialog
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
136 *--------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
137 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
138
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
139 #define DIALOG_DEF_IMAGE_DIM_X 200
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
140 #define DIALOG_DEF_IMAGE_DIM_Y 150
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
141
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
142 static void generic_dialog_add_image(GenericDialog *gd, const gchar *path1, const gchar *header1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
143 const gchar *path2, const gchar *header2,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
144 gint show_filename)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
145 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
146 ImageWindow *imd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
147 GtkWidget *hbox = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
148 GtkWidget *vbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
149 GtkWidget *label = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
150
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
151 if (path2)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
152 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
153 hbox = pref_box_new(gd->vbox, TRUE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
154 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
155
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
156 /* image 1 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
157
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
158 vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
159 if (hbox)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
160 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
161 GtkWidget *sep;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
162
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
163 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
164
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
165 sep = gtk_vseparator_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
166 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
167 gtk_widget_show(sep);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
168 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
169 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
170 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
171 gtk_box_pack_start(GTK_BOX(gd->vbox), vbox, TRUE, TRUE, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
172 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
173 gtk_widget_show(vbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
174
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
175 if (header1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
176 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
177 GtkWidget *head;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
178
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
179 head = pref_label_new(vbox, header1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
180 pref_label_bold(head, TRUE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
181 gtk_misc_set_alignment(GTK_MISC(head), 0.0, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
182 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
183
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
184 imd = image_new(FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
185 gtk_widget_set_size_request(imd->widget, DIALOG_DEF_IMAGE_DIM_X, DIALOG_DEF_IMAGE_DIM_Y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
186 gtk_box_pack_start(GTK_BOX(vbox), imd->widget, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
187 image_change_path(imd, path1, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
188 gtk_widget_show(imd->widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
189
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
190 if (show_filename)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
191 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
192 label = pref_label_new(vbox, (path1 == NULL) ? "" : filename_from_path(path1));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
193 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
194
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
195 /* only the first image is stored (for use in gd_image_set) */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
196 g_object_set_data(G_OBJECT(gd->dialog), "img_image", imd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
197 g_object_set_data(G_OBJECT(gd->dialog), "img_label", label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
198
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
199
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
200 /* image 2 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
201
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
202 if (hbox && path2)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
203 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
204 vbox = pref_box_new(hbox, TRUE, GTK_ORIENTATION_VERTICAL, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
205
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
206 if (header2)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
207 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
208 GtkWidget *head;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
209
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
210 head = pref_label_new(vbox, header2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
211 pref_label_bold(head, TRUE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
212 gtk_misc_set_alignment(GTK_MISC(head), 0.0, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
213 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
214
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
215 imd = image_new(FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
216 gtk_widget_set_size_request(imd->widget, DIALOG_DEF_IMAGE_DIM_X, DIALOG_DEF_IMAGE_DIM_Y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
217 gtk_box_pack_start(GTK_BOX(vbox), imd->widget, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
218 image_change_path(imd, path2, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
219 gtk_widget_show(imd->widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
220
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
221 pref_label_new(vbox, filename_from_path(path2));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
222 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
223 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
224
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
225 static void generic_dialog_image_set(GenericDialog *gd, const gchar *path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
226 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
227 ImageWindow *imd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
228 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
229
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
230 imd = g_object_get_data(G_OBJECT(gd->dialog), "img_image");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
231 label = g_object_get_data(G_OBJECT(gd->dialog), "img_label");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
232
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
233 if (!imd) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
234
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
235 image_change_path(imd, path, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
236 if (label) gtk_label_set_text(GTK_LABEL(label), filename_from_path(path));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
237 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
238
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
239 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
240 *--------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
241 * Wrappers to aid in setting additional dialog properties (unde mouse, etc.)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
242 *--------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
243 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
244
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
245 GenericDialog *file_util_gen_dlg(const gchar *title,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
246 const gchar *wmclass, const gchar *wmsubclass,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
247 GtkWidget *parent, gint auto_close,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
248 void (*cancel_cb)(GenericDialog *, gpointer), gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
249 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
250 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
251
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
252 gd = generic_dialog_new(title, wmclass, wmsubclass, parent, auto_close, cancel_cb, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
253 if (place_dialogs_under_mouse)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
254 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
255 gtk_window_set_position(GTK_WINDOW(gd->dialog), GTK_WIN_POS_MOUSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
256 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
257
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
258 return gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
259 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
260
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
261 FileDialog *file_util_file_dlg(const gchar *title,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
262 const gchar *wmclass, const gchar *wmsubclass,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
263 GtkWidget *parent,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
264 void (*cancel_cb)(FileDialog *, gpointer), gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
265 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
266 FileDialog *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
267
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
268 fd = file_dialog_new(title, wmclass, wmsubclass, parent, cancel_cb, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
269 if (place_dialogs_under_mouse)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
270 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
271 gtk_window_set_position(GTK_WINDOW(GENERIC_DIALOG(fd)->dialog), GTK_WIN_POS_MOUSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
272 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
273
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
274 return fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
275 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
276
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
277 /* this warning dialog is copied from SLIK's ui_utildg.c,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
278 * because it does not have a mouse center option,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
279 * and we must center it before show, implement it here.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
280 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
281 static void file_util_warning_dialog_ok_cb(GenericDialog *gd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
282 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
283 /* no op */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
284 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
285
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
286 GenericDialog *file_util_warning_dialog(const gchar *heading, const gchar *message,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
287 const gchar *icon_stock_id, GtkWidget *parent)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
288 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
289 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
290
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
291 gd = file_util_gen_dlg(heading, "GQview", "warning", parent, TRUE, NULL, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
292 generic_dialog_add_message(gd, icon_stock_id, heading, message);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
293 generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, file_util_warning_dialog_ok_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
294 if (place_dialogs_under_mouse)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
295 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
296 gtk_window_set_position(GTK_WINDOW(gd->dialog), GTK_WIN_POS_MOUSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
297 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
298 gtk_widget_show(gd->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
299
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
300 return gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
301 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
302
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
303 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
304 *--------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
305 * Move and Copy routines
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
306 *--------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
307 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
308
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
309 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
310 * Multi file move
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
311 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
312
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
313 static FileDataMult *file_data_multiple_new(GList *source_list, const gchar *dest, gint copy)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
314 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
315 FileDataMult *fdm = g_new0(FileDataMult, 1);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
316 fdm->confirm_all = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
317 fdm->confirmed = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
318 fdm->skip = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
319 fdm->source_list = source_list;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
320 fdm->source_next = fdm->source_list;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
321 fdm->dest_base = g_strdup(dest);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
322 fdm->source = NULL;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
323 fdm->dest = NULL;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
324 fdm->copy = copy;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
325 return fdm;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
326 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
327
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
328 static void file_data_multiple_free(FileDataMult *fdm)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
329 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
330 path_list_free(fdm->source_list);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
331 g_free(fdm->dest_base);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
332 g_free(fdm->dest);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
333 g_free(fdm);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
334 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
335
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
336 static void file_util_move_multiple(FileDataMult *fdm);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
337
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
338 static void file_util_move_multiple_ok_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
339 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
340 FileDataMult *fdm = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
341
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
342 fdm->confirmed = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
343
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
344 if (fdm->rename_auto)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
345 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
346 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
347
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
348 buf = unique_filename_simple(fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
349 if (buf)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
350 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
351 g_free(fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
352 fdm->dest = buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
353 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
354 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
355 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
356 /* unique failed? well, return to the overwrite prompt :( */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
357 fdm->confirmed = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
358 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
359 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
360 else if (fdm->rename)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
361 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
362 const gchar *name;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
363
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
364 name = gtk_entry_get_text(GTK_ENTRY(fdm->rename_entry));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
365 if (strlen(name) == 0 ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
366 strcmp(name, filename_from_path(fdm->source)) == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
367 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
368 fdm->confirmed = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
369 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
370 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
371 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
372 g_free(fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
373 fdm->dest = concat_dir_and_file(fdm->dest_base, name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
374 fdm->confirmed = !isname(fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
375 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
376 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
377
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
378 file_util_move_multiple(fdm);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
379 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
380
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
381 static void file_util_move_multiple_all_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
382 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
383 FileDataMult *fdm = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
384
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
385 fdm->confirm_all = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
386
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
387 if (fdm->rename_auto) fdm->rename_all = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
388
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
389 file_util_move_multiple(fdm);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
390 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
391
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
392 static void file_util_move_multiple_skip_cb(GenericDialog *gd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
393 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
394 FileDataMult *fdm = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
395
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
396 fdm->skip = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
397 fdm->confirmed = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
398
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
399 file_util_move_multiple(fdm);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
400 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
401
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
402 static void file_util_move_multiple_skip_all_cb(GenericDialog *gd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
403 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
404 FileDataMult *fdm = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
405
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
406 fdm->skip = TRUE;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
407 fdm->confirm_all = TRUE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
408 file_util_move_multiple(fdm);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
409 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
410
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
411 static void file_util_move_multiple_continue_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
412 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
413 FileDataMult *fdm = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
414
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
415 fdm->confirmed = TRUE;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
416 file_util_move_multiple(fdm);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
417 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
418
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
419 static void file_util_move_multiple_cancel_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
420 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
421 FileDataMult *fdm = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
422
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
423 file_data_multiple_free(fdm);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
424 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
425
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
426 /* rename option */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
427
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
428 static void file_util_move_multiple_rename_auto_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
429 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
430 GenericDialog *gd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
431 FileDataMult *fdm;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
432
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
433 fdm = gd->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
434
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
435 fdm->rename_auto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
436 gtk_widget_set_sensitive(fdm->rename_box, !fdm->rename_auto);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
437 gtk_widget_set_sensitive(fdm->rename_entry, (!fdm->rename_auto && fdm->rename));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
438
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
439 if (fdm->rename_auto)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
440 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
441 gchar *preview;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
442
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
443 preview = unique_filename_simple(fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
444 if (preview) gtk_entry_set_text(GTK_ENTRY(fdm->rename_entry), filename_from_path(preview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
445 g_free(preview);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
446 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
447
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
448 gtk_widget_set_sensitive(fdm->yes_all_button, (fdm->rename_auto || !fdm->rename));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
449 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
450
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
451 static void file_util_move_multiple_rename_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
452 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
453 GenericDialog *gd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
454 FileDataMult *fdm;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
455
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
456 fdm = gd->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
457
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
458 fdm->rename = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
459 gtk_widget_set_sensitive(fdm->rename_entry, fdm->rename);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
460 gtk_widget_set_sensitive(fdm->yes_all_button, !fdm->rename);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
461
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
462 if (fdm->rename) gtk_widget_grab_focus(fdm->rename_entry);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
463 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
464
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
465 static GenericDialog *file_util_move_multiple_confirm_dialog(FileDataMult *fdm)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
466 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
467 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
468 GtkWidget *hbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
469
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
470 gd = file_util_gen_dlg(_("Overwrite file"), "GQview", "dlg_confirm",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
471 NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
472 file_util_move_multiple_cancel_cb, fdm);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
473
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
474 generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
475 _("Overwrite file?"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
476 _("Replace existing file with new file."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
477 pref_spacer(gd->vbox, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
478
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
479 generic_dialog_add_button(gd, GTK_STOCK_YES, _("_Overwrite"), file_util_move_multiple_ok_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
480 fdm->yes_all_button = generic_dialog_add_button(gd, NULL, _("Overwrite _all"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
481 file_util_move_multiple_all_cb, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
482 generic_dialog_add_button(gd, GTK_STOCK_GOTO_LAST, _("S_kip all"), file_util_move_multiple_skip_all_cb, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
483 generic_dialog_add_button(gd, GTK_STOCK_GO_FORWARD, _("_Skip"), file_util_move_multiple_skip_cb, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
484 generic_dialog_add_image(gd, fdm->dest, _("Existing file"), fdm->source, _("New file"), TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
485
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
486 /* rename option */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
487
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
488 fdm->rename = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
489 fdm->rename_all = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
490 fdm->rename_auto = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
491
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
492 hbox = pref_box_new(gd->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
493
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
494 fdm->rename_auto_box = gtk_check_button_new_with_label(_("Auto rename"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
495 g_signal_connect(G_OBJECT(fdm->rename_auto_box), "clicked",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
496 G_CALLBACK(file_util_move_multiple_rename_auto_cb), gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
497 gtk_box_pack_start(GTK_BOX(hbox), fdm->rename_auto_box, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
498 gtk_widget_show(fdm->rename_auto_box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
499
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
500 hbox = pref_box_new(gd->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
501
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
502 fdm->rename_box = gtk_check_button_new_with_label(_("Rename"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
503 g_signal_connect(G_OBJECT(fdm->rename_box), "clicked",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
504 G_CALLBACK(file_util_move_multiple_rename_cb), gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
505 gtk_box_pack_start(GTK_BOX(hbox), fdm->rename_box, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
506 gtk_widget_show(fdm->rename_box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
507
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
508 fdm->rename_entry = gtk_entry_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
509 gtk_entry_set_text(GTK_ENTRY(fdm->rename_entry), filename_from_path(fdm->dest));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
510 gtk_widget_set_sensitive(fdm->rename_entry, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
511 gtk_box_pack_start(GTK_BOX(hbox), fdm->rename_entry, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
512 gtk_widget_show(fdm->rename_entry);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
513
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
514 return gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
515 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
516
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
517 static void file_util_move_multiple(FileDataMult *fdm)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
518 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
519 while (fdm->dest || fdm->source_next)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
520 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
521 gint success = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
522 gint skip_file = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
523
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
524 if (!fdm->dest)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
525 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
526 GList *work = fdm->source_next;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
527 fdm->source = work->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
528 fdm->dest = concat_dir_and_file(fdm->dest_base, filename_from_path(fdm->source));
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
529 fdm->source_next = work->next;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
530 fdm->confirmed = FALSE;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
531 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
532
3
gqview
parents: 1
diff changeset
533 if (fdm->dest && fdm->source && strcmp(fdm->dest, fdm->source) == 0)
gqview
parents: 1
diff changeset
534 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
535 if (!fdm->confirmed)
3
gqview
parents: 1
diff changeset
536 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
537 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
538 const gchar *title;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
539 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
540
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
541 if (fdm->copy)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
542 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
543 title = _("Source to copy matches destination");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
544 text = g_strdup_printf(_("Unable to copy file:\n%s\nto itself."), fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
545 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
546 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
547 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
548 title = _("Source to move matches destination");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
549 text = g_strdup_printf(_("Unable to move file:\n%s\nto itself."), fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
550 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
551
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
552 gd = file_util_gen_dlg(title, "GQview", "dlg_confirm",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
553 NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
554 file_util_move_multiple_cancel_cb, fdm);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
555 generic_dialog_add_message(gd, GTK_STOCK_DIALOG_WARNING, title, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
556 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
557 generic_dialog_add_button(gd, GTK_STOCK_GO_FORWARD, _("Co_ntinue"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
558 file_util_move_multiple_continue_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
559
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
560 gtk_widget_show(gd->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
561 return;
3
gqview
parents: 1
diff changeset
562 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
563 skip_file = TRUE;
3
gqview
parents: 1
diff changeset
564 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
565 else if (isfile(fdm->dest))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
566 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
567 if (!fdm->confirmed && !fdm->confirm_all)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
568 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
569 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
570
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
571 gd = file_util_move_multiple_confirm_dialog(fdm);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
572 gtk_widget_show(gd->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
573 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
574 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
575 if (fdm->skip) skip_file = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
576 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
577
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
578 if (skip_file)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
579 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
580 success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
581 if (!fdm->confirm_all) fdm->skip = FALSE;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
582 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
583 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
584 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
585 gint try = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
586
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
587 if (fdm->confirm_all && fdm->rename_all && isfile(fdm->dest))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
588 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
589 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
590 buf = unique_filename_simple(fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
591 if (buf)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
592 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
593 g_free(fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
594 fdm->dest = buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
595 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
596 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
597 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
598 try = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
599 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
600 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
601 if (try)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
602 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
603 if (fdm->copy)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
604 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
605 if (copy_file(fdm->source, fdm->dest))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
606 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
607 success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
608 file_maint_copied(fdm->source, fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
609 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
610 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
611 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
612 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
613 if (move_file(fdm->source, fdm->dest))
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
614 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
615 success = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
616 file_maint_moved(fdm->source, fdm->dest, fdm->source_list);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
617 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
618 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
619 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
620 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
621
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
622 if (!success)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
623 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
624 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
625 const gchar *title;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
626 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
627
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
628 if (fdm->copy)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
629 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
630 title = _("Error copying file");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
631 text = g_strdup_printf(_("Unable to copy file:\n%s\nto:\n%s\nduring multiple file copy."), fdm->source, fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
632 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
633 else
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
634 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
635 title = _("Error moving file");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
636 text = g_strdup_printf(_("Unable to move file:\n%s\nto:\n%s\nduring multiple file move."), fdm->source, fdm->dest);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
637 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
638 gd = file_util_gen_dlg(title, "GQview", "dlg_confirm",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
639 NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
640 file_util_move_multiple_cancel_cb, fdm);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
641 generic_dialog_add_message(gd, GTK_STOCK_DIALOG_WARNING, title, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
642 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
643
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
644 generic_dialog_add_button(gd, GTK_STOCK_GO_FORWARD, _("Co_ntinue"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
645 file_util_move_multiple_continue_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
646 gtk_widget_show(gd->dialog);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
647 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
648
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
649 g_free(fdm->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
650 fdm->dest = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
651
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
652 if (!success) return;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
653 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
654
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
655 file_data_multiple_free(fdm);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
656 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
657
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
658 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
659 * Single file move
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
660 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
661
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
662 static FileDataSingle *file_data_single_new(const gchar *source, const gchar *dest, gint copy)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
663 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
664 FileDataSingle *fds = g_new0(FileDataSingle, 1);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
665 fds->confirmed = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
666 fds->source = g_strdup(source);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
667 fds->dest = g_strdup(dest);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
668 fds->copy = copy;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
669 return fds;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
670 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
671
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
672 static void file_data_single_free(FileDataSingle *fds)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
673 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
674 g_free(fds->source);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
675 g_free(fds->dest);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
676 g_free(fds);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
677 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
678
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
679 static void file_util_move_single(FileDataSingle *fds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
680
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
681 static void file_util_move_single_ok_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
682 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
683 FileDataSingle *fds = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
684
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
685 fds->confirmed = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
686
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
687 if (fds->rename_auto)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
688 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
689 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
690
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
691 buf = unique_filename_simple(fds->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
692 if (buf)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
693 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
694 g_free(fds->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
695 fds->dest = buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
696 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
697 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
698 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
699 /* unique failed? well, return to the overwrite prompt :( */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
700 fds->confirmed = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
701 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
702 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
703 else if (fds->rename)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
704 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
705 const gchar *name;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
706
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
707 name = gtk_entry_get_text(GTK_ENTRY(fds->rename_entry));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
708 if (strlen(name) == 0 ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
709 strcmp(name, filename_from_path(fds->source)) == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
710 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
711 fds->confirmed = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
712 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
713 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
714 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
715 gchar *base;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
716
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
717 base = remove_level_from_path(fds->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
718 g_free(fds->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
719 fds->dest = concat_dir_and_file(base, name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
720 fds->confirmed = !isname(fds->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
721
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
722 g_free(base);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
723 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
724 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
725
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
726 file_util_move_single(fds);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
727 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
728
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
729 static void file_util_move_single_cancel_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
730 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
731 FileDataSingle *fds = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
732
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
733 file_data_single_free(fds);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
734 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
735
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
736 static void file_util_move_single_rename_auto_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
737 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
738 GenericDialog *gd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
739 FileDataSingle *fds;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
740
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
741 fds = gd->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
742
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
743 fds->rename_auto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
744 gtk_widget_set_sensitive(fds->rename_box, !fds->rename_auto);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
745 gtk_widget_set_sensitive(fds->rename_entry, (!fds->rename_auto && fds->rename));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
746
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
747 if (fds->rename_auto)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
748 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
749 gchar *preview;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
750
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
751 preview = unique_filename_simple(fds->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
752 if (preview) gtk_entry_set_text(GTK_ENTRY(fds->rename_entry), filename_from_path(preview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
753 g_free(preview);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
754 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
755 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
756
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
757 static void file_util_move_single_rename_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
758 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
759 GenericDialog *gd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
760 FileDataSingle *fds;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
761
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
762 fds = gd->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
763
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
764 fds->rename = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
765 gtk_widget_set_sensitive(fds->rename_entry, fds->rename);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
766
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
767 if (fds->rename) gtk_widget_grab_focus(fds->rename_entry);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
768 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
769
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
770 static void file_util_move_single(FileDataSingle *fds)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
771 {
3
gqview
parents: 1
diff changeset
772 if (fds->dest && fds->source && strcmp(fds->dest, fds->source) == 0)
gqview
parents: 1
diff changeset
773 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
774 file_util_warning_dialog(_("Source matches destination"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
775 _("Source and destination are the same, operation cancelled."),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
776 GTK_STOCK_DIALOG_INFO, NULL);
3
gqview
parents: 1
diff changeset
777 }
gqview
parents: 1
diff changeset
778 else if (isfile(fds->dest) && !fds->confirmed)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
779 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
780 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
781 GtkWidget *hbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
782
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
783 gd = file_util_gen_dlg(_("Overwrite file"), "GQview", "dlg_confirm",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
784 NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
785 file_util_move_single_cancel_cb, fds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
786
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
787 generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
788 _("Overwrite file?"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
789 _("Replace existing file with new file."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
790 pref_spacer(gd->vbox, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
791
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
792 generic_dialog_add_button(gd, GTK_STOCK_OK, _("_Overwrite"), file_util_move_single_ok_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
793 generic_dialog_add_image(gd, fds->dest, _("Existing file"), fds->source, _("New file"), TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
794
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
795 /* rename option */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
796
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
797 fds->rename = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
798 fds->rename_auto = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
799
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
800 hbox = pref_box_new(gd->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
801
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
802 fds->rename_auto_box = gtk_check_button_new_with_label(_("Auto rename"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
803 g_signal_connect(G_OBJECT(fds->rename_auto_box), "clicked",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
804 G_CALLBACK(file_util_move_single_rename_auto_cb), gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
805 gtk_box_pack_start(GTK_BOX(hbox), fds->rename_auto_box, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
806 gtk_widget_show(fds->rename_auto_box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
807
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
808 hbox = pref_box_new(gd->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
809
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
810 fds->rename_box = gtk_check_button_new_with_label(_("Rename"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
811 g_signal_connect(G_OBJECT(fds->rename_box), "clicked",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
812 G_CALLBACK(file_util_move_single_rename_cb), gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
813 gtk_box_pack_start(GTK_BOX(hbox), fds->rename_box, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
814 gtk_widget_show(fds->rename_box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
815
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
816 fds->rename_entry = gtk_entry_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
817 gtk_entry_set_text(GTK_ENTRY(fds->rename_entry), filename_from_path(fds->dest));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
818 gtk_widget_set_sensitive(fds->rename_entry, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
819 gtk_box_pack_start(GTK_BOX(hbox), fds->rename_entry, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
820 gtk_widget_show(fds->rename_entry);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
821
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
822 gtk_widget_show(gd->dialog);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
823 return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
824 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
825 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
826 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
827 gint success = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
828 if (fds->copy)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
829 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
830 if (copy_file(fds->source, fds->dest))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
831 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
832 success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
833 file_maint_copied(fds->source, fds->dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
834 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
835 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
836 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
837 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
838 if (move_file(fds->source, fds->dest))
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
839 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
840 success = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
841 file_maint_moved(fds->source, fds->dest, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
842 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
843 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
844 if (!success)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
845 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
846 gchar *title;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
847 gchar *text;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
848 if (fds->copy)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
849 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
850 title = _("Error copying file");
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
851 text = g_strdup_printf(_("Unable to copy file:\n%s\nto:\n%s"), fds->source, fds->dest);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
852 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
853 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
854 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
855 title = _("Error moving file");
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
856 text = g_strdup_printf(_("Unable to move file:\n%s\nto:\n%s"), fds->source, fds->dest);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
857 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
858 file_util_warning_dialog(title, text, GTK_STOCK_DIALOG_ERROR, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
859 g_free(text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
860 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
861 }
3
gqview
parents: 1
diff changeset
862
gqview
parents: 1
diff changeset
863 file_data_single_free(fds);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
864 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
865
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
866 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
867 * file move dialog
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
868 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
869
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
870 static void file_util_move_do(FileDialog *fd)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
871 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
872 file_dialog_sync_history(fd, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
873
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
874 if (fd->multiple_files)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
875 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
876 file_util_move_multiple(file_data_multiple_new(fd->source_list, fd->dest_path, fd->type));
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
877 fd->source_list = NULL;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
878 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
879 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
880 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
881 if (isdir(fd->dest_path))
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
882 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
883 gchar *buf = concat_dir_and_file(fd->dest_path, filename_from_path(fd->source_path));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
884 gtk_entry_set_text(GTK_ENTRY(fd->entry), buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
885 g_free(buf);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
886 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
887 file_util_move_single(file_data_single_new(fd->source_path, fd->dest_path, fd->type));
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
888 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
889
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
890 file_dialog_close(fd);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
891 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
892
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
893 static void file_util_move_check(FileDialog *fd)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
894 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
895 if (fd->multiple_files && !isdir(fd->dest_path))
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
896 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
897 if (isfile(fd->dest_path))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
898 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
899 file_util_warning_dialog(_("Invalid destination"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
900 _("When operating with multiple files, please select\na folder, not a file."),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
901 GTK_STOCK_DIALOG_INFO, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
902 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
903 else
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
904 file_util_warning_dialog(_("Invalid folder"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
905 _("Please select an existing folder."),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
906 GTK_STOCK_DIALOG_INFO, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
907 return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
908 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
909
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
910 file_util_move_do(fd);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
911 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
912
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
913 static void file_util_move_cb(FileDialog *fd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
914 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
915 file_util_move_check(fd);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
916 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
917
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
918 static void file_util_move_cancel_cb(FileDialog *fd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
919 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
920 file_dialog_close(fd);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
921 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
922
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
923 static void real_file_util_move(const gchar *source_path, GList *source_list,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
924 const gchar *dest_path, gint copy, GtkWidget *parent)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
925 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
926 FileDialog *fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
927 GtkWidget *label;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
928 gchar *path = NULL;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
929 gint multiple;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
930 const gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
931 const gchar *title;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
932 const gchar *op_text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
933 const gchar *stock_id;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
934
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
935 if (!source_path && !source_list) return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
936
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
937 if (source_path)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
938 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
939 path = g_strdup(source_path);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
940 multiple = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
941 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
942 else if (source_list->next)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
943 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
944 multiple = TRUE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
945 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
946 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
947 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
948 path = g_strdup(source_list->data);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
949 path_list_free(source_list);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
950 source_list = NULL;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
951 multiple = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
952 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
953
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
954 if (copy)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
955 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
956 title = _("Copy - GQview");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
957 op_text = _("_Copy");
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
958 if (path)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
959 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
960 text = _("Copy file");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
961 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
962 else
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
963 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
964 text = _("Copy multiple files");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
965 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
966 stock_id = GTK_STOCK_COPY;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
967 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
968 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
969 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
970 title = _("Move - GQview");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
971 op_text = _("_Move");
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
972 if (path)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
973 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
974 text = _("Move file");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
975 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
976 else
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
977 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
978 text = _("Move multiple files");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
979 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
980 stock_id = GTK_STOCK_OK;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
981 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
982
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
983 fd = file_util_file_dlg(title, "GQview", "dlg_copymove", parent,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
984 file_util_move_cancel_cb, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
985 generic_dialog_add_message(GENERIC_DIALOG(fd), NULL, text, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
986
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
987 if (path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
988 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
989 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
990
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
991 box = pref_box_new(GENERIC_DIALOG(fd)->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
992 pref_label_new(box, _("File name:"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
993 pref_label_new(box, filename_from_path(path));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
994 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
995
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
996 label = pref_label_new(GENERIC_DIALOG(fd)->vbox, _("Choose the destination folder."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
997 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
998 pref_spacer(GENERIC_DIALOG(fd)->vbox, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
999
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1000 file_dialog_add_button(fd, stock_id, op_text, file_util_move_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1001
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1002 file_dialog_add_path_widgets(fd, NULL, dest_path, "move_copy", NULL, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1003
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1004 fd->type = copy;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1005 fd->source_path = path;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1006 fd->source_list = source_list;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1007 fd->multiple_files = multiple;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1008
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1009 gtk_widget_show(GENERIC_DIALOG(fd)->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1010 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1011
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1012 void file_util_move(const gchar *source_path, GList *source_list, const gchar *dest_path, GtkWidget *parent)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1013 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1014 real_file_util_move(source_path, source_list, dest_path, FALSE, parent);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1015 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1016
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1017 void file_util_copy(const gchar *source_path, GList *source_list, const gchar *dest_path, GtkWidget *parent)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1018 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1019 real_file_util_move(source_path, source_list, dest_path, TRUE, parent);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1020 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1021
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1022 void file_util_move_simple(GList *list, const gchar *dest_path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1023 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1024 if (!list) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1025 if (!dest_path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1026 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1027 path_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1028 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1029 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1030
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1031 if (!list->next)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1032 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1033 const gchar *source;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1034 gchar *dest;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1035
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1036 source = list->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1037 dest = concat_dir_and_file(dest_path, filename_from_path(source));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1038
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1039 file_util_move_single(file_data_single_new(source, dest, FALSE));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1040 g_free(dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1041 path_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1042 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1043 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1044
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1045 file_util_move_multiple(file_data_multiple_new(list, dest_path, FALSE));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1046 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1047
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1048 void file_util_copy_simple(GList *list, const gchar *dest_path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1049 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1050 if (!list) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1051 if (!dest_path)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1052 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1053 path_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1054 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1055 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1056
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1057 if (!list->next)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1058 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1059 const gchar *source;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1060 gchar *dest;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1061
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1062 source = list->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1063 dest = concat_dir_and_file(dest_path, filename_from_path(source));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1064
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1065 file_util_move_single(file_data_single_new(source, dest, TRUE));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1066 g_free(dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1067 path_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1068 return;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1069 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1070
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1071 file_util_move_multiple(file_data_multiple_new(list, dest_path, TRUE));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1072 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1073
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1074 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1075 *--------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1076 * Safe Delete
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1077 *--------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1078 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1079
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1080 static gint file_util_safe_number(gint64 free_space)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1081 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1082 gint n = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1083 gint64 total = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1084 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1085 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1086 gint sorted = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1087 gint warned = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1088
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1089 if (!filelist_read(safe_delete_path, &list, NULL)) return 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1090
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1091 work = list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1092 while (work)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1093 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1094 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1095 gint v;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1096
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1097 fd = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1098 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1099
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1100 v = (gint)strtol(fd->name, NULL, 10);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1101 if (v >= n) n = v + 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1102
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1103 total += fd->size;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1104 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1105
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1106 while (list &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1107 (free_space < 0 || total + free_space > (gint64)safe_delete_size * 1048576) )
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1108 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1109 FileData *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1110
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1111 if (!sorted)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1112 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1113 list = filelist_sort(list, SORT_NAME, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1114 sorted = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1115 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1116
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1117 fd = list->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1118 list = g_list_remove(list, fd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1119
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1120 if (debug) printf("expunging from trash for space: %s\n", fd->name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1121 if (!unlink_file(fd->path) && !warned)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1122 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1123 file_util_warning_dialog(_("Delete failed"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1124 _("Unable to remove old file from trash folder"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1125 GTK_STOCK_DIALOG_WARNING, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1126 warned = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1127 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1128 total -= fd->size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1129 file_data_free(fd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1130 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1131
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1132 filelist_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1133
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1134 return n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1135 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1136
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1137 void file_util_trash_clear(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1138 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1139 file_util_safe_number(-1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1140 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1141
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1142 static gchar *file_util_safe_dest(const gchar *path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1143 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1144 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1145
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1146 n = file_util_safe_number(filesize(path));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1147 return g_strdup_printf("%s/%06d_%s", safe_delete_path, n, filename_from_path(path));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1148 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1149
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1150 static void file_util_safe_del_toggle_cb(GtkWidget *button, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1151 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1152 safe_delete_enable = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1153 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1154
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1155 static void file_util_safe_del_close_cb(GtkWidget *dialog, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1156 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1157 GenericDialog **gd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1158
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1159 *gd = NULL;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1160 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1161
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1162 static gint file_util_unlink(const gchar *path)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1163 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1164 static GenericDialog *gd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1165 gchar *result = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1166 gint success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1167
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1168 if (!isfile(path)) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1169
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1170 if (!safe_delete_enable)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1171 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1172 return unlink_file(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1173 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1174
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1175 if (!isdir(safe_delete_path))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1176 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1177 if (debug) printf("creating trash: %s\n", safe_delete_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1178 if (!safe_delete_path || !mkdir_utf8(safe_delete_path, 0755))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1179 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1180 result = _("Could not create folder");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1181 success = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1182 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1183 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1184
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1185 if (success)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1186 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1187 gchar *dest;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1188
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1189 dest = file_util_safe_dest(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1190 if (dest)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1191 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1192 if (debug) printf("safe deleting %s to %s\n", path, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1193 success = move_file(path, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1194 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1195 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1196 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1197 success = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1198 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1199
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1200 if (!success && !access_file(path, W_OK))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1201 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1202 result = _("Permission denied");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1203 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1204 g_free(dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1205 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1206
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1207 if (result && !gd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1208 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1209 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1210 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1211
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1212 buf = g_strdup_printf(_("Unable to access or create the trash folder.\n\"%s\""), safe_delete_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1213 gd = file_util_warning_dialog(result, buf, GTK_STOCK_DIALOG_WARNING, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1214 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1215
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1216 button = gtk_check_button_new_with_label(_("Turn off safe delete"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1217 g_signal_connect(G_OBJECT(button), "toggled",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1218 G_CALLBACK(file_util_safe_del_toggle_cb), NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1219 gtk_box_pack_start(GTK_BOX(gd->vbox), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1220 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1221
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1222 g_signal_connect(G_OBJECT(gd->dialog), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1223 G_CALLBACK(file_util_safe_del_close_cb), &gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1224 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1225
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1226 return success;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1227 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1228
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1229 static void box_append_safe_delete_status(GenericDialog *gd)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1230 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1231 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1232 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1233
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1234 buf = g_strdup_printf(_("Safe delete: %s"), (safe_delete_enable) ? _("on") : _("off"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1235 label = pref_label_new(gd->vbox, buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1236 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1237
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1238 gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1239 gtk_widget_set_sensitive(label, FALSE);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1240 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1241
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1242 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1243 *--------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1244 * Delete routines
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1245 *--------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1246 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1247
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1248 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1249 * delete multiple files
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1250 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1251
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1252 static void file_util_delete_multiple_ok_cb(GenericDialog *gd, gpointer data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1253 static void file_util_delete_multiple_cancel_cb(GenericDialog *gd, gpointer data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1254
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1255 static void file_util_delete_multiple_ok_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1256 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1257 GList *source_list = data;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1258
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1259 while (source_list)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1260 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1261 gchar *path = source_list->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1262
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1263 source_list = g_list_remove(source_list, path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1264
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1265 if (!file_util_unlink(path))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1266 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1267 if (source_list)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1268 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1269 GenericDialog *d;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1270 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1271
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1272 d = file_util_gen_dlg(_("Delete failed"), "GQview", "dlg_confirm",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1273 NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1274 file_util_delete_multiple_cancel_cb, source_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1275
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1276 text = g_strdup_printf(_("Unable to delete file:\n %s\n Continue multiple delete operation?"), path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1277 generic_dialog_add_message(d, GTK_STOCK_DIALOG_WARNING, NULL, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1278 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1279
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1280 generic_dialog_add_button(d, GTK_STOCK_GO_FORWARD, _("Co_ntinue"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1281 file_util_delete_multiple_ok_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1282 gtk_widget_show(d->dialog);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1283 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1284 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1285 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1286 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1287
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1288 text = g_strdup_printf(_("Unable to delete file:\n%s"), path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1289 file_util_warning_dialog(_("Delete failed"), text, GTK_STOCK_DIALOG_ERROR, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1290 g_free(text);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1291 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1292 g_free(path);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1293 return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1294 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1295 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1296 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1297 file_maint_removed(path, source_list);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1298 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1299 g_free(path);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1300 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1301 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1302
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1303 static void file_util_delete_multiple_cancel_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1304 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1305 GList *source_list = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1306
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1307 path_list_free(source_list);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1308 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1309
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1310 static void file_util_delete_multiple_review_skip(GenericDialog *gd, gint next)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1311 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1312 GtkWidget *button_back;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1313 GtkWidget *button_next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1314 GtkWidget *button_label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1315 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1316 GList *list_point;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1317 const gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1318 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1319
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1320 list = gd->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1321 button_back = g_object_get_data(G_OBJECT(gd->dialog), "button_back");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1322 button_next = g_object_get_data(G_OBJECT(gd->dialog), "button_next");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1323 button_label = g_object_get_data(G_OBJECT(gd->dialog), "button_label");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1324 list_point = g_object_get_data(G_OBJECT(gd->dialog), "list_point");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1325
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1326 if (!list || !button_label) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1327
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1328 if (list_point)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1329 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1330 if (next)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1331 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1332 if (list_point->next) list_point = list_point->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1333 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1334 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1335 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1336 if (list_point->prev) list_point = list_point->prev;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1337 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1338 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1339 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1340 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1341 list_point = list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1342 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1343
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1344 if (!list_point) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1345
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1346 path = list_point->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1347 buf = g_strdup_printf(_("File %d of %d"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1348 g_list_index(list, (gpointer)path) + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1349 g_list_length(list));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1350 gtk_label_set_text(GTK_LABEL(button_label), buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1351 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1352
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1353 gtk_widget_set_sensitive(button_back, (list_point->prev != NULL) );
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1354 gtk_widget_set_sensitive(button_next, (list_point->next != NULL) );
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1355
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1356 generic_dialog_image_set(gd, path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1357
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1358 g_object_set_data(G_OBJECT(gd->dialog), "list_point", list_point);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1359 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1360
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1361 static void file_util_delete_multiple_review_back(GtkWidget *button, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1362 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1363 GenericDialog *gd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1364
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1365 file_util_delete_multiple_review_skip(gd, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1366 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1367
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1368 static void file_util_delete_multiple_review_next(GtkWidget *button, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1369 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1370 GenericDialog *gd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1371
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1372 file_util_delete_multiple_review_skip(gd, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1373 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1374
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1375 static void file_util_delete_multiple_review_button_cb(ImageWindow *imd, gint button, guint32 time,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1376 gdouble x, gdouble y, guint state, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1377 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1378 if (button == 1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1379 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1380 file_util_delete_multiple_review_next(NULL, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1381 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1382 else if (button == 2 || button == 3)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1383 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1384 file_util_delete_multiple_review_back(NULL, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1385 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1386 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1387
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1388 static void file_util_delete_multiple_review_scroll_cb(ImageWindow *imd, GdkScrollDirection direction, guint32 time,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1389 gdouble x, gdouble y, guint state, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1390 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1391 if (direction == GDK_SCROLL_UP)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1392 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1393 file_util_delete_multiple_review_back(NULL, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1394 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1395 else if (direction == GDK_SCROLL_DOWN)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1396 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1397 file_util_delete_multiple_review_next(NULL, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1398 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1399 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1400
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1401 static void file_util_delete_multiple(GList *source_list, GtkWidget *parent)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1402 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1403 if (!confirm_delete)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1404 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1405 file_util_delete_multiple_ok_cb(NULL, source_list);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1406 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1407 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1408 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1409 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1410 GtkWidget *hbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1411 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1412 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1413 ImageWindow *imd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1414 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1415
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1416 gd = file_util_gen_dlg(_("Delete files - GQview"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1417 "GQview", "dlg_confirm", parent, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1418 file_util_delete_multiple_cancel_cb, source_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1419
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1420 generic_dialog_add_message(gd, NULL, _("Delete multiple files"), NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1421
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1422 generic_dialog_add_image(gd, NULL, NULL, NULL, NULL, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1423 imd = g_object_get_data(G_OBJECT(gd->dialog), "img_image");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1424 image_set_button_func(imd, file_util_delete_multiple_review_button_cb, gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1425 image_set_scroll_func(imd, file_util_delete_multiple_review_scroll_cb, gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1426
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1427 hbox = pref_box_new(gd->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_BUTTON_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1428
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1429 button = pref_button_new(hbox, GTK_STOCK_GO_BACK, NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1430 G_CALLBACK(file_util_delete_multiple_review_back), gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1431 gtk_widget_set_sensitive(button, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1432 g_object_set_data(G_OBJECT(gd->dialog), "button_back", button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1433
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1434 button = pref_button_new(hbox, GTK_STOCK_GO_FORWARD, NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1435 G_CALLBACK(file_util_delete_multiple_review_next), gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1436 g_object_set_data(G_OBJECT(gd->dialog), "button_next", button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1437
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1438 buf = g_strdup_printf(_("Review %d files"), g_list_length(source_list) );
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1439 label = pref_label_new(hbox, buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1440 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1441 g_object_set_data(G_OBJECT(gd->dialog), "button_label", label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1442
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1443 box_append_safe_delete_status(gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1444
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1445 generic_dialog_add_button(gd, GTK_STOCK_DELETE, NULL, file_util_delete_multiple_ok_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1446
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1447 gtk_widget_show(gd->dialog);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1448 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1449 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1450
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1451 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1452 * delete single file
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1453 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1454
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1455 static void file_util_delete_ok_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1456 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1457 gchar *path = data;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1458
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1459 if (!file_util_unlink(path))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1460 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1461 gchar *text = g_strdup_printf(_("Unable to delete file:\n%s"), path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1462 file_util_warning_dialog(_("File deletion failed"), text, GTK_STOCK_DIALOG_ERROR, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1463 g_free(text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1464 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1465 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1466 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1467 file_maint_removed(path, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1468 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1469
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1470 g_free(path);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1471 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1472
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1473 static void file_util_delete_cancel_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1474 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1475 gchar *path = data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1476
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1477 g_free(path);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1478 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1479
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1480 static void file_util_delete_single(const gchar *path, GtkWidget *parent)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1481 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1482 gchar *buf = g_strdup(path);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1483
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1484 if (!confirm_delete)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1485 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1486 file_util_delete_ok_cb(NULL, buf);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1487 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1488 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1489 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1490 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1491 GtkWidget *table;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1492 gchar *base;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1493
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1494 gd = file_util_gen_dlg(_("Delete file - GQview"), "GQview", "dlg_confirm",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1495 parent, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1496 file_util_delete_cancel_cb, buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1497
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1498 generic_dialog_add_message(gd, NULL, _("Delete file?"), NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1499
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1500 table = pref_table_new(gd->vbox, 2, 2, FALSE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1501
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1502 pref_table_label(table, 0, 0, _("File name:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1503 pref_table_label(table, 1, 0, filename_from_path(path), 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1504
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1505 pref_table_label(table, 0, 1, _("Location:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1506
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1507 base = remove_level_from_path(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1508 pref_table_label(table, 1, 1, base, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1509 g_free(base);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1510
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1511 generic_dialog_add_image(gd, path, NULL, NULL, NULL, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1512
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1513 box_append_safe_delete_status(gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1514
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1515 generic_dialog_add_button(gd, GTK_STOCK_DELETE, NULL, file_util_delete_ok_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1516
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1517 gtk_widget_show(gd->dialog);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1518 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1519 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1520
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1521 void file_util_delete(const gchar *source_path, GList *source_list, GtkWidget *parent)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1522 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1523 if (!source_path && !source_list) return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1524
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1525 if (source_path)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1526 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1527 file_util_delete_single(source_path, parent);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1528 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1529 else if (!source_list->next)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1530 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1531 file_util_delete_single(source_list->data, parent);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1532 path_list_free(source_list);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1533 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1534 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1535 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1536 file_util_delete_multiple(source_list, parent);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1537 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1538 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1539
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1540 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1541 *--------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1542 * Rename routines
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1543 *--------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1544 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1545
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1546 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1547 * rename multiple files
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1548 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1549
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1550 enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1551 RENAME_COLUMN_PATH = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1552 RENAME_COLUMN_NAME,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1553 RENAME_COLUMN_PREVIEW,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1554 RENAME_COLUMN_COUNT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1555 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1556
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1557 typedef struct _RenameDataMult RenameDataMult;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1558 struct _RenameDataMult
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1559 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1560 FileDialog *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1561
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1562 gint rename_auto;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1563
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1564 GtkWidget *listview;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1565 GtkWidget *button_auto;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1566
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1567 GtkWidget *rename_box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1568 GtkWidget *rename_label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1569 GtkWidget *rename_entry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1570
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1571 GtkWidget *auto_box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1572 GtkWidget *auto_entry_front;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1573 GtkWidget *auto_spin_start;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1574 GtkWidget *auto_spin_pad;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1575 GtkWidget *auto_entry_end;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1576
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1577 ImageWindow *imd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1578
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1579 gint update_idle_id;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1580 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1581
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1582 static void file_util_rename_multiple(RenameDataMult *rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1583
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1584 static void file_util_rename_multiple_ok_cb(GenericDialog *gd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1585 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1586 RenameDataMult *rd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1587 GtkWidget *dialog;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1588
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1589 dialog = GENERIC_DIALOG(rd->fd)->dialog;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1590 if (!GTK_WIDGET_VISIBLE(dialog)) gtk_widget_show(dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1591
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1592 rd->fd->type = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1593 file_util_rename_multiple(rd);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1594 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1595
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1596 static void file_util_rename_multiple_cancel_cb(GenericDialog *gd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1597 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1598 RenameDataMult *rd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1599 GtkWidget *dialog;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1600
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1601 dialog = GENERIC_DIALOG(rd->fd)->dialog;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1602 if (!GTK_WIDGET_VISIBLE(dialog)) gtk_widget_show(dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1603 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1604
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1605 static gint file_util_rename_multiple_find_row(RenameDataMult *rd, const gchar *path, GtkTreeIter *iter)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1606 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1607 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1608 gint valid;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1609 gint row = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1610
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1611 store = gtk_tree_view_get_model(GTK_TREE_VIEW(rd->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1612 valid = gtk_tree_model_get_iter_first(store, iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1613 while (valid)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1614 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1615 gchar *path_n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1616 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1617
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1618 gtk_tree_model_get(GTK_TREE_MODEL(store), iter, RENAME_COLUMN_PATH, &path_n, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1619 ret = (strcmp(path_n, path) == 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1620 g_free(path_n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1621 if (ret) return row;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1622
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1623 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1624 row++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1625 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1626
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1627 return -1;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1628 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1629
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1630 static void file_util_rename_multiple(RenameDataMult *rd)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1631 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1632 FileDialog *fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1633
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1634 fd = rd->fd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1635
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1636 if (isfile(fd->dest_path) && !fd->type)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1637 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1638 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1639
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1640 gd = file_util_gen_dlg(_("Overwrite file"), "GQview", "dlg_confirm",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1641 NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1642 file_util_rename_multiple_cancel_cb, rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1643
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1644 generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1645 _("Overwrite file?"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1646 _("Replace existing file by renaming new file."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1647 pref_spacer(gd->vbox, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1648
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1649 generic_dialog_add_button(gd, GTK_STOCK_OK, _("_Overwrite"), file_util_rename_multiple_ok_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1650 generic_dialog_add_image(gd, fd->dest_path, _("Existing file"), fd->source_path, _("New file"), TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1651
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1652 gtk_widget_hide(GENERIC_DIALOG(fd)->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1653
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1654 gtk_widget_show(gd->dialog);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1655 return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1656 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1657 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1658 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1659 if (!rename_file(fd->source_path, fd->dest_path))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1660 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1661 gchar *text = g_strdup_printf(_("Unable to rename file:\n%s\n to:\n%s"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1662 filename_from_path(fd->source_path),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1663 filename_from_path(fd->dest_path));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1664 file_util_warning_dialog(_("Error renaming file"), text, GTK_STOCK_DIALOG_ERROR, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1665 g_free(text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1666 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1667 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1668 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1669 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1670 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1671 GtkTreeIter next;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1672 gint row;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1673
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1674 file_maint_renamed(fd->source_path, fd->dest_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1675
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1676 store = gtk_tree_view_get_model(GTK_TREE_VIEW(rd->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1677 row = file_util_rename_multiple_find_row(rd, rd->fd->source_path, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1678
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1679 if (row >= 0 &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1680 (gtk_tree_model_iter_nth_child(store, &next, NULL, row + 1) ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1681 (row > 0 && gtk_tree_model_iter_nth_child(store, &next, NULL, row - 1)) ) )
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1682 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1683 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1684
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1685 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(rd->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1686 gtk_tree_selection_select_iter(selection, &next);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1687 gtk_list_store_remove(GTK_LIST_STORE(store), &iter);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1688 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1689 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1690 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1691 if (debug) printf("closed by #%d\n", row);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1692
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1693 file_dialog_close(rd->fd);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1694 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1695 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1696 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1697 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1698
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1699 static void file_util_rename_multiple_auto(RenameDataMult *rd)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1700 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1701 const gchar *front;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1702 const gchar *end;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1703 gint start_n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1704 gint padding;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1705 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1706 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1707 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1708 gint valid;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1709 gint success;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1710
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1711 history_combo_append_history(rd->auto_entry_front, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1712 history_combo_append_history(rd->auto_entry_end, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1713
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1714 front = gtk_entry_get_text(GTK_ENTRY(rd->auto_entry_front));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1715 end = gtk_entry_get_text(GTK_ENTRY(rd->auto_entry_end));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1716 start_n = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(rd->auto_spin_start));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1717 padding = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(rd->auto_spin_pad));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1718
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1719 store = gtk_tree_view_get_model(GTK_TREE_VIEW(rd->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1720
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1721 /* first check for name conflicts */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1722 success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1723 n = start_n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1724 valid = gtk_tree_model_get_iter_first(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1725 while (valid && success)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1726 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1727 gchar *dest;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1728 gchar *base;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1729 gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1730
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1731 gtk_tree_model_get(store, &iter, RENAME_COLUMN_PATH, &path, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1732
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1733 base = remove_level_from_path(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1734 dest = g_strdup_printf("%s/%s%0*d%s", base, front, padding, n, end);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1735 if (isname(dest)) success = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1736 g_free(dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1737 g_free(base);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1738 g_free(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1739
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1740 n++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1741 valid = gtk_tree_model_iter_next(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1742 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1743
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1744 if (!success)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1745 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1746 file_util_warning_dialog(_("Auto rename"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1747 _("Can not auto rename with the selected\nnumber set, one or more files exist that\nmatch the resulting name list.\n"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1748 GTK_STOCK_DIALOG_WARNING, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1749 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1750 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1751
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1752 /* select the first iter, so that on fail the correct info is given to user */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1753 if (gtk_tree_model_get_iter_first(store, &iter))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1754 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1755 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1756
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1757 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(rd->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1758 gtk_tree_selection_select_iter(selection, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1759 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1760
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1761 /* now do it for real */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1762 success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1763 n = start_n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1764 while (success && gtk_tree_model_get_iter_first(store, &iter))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1765 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1766 gchar *dest;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1767 gchar *base;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1768 gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1769
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1770 gtk_tree_model_get(store, &iter, RENAME_COLUMN_PATH, &path, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1771
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1772 base = remove_level_from_path(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1773 dest = g_strdup_printf("%s/%s%0*d%s", base, front, padding, n, end);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1774 if (!rename_file(path, dest))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1775 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1776 success = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1777 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1778 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1779 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1780 file_maint_renamed(path, dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1781 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1782
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1783 g_free(dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1784 g_free(base);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1785 g_free(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1786
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1787 if (success)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1788 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1789 gtk_list_store_remove(GTK_LIST_STORE(store), &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1790 if (gtk_tree_model_get_iter_first(store, &iter))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1791 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1792 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1793
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1794 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(rd->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1795 gtk_tree_selection_select_iter(selection, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1796 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1797 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1798
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1799 n++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1800 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1801
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1802 if (!success)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1803 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1804 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1805
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1806 n--;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1807 gtk_spin_button_set_value(GTK_SPIN_BUTTON(rd->auto_spin_start), (float)n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1808
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1809 buf = g_strdup_printf(_("Failed to rename\n%s\nThe number was %d."), filename_from_path(rd->fd->source_path), n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1810 file_util_warning_dialog(_("Auto rename"), buf, GTK_STOCK_DIALOG_ERROR, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1811 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1812
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1813 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1814 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1815
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1816 file_dialog_close(rd->fd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1817 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1818
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1819 static void file_util_rename_multiple_cb(FileDialog *fd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1820 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1821 RenameDataMult *rd = data;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1822 gchar *base;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1823 const gchar *name;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1824
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1825 if (rd->rename_auto)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1826 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1827 file_util_rename_multiple_auto(rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1828 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1829 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1830
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1831 name = gtk_entry_get_text(GTK_ENTRY(rd->rename_entry));
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1832 base = remove_level_from_path(fd->source_path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1833
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1834 g_free(fd->dest_path);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1835 fd->dest_path = concat_dir_and_file(base, name);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1836 g_free(base);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1837
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1838 if (strlen(name) == 0 || strcmp(fd->source_path, fd->dest_path) == 0)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1839 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1840 return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1841 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1842
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1843 fd->type = FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1844 file_util_rename_multiple(rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1845 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1846
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1847 static void file_util_rename_multiple_close_cb(FileDialog *fd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1848 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1849 RenameDataMult *rd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1850
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1851 file_dialog_close(rd->fd);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1852 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1853
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1854 static gboolean file_util_rename_multiple_select_cb(GtkTreeSelection *selection, GtkTreeModel *store, GtkTreePath *tpath,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1855 gboolean path_currently_selected, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1856 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1857 RenameDataMult *rd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1858 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1859 const gchar *name;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1860 gchar *path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1861
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1862 if (path_currently_selected ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1863 !gtk_tree_model_get_iter(store, &iter, tpath)) return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1864 gtk_tree_model_get(store, &iter, RENAME_COLUMN_PATH, &path, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1865
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1866 g_free(rd->fd->source_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1867 rd->fd->source_path = path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1868
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1869 name = filename_from_path(rd->fd->source_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1870 gtk_label_set_text(GTK_LABEL(rd->rename_label), name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1871 gtk_entry_set_text(GTK_ENTRY(rd->rename_entry), name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1872
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1873 image_change_path(rd->imd, rd->fd->source_path, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1874
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1875 if (GTK_WIDGET_VISIBLE(rd->rename_box))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1876 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1877 gtk_widget_grab_focus(rd->rename_entry);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1878 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1879
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1880 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1881 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1882
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1883 static void file_util_rename_multiple_preview_update(RenameDataMult *rd)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1884 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1885 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1886 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1887 const gchar *front;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1888 const gchar *end;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1889 gint valid;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1890 gint start_n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1891 gint padding;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1892 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1893
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1894 front = gtk_entry_get_text(GTK_ENTRY(rd->auto_entry_front));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1895 end = gtk_entry_get_text(GTK_ENTRY(rd->auto_entry_end));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1896 start_n = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(rd->auto_spin_start));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1897 padding = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(rd->auto_spin_pad));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1898
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1899 store = gtk_tree_view_get_model(GTK_TREE_VIEW(rd->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1900 n = start_n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1901 valid = gtk_tree_model_get_iter_first(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1902 while (valid)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1903 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1904 gchar *dest;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1905
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1906 dest = g_strdup_printf("%s%0*d%s", front, padding, n, end);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1907 gtk_list_store_set(GTK_LIST_STORE(store), &iter, RENAME_COLUMN_PREVIEW, dest, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1908 g_free(dest);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1909
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1910 n++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1911 valid = gtk_tree_model_iter_next(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1912 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1913
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1914 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1915
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1916 static gboolean file_util_rename_multiple_idle_cb(gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1917 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1918 RenameDataMult *rd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1919
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1920 file_util_rename_multiple_preview_update(rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1921
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1922 rd->update_idle_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1923 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1924 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1925
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1926 static void file_util_rename_multiple_preview_order_cb(GtkTreeModel *treemodel, GtkTreePath *tpath,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1927 GtkTreeIter *iter, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1928 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1929 RenameDataMult *rd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1930
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1931 if (rd->rename_auto && rd->update_idle_id == -1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1932 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1933 rd->update_idle_id = g_idle_add(file_util_rename_multiple_idle_cb, rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1934 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1935 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1936
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1937 static void file_util_rename_multiple_preview_entry_cb(GtkWidget *entry, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1938 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1939 RenameDataMult *rd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1940 file_util_rename_multiple_preview_update(rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1941 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1942
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1943 static void file_util_rename_multiple_preview_adj_cb(GtkWidget *spin, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1944 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1945 RenameDataMult *rd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1946 file_util_rename_multiple_preview_update(rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1947 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1948
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1949 static void file_util_rename_mulitple_auto_toggle(GtkWidget *widget, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1950 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1951 RenameDataMult *rd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1952 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1953
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1954 rd->rename_auto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(rd->button_auto));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1955
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1956 if (rd->rename_auto)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1957 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1958 if (GTK_WIDGET_VISIBLE(rd->rename_box)) gtk_widget_hide(rd->rename_box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1959 if (!GTK_WIDGET_VISIBLE(rd->auto_box)) gtk_widget_show(rd->auto_box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1960 file_util_rename_multiple_preview_update(rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1961 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1962 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1963 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1964 if (GTK_WIDGET_VISIBLE(rd->auto_box)) gtk_widget_hide(rd->auto_box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1965 if (!GTK_WIDGET_VISIBLE(rd->rename_box)) gtk_widget_show(rd->rename_box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1966 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1967
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1968 column = gtk_tree_view_get_column(GTK_TREE_VIEW(rd->listview), RENAME_COLUMN_PREVIEW - 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1969 gtk_tree_view_column_set_visible(column, rd->rename_auto);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1970 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1971
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1972 static GtkWidget *furm_simple_vlabel(GtkWidget *box, const gchar *text, gint expand)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1973 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1974 GtkWidget *vbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1975 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1976
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1977 vbox = gtk_vbox_new(FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1978 gtk_box_pack_start(GTK_BOX(box), vbox, expand, expand, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1979 gtk_widget_show(vbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1980
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1981 label = gtk_label_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1982 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1983 gtk_widget_show(label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1984
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1985 return vbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1986 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1987
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1988 static GtkTreeViewColumn *file_util_rename_multiple_add_column(RenameDataMult *rd, const gchar *text, gint n)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1989 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1990 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1991 GtkCellRenderer *renderer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1992
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1993 column = gtk_tree_view_column_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1994 gtk_tree_view_column_set_title(column, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1995 gtk_tree_view_column_set_min_width(column, 4);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1996 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1997 renderer = gtk_cell_renderer_text_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1998 gtk_tree_view_column_pack_start(column, renderer, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1999 gtk_tree_view_column_add_attribute(column, renderer, "text", n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2000 gtk_tree_view_append_column(GTK_TREE_VIEW(rd->listview), column);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2001
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2002 return column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2003 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2004
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2005 static void file_util_rename_multiple_destroy_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2006 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2007 RenameDataMult *rd = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2008
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2009 if (rd->update_idle_id != -1) g_source_remove(rd->update_idle_id);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2010
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2011 g_free(rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2012 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2013
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2014 static void file_util_rename_multiple_do(GList *source_list, GtkWidget *parent)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2015 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2016 RenameDataMult *rd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2017 GtkWidget *pane;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2018 GtkWidget *scrolled;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2019 GtkListStore *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2020 GtkTreeSelection *selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2021 GtkTreeViewColumn *column;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2022 GtkWidget *hbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2023 GtkWidget *vbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2024 GtkWidget *box2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2025 GtkWidget *table;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2026 GtkWidget *combo;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2027 GList *work;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2028
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2029 rd = g_new0(RenameDataMult, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2030
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2031 rd->fd = file_util_file_dlg(_("Rename - GQview"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2032 "GQview", "dlg_rename", parent,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2033 file_util_rename_multiple_close_cb, rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2034 generic_dialog_add_message(GENERIC_DIALOG(rd->fd), NULL, _("Rename multiple files"), NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2035 file_dialog_add_button(rd->fd, GTK_STOCK_OK, _("_Rename"), file_util_rename_multiple_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2036
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2037 rd->fd->source_path = g_strdup(source_list->data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2038 rd->fd->dest_path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2039
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2040 rd->update_idle_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2041
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2042 vbox = GENERIC_DIALOG(rd->fd)->vbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2043
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2044 pane = gtk_hpaned_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2045 gtk_box_pack_start(GTK_BOX(vbox), pane, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2046 gtk_widget_show(pane);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2047
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2048 scrolled = gtk_scrolled_window_new(NULL, NULL);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2049 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2050 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2051 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2052 gtk_paned_pack1(GTK_PANED(pane), scrolled, TRUE, TRUE);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2053 gtk_widget_show(scrolled);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2054
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2055 store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2056 rd->listview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2057 g_object_unref(store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2058
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2059 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(rd->listview), TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2060 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(rd->listview), FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2061
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2062 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(rd->listview));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2063 gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_SINGLE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2064 gtk_tree_selection_set_select_function(selection, file_util_rename_multiple_select_cb, rd, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2065
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2066 file_util_rename_multiple_add_column(rd, _("Original Name"), RENAME_COLUMN_NAME);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2067 column = file_util_rename_multiple_add_column(rd, _("Preview"), RENAME_COLUMN_PREVIEW);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2068 gtk_tree_view_column_set_visible(column, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2069
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2070 gtk_tree_view_set_reorderable(GTK_TREE_VIEW(rd->listview), TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2071 g_signal_connect(G_OBJECT(store), "row_changed",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2072 G_CALLBACK(file_util_rename_multiple_preview_order_cb), rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2073 gtk_widget_set_size_request(rd->listview, 250, 150);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2074
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2075 gtk_container_add(GTK_CONTAINER(scrolled), rd->listview);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2076 gtk_widget_show(rd->listview);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2077
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2078 work = source_list;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2079 while (work)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2080 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2081 gchar *path = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2082 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2083
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2084 gtk_list_store_append(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2085 gtk_list_store_set(store, &iter, RENAME_COLUMN_PATH, path, RENAME_COLUMN_NAME, filename_from_path(path), -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2086
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2087 work = work->next;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2088 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2089
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2090 path_list_free(source_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2091
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2092 rd->imd = image_new(TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2093 gtk_widget_set_size_request(rd->imd->widget, DIALOG_DEF_IMAGE_DIM_X, DIALOG_DEF_IMAGE_DIM_Y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2094 gtk_paned_pack2(GTK_PANED(pane), rd->imd->widget, FALSE, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2095 gtk_widget_show(rd->imd->widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2096
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2097 hbox = gtk_hbox_new(FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2098 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2099 gtk_widget_show(hbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2100
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2101 rd->button_auto = gtk_check_button_new_with_label(_("Auto rename"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2102 g_signal_connect(G_OBJECT(rd->button_auto), "clicked",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2103 G_CALLBACK(file_util_rename_mulitple_auto_toggle), rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2104 gtk_box_pack_end(GTK_BOX(hbox), rd->button_auto, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2105 gtk_widget_show(rd->button_auto);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2106
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2107 rd->rename_box = pref_box_new(vbox, FALSE, GTK_ORIENTATION_VERTICAL, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2108 table = pref_table_new(rd->rename_box, 2, 2, FALSE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2109
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2110 pref_table_label(table, 0, 0, _("Original name:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2111 rd->rename_label = pref_table_label(table, 1, 0, filename_from_path(rd->fd->source_path), 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2112
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2113 pref_table_label(table, 0, 1, _("New name:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2114
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2115 rd->rename_entry = gtk_entry_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2116 gtk_entry_set_text(GTK_ENTRY(rd->rename_entry), filename_from_path(rd->fd->source_path));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2117 gtk_table_attach(GTK_TABLE(table), rd->rename_entry, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, FALSE, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2118 generic_dialog_attach_default(GENERIC_DIALOG(rd->fd), rd->rename_entry);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2119 gtk_widget_grab_focus(rd->rename_entry);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2120 gtk_widget_show(rd->rename_entry);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2121
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2122 rd->auto_box = gtk_vbox_new(FALSE, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2123 gtk_box_pack_start(GTK_BOX(vbox), rd->auto_box, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2124 /* do not show it here */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2125
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2126 hbox = pref_box_new(rd->auto_box, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2127
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2128 box2 = furm_simple_vlabel(hbox, _("Begin text"), TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2129
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2130 combo = history_combo_new(&rd->auto_entry_front, "", "numerical_rename_prefix", -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2131 g_signal_connect(G_OBJECT(rd->auto_entry_front), "changed",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2132 G_CALLBACK(file_util_rename_multiple_preview_entry_cb), rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2133 gtk_box_pack_start(GTK_BOX(box2), combo, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2134 gtk_widget_show(combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2135
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2136 box2 = furm_simple_vlabel(hbox, _("Start #"), FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2137
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2138 rd->auto_spin_start = pref_spin_new(box2, NULL, NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2139 0.0, 1000000.0, 1.0, 0, 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2140 G_CALLBACK(file_util_rename_multiple_preview_adj_cb), rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2141
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2142 box2 = furm_simple_vlabel(hbox, _("End text"), TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2143
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2144 combo = history_combo_new(&rd->auto_entry_end, "", "numerical_rename_suffix", -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2145 g_signal_connect(G_OBJECT(rd->auto_entry_end), "changed",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2146 G_CALLBACK(file_util_rename_multiple_preview_entry_cb), rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2147 gtk_box_pack_start(GTK_BOX(box2), combo, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2148 gtk_widget_show(combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2149
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2150 rd->auto_spin_pad = pref_spin_new(rd->auto_box, _("Padding:"), NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2151 1.0, 8.0, 1.0, 0, 1.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2152 G_CALLBACK(file_util_rename_multiple_preview_adj_cb), rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2153
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2154 image_change_path(rd->imd, rd->fd->source_path, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2155
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2156 g_signal_connect(G_OBJECT(GENERIC_DIALOG(rd->fd)->dialog), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2157 G_CALLBACK(file_util_rename_multiple_destroy_cb), rd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2158
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2159 gtk_widget_show(GENERIC_DIALOG(rd->fd)->dialog);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2160 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2161
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2162 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2163 * rename single file
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2164 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2165
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2166 static void file_util_rename_single(FileDataSingle *fds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2167
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2168 static void file_util_rename_single_ok_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2169 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2170 FileDataSingle *fds = data;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2171 fds->confirmed = TRUE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2172 file_util_rename_single(fds);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2173 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2174
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2175 static void file_util_rename_single_cancel_cb(GenericDialog *gd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2176 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2177 FileDataSingle *fds = data;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2178 file_data_single_free(fds);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2179 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2180
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2181 static void file_util_rename_single(FileDataSingle *fds)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2182 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2183 if (isfile(fds->dest) && !fds->confirmed)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2184 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2185 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2186
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2187 gd = file_util_gen_dlg(_("Overwrite file"), "GQview", "dlg_confirm",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2188 NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2189 file_util_rename_single_cancel_cb, fds);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2190
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2191 generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2192 _("Overwrite file?"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2193 _("Replace existing file by renaming new file."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2194 pref_spacer(gd->vbox, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2195
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2196 generic_dialog_add_button(gd, GTK_STOCK_OK, _("_Overwrite"), file_util_rename_single_ok_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2197 generic_dialog_add_image(gd, fds->dest, _("Existing file"), fds->source, _("New file"), TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2198
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2199 gtk_widget_show(gd->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2200
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2201 return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2202 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2203 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2204 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2205 if (!rename_file(fds->source, fds->dest))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2206 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2207 gchar *text = g_strdup_printf(_("Unable to rename file:\n%s\nto:\n%s"), filename_from_path(fds->source), filename_from_path(fds->dest));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2208 file_util_warning_dialog(_("Error renaming file"), text, GTK_STOCK_DIALOG_ERROR, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2209 g_free(text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2210 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2211 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2212 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2213 file_maint_renamed(fds->source, fds->dest);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2214 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2215 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2216 file_data_single_free(fds);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2217 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2218
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2219 static void file_util_rename_single_cb(FileDialog *fd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2220 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2221 const gchar *name;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2222 gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2223
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2224 name = gtk_entry_get_text(GTK_ENTRY(fd->entry));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2225 path = concat_dir_and_file(fd->dest_path, name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2226
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2227 if (strlen(name) == 0 || strcmp(fd->source_path, path) == 0)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2228 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2229 g_free(path);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2230 return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2231 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2232
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2233 file_util_rename_single(file_data_single_new(fd->source_path, path, fd->type));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2234
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2235 g_free(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2236 file_dialog_close(fd);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2237 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2238
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2239 static void file_util_rename_single_close_cb(FileDialog *fd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2240 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2241 file_dialog_close(fd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2242 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2243
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2244 static void file_util_rename_single_do(const gchar *source_path, GtkWidget *parent)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2245 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2246 FileDialog *fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2247 GtkWidget *table;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2248
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2249 fd = file_util_file_dlg(_("Rename - GQview"), "GQview", "dlg_rename", parent,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2250 file_util_rename_single_close_cb, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2251
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2252 generic_dialog_add_message(GENERIC_DIALOG(fd), NULL, _("Rename file"), NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2253 generic_dialog_add_image(GENERIC_DIALOG(fd), source_path, NULL, NULL, NULL, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2254
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2255 file_dialog_add_button(fd, GTK_STOCK_OK, _("_Rename"), file_util_rename_single_cb, TRUE);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2256
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2257 fd->source_path = g_strdup(source_path);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2258 fd->dest_path = remove_level_from_path(source_path);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2259
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2260 table = pref_table_new(GENERIC_DIALOG(fd)->vbox, 2, 2, FALSE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2261
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2262 pref_table_label(table, 0, 0, _("Original name:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2263 pref_table_label(table, 1, 0, filename_from_path(fd->source_path), 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2264
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2265 pref_table_label(table, 0, 1, _("New name:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2266
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2267 fd->entry = gtk_entry_new();
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2268 gtk_table_attach(GTK_TABLE(table), fd->entry, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, FALSE, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2269 gtk_entry_set_text(GTK_ENTRY(fd->entry), filename_from_path(fd->source_path));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2270 gtk_editable_select_region(GTK_EDITABLE(fd->entry), 0, strlen(gtk_entry_get_text(GTK_ENTRY(fd->entry))));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2271 generic_dialog_attach_default(GENERIC_DIALOG(fd), fd->entry);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2272 gtk_widget_grab_focus(fd->entry);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2273 gtk_widget_show(fd->entry);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2274
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2275 gtk_widget_show(GENERIC_DIALOG(fd)->dialog);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2276 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2277
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2278 void file_util_rename(const gchar *source_path, GList *source_list, GtkWidget *parent)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2279 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2280 if (!source_path && !source_list) return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2281
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2282 if (source_path)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2283 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2284 file_util_rename_single_do(source_path, parent);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2285 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2286 else if (!source_list->next)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2287 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2288 file_util_rename_single_do(source_list->data, parent);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2289 path_list_free(source_list);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2290 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2291 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2292 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2293 file_util_rename_multiple_do(source_list, parent);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2294 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2295 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2296
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2297 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2298 *--------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2299 * Create directory routines
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2300 *--------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2301 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2302
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2303 static void file_util_create_dir_do(const gchar *base, const gchar *name)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2304 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2305 gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2306
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2307 path = concat_dir_and_file(base, name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2308
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2309 if (isdir(path))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2310 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2311 gchar *text = g_strdup_printf(_("The folder:\n%s\nalready exists."), name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2312 file_util_warning_dialog(_("Folder exists"), text, GTK_STOCK_DIALOG_INFO, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2313 g_free(text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2314 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2315 else if (isname(path))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2316 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2317 gchar *text = g_strdup_printf(_("The path:\n%s\nalready exists as a file."), name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2318 file_util_warning_dialog(_("Could not create folder"), text, GTK_STOCK_DIALOG_INFO, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2319 g_free(text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2320 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2321 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2322 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2323 if (!mkdir_utf8(path, 0755))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2324 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2325 gchar *text = g_strdup_printf(_("Unable to create folder:\n%s"), name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2326 file_util_warning_dialog(_("Error creating folder"), text, GTK_STOCK_DIALOG_ERROR, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2327 g_free(text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2328 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2329 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2330
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2331 g_free(path);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2332 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2333
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2334 static void file_util_create_dir_cb(FileDialog *fd, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2335 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2336 const gchar *name;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2337
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2338 name = gtk_entry_get_text(GTK_ENTRY(fd->entry));
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2339
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2340 if (strlen(name) == 0) return;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2341
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2342 if (name[0] == '/')
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2343 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2344 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2345 buf = remove_level_from_path(name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2346 file_util_create_dir_do(buf, filename_from_path(name));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2347 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2348 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2349 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2350 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2351 file_util_create_dir_do(fd->dest_path, name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2352 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2353
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2354 file_dialog_close(fd);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2355 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2356
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2357 static void file_util_create_dir_close_cb(FileDialog *fd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2358 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2359 file_dialog_close(fd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2360 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2361
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2362 void file_util_create_dir(const gchar *path, GtkWidget *parent)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2363 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2364 FileDialog *fd;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2365 gchar *text;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2366
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2367 if (!isdir(path)) return;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2368
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2369 fd = file_util_file_dlg(_("New folder - GQview"), "GQview", "dlg_newdir", parent,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2370 file_util_create_dir_close_cb, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2371
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2372 text = g_strdup_printf(_("Create folder in:\n%s\nnamed:"), path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2373 generic_dialog_add_message(GENERIC_DIALOG(fd), NULL, NULL, text);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2374 g_free(text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2375
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2376 file_dialog_add_button(fd, GTK_STOCK_OK, NULL, file_util_create_dir_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2377
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2378 fd->dest_path = g_strdup(path);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2379
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2380 fd->entry = gtk_entry_new();
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2381 gtk_box_pack_start(GTK_BOX(GENERIC_DIALOG(fd)->vbox), fd->entry, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2382 generic_dialog_attach_default(GENERIC_DIALOG(fd), fd->entry);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2383 gtk_widget_grab_focus(fd->entry);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2384 gtk_widget_show(fd->entry);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2385
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2386 gtk_widget_show(GENERIC_DIALOG(fd)->dialog);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2387 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2388