Mercurial > hg > forks > geeqie
annotate src/main.c @ 2221:59b559f747a7 ke-lua
Merge branch 'master' into ke-lua
* master: (185 commits)
better fix for big-endian architectures
Minor indentation fixes.
Cleanup checker shader code.
Fix exif orientation in clutter rendering mode.
Silent 2 warnings using explicit type casting.
Polish translation was updated, thanks to Grzegorz Gibas.
Update pt_BR translation.
Add *~, *.rej, *.orig files to git ignore list.
Fix for support >=automake-1.11.4
Trim trailing white spaces on empty lines.
Trim trailing white spaces.
Add missing vim modeline.
Fix indentation and few trailing white spaces.
Clear few more warnings, unused variables mostly.
Drop unused variable.
Remove commented out code.
Remove commented out code.
Remove commented out code.
Remove commented out code.
Remove commented out code.
...
author | Klaus Ethgen <Klaus@Ethgen.de> |
---|---|
date | Tue, 02 Oct 2012 22:19:13 +0100 |
parents | 58cd15125b23 c14a1d8e6aa4 |
children | 5a9bdebb109f |
rev | line source |
---|---|
1 | 1 /* |
196
bdad1cacadf4
rename GQview -> Geeqie over the code
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
195
diff
changeset
|
2 * Geeqie |
79
5c92448632fa
Thu Oct 19 07:23:37 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
76
diff
changeset
|
3 * (C) 2006 John Ellis |
2021
26dfd7a4d130
updated version and copyright notice
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2013
diff
changeset
|
4 * Copyright (C) 2008 - 2012 The Geeqie Team |
1 | 5 * |
6 * Author: John Ellis | |
7 * | |
9 | 8 * This software is released under the GNU General Public License (GNU GPL). |
9 * Please read the included file COPYING for more information. | |
10 * This software comes with no warranty of any kind, use at your own risk! | |
1 | 11 */ |
12 | |
1711
dd4b55bac412
Some systems (BSD,MacOsX,HP-UX,...) define MAP_ANON and not MAP_ANONYMOUS. Make each an alias of other to be sure. issue reported by Martin Proetzsch.
Laurent Monin <geeqie@norz.org>
parents:
1640
diff
changeset
|
13 #include <gdk/gdkkeysyms.h> /* for keyboard values */ |
dd4b55bac412
Some systems (BSD,MacOsX,HP-UX,...) define MAP_ANON and not MAP_ANONYMOUS. Make each an alias of other to be sure. issue reported by Martin Proetzsch.
Laurent Monin <geeqie@norz.org>
parents:
1640
diff
changeset
|
14 |
dd4b55bac412
Some systems (BSD,MacOsX,HP-UX,...) define MAP_ANON and not MAP_ANONYMOUS. Make each an alias of other to be sure. issue reported by Martin Proetzsch.
Laurent Monin <geeqie@norz.org>
parents:
1640
diff
changeset
|
15 #include <signal.h> |
dd4b55bac412
Some systems (BSD,MacOsX,HP-UX,...) define MAP_ANON and not MAP_ANONYMOUS. Make each an alias of other to be sure. issue reported by Martin Proetzsch.
Laurent Monin <geeqie@norz.org>
parents:
1640
diff
changeset
|
16 #include <sys/mman.h> |
dd4b55bac412
Some systems (BSD,MacOsX,HP-UX,...) define MAP_ANON and not MAP_ANONYMOUS. Make each an alias of other to be sure. issue reported by Martin Proetzsch.
Laurent Monin <geeqie@norz.org>
parents:
1640
diff
changeset
|
17 |
dd4b55bac412
Some systems (BSD,MacOsX,HP-UX,...) define MAP_ANON and not MAP_ANONYMOUS. Make each an alias of other to be sure. issue reported by Martin Proetzsch.
Laurent Monin <geeqie@norz.org>
parents:
1640
diff
changeset
|
18 #include <math.h> |
dd4b55bac412
Some systems (BSD,MacOsX,HP-UX,...) define MAP_ANON and not MAP_ANONYMOUS. Make each an alias of other to be sure. issue reported by Martin Proetzsch.
Laurent Monin <geeqie@norz.org>
parents:
1640
diff
changeset
|
19 #ifdef G_OS_UNIX |
dd4b55bac412
Some systems (BSD,MacOsX,HP-UX,...) define MAP_ANON and not MAP_ANONYMOUS. Make each an alias of other to be sure. issue reported by Martin Proetzsch.
Laurent Monin <geeqie@norz.org>
parents:
1640
diff
changeset
|
20 #include <pwd.h> |
dd4b55bac412
Some systems (BSD,MacOsX,HP-UX,...) define MAP_ANON and not MAP_ANONYMOUS. Make each an alias of other to be sure. issue reported by Martin Proetzsch.
Laurent Monin <geeqie@norz.org>
parents:
1640
diff
changeset
|
21 #endif |
2035
4321c486aec7
use cairo for drawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2034
diff
changeset
|
22 #include <locale.h> |
9 | 23 |
281 | 24 #include "main.h" |
9 | 25 |
26 #include "cache.h" | |
27 #include "collect.h" | |
28 #include "collect-io.h" | |
586
122fc2223b42
split filelist.c to filefilter.c and filedata.c
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
576
diff
changeset
|
29 #include "filedata.h" |
122fc2223b42
split filelist.c to filefilter.c and filedata.c
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
576
diff
changeset
|
30 #include "filefilter.h" |
902
ee3a7b7dbc33
Move history_list_*() functions to separate files:
Laurent Monin <geeqie@norz.org>
parents:
877
diff
changeset
|
31 #include "history_list.h" |
218
9ec9947e7682
Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
Laurent Monin <geeqie@norz.org>
parents:
214
diff
changeset
|
32 #include "image-overlay.h" |
9 | 33 #include "layout.h" |
34 #include "layout_image.h" | |
1736
7179fa22dc1b
load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1735
diff
changeset
|
35 #include "layout_util.h" |
1019
90fb159e5161
Move save/load_options() to options.[ch].
Laurent Monin <geeqie@norz.org>
parents:
1018
diff
changeset
|
36 #include "options.h" |
9 | 37 #include "remote.h" |
1061
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
38 #include "secure_save.h" |
9 | 39 #include "similar.h" |
40 #include "ui_fileops.h" | |
41 #include "ui_utildlg.h" | |
793
074d59c7fa2f
used new notification in cache_maint
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
786
diff
changeset
|
42 #include "cache_maint.h" |
877
e5d1fa4dc807
refresh thumbnails on file change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
840
diff
changeset
|
43 #include "thumb.h" |
1214
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1174
diff
changeset
|
44 #include "metadata.h" |
1272
661e170bf4f7
read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1266
diff
changeset
|
45 #include "editors.h" |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
46 #include "exif.h" |
1294 | 47 #include "histogram.h" |
1334
89c9db0e3258
create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1321
diff
changeset
|
48 #include "pixbuf_util.h" |
2197 | 49 #include "glua.h" |
9 | 50 |
2077
034e50486d27
added autoconf test for clutter
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2035
diff
changeset
|
51 #ifdef HAVE_CLUTTER |
1758
dba1d6eaf8ce
require libchamplain 0.4
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1736
diff
changeset
|
52 #include <clutter-gtk/clutter-gtk.h> |
1733
c47eee6c8248
Fix up compilation issues related to libchamplain.
Laurent Monin <geeqie@norz.org>
parents:
1726
diff
changeset
|
53 #endif |
c47eee6c8248
Fix up compilation issues related to libchamplain.
Laurent Monin <geeqie@norz.org>
parents:
1726
diff
changeset
|
54 |
9 | 55 |
1506
6e235e3ba076
Force thumbnails refreshing when thumbnails dimensions are modified through Preferences.
Laurent Monin <geeqie@norz.org>
parents:
1463
diff
changeset
|
56 gboolean thumb_format_changed = FALSE; |
279
70aa7725d5cf
gqview_remote -> remote_connection
Laurent Monin <geeqie@norz.org>
parents:
278
diff
changeset
|
57 static RemoteConnection *remote_connection = NULL; |
9 | 58 |
1 | 59 /* |
60 *----------------------------------------------------------------------------- | |
61 * keyboard functions | |
62 *----------------------------------------------------------------------------- | |
63 */ | |
64 | |
65 void keyboard_scroll_calc(gint *x, gint *y, GdkEventKey *event) | |
66 { | |
67 static gint delta = 0; | |
68 static guint32 time_old = 0; | |
69 static guint keyval_old = 0; | |
70 | |
9 | 71 if (event->state & GDK_CONTROL_MASK) |
72 { | |
73 if (*x < 0) *x = G_MININT / 2; | |
74 if (*x > 0) *x = G_MAXINT / 2; | |
75 if (*y < 0) *y = G_MININT / 2; | |
76 if (*y > 0) *y = G_MAXINT / 2; | |
77 | |
78 return; | |
79 } | |
80 | |
318
e8261920c720
Add a new struct ConfOptions to handle options.
Laurent Monin <geeqie@norz.org>
parents:
289
diff
changeset
|
81 if (options->progressive_key_scrolling) |
1 | 82 { |
83 guint32 time_diff; | |
84 | |
85 time_diff = event->time - time_old; | |
86 | |
87 /* key pressed within 125ms ? (1/8 second) */ | |
88 if (time_diff > 125 || event->keyval != keyval_old) delta = 0; | |
89 | |
90 time_old = event->time; | |
91 keyval_old = event->keyval; | |
92 | |
93 delta += 2; | |
94 } | |
95 else | |
96 { | |
97 delta = 8; | |
98 } | |
99 | |
100 *x = *x * delta; | |
101 *y = *y * delta; | |
102 } | |
103 | |
9 | 104 |
1 | 105 |
106 /* | |
107 *----------------------------------------------------------------------------- | |
3 | 108 * command line parser (private) hehe, who needs popt anyway? |
1 | 109 *----------------------------------------------------------------------------- |
442 | 110 */ |
1 | 111 |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
112 static void parse_command_line_add_file(const gchar *file_path, gchar **path, gchar **file, |
442 | 113 GList **list, GList **collection_list) |
1 | 114 { |
9 | 115 gchar *path_parsed; |
116 | |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
117 path_parsed = g_strdup(file_path); |
9 | 118 parse_out_relatives(path_parsed); |
119 | |
781
a47bf5b8a85b
Replace hardcoded collection filename extension by a macro (GQ_COLLECTION_EXT).
Laurent Monin <geeqie@norz.org>
parents:
780
diff
changeset
|
120 if (file_extension_match(path_parsed, GQ_COLLECTION_EXT)) |
9 | 121 { |
122 *collection_list = g_list_append(*collection_list, path_parsed); | |
123 } | |
124 else | |
125 { | |
126 if (!*path) *path = remove_level_from_path(path_parsed); | |
127 if (!*file) *file = g_strdup(path_parsed); | |
1936
ed6aa14b66c9
rename file_data_new_simple to file_data_new_group, filedata.c cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1927
diff
changeset
|
128 *list = g_list_prepend(*list, file_data_new_group(path_parsed)); |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
129 } |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
130 } |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
131 |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
132 static void parse_command_line_add_dir(const gchar *dir, gchar **path, gchar **file, |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
133 GList **list) |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
134 { |
1764
867e863105a4
ignored multiple directories specified on commandline
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1758
diff
changeset
|
135 #if 0 |
867e863105a4
ignored multiple directories specified on commandline
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1758
diff
changeset
|
136 /* This is broken because file filter is not initialized yet. |
867e863105a4
ignored multiple directories specified on commandline
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1758
diff
changeset
|
137 */ |
780
f5dc8c7d6a5a
Drop initialization to NULL since filelist_read() will take care of it.
Laurent Monin <geeqie@norz.org>
parents:
767
diff
changeset
|
138 GList *files; |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
139 gchar *path_parsed; |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
782
diff
changeset
|
140 FileData *dir_fd; |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
141 |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
142 path_parsed = g_strdup(dir); |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
143 parse_out_relatives(path_parsed); |
1927
d1a5b8633919
always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1872
diff
changeset
|
144 dir_fd = file_data_new_dir(path_parsed); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
145 |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
146 |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
782
diff
changeset
|
147 if (filelist_read(dir_fd, &files, NULL)) |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
148 { |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
149 GList *work; |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
150 |
576
47680a5f898a
dropped path_list functions, use filelist functions everywhere
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
556
diff
changeset
|
151 files = filelist_filter(files, FALSE); |
47680a5f898a
dropped path_list functions, use filelist functions everywhere
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
556
diff
changeset
|
152 files = filelist_sort_path(files); |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
153 |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
154 work = files; |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
155 while (work) |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
156 { |
576
47680a5f898a
dropped path_list functions, use filelist functions everywhere
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
556
diff
changeset
|
157 FileData *fd = work->data; |
47680a5f898a
dropped path_list functions, use filelist functions everywhere
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
556
diff
changeset
|
158 if (!*path) *path = remove_level_from_path(fd->path); |
47680a5f898a
dropped path_list functions, use filelist functions everywhere
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
556
diff
changeset
|
159 if (!*file) *file = g_strdup(fd->path); |
47680a5f898a
dropped path_list functions, use filelist functions everywhere
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
556
diff
changeset
|
160 *list = g_list_prepend(*list, fd); |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
161 |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
162 work = work->next; |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
163 } |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
164 |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
165 g_list_free(files); |
9 | 166 } |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
167 |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
168 g_free(path_parsed); |
783
0e45ed008a1c
replaced directory path with FileData* dir_fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
782
diff
changeset
|
169 file_data_unref(dir_fd); |
1764
867e863105a4
ignored multiple directories specified on commandline
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1758
diff
changeset
|
170 #else |
867e863105a4
ignored multiple directories specified on commandline
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1758
diff
changeset
|
171 DEBUG_1("multiple directories specified, ignoring: %s", dir); |
867e863105a4
ignored multiple directories specified on commandline
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1758
diff
changeset
|
172 #endif |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
173 } |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
174 |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
175 static void parse_command_line_process_dir(const gchar *dir, gchar **path, gchar **file, |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
176 GList **list, gchar **first_dir) |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
177 { |
442 | 178 |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
179 if (!*list && !*first_dir) |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
180 { |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
181 *first_dir = g_strdup(dir); |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
182 } |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
183 else |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
184 { |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
185 if (*first_dir) |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
186 { |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
187 parse_command_line_add_dir(*first_dir, path, file, list); |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
188 g_free(*first_dir); |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
189 *first_dir = NULL; |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
190 } |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
191 parse_command_line_add_dir(dir, path, file, list); |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
192 } |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
193 } |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
194 |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
195 static void parse_command_line_process_file(const gchar *file_path, gchar **path, gchar **file, |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
196 GList **list, GList **collection_list, gchar **first_dir) |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
197 { |
442 | 198 |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
199 if (*first_dir) |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
200 { |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
201 parse_command_line_add_dir(*first_dir, path, file, list); |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
202 g_free(*first_dir); |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
203 *first_dir = NULL; |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
204 } |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
205 parse_command_line_add_file(file_path, path, file, list, collection_list); |
9 | 206 } |
207 | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
208 static void parse_command_line(gint argc, gchar *argv[]) |
9 | 209 { |
210 GList *list = NULL; | |
211 GList *remote_list = NULL; | |
652
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
212 GList *remote_errors = NULL; |
1437 | 213 gboolean remote_do = FALSE; |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
214 gchar *first_dir = NULL; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
215 |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
216 command_line = g_new0(CommandLine, 1); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
217 |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
218 command_line->argc = argc; |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
219 command_line->argv = argv; |
9 | 220 |
1 | 221 if (argc > 1) |
222 { | |
223 gint i; | |
224 gchar *base_dir = get_current_dir(); | |
225 i = 1; | |
226 while (i < argc) | |
227 { | |
1507
61c25bd19236
convert commandline to utf8
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1506
diff
changeset
|
228 gchar *cmd_line = path_to_utf8(argv[i]); |
702
1350095d7b25
Drop concat_dir_and_file() and use g_build_filename() instead.
Laurent Monin <geeqie@norz.org>
parents:
694
diff
changeset
|
229 gchar *cmd_all = g_build_filename(base_dir, cmd_line, NULL); |
1 | 230 |
726
5166ed61c537
Use G_DIR_SEPARATOR where applicable.
Laurent Monin <geeqie@norz.org>
parents:
714
diff
changeset
|
231 if (cmd_line[0] == G_DIR_SEPARATOR && isdir(cmd_line)) |
1 | 232 { |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
233 parse_command_line_process_dir(cmd_line, &command_line->path, &command_line->file, &list, &first_dir); |
1 | 234 } |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
235 else if (isdir(cmd_all)) |
1 | 236 { |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
237 parse_command_line_process_dir(cmd_all, &command_line->path, &command_line->file, &list, &first_dir); |
1 | 238 } |
726
5166ed61c537
Use G_DIR_SEPARATOR where applicable.
Laurent Monin <geeqie@norz.org>
parents:
714
diff
changeset
|
239 else if (cmd_line[0] == G_DIR_SEPARATOR && isfile(cmd_line)) |
1 | 240 { |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
241 parse_command_line_process_file(cmd_line, &command_line->path, &command_line->file, |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
242 &list, &command_line->collection_list, &first_dir); |
1 | 243 } |
9 | 244 else if (isfile(cmd_all)) |
1 | 245 { |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
246 parse_command_line_process_file(cmd_all, &command_line->path, &command_line->file, |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
247 &list, &command_line->collection_list, &first_dir); |
1 | 248 } |
378
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
249 else if (strncmp(cmd_line, "--debug", 7) == 0 && (cmd_line[7] == '\0' || cmd_line[7] == '=')) |
1 | 250 { |
378
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
251 /* do nothing but do not produce warnings */ |
1 | 252 } |
253 else if (strcmp(cmd_line, "+t") == 0 || | |
3 | 254 strcmp(cmd_line, "--with-tools") == 0) |
1 | 255 { |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
256 command_line->tools_show = TRUE; |
9 | 257 |
258 remote_list = g_list_append(remote_list, "+t"); | |
1 | 259 } |
260 else if (strcmp(cmd_line, "-t") == 0 || | |
3 | 261 strcmp(cmd_line, "--without-tools") == 0) |
1 | 262 { |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
263 command_line->tools_hide = TRUE; |
9 | 264 |
265 remote_list = g_list_append(remote_list, "-t"); | |
1 | 266 } |
3 | 267 else if (strcmp(cmd_line, "-f") == 0 || |
268 strcmp(cmd_line, "--fullscreen") == 0) | |
269 { | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
270 command_line->startup_full_screen = TRUE; |
3 | 271 } |
272 else if (strcmp(cmd_line, "-s") == 0 || | |
273 strcmp(cmd_line, "--slideshow") == 0) | |
274 { | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
275 command_line->startup_in_slideshow = TRUE; |
3 | 276 } |
9 | 277 else if (strcmp(cmd_line, "-l") == 0 || |
278 strcmp(cmd_line, "--list") == 0) | |
279 { | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
280 command_line->startup_command_line_collection = TRUE; |
9 | 281 } |
81
e2c85104c1eb
Thu Oct 19 09:35:18 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
79
diff
changeset
|
282 else if (strncmp(cmd_line, "--geometry=", 11) == 0) |
e2c85104c1eb
Thu Oct 19 09:35:18 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
79
diff
changeset
|
283 { |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
284 if (!command_line->geometry) command_line->geometry = g_strdup(cmd_line + 11); |
81
e2c85104c1eb
Thu Oct 19 09:35:18 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
79
diff
changeset
|
285 } |
9 | 286 else if (strcmp(cmd_line, "-r") == 0 || |
287 strcmp(cmd_line, "--remote") == 0) | |
288 { | |
289 if (!remote_do) | |
290 { | |
291 remote_do = TRUE; | |
652
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
292 remote_list = remote_build_list(remote_list, argc - i, &argv[i], &remote_errors); |
9 | 293 } |
294 } | |
295 else if (strcmp(cmd_line, "-rh") == 0 || | |
296 strcmp(cmd_line, "--remote-help") == 0) | |
297 { | |
279
70aa7725d5cf
gqview_remote -> remote_connection
Laurent Monin <geeqie@norz.org>
parents:
278
diff
changeset
|
298 remote_help(); |
512
0896f486ec6f
Remove whitespace between function name and first parenthesis for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents:
509
diff
changeset
|
299 exit(0); |
9 | 300 } |
301 else if (strcmp(cmd_line, "--blank") == 0) | |
302 { | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
303 command_line->startup_blank = TRUE; |
9 | 304 } |
305 else if (strcmp(cmd_line, "-v") == 0 || | |
306 strcmp(cmd_line, "--version") == 0) | |
307 { | |
694
547663d27a70
Sort out log_printf() vs printf_term() mix up.
Laurent Monin <geeqie@norz.org>
parents:
687
diff
changeset
|
308 printf_term("%s %s\n", GQ_APPNAME, VERSION); |
512
0896f486ec6f
Remove whitespace between function name and first parenthesis for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents:
509
diff
changeset
|
309 exit(0); |
9 | 310 } |
311 else if (strcmp(cmd_line, "--alternate") == 0) | |
312 { | |
313 /* enable faster experimental algorithm */ | |
673
c9c2bc042e10
Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents:
671
diff
changeset
|
314 log_printf("Alternate similarity algorithm enabled\n"); |
9 | 315 image_sim_alternate_set(TRUE); |
316 } | |
3 | 317 else if (strcmp(cmd_line, "-h") == 0 || |
318 strcmp(cmd_line, "--help") == 0) | |
1 | 319 { |
694
547663d27a70
Sort out log_printf() vs printf_term() mix up.
Laurent Monin <geeqie@norz.org>
parents:
687
diff
changeset
|
320 printf_term("%s %s\n", GQ_APPNAME, VERSION); |
403
5ec4bf3224c9
Introduce printf_term() macro and use it.
Laurent Monin <geeqie@norz.org>
parents:
387
diff
changeset
|
321 printf_term(_("Usage: %s [options] [path]\n\n"), GQ_APPNAME_LC); |
9 | 322 print_term(_("valid options are:\n")); |
323 print_term(_(" +t, --with-tools force show of tools\n")); | |
324 print_term(_(" -t, --without-tools force hide of tools\n")); | |
325 print_term(_(" -f, --fullscreen start in full screen mode\n")); | |
326 print_term(_(" -s, --slideshow start in slideshow mode\n")); | |
327 print_term(_(" -l, --list open collection window for command line\n")); | |
81
e2c85104c1eb
Thu Oct 19 09:35:18 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
79
diff
changeset
|
328 print_term(_(" --geometry=GEOMETRY set main window location\n")); |
9 | 329 print_term(_(" -r, --remote send following commands to open window\n")); |
330 print_term(_(" -rh,--remote-help print remote command list\n")); | |
227
8c04a55c0229
Add a debug level spinner at the end of Preferences > Advanced.
Laurent Monin <geeqie@norz.org>
parents:
218
diff
changeset
|
331 #ifdef DEBUG |
379
5606c3363ca9
Indicate --debug[=level] in usage display.
Laurent Monin <geeqie@norz.org>
parents:
378
diff
changeset
|
332 print_term(_(" --debug[=level] turn on debug output\n")); |
227
8c04a55c0229
Add a debug level spinner at the end of Preferences > Advanced.
Laurent Monin <geeqie@norz.org>
parents:
218
diff
changeset
|
333 #endif |
9 | 334 print_term(_(" -v, --version print version info\n")); |
335 print_term(_(" -h, --help show this message\n\n")); | |
442 | 336 |
9 | 337 #if 0 |
338 /* these options are not officially supported! | |
339 * only for testing new features, no need to translate them */ | |
340 print_term( " --alternate use alternate similarity algorithm\n"); | |
341 #endif | |
442 | 342 |
512
0896f486ec6f
Remove whitespace between function name and first parenthesis for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents:
509
diff
changeset
|
343 exit(0); |
1 | 344 } |
9 | 345 else if (!remote_do) |
1 | 346 { |
403
5ec4bf3224c9
Introduce printf_term() macro and use it.
Laurent Monin <geeqie@norz.org>
parents:
387
diff
changeset
|
347 printf_term(_("invalid or ignored: %s\nUse --help for options\n"), cmd_line); |
1 | 348 } |
9 | 349 |
1 | 350 g_free(cmd_all); |
1507
61c25bd19236
convert commandline to utf8
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1506
diff
changeset
|
351 g_free(cmd_line); |
1 | 352 i++; |
353 } | |
354 g_free(base_dir); | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
355 parse_out_relatives(command_line->path); |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
356 parse_out_relatives(command_line->file); |
1 | 357 } |
9 | 358 |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
359 list = g_list_reverse(list); |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
360 |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
361 if (!command_line->path && first_dir) |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
362 { |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
363 command_line->path = first_dir; |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
364 first_dir = NULL; |
79
5c92448632fa
Thu Oct 19 07:23:37 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
76
diff
changeset
|
365 |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
366 parse_out_relatives(command_line->path); |
76
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
367 } |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
368 g_free(first_dir); |
a4278849630a
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents:
21
diff
changeset
|
369 |
9 | 370 if (remote_do) |
371 { | |
652
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
372 if (remote_errors) |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
373 { |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
374 GList *work = remote_errors; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
375 |
652
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
376 printf_term(_("Invalid or ignored remote options: ")); |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
377 while (work) |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
378 { |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
379 gchar *opt = work->data; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
380 |
652
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
381 printf_term("%s%s", (work == remote_errors) ? "" : ", ", opt); |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
382 work = work->next; |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
383 } |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
384 |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
385 printf_term(_("\nUse --remote-help for valid remote options.\n")); |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
386 } |
ecbc361c6b7f
Display a message when invalid remote options are used.
Laurent Monin <geeqie@norz.org>
parents:
649
diff
changeset
|
387 |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
388 remote_control(argv[0], remote_list, command_line->path, list, command_line->collection_list); |
9 | 389 } |
390 g_list_free(remote_list); | |
391 | |
392 if (list && list->next) | |
393 { | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
394 command_line->cmd_list = list; |
9 | 395 } |
396 else | |
397 { | |
576
47680a5f898a
dropped path_list functions, use filelist functions everywhere
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
556
diff
changeset
|
398 filelist_free(list); |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
399 command_line->cmd_list = NULL; |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
400 } |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
401 |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
402 if (command_line->startup_blank) |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
403 { |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
404 g_free(command_line->path); |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
405 command_line->path = NULL; |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
406 g_free(command_line->file); |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
407 command_line->file = NULL; |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
408 filelist_free(command_line->cmd_list); |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
409 command_line->cmd_list = NULL; |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
410 string_list_free(command_line->collection_list); |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
411 command_line->collection_list = NULL; |
9 | 412 } |
1 | 413 } |
414 | |
1000
07f6093c1c1a
For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents:
995
diff
changeset
|
415 static void parse_command_line_for_debug_option(gint argc, gchar *argv[]) |
378
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
416 { |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
417 #ifdef DEBUG |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
418 const gchar *debug_option = "--debug"; |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
419 gint len = strlen(debug_option); |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
420 |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
421 if (argc > 1) |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
422 { |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
423 gint i; |
442 | 424 |
378
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
425 for (i = 1; i < argc; i++) |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
426 { |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
427 const gchar *cmd_line = argv[i]; |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
428 if (strncmp(cmd_line, debug_option, len) == 0) |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
429 { |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
430 gint cmd_line_len = strlen(cmd_line); |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
431 |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
432 /* we now increment the debug state for verbosity */ |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
433 if (cmd_line_len == len) |
507
7408e89b601d
Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents:
506
diff
changeset
|
434 debug_level_add(1); |
378
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
435 else if (cmd_line[len] == '=' && g_ascii_isdigit(cmd_line[len+1])) |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
436 { |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
437 gint n = atoi(cmd_line + len + 1); |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
438 if (n < 0) n = 1; |
507
7408e89b601d
Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents:
506
diff
changeset
|
439 debug_level_add(n); |
378
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
440 } |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
441 } |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
442 } |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
443 } |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
444 |
507
7408e89b601d
Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents:
506
diff
changeset
|
445 DEBUG_1("debugging output enabled (level %d)", get_debug_level()); |
378
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
446 #endif |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
447 } |
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
448 |
1 | 449 /* |
450 *----------------------------------------------------------------------------- | |
451 * startup, init, and exit | |
452 *----------------------------------------------------------------------------- | |
442 | 453 */ |
1 | 454 |
9 | 455 #define RC_HISTORY_NAME "history" |
456 | |
1640
0c3ee4176c00
do not install helper scripts into /usr/bin
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1620
diff
changeset
|
457 static void setup_env_path(void) |
0c3ee4176c00
do not install helper scripts into /usr/bin
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1620
diff
changeset
|
458 { |
0c3ee4176c00
do not install helper scripts into /usr/bin
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1620
diff
changeset
|
459 const gchar *old_path = g_getenv("PATH"); |
0c3ee4176c00
do not install helper scripts into /usr/bin
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1620
diff
changeset
|
460 gchar *path = g_strconcat(GQ_BIN_DIR, ":", old_path, NULL); |
0c3ee4176c00
do not install helper scripts into /usr/bin
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1620
diff
changeset
|
461 g_setenv("PATH", path, TRUE); |
0c3ee4176c00
do not install helper scripts into /usr/bin
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1620
diff
changeset
|
462 g_free(path); |
0c3ee4176c00
do not install helper scripts into /usr/bin
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1620
diff
changeset
|
463 } |
0c3ee4176c00
do not install helper scripts into /usr/bin
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1620
diff
changeset
|
464 |
9 | 465 static void keys_load(void) |
466 { | |
467 gchar *path; | |
468 | |
1145
94adf34fe826
Use functions to return directories instead of constants.
Laurent Monin <geeqie@norz.org>
parents:
1089
diff
changeset
|
469 path = g_build_filename(get_rc_dir(), RC_HISTORY_NAME, NULL); |
9 | 470 history_list_load(path); |
471 g_free(path); | |
472 } | |
473 | |
474 static void keys_save(void) | |
475 { | |
476 gchar *path; | |
477 | |
1145
94adf34fe826
Use functions to return directories instead of constants.
Laurent Monin <geeqie@norz.org>
parents:
1089
diff
changeset
|
478 path = g_build_filename(get_rc_dir(), RC_HISTORY_NAME, NULL); |
9 | 479 history_list_save(path); |
480 g_free(path); | |
481 } | |
482 | |
1146
7ff2f0c1ddc5
Rename check_for_home_path() to mkdir_if_not_exists().
Laurent Monin <geeqie@norz.org>
parents:
1145
diff
changeset
|
483 static void mkdir_if_not_exists(const gchar *path) |
1 | 484 { |
1145
94adf34fe826
Use functions to return directories instead of constants.
Laurent Monin <geeqie@norz.org>
parents:
1089
diff
changeset
|
485 if (isdir(path)) return; |
9 | 486 |
1145
94adf34fe826
Use functions to return directories instead of constants.
Laurent Monin <geeqie@norz.org>
parents:
1089
diff
changeset
|
487 log_printf(_("Creating %s dir:%s\n"), GQ_APPNAME, path); |
94adf34fe826
Use functions to return directories instead of constants.
Laurent Monin <geeqie@norz.org>
parents:
1089
diff
changeset
|
488 |
1148
db3cdb2b9681
Replace cache_ensure_dir_exists() by new recursive_mkdir_if_not_exists().
Laurent Monin <geeqie@norz.org>
parents:
1146
diff
changeset
|
489 if (!recursive_mkdir_if_not_exists(path, 0755)) |
9 | 490 { |
1145
94adf34fe826
Use functions to return directories instead of constants.
Laurent Monin <geeqie@norz.org>
parents:
1089
diff
changeset
|
491 log_printf(_("Could not create dir:%s\n"), path); |
9 | 492 } |
493 } | |
494 | |
1061
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
495 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
496 /* We add to duplicate and modify gtk_accel_map_print() and gtk_accel_map_save() |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
497 * to improve the reliability in special cases (especially when disk is full) |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
498 * These functions are now using secure saving stuff. |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
499 */ |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
500 static void gq_accel_map_print( |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
501 gpointer data, |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
502 const gchar *accel_path, |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
503 guint accel_key, |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
504 GdkModifierType accel_mods, |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
505 gboolean changed) |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
506 { |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
507 GString *gstring = g_string_new(changed ? NULL : "; "); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
508 SecureSaveInfo *ssi = data; |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
509 gchar *tmp, *name; |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
510 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
511 g_string_append(gstring, "(gtk_accel_path \""); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
512 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
513 tmp = g_strescape(accel_path, NULL); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
514 g_string_append(gstring, tmp); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
515 g_free(tmp); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
516 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
517 g_string_append(gstring, "\" \""); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
518 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
519 name = gtk_accelerator_name(accel_key, accel_mods); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
520 tmp = g_strescape(name, NULL); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
521 g_free(name); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
522 g_string_append(gstring, tmp); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
523 g_free(tmp); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
524 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
525 g_string_append(gstring, "\")\n"); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
526 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
527 secure_fwrite(gstring->str, sizeof(*gstring->str), gstring->len, ssi); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
528 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
529 g_string_free(gstring, TRUE); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
530 } |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
531 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
532 static gboolean gq_accel_map_save(const gchar *path) |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
533 { |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
534 gchar *pathl; |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
535 SecureSaveInfo *ssi; |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
536 GString *gstring; |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
537 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
538 pathl = path_from_utf8(path); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
539 ssi = secure_open(pathl); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
540 g_free(pathl); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
541 if (!ssi) |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
542 { |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
543 log_printf(_("error saving file: %s\n"), path); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
544 return FALSE; |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
545 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
546 |
1061
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
547 gstring = g_string_new("; "); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
548 if (g_get_prgname()) |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
549 g_string_append(gstring, g_get_prgname()); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
550 g_string_append(gstring, " GtkAccelMap rc-file -*- scheme -*-\n"); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
551 g_string_append(gstring, "; this file is an automated accelerator map dump\n"); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
552 g_string_append(gstring, ";\n"); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
553 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
554 secure_fwrite(gstring->str, sizeof(*gstring->str), gstring->len, ssi); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
555 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
556 g_string_free(gstring, TRUE); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
557 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
558 gtk_accel_map_foreach((gpointer) ssi, gq_accel_map_print); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
559 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
560 if (secure_close(ssi)) |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
561 { |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
562 log_printf(_("error saving file: %s\nerror: %s\n"), path, |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
563 secsave_strerror(secsave_errno)); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
564 return FALSE; |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
565 } |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
566 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
567 return TRUE; |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
568 } |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
569 |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
570 static gchar *accep_map_filename(void) |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
571 { |
1145
94adf34fe826
Use functions to return directories instead of constants.
Laurent Monin <geeqie@norz.org>
parents:
1089
diff
changeset
|
572 return g_build_filename(get_rc_dir(), "accels", NULL); |
1061
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
573 } |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
574 |
1017
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
575 static void accel_map_save(void) |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
576 { |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
577 gchar *path; |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
578 |
1061
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
579 path = accep_map_filename(); |
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
580 gq_accel_map_save(path); |
1017
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
581 g_free(path); |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
582 } |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
583 |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
584 static void accel_map_load(void) |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
585 { |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
586 gchar *path; |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
587 gchar *pathl; |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
588 |
1061
7f961e204120
Better handling of accels map file writing errors.
Laurent Monin <geeqie@norz.org>
parents:
1055
diff
changeset
|
589 path = accep_map_filename(); |
1017
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
590 pathl = path_from_utf8(path); |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
591 gtk_accel_map_load(pathl); |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
592 g_free(pathl); |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
593 g_free(path); |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
594 } |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
595 |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
596 static void gtkrc_load(void) |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
597 { |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
598 gchar *path; |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
599 gchar *pathl; |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
600 |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
601 /* If a gtkrc file exists in the rc directory, add it to the |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
602 * list of files to be parsed at the end of gtk_init() */ |
1145
94adf34fe826
Use functions to return directories instead of constants.
Laurent Monin <geeqie@norz.org>
parents:
1089
diff
changeset
|
603 path = g_build_filename(get_rc_dir(), "gtkrc", NULL); |
1017
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
604 pathl = path_from_utf8(path); |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
605 if (access(pathl, R_OK) == 0) |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
606 gtk_rc_add_default_file(pathl); |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
607 g_free(pathl); |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
608 g_free(path); |
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
609 } |
630
e68e998d6c23
An option to save and restore the last path used was added.
Laurent Monin <geeqie@norz.org>
parents:
629
diff
changeset
|
610 |
739
4d6c3e6aad75
Move code from exit_program_final() to new sync_options_with_current_state().
Laurent Monin <geeqie@norz.org>
parents:
738
diff
changeset
|
611 static void exit_program_final(void) |
4d6c3e6aad75
Move code from exit_program_final() to new sync_options_with_current_state().
Laurent Monin <geeqie@norz.org>
parents:
738
diff
changeset
|
612 { |
840
4f168cd71913
another try to free layout at exit
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
799
diff
changeset
|
613 LayoutWindow *lw = NULL; |
739
4d6c3e6aad75
Move code from exit_program_final() to new sync_options_with_current_state().
Laurent Monin <geeqie@norz.org>
parents:
738
diff
changeset
|
614 |
1736
7179fa22dc1b
load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1735
diff
changeset
|
615 /* make sure that external editors are loaded, we would save incomplete configuration otherwise */ |
7179fa22dc1b
load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1735
diff
changeset
|
616 layout_editors_reload_finish(); |
7179fa22dc1b
load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1735
diff
changeset
|
617 |
739
4d6c3e6aad75
Move code from exit_program_final() to new sync_options_with_current_state().
Laurent Monin <geeqie@norz.org>
parents:
738
diff
changeset
|
618 remote_close(remote_connection); |
4d6c3e6aad75
Move code from exit_program_final() to new sync_options_with_current_state().
Laurent Monin <geeqie@norz.org>
parents:
738
diff
changeset
|
619 |
4d6c3e6aad75
Move code from exit_program_final() to new sync_options_with_current_state().
Laurent Monin <geeqie@norz.org>
parents:
738
diff
changeset
|
620 collect_manager_flush(); |
4d6c3e6aad75
Move code from exit_program_final() to new sync_options_with_current_state().
Laurent Monin <geeqie@norz.org>
parents:
738
diff
changeset
|
621 |
742
e855bb4d882e
Pass ConfOptions * to save_options() and load_options().
Laurent Monin <geeqie@norz.org>
parents:
740
diff
changeset
|
622 save_options(options); |
9 | 623 keys_save(); |
1017
3571d85b831a
Move some code to new functions, to simplify main().
Laurent Monin <geeqie@norz.org>
parents:
1015
diff
changeset
|
624 accel_map_save(); |
1 | 625 |
840
4f168cd71913
another try to free layout at exit
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
799
diff
changeset
|
626 if (layout_valid(&lw)) |
4f168cd71913
another try to free layout at exit
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
799
diff
changeset
|
627 { |
4f168cd71913
another try to free layout at exit
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
799
diff
changeset
|
628 layout_free(lw); |
4f168cd71913
another try to free layout at exit
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
799
diff
changeset
|
629 } |
4f168cd71913
another try to free layout at exit
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
799
diff
changeset
|
630 |
1 | 631 gtk_main_quit(); |
632 } | |
633 | |
9 | 634 static GenericDialog *exit_dialog = NULL; |
635 | |
636 static void exit_confirm_cancel_cb(GenericDialog *gd, gpointer data) | |
637 { | |
638 exit_dialog = NULL; | |
639 generic_dialog_close(gd); | |
640 } | |
641 | |
642 static void exit_confirm_exit_cb(GenericDialog *gd, gpointer data) | |
643 { | |
644 exit_dialog = NULL; | |
645 generic_dialog_close(gd); | |
278
79fed35f1650
exit_gqview() renamed to exit_program().
Laurent Monin <geeqie@norz.org>
parents:
254
diff
changeset
|
646 exit_program_final(); |
9 | 647 } |
648 | |
649 static gint exit_confirm_dlg(void) | |
650 { | |
651 GtkWidget *parent; | |
652 LayoutWindow *lw; | |
288
e675073bcca0
Replace occurences of Geeqie / geeqie by constants defined in main.h.
Laurent Monin <geeqie@norz.org>
parents:
283
diff
changeset
|
653 gchar *msg; |
9 | 654 |
655 if (exit_dialog) | |
656 { | |
657 gtk_window_present(GTK_WINDOW(exit_dialog->dialog)); | |
658 return TRUE; | |
659 } | |
660 | |
661 if (!collection_window_modified_exists()) return FALSE; | |
662 | |
663 parent = NULL; | |
664 lw = NULL; | |
665 if (layout_valid(&lw)) | |
666 { | |
667 parent = lw->window; | |
668 } | |
669 | |
288
e675073bcca0
Replace occurences of Geeqie / geeqie by constants defined in main.h.
Laurent Monin <geeqie@norz.org>
parents:
283
diff
changeset
|
670 msg = g_strdup_printf("%s - %s", GQ_APPNAME, _("exit")); |
e675073bcca0
Replace occurences of Geeqie / geeqie by constants defined in main.h.
Laurent Monin <geeqie@norz.org>
parents:
283
diff
changeset
|
671 exit_dialog = generic_dialog_new(msg, |
1174
f809d57aed0c
Drop useless wmclass stuff. Gtk will take care of it and as said in the documentation using gtk_window_set_wmclass() is sort of pointless.
Laurent Monin <geeqie@norz.org>
parents:
1148
diff
changeset
|
672 "exit", parent, FALSE, |
9 | 673 exit_confirm_cancel_cb, NULL); |
288
e675073bcca0
Replace occurences of Geeqie / geeqie by constants defined in main.h.
Laurent Monin <geeqie@norz.org>
parents:
283
diff
changeset
|
674 g_free(msg); |
e675073bcca0
Replace occurences of Geeqie / geeqie by constants defined in main.h.
Laurent Monin <geeqie@norz.org>
parents:
283
diff
changeset
|
675 msg = g_strdup_printf(_("Quit %s"), GQ_APPNAME); |
9 | 676 generic_dialog_add_message(exit_dialog, GTK_STOCK_DIALOG_QUESTION, |
288
e675073bcca0
Replace occurences of Geeqie / geeqie by constants defined in main.h.
Laurent Monin <geeqie@norz.org>
parents:
283
diff
changeset
|
677 msg, _("Collections have been modified. Quit anyway?")); |
e675073bcca0
Replace occurences of Geeqie / geeqie by constants defined in main.h.
Laurent Monin <geeqie@norz.org>
parents:
283
diff
changeset
|
678 g_free(msg); |
9 | 679 generic_dialog_add_button(exit_dialog, GTK_STOCK_QUIT, NULL, exit_confirm_exit_cb, TRUE); |
680 | |
681 gtk_widget_show(exit_dialog->dialog); | |
682 | |
683 return TRUE; | |
684 } | |
685 | |
1231
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
686 static void exit_program_write_metadata_cb(gint success, const gchar *dest_path, gpointer data) |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
687 { |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
688 if (success) exit_program(); |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
689 } |
13500d2268af
added done callback to utilops
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
690 |
278
79fed35f1650
exit_gqview() renamed to exit_program().
Laurent Monin <geeqie@norz.org>
parents:
254
diff
changeset
|
691 void exit_program(void) |
9 | 692 { |
693 layout_image_full_screen_stop(NULL); | |
694 | |
1586
b8515ea34e58
force the metadata dialog if it was triggered by the menu or the button
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1507
diff
changeset
|
695 if (metadata_write_queue_confirm(FALSE, exit_program_write_metadata_cb, NULL)) return; |
1214
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1174
diff
changeset
|
696 |
9 | 697 if (exit_confirm_dlg()) return; |
698 | |
278
79fed35f1650
exit_gqview() renamed to exit_program().
Laurent Monin <geeqie@norz.org>
parents:
254
diff
changeset
|
699 exit_program_final(); |
9 | 700 } |
701 | |
2184 | 702 /* This code is supposed to handle situation when a file mmaped by image_loader |
1266
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
703 * or by exif loader is truncated by some other process. |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
704 * This is probably not completely correct according to posix, because |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
705 * mmap is not in the list of calls that can be used safely in signal handler, |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
706 * but anyway, the handler is called in situation when the application would |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
707 * crash otherwise. |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
708 * Ideas for improvement are welcome ;) |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
709 */ |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
710 /* FIXME: this probably needs some better ifdefs. Please report any compilation problems */ |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
711 |
1777
f5c34cae85a1
Some systems do not have SA_SIGINFO (siginfo_t), like GNU/Hurd, so just test if defined or not. Patch by Michal ÄŒihaÅ™ (Bug ID: 2894271).
Laurent Monin <geeqie@norz.org>
parents:
1772
diff
changeset
|
712 #if defined(SIGBUS) && defined(SA_SIGINFO) |
1266
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
713 static void sigbus_handler_cb(int signum, siginfo_t *info, void *context) |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
714 { |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
715 unsigned long pagesize = sysconf(_SC_PAGE_SIZE); |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
716 DEBUG_1("SIGBUS %p", info->si_addr); |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
717 mmap((void *)(((unsigned long)info->si_addr / pagesize) * pagesize), pagesize, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
718 } |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
719 #endif |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
720 |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
721 static void setup_sigbus_handler(void) |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
722 { |
1777
f5c34cae85a1
Some systems do not have SA_SIGINFO (siginfo_t), like GNU/Hurd, so just test if defined or not. Patch by Michal ÄŒihaÅ™ (Bug ID: 2894271).
Laurent Monin <geeqie@norz.org>
parents:
1772
diff
changeset
|
723 #if defined(SIGBUS) && defined(SA_SIGINFO) |
1266
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
724 struct sigaction sigbus_action; |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
725 sigfillset(&sigbus_action.sa_mask); |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
726 sigbus_action.sa_sigaction = sigbus_handler_cb; |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
727 sigbus_action.sa_flags = SA_SIGINFO; |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
728 |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
729 sigaction(SIGBUS, &sigbus_action, NULL); |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
730 #endif |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
731 } |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
732 |
1000
07f6093c1c1a
For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents:
995
diff
changeset
|
733 gint main(gint argc, gchar *argv[]) |
1 | 734 { |
9 | 735 CollectionData *first_collection = NULL; |
736 gchar *buf; | |
649
31ec921c17f2
Move all remote stuff from main.c to remote.[ch].
Laurent Monin <geeqie@norz.org>
parents:
648
diff
changeset
|
737 CollectionData *cd = NULL; |
1 | 738 |
1015
8ae2996ac904
run image loader in separate thread
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1000
diff
changeset
|
739 #ifdef HAVE_GTHREAD |
1346
b3378273091e
No space between function name and first parenthesis, it eases greping (see CODING).
Laurent Monin <geeqie@norz.org>
parents:
1334
diff
changeset
|
740 g_thread_init(NULL); |
1020
799621e50c6c
improved thread support in image loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1019
diff
changeset
|
741 gdk_threads_init(); |
799621e50c6c
improved thread support in image loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1019
diff
changeset
|
742 gdk_threads_enter(); |
1872
1160a9de93c2
fixed using DEBUG_N from multiple threads
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1802
diff
changeset
|
743 |
1015
8ae2996ac904
run image loader in separate thread
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1000
diff
changeset
|
744 #endif |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
745 |
509
64af3fde3b35
Move get_exec_time() to debug.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
507
diff
changeset
|
746 /* init execution time counter (debug only) */ |
64af3fde3b35
Move get_exec_time() to debug.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
507
diff
changeset
|
747 init_exec_time(); |
442 | 748 |
1 | 749 /* setup locale, i18n */ |
2034
9297985567b5
use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2021
diff
changeset
|
750 setlocale(LC_ALL, ""); |
686
9fda5376ef54
configure.in was rewritten:
Petr Ostadal <postadal@suse.cz>
parents:
684
diff
changeset
|
751 |
687
4c59a9b86597
Fix spurious end of line introduced in revision 780.
Laurent Monin <geeqie@norz.org>
parents:
686
diff
changeset
|
752 #ifdef ENABLE_NLS |
4c59a9b86597
Fix spurious end of line introduced in revision 780.
Laurent Monin <geeqie@norz.org>
parents:
686
diff
changeset
|
753 bindtextdomain(PACKAGE, GQ_LOCALEDIR); |
10 | 754 bind_textdomain_codeset(PACKAGE, "UTF-8"); |
755 textdomain(PACKAGE); | |
686
9fda5376ef54
configure.in was rewritten:
Petr Ostadal <postadal@suse.cz>
parents:
684
diff
changeset
|
756 #endif |
995 | 757 |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
758 exif_init(); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
759 |
2196
7a9bff812ba3
Adding support for lua scripting
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
760 #ifdef HAVE_LUA |
7a9bff812ba3
Adding support for lua scripting
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
761 lua_init(); |
7a9bff812ba3
Adding support for lua scripting
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
762 #endif |
7a9bff812ba3
Adding support for lua scripting
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
763 |
1 | 764 /* setup random seed for random slideshow */ |
442 | 765 srand(time(NULL)); |
1 | 766 |
1266
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
767 setup_sigbus_handler(); |
32dd74dc636c
added SIGBUS handler
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
768 |
793
074d59c7fa2f
used new notification in cache_maint
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
786
diff
changeset
|
769 /* register global notify functions */ |
074d59c7fa2f
used new notification in cache_maint
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
786
diff
changeset
|
770 file_data_register_notify_func(cache_notify_cb, NULL, NOTIFY_PRIORITY_HIGH); |
877
e5d1fa4dc807
refresh thumbnails on file change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
840
diff
changeset
|
771 file_data_register_notify_func(thumb_notify_cb, NULL, NOTIFY_PRIORITY_HIGH); |
1294 | 772 file_data_register_notify_func(histogram_notify_cb, NULL, NOTIFY_PRIORITY_HIGH); |
799
e8085600fd69
use the new notification for collections
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
793
diff
changeset
|
773 file_data_register_notify_func(collect_manager_notify_cb, NULL, NOTIFY_PRIORITY_LOW); |
1720
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1711
diff
changeset
|
774 file_data_register_notify_func(metadata_notify_cb, NULL, NOTIFY_PRIORITY_LOW); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
775 |
793
074d59c7fa2f
used new notification in cache_maint
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
786
diff
changeset
|
776 |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
777 gtkrc_load(); |
1735
d60ff6f78f81
added messages for debugging startup time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1733
diff
changeset
|
778 |
d60ff6f78f81
added messages for debugging startup time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1733
diff
changeset
|
779 parse_command_line_for_debug_option(argc, argv); |
2184 | 780 DEBUG_1("%s main: gtk_init", get_exec_time()); |
2077
034e50486d27
added autoconf test for clutter
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
2035
diff
changeset
|
781 #ifdef HAVE_CLUTTER |
1772
37b71424a6a5
check gtk_clutter_init return value
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1764
diff
changeset
|
782 if (gtk_clutter_init(&argc, &argv) != CLUTTER_INIT_SUCCESS) |
37b71424a6a5
check gtk_clutter_init return value
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1764
diff
changeset
|
783 { |
37b71424a6a5
check gtk_clutter_init return value
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1764
diff
changeset
|
784 log_printf("Can't initialize clutter-gtk.\n"); |
37b71424a6a5
check gtk_clutter_init return value
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1764
diff
changeset
|
785 exit(1); |
37b71424a6a5
check gtk_clutter_init return value
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1764
diff
changeset
|
786 } |
1604
934646ea4af8
added GPS map support - patch by Colin Clark
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1586
diff
changeset
|
787 #else |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
788 gtk_init(&argc, &argv); |
1604
934646ea4af8
added GPS map support - patch by Colin Clark
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1586
diff
changeset
|
789 #endif |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
790 |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
791 if (gtk_major_version < GTK_MAJOR_VERSION || |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
792 (gtk_major_version == GTK_MAJOR_VERSION && gtk_minor_version < GTK_MINOR_VERSION) ) |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
793 { |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
794 log_printf("!!! This is a friendly warning.\n"); |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
795 log_printf("!!! The version of GTK+ in use now is older than when %s was compiled.\n", GQ_APPNAME); |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
796 log_printf("!!! compiled with GTK+-%d.%d\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION); |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
797 log_printf("!!! running with GTK+-%d.%d\n", gtk_major_version, gtk_minor_version); |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
798 log_printf("!!! %s may quit unexpectedly with a relocation error.\n", GQ_APPNAME); |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
799 } |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
800 |
2184 | 801 DEBUG_1("%s main: pixbuf_inline_register_stock_icons", get_exec_time()); |
1334
89c9db0e3258
create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1321
diff
changeset
|
802 pixbuf_inline_register_stock_icons(); |
89c9db0e3258
create toolbar from ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1321
diff
changeset
|
803 |
2184 | 804 DEBUG_1("%s main: setting default options before commandline handling", get_exec_time()); |
2013
512ff8b8f325
initialize default options before commandline parsing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1937
diff
changeset
|
805 options = init_options(NULL); |
512ff8b8f325
initialize default options before commandline parsing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1937
diff
changeset
|
806 setup_default_options(options); |
512ff8b8f325
initialize default options before commandline parsing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1937
diff
changeset
|
807 |
2184 | 808 DEBUG_1("%s main: parse_command_line", get_exec_time()); |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
809 parse_command_line(argc, argv); |
378
5651f2073a71
Parse command line for --debug option as soon as possible and allow
Laurent Monin <geeqie@norz.org>
parents:
367
diff
changeset
|
810 |
2184 | 811 DEBUG_1("%s main: mkdir_if_not_exists", get_exec_time()); |
1462
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
812 /* these functions don't depend on config file */ |
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
813 mkdir_if_not_exists(get_rc_dir()); |
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
814 mkdir_if_not_exists(get_collections_dir()); |
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
815 mkdir_if_not_exists(get_thumbnails_cache_dir()); |
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
816 mkdir_if_not_exists(get_metadata_cache_dir()); |
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
817 |
1640
0c3ee4176c00
do not install helper scripts into /usr/bin
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1620
diff
changeset
|
818 setup_env_path(); |
0c3ee4176c00
do not install helper scripts into /usr/bin
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1620
diff
changeset
|
819 |
1462
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
820 keys_load(); |
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
821 accel_map_load(); |
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
822 |
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
823 /* restore session from the config file */ |
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
824 |
1 | 825 |
2184 | 826 DEBUG_1("%s main: load_options", get_exec_time()); |
1463
7031da014d97
added function to reload external editors at any time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1462
diff
changeset
|
827 if (!load_options(options)) |
7031da014d97
added function to reload external editors at any time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1462
diff
changeset
|
828 { |
7031da014d97
added function to reload external editors at any time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1462
diff
changeset
|
829 /* load_options calls these functions after it parses global options, we have to call it here if it fails */ |
7031da014d97
added function to reload external editors at any time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1462
diff
changeset
|
830 filter_add_defaults(); |
2184 | 831 filter_rebuild(); |
1463
7031da014d97
added function to reload external editors at any time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1462
diff
changeset
|
832 } |
9 | 833 |
1462
027c95eeb58a
initialization clean-up
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1437
diff
changeset
|
834 /* handle missing config file and commandline additions*/ |
2184 | 835 if (!layout_window_list) |
9 | 836 { |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
837 /* broken or no config file */ |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
838 layout_new_from_config(NULL, NULL, TRUE); |
9 | 839 } |
840 | |
1736
7179fa22dc1b
load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1735
diff
changeset
|
841 layout_editors_reload_start(); |
7179fa22dc1b
load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1735
diff
changeset
|
842 |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
843 if (command_line->collection_list && !command_line->startup_command_line_collection) |
9 | 844 { |
845 GList *work; | |
846 | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
847 work = command_line->collection_list; |
9 | 848 while (work) |
849 { | |
850 CollectWindow *cw; | |
851 const gchar *path; | |
1 | 852 |
9 | 853 path = work->data; |
854 work = work->next; | |
855 | |
856 cw = collection_window_new(path); | |
857 if (!first_collection && cw) first_collection = cw->cd; | |
858 } | |
859 } | |
860 | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
861 if (command_line->cmd_list || |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
862 (command_line->startup_command_line_collection && command_line->collection_list)) |
9 | 863 { |
864 GList *work; | |
865 | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
866 if (command_line->startup_command_line_collection) |
9 | 867 { |
868 CollectWindow *cw; | |
869 | |
870 cw = collection_window_new(""); | |
871 cd = cw->cd; | |
872 } | |
873 else | |
874 { | |
875 cd = collection_new(""); /* if we pass NULL, untitled counter is falsely increm. */ | |
876 } | |
877 | |
878 g_free(cd->path); | |
879 cd->path = NULL; | |
880 g_free(cd->name); | |
881 cd->name = g_strdup(_("Command line")); | |
882 | |
883 collection_path_changed(cd); | |
1 | 884 |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
885 work = command_line->cmd_list; |
9 | 886 while (work) |
887 { | |
1620
35ba896e7acb
fixed incorrect type conversion
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1604
diff
changeset
|
888 collection_add(cd, (FileData *)work->data, FALSE); |
9 | 889 work = work->next; |
890 } | |
891 | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
892 work = command_line->collection_list; |
9 | 893 while (work) |
894 { | |
358
a73c613430a9
Use flags for collection_load*().
Laurent Monin <geeqie@norz.org>
parents:
354
diff
changeset
|
895 collection_load(cd, (gchar *)work->data, COLLECTION_LOAD_APPEND); |
9 | 896 work = work->next; |
897 } | |
898 | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
899 if (cd->list) layout_image_set_collection(NULL, cd, cd->list->data); |
1 | 900 |
9 | 901 /* mem leak, we never unref this collection when !startup_command_line_collection |
902 * (the image view of the main window does not hold a ref to the collection) | |
903 * this is sort of unavoidable, for if it did hold a ref, next/back | |
904 * may not work as expected when closing collection windows. | |
905 * | |
906 * collection_unref(cd); | |
907 */ | |
908 | |
909 } | |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
910 else if (first_collection) |
9 | 911 { |
1313
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
912 layout_image_set_collection(NULL, first_collection, |
29ff0de0a67e
enabled commandline again
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1309
diff
changeset
|
913 collection_get_first(first_collection)); |
9 | 914 } |
614
e477b53a6046
image_osd_get() and image_osd_set() now uses flags.
Laurent Monin <geeqie@norz.org>
parents:
586
diff
changeset
|
915 |
1145
94adf34fe826
Use functions to return directories instead of constants.
Laurent Monin <geeqie@norz.org>
parents:
1089
diff
changeset
|
916 buf = g_build_filename(get_rc_dir(), ".command", NULL); |
649
31ec921c17f2
Move all remote stuff from main.c to remote.[ch].
Laurent Monin <geeqie@norz.org>
parents:
648
diff
changeset
|
917 remote_connection = remote_server_init(buf, cd); |
9 | 918 g_free(buf); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
919 |
2184 | 920 DEBUG_1("%s main: gtk_main", get_exec_time()); |
512
0896f486ec6f
Remove whitespace between function name and first parenthesis for the sake of consistency.
Laurent Monin <geeqie@norz.org>
parents:
509
diff
changeset
|
921 gtk_main(); |
1020
799621e50c6c
improved thread support in image loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1019
diff
changeset
|
922 #ifdef HAVE_GTHREAD |
799621e50c6c
improved thread support in image loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1019
diff
changeset
|
923 gdk_threads_leave(); |
799621e50c6c
improved thread support in image loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1019
diff
changeset
|
924 #endif |
1 | 925 return 0; |
926 } | |
1055
4bbdfab3c89a
Adding a vim modeline to all files - patch by Klaus Ethgen
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1022
diff
changeset
|
927 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ |