Mercurial > geeqie.yaz
annotate src/rcfile.c @ 848:e1d158ac6d36
cache size made configurable
author | nadvornik |
---|---|
date | Sat, 21 Jun 2008 22:01:45 +0000 |
parents | ee33d2ddb661 |
children | 171dd6e53656 |
rev | line source |
---|---|
1 | 1 /* |
196 | 2 * Geeqie |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
3 * (C) 2006 John Ellis |
475 | 4 * Copyright (C) 2008 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 | |
276 | 13 #include <glib/gstdio.h> |
14 #include <errno.h> | |
9 | 15 |
281 | 16 #include "main.h" |
9 | 17 #include "rcfile.h" |
1 | 18 |
307
667e49f52168
Move secure save code to its own files: secure_save.{c,h}.
zas_
parents:
288
diff
changeset
|
19 #include "bar_exif.h" |
768
ff51413f098d
Use functions to set editors name and command and ensure they are
zas_
parents:
764
diff
changeset
|
20 #include "editors.h" |
586 | 21 #include "filefilter.h" |
307
667e49f52168
Move secure save code to its own files: secure_save.{c,h}.
zas_
parents:
288
diff
changeset
|
22 #include "secure_save.h" |
9 | 23 #include "slideshow.h" |
24 #include "ui_fileops.h" | |
25 | |
1 | 26 |
27 /* | |
28 *----------------------------------------------------------------------------- | |
29 * line write/parse routines (private) | |
30 *----------------------------------------------------------------------------- | |
442 | 31 */ |
32 | |
33 /* | |
217 | 34 returns text without quotes or NULL for empty or broken string |
35 any text up to first '"' is skipped | |
36 tail is set to point at the char after the second '"' | |
442 | 37 or at the ending \0 |
38 | |
217 | 39 */ |
1 | 40 |
217 | 41 gchar *quoted_value(const gchar *text, const gchar **tail) |
1 | 42 { |
9 | 43 const gchar *ptr; |
1 | 44 gint c = 0; |
45 gint l = strlen(text); | |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
46 gchar *retval = NULL; |
442 | 47 |
217 | 48 if (tail) *tail = text; |
442 | 49 |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
50 if (l == 0) return retval; |
1 | 51 |
824 | 52 while (c < l && text[c] != '"') c++; |
1 | 53 if (text[c] == '"') |
54 { | |
9 | 55 gint e; |
1 | 56 c++; |
57 ptr = text + c; | |
9 | 58 e = c; |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
59 while (e < l) |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
60 { |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
61 if (text[e-1] != '\\' && text[e] == '"') break; |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
62 e++; |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
63 } |
9 | 64 if (text[e] == '"') |
1 | 65 { |
9 | 66 if (e - c > 0) |
1 | 67 { |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
68 gchar *substring = g_strndup(ptr, e - c); |
442 | 69 |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
70 if (substring) |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
71 { |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
72 retval = g_strcompress(substring); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
73 g_free(substring); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
74 } |
1 | 75 } |
76 } | |
217 | 77 if (tail) *tail = text + e + 1; |
1 | 78 } |
79 else | |
80 /* for compatibility with older formats (<0.3.7) | |
81 * read a line without quotes too */ | |
82 { | |
83 c = 0; | |
824 | 84 while (c < l && text[c] != '\n' && !g_ascii_isspace(text[c])) c++; |
1 | 85 if (c != 0) |
86 { | |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
87 retval = g_strndup(text, c); |
1 | 88 } |
217 | 89 if (tail) *tail = text + c; |
1 | 90 } |
91 | |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
92 return retval; |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
93 } |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
94 |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
95 gchar *escquote_value(const gchar *text) |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
96 { |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
97 gchar *e; |
442 | 98 |
217 | 99 if (!text) return g_strdup("\"\""); |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
100 |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
101 e = g_strescape(text, ""); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
102 if (e) |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
103 { |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
104 gchar *retval = g_strdup_printf("\"%s\"", e); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
105 g_free(e); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
106 return retval; |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
107 } |
217 | 108 return g_strdup("\"\""); |
1 | 109 } |
110 | |
276 | 111 static void write_char_option(SecureSaveInfo *ssi, gchar *label, gchar *text) |
1 | 112 { |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
113 gchar *escval = escquote_value(text); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
114 |
276 | 115 secure_fprintf(ssi, "%s: %s\n", label, escval); |
217 | 116 g_free(escval); |
1 | 117 } |
118 | |
639 | 119 static gboolean read_char_option(FILE *f, gchar *option, gchar *label, gchar *value, gchar **text) |
1 | 120 { |
639 | 121 if (g_ascii_strcasecmp(option, label) != 0) return FALSE; |
122 if (!text) return FALSE; | |
123 | |
124 g_free(*text); | |
125 *text = quoted_value(value, NULL); | |
126 return TRUE; | |
1 | 127 } |
128 | |
267
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
129 /* Since gdk_color_to_string() is only available since gtk 2.12 |
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
130 * here is an equivalent stub function. */ |
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
131 static gchar *color_to_string(GdkColor *color) |
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
132 { |
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
133 return g_strdup_printf("#%04X%04X%04X", color->red, color->green, color->blue); |
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
134 } |
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
135 |
276 | 136 static void write_color_option(SecureSaveInfo *ssi, gchar *label, GdkColor *color) |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
137 { |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
138 if (color) |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
139 { |
267
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
140 gchar *colorstring = color_to_string(color); |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
141 |
276 | 142 write_char_option(ssi, label, colorstring); |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
143 g_free(colorstring); |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
144 } |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
145 else |
276 | 146 secure_fprintf(ssi, "%s: \n", label); |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
147 } |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
148 |
639 | 149 static gboolean read_color_option(FILE *f, gchar *option, gchar *label, gchar *value, GdkColor *color) |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
150 { |
639 | 151 gchar *colorstr; |
152 | |
153 if (g_ascii_strcasecmp(option, label) != 0) return FALSE; | |
154 if (!color) return FALSE; | |
155 | |
156 colorstr = quoted_value(value, NULL); | |
157 if (!colorstr) return FALSE; | |
158 gdk_color_parse(colorstr, color); | |
159 g_free(colorstr); | |
160 return TRUE; | |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
161 } |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
162 |
276 | 163 static void write_int_option(SecureSaveInfo *ssi, gchar *label, gint n) |
1 | 164 { |
276 | 165 secure_fprintf(ssi, "%s: %d\n", label, n); |
1 | 166 } |
167 | |
639 | 168 static gboolean read_int_option(FILE *f, gchar *option, gchar *label, gchar *value, gint *n) |
169 { | |
170 if (g_ascii_strcasecmp(option, label) != 0) return FALSE; | |
171 if (!n) return FALSE; | |
172 | |
173 if (g_ascii_isdigit(value[0]) || (value[0] == '-' && g_ascii_isdigit(value[1]))) | |
351
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
174 { |
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
175 *n = strtol(value, NULL, 10); |
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
176 } |
639 | 177 else |
178 { | |
179 if (g_ascii_strcasecmp(value, "true") == 0) | |
180 *n = 1; | |
181 else | |
182 *n = 0; | |
183 } | |
184 | |
185 return TRUE; | |
351
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
186 } |
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
187 |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
377
diff
changeset
|
188 static void write_uint_option(SecureSaveInfo *ssi, gchar *label, guint n) |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
377
diff
changeset
|
189 { |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
377
diff
changeset
|
190 secure_fprintf(ssi, "%s: %u\n", label, n); |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
377
diff
changeset
|
191 } |
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
377
diff
changeset
|
192 |
639 | 193 static gboolean read_uint_option(FILE *f, gchar *option, gchar *label, gchar *value, guint *n) |
351
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
194 { |
639 | 195 if (g_ascii_strcasecmp(option, label) != 0) return FALSE; |
196 if (!n) return FALSE; | |
197 | |
198 if (g_ascii_isdigit(value[0])) | |
9 | 199 { |
351
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
200 *n = strtoul(value, NULL, 10); |
9 | 201 } |
639 | 202 else |
203 { | |
204 if (g_ascii_strcasecmp(value, "true") == 0) | |
205 *n = 1; | |
206 else | |
207 *n = 0; | |
208 } | |
209 | |
210 return TRUE; | |
9 | 211 } |
212 | |
639 | 213 static gboolean read_int_option_clamp(FILE *f, gchar *option, gchar *label, gchar *value, gint *n, gint min, gint max) |
351
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
214 { |
639 | 215 gboolean ret; |
216 | |
217 ret = read_int_option(f, option, label, value, n); | |
218 if (ret) *n = CLAMP(*n, min, max); | |
219 | |
220 return ret; | |
351
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
221 } |
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
222 |
276 | 223 static void write_int_unit_option(SecureSaveInfo *ssi, gchar *label, gint n, gint subunits) |
9 | 224 { |
225 gint l, r; | |
226 | |
227 if (subunits > 0) | |
228 { | |
229 l = n / subunits; | |
230 r = n % subunits; | |
231 } | |
232 else | |
1 | 233 { |
9 | 234 l = n; |
235 r = 0; | |
236 } | |
237 | |
276 | 238 secure_fprintf(ssi, "%s: %d.%d\n", label, l, r); |
9 | 239 } |
240 | |
639 | 241 static gboolean read_int_unit_option(FILE *f, gchar *option, gchar *label, gchar *value, gint *n, gint subunits) |
9 | 242 { |
639 | 243 gint l, r; |
244 gchar *ptr; | |
245 | |
246 if (g_ascii_strcasecmp(option, label) != 0) return FALSE; | |
247 if (!n) return FALSE; | |
9 | 248 |
639 | 249 ptr = value; |
250 while (*ptr != '\0' && *ptr != '.') ptr++; | |
251 if (*ptr == '.') | |
252 { | |
253 *ptr = '\0'; | |
254 l = strtol(value, NULL, 10); | |
255 *ptr = '.'; | |
256 ptr++; | |
257 r = strtol(ptr, NULL, 10); | |
258 } | |
259 else | |
260 { | |
261 l = strtol(value, NULL, 10); | |
262 r = 0; | |
263 } | |
9 | 264 |
639 | 265 *n = l * subunits + r; |
266 | |
267 return TRUE; | |
1 | 268 } |
269 | |
276 | 270 static void write_bool_option(SecureSaveInfo *ssi, gchar *label, gint n) |
1 | 271 { |
276 | 272 secure_fprintf(ssi, "%s: ", label); |
273 if (n) secure_fprintf(ssi, "true\n"); else secure_fprintf(ssi, "false\n"); | |
1 | 274 } |
275 | |
639 | 276 static gboolean read_bool_option(FILE *f, gchar *option, gchar *label, gchar *value, gint *n) |
1 | 277 { |
639 | 278 if (g_ascii_strcasecmp(option, label) != 0) return FALSE; |
279 if (!n) return FALSE; | |
280 | |
281 if (g_ascii_strcasecmp(value, "true") == 0 || atoi(value) != 0) | |
282 *n = TRUE; | |
283 else | |
284 *n = FALSE; | |
285 | |
286 return TRUE; | |
1 | 287 } |
288 | |
639 | 289 |
1 | 290 /* |
291 *----------------------------------------------------------------------------- | |
292 * save configuration (public) | |
293 *----------------------------------------------------------------------------- | |
442 | 294 */ |
1 | 295 |
742
a336b5545af6
Pass ConfOptions * to save_options() and load_options().
zas_
parents:
741
diff
changeset
|
296 static gboolean save_options_to(const gchar *utf8_path, ConfOptions *options) |
1 | 297 { |
276 | 298 SecureSaveInfo *ssi; |
9 | 299 gchar *rc_pathl; |
1 | 300 gint i; |
301 | |
741
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
302 rc_pathl = path_from_utf8(utf8_path); |
276 | 303 ssi = secure_open(rc_pathl); |
9 | 304 g_free(rc_pathl); |
276 | 305 if (!ssi) |
1 | 306 { |
741
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
307 log_printf(_("error saving config file: %s\n"), utf8_path); |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
308 return FALSE; |
1 | 309 } |
442 | 310 |
372 | 311 #define WRITE_BOOL(_name_) write_bool_option(ssi, #_name_, options->_name_) |
312 #define WRITE_INT(_name_) write_int_option(ssi, #_name_, options->_name_) | |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
377
diff
changeset
|
313 #define WRITE_UINT(_name_) write_uint_option(ssi, #_name_, options->_name_) |
372 | 314 #define WRITE_INT_UNIT(_name_, _unit_) write_int_unit_option(ssi, #_name_, options->_name_, _unit_) |
315 #define WRITE_CHAR(_name_) write_char_option(ssi, #_name_, options->_name_) | |
316 #define WRITE_COLOR(_name_) write_color_option(ssi, #_name_, &options->_name_) | |
317 | |
318 #define WRITE_SEPARATOR() secure_fputc(ssi, '\n') | |
319 #define WRITE_SUBTITLE(_title_) secure_fprintf(ssi, "\n\n##### "_title_" #####\n\n") | |
320 | |
276 | 321 secure_fprintf(ssi, "######################################################################\n"); |
640 | 322 secure_fprintf(ssi, "# %30s config file version %-10s #\n", GQ_APPNAME, VERSION); |
276 | 323 secure_fprintf(ssi, "######################################################################\n"); |
372 | 324 WRITE_SEPARATOR(); |
1 | 325 |
276 | 326 secure_fprintf(ssi, "# Note: This file is autogenerated. Options can be changed here,\n"); |
327 secure_fprintf(ssi, "# but user comments and formatting will be lost.\n"); | |
372 | 328 WRITE_SEPARATOR(); |
276 | 329 |
372 | 330 WRITE_SUBTITLE("General Options"); |
1 | 331 |
372 | 332 WRITE_BOOL(show_icon_names); |
497 | 333 WRITE_BOOL(show_copy_path); |
372 | 334 WRITE_SEPARATOR(); |
9 | 335 |
372 | 336 WRITE_BOOL(tree_descend_subdirs); |
337 WRITE_BOOL(lazy_image_sync); | |
338 WRITE_BOOL(update_on_time_change); | |
339 WRITE_SEPARATOR(); | |
1 | 340 |
372 | 341 WRITE_BOOL(progressive_key_scrolling); |
342 WRITE_BOOL(enable_metadata_dirs); | |
594
4cfce4ed35e0
Use a dedicated option to enable keywords and comment saving as XMP tags
zas_
parents:
586
diff
changeset
|
343 WRITE_BOOL(save_metadata_in_image_file); |
335 | 344 |
372 | 345 WRITE_INT(duplicates_similarity_threshold); |
346 WRITE_SEPARATOR(); | |
335 | 347 |
372 | 348 WRITE_BOOL(mousewheel_scrolls); |
349 WRITE_INT(open_recent_list_maxsize); | |
458
7a69309b91c8
Allow the user to set the drag'n drop icon size through
zas_
parents:
446
diff
changeset
|
350 WRITE_INT(dnd_icon_size); |
372 | 351 WRITE_BOOL(place_dialogs_under_mouse); |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
352 |
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
353 |
629 | 354 WRITE_SUBTITLE("Startup Options"); |
355 | |
356 WRITE_BOOL(startup.restore_path); | |
630
83d3ded39e49
An option to save and restore the last path used was added.
zas_
parents:
629
diff
changeset
|
357 WRITE_BOOL(startup.use_last_path); |
629 | 358 WRITE_CHAR(startup.path); |
359 | |
360 | |
372 | 361 WRITE_SUBTITLE("File operations Options"); |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
362 |
372 | 363 WRITE_BOOL(file_ops.enable_in_place_rename); |
364 WRITE_BOOL(file_ops.confirm_delete); | |
365 WRITE_BOOL(file_ops.enable_delete_key); | |
366 WRITE_BOOL(file_ops.safe_delete_enable); | |
367 WRITE_CHAR(file_ops.safe_delete_path); | |
368 WRITE_INT(file_ops.safe_delete_folder_maxsize); | |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
369 |
442 | 370 |
372 | 371 WRITE_SUBTITLE("Layout Options"); |
335 | 372 |
372 | 373 WRITE_INT(layout.style); |
374 WRITE_CHAR(layout.order); | |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
377
diff
changeset
|
375 WRITE_UINT(layout.dir_view_type); |
556
fe675761d091
Replace Layout icon_view field by more generic file_view_type.
zas_
parents:
537
diff
changeset
|
376 WRITE_UINT(layout.file_view_type); |
433
5ddcf93278c7
Save Show Marks state to rc file and display current state in menu.
zas_
parents:
413
diff
changeset
|
377 WRITE_BOOL(layout.show_marks); |
372 | 378 WRITE_BOOL(layout.show_thumbnails); |
825 | 379 WRITE_BOOL(layout.show_directory_date); |
372 | 380 WRITE_SEPARATOR(); |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
381 |
372 | 382 WRITE_BOOL(layout.save_window_positions); |
383 WRITE_SEPARATOR(); | |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
384 |
372 | 385 WRITE_INT(layout.main_window.x); |
386 WRITE_INT(layout.main_window.y); | |
387 WRITE_INT(layout.main_window.w); | |
388 WRITE_INT(layout.main_window.h); | |
389 WRITE_BOOL(layout.main_window.maximized); | |
390 WRITE_INT(layout.main_window.hdivider_pos); | |
391 WRITE_INT(layout.main_window.vdivider_pos); | |
392 WRITE_SEPARATOR(); | |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
393 |
372 | 394 WRITE_INT(layout.float_window.x); |
395 WRITE_INT(layout.float_window.y); | |
396 WRITE_INT(layout.float_window.w); | |
397 WRITE_INT(layout.float_window.h); | |
398 WRITE_INT(layout.float_window.vdivider_pos); | |
399 WRITE_SEPARATOR(); | |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
400 |
764
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
401 WRITE_INT(layout.properties_window.w); |
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
402 WRITE_INT(layout.properties_window.h); |
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
403 WRITE_SEPARATOR(); |
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
404 |
372 | 405 WRITE_BOOL(layout.tools_float); |
406 WRITE_BOOL(layout.tools_hidden); | |
407 WRITE_BOOL(layout.tools_restore_state); | |
408 WRITE_SEPARATOR(); | |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
409 |
372 | 410 WRITE_BOOL(layout.toolbar_hidden); |
335 | 411 |
489
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
412 WRITE_SUBTITLE("Panels Options"); |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
413 |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
414 WRITE_BOOL(panels.exif.enabled); |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
415 WRITE_INT(panels.exif.width); |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
416 WRITE_BOOL(panels.info.enabled); |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
417 WRITE_INT(panels.info.width); |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
418 WRITE_BOOL(panels.sort.enabled); |
491 | 419 WRITE_INT(panels.sort.action_state); |
420 WRITE_INT(panels.sort.mode_state); | |
421 WRITE_INT(panels.sort.selection_state); | |
335 | 422 |
684 | 423 WRITE_SUBTITLE("Properties dialog Options"); |
424 WRITE_CHAR(properties.tabs_order); | |
425 | |
372 | 426 WRITE_SUBTITLE("Image Options"); |
442 | 427 |
377 | 428 secure_fprintf(ssi, "# image.zoom_mode possible values are:\n" |
429 "# original\n" | |
430 "# fit\n" | |
431 "# dont_change\n"); | |
334 | 432 secure_fprintf(ssi, "image.zoom_mode: "); |
377 | 433 if (options->image.zoom_mode == ZOOM_RESET_ORIGINAL) |
434 secure_fprintf(ssi, "original\n"); | |
435 else if (options->image.zoom_mode == ZOOM_RESET_FIT_WINDOW) | |
436 secure_fprintf(ssi, "fit\n"); | |
437 else if (options->image.zoom_mode == ZOOM_RESET_NONE) | |
438 secure_fprintf(ssi, "dont_change\n"); | |
439 WRITE_SEPARATOR(); | |
372 | 440 WRITE_BOOL(image.zoom_2pass); |
441 WRITE_BOOL(image.zoom_to_fit_allow_expand); | |
442 WRITE_INT(image.zoom_quality); | |
443 WRITE_INT(image.zoom_increment); | |
444 WRITE_BOOL(image.fit_window_to_image); | |
445 WRITE_BOOL(image.limit_window_size); | |
446 WRITE_INT(image.max_window_size); | |
447 WRITE_BOOL(image.limit_autofit_size); | |
448 WRITE_INT(image.max_autofit_size); | |
449 WRITE_INT(image.scroll_reset_method); | |
450 WRITE_INT(image.tile_cache_max); | |
848 | 451 WRITE_INT(image.image_cache_max); |
372 | 452 WRITE_INT(image.dither_quality); |
453 WRITE_BOOL(image.enable_read_ahead); | |
454 WRITE_BOOL(image.exif_rotate_enable); | |
455 WRITE_BOOL(image.use_custom_border_color); | |
456 WRITE_COLOR(image.border_color); | |
413
9e521adbf312
Add two new options to control image read buffer at runtime.
zas_
parents:
403
diff
changeset
|
457 WRITE_INT(image.read_buffer_size); |
9e521adbf312
Add two new options to control image read buffer at runtime.
zas_
parents:
403
diff
changeset
|
458 WRITE_INT(image.idle_read_loop_count); |
335 | 459 |
372 | 460 WRITE_SUBTITLE("Thumbnails Options"); |
9 | 461 |
372 | 462 WRITE_INT(thumbnails.max_width); |
463 WRITE_INT(thumbnails.max_height); | |
464 WRITE_BOOL(thumbnails.enable_caching); | |
465 WRITE_BOOL(thumbnails.cache_into_dirs); | |
466 WRITE_BOOL(thumbnails.fast); | |
467 WRITE_BOOL(thumbnails.use_xvpics); | |
468 WRITE_BOOL(thumbnails.spec_standard); | |
469 WRITE_INT(thumbnails.quality); | |
335 | 470 |
9 | 471 |
372 | 472 WRITE_SUBTITLE("File sorting Options"); |
1 | 473 |
372 | 474 WRITE_INT(file_sort.method); |
475 WRITE_BOOL(file_sort.ascending); | |
476 WRITE_BOOL(file_sort.case_sensitive); | |
1 | 477 |
442 | 478 |
372 | 479 WRITE_SUBTITLE("Fullscreen Options"); |
4 | 480 |
372 | 481 WRITE_INT(fullscreen.screen); |
482 WRITE_BOOL(fullscreen.clean_flip); | |
483 WRITE_BOOL(fullscreen.disable_saver); | |
484 WRITE_BOOL(fullscreen.above); | |
468
2df505c60459
Replace fullscreen.info and fullscreen.show_info options by:
zas_
parents:
458
diff
changeset
|
485 |
612 | 486 |
487 WRITE_SUBTITLE("Histogram Options"); | |
488 WRITE_UINT(histogram.last_channel_mode); | |
489 WRITE_UINT(histogram.last_log_mode); | |
490 | |
491 | |
468
2df505c60459
Replace fullscreen.info and fullscreen.show_info options by:
zas_
parents:
458
diff
changeset
|
492 WRITE_SUBTITLE("Image Overlay Options"); |
638
8cc9f349c670
Rename option image_overlay.common.enabled to image_overlay.common.state
zas_
parents:
630
diff
changeset
|
493 WRITE_UINT(image_overlay.common.state); |
468
2df505c60459
Replace fullscreen.info and fullscreen.show_info options by:
zas_
parents:
458
diff
changeset
|
494 WRITE_BOOL(image_overlay.common.show_at_startup); |
2df505c60459
Replace fullscreen.info and fullscreen.show_info options by:
zas_
parents:
458
diff
changeset
|
495 WRITE_CHAR(image_overlay.common.template_string); |
823
ed82f5bf8082
Add a comment about relative positions of image overlay in the rc file.
zas_
parents:
822
diff
changeset
|
496 WRITE_SEPARATOR(); |
ed82f5bf8082
Add a comment about relative positions of image overlay in the rc file.
zas_
parents:
822
diff
changeset
|
497 |
ed82f5bf8082
Add a comment about relative positions of image overlay in the rc file.
zas_
parents:
822
diff
changeset
|
498 secure_fprintf(ssi, "# these are relative positions:\n"); |
ed82f5bf8082
Add a comment about relative positions of image overlay in the rc file.
zas_
parents:
822
diff
changeset
|
499 secure_fprintf(ssi, "# x >= 0: |x| pixels from left border\n"); |
ed82f5bf8082
Add a comment about relative positions of image overlay in the rc file.
zas_
parents:
822
diff
changeset
|
500 secure_fprintf(ssi, "# x < 0 : |x| pixels from right border\n"); |
ed82f5bf8082
Add a comment about relative positions of image overlay in the rc file.
zas_
parents:
822
diff
changeset
|
501 secure_fprintf(ssi, "# y >= 0: |y| pixels from top border\n"); |
ed82f5bf8082
Add a comment about relative positions of image overlay in the rc file.
zas_
parents:
822
diff
changeset
|
502 secure_fprintf(ssi, "# y < 0 : |y| pixels from bottom border\n"); |
822
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
768
diff
changeset
|
503 WRITE_INT(image_overlay.common.x); |
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
768
diff
changeset
|
504 WRITE_INT(image_overlay.common.y); |
1 | 505 |
612 | 506 |
372 | 507 WRITE_SUBTITLE("Slideshow Options"); |
276 | 508 |
372 | 509 WRITE_INT_UNIT(slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION); |
510 WRITE_BOOL(slideshow.random); | |
511 WRITE_BOOL(slideshow.repeat); | |
276 | 512 |
335 | 513 |
372 | 514 WRITE_SUBTITLE("Collection Options"); |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
515 |
372 | 516 WRITE_BOOL(collections.rectangular_selection); |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
517 |
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
518 |
372 | 519 WRITE_SUBTITLE("Filtering Options"); |
1 | 520 |
372 | 521 WRITE_BOOL(file_filter.show_hidden_files); |
373
61a3c8b05b24
Add a new option in Preferences > Filtering to allow the
zas_
parents:
372
diff
changeset
|
522 WRITE_BOOL(file_filter.show_dot_directory); |
372 | 523 WRITE_BOOL(file_filter.disable); |
524 WRITE_SEPARATOR(); | |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
525 |
276 | 526 filter_write_list(ssi); |
442 | 527 |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
528 |
372 | 529 WRITE_SUBTITLE("Sidecars Options"); |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
530 |
276 | 531 sidecar_ext_write(ssi); |
1 | 532 |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
533 |
372 | 534 WRITE_SUBTITLE("Color Profiles"); |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
535 |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
536 #ifndef HAVE_LCMS |
288
d1f74154463e
Replace occurences of Geeqie / geeqie by constants defined in main.h.
zas_
parents:
283
diff
changeset
|
537 secure_fprintf(ssi, "# NOTICE: %s was not built with support for color profiles,\n" |
442 | 538 "# color profile options will have no effect.\n\n", GQ_APPNAME); |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
539 #endif |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
540 |
372 | 541 WRITE_BOOL(color_profile.enabled); |
542 WRITE_BOOL(color_profile.use_image); | |
543 WRITE_INT(color_profile.input_type); | |
544 WRITE_SEPARATOR(); | |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
545 |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
546 for (i = 0; i < COLOR_PROFILE_INPUTS; i++) |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
547 { |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
548 gchar *buf; |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
549 |
327 | 550 buf = g_strdup_printf("color_profile.input_file_%d", i + 1); |
551 write_char_option(ssi, buf, options->color_profile.input_file[i]); | |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
552 g_free(buf); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
553 |
327 | 554 buf = g_strdup_printf("color_profile.input_name_%d", i + 1); |
555 write_char_option(ssi, buf, options->color_profile.input_name[i]); | |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
556 g_free(buf); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
557 } |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
558 |
372 | 559 WRITE_SEPARATOR(); |
560 WRITE_INT(color_profile.screen_type); | |
561 WRITE_CHAR(color_profile.screen_file); | |
562 | |
737
8a8873e7a552
Make shell command and its option rc file options instead of hardcoded strings.
zas_
parents:
730
diff
changeset
|
563 |
8a8873e7a552
Make shell command and its option rc file options instead of hardcoded strings.
zas_
parents:
730
diff
changeset
|
564 WRITE_SUBTITLE("Shell command"); |
8a8873e7a552
Make shell command and its option rc file options instead of hardcoded strings.
zas_
parents:
730
diff
changeset
|
565 WRITE_CHAR(shell.path); |
8a8873e7a552
Make shell command and its option rc file options instead of hardcoded strings.
zas_
parents:
730
diff
changeset
|
566 WRITE_CHAR(shell.options); |
8a8873e7a552
Make shell command and its option rc file options instead of hardcoded strings.
zas_
parents:
730
diff
changeset
|
567 |
8a8873e7a552
Make shell command and its option rc file options instead of hardcoded strings.
zas_
parents:
730
diff
changeset
|
568 |
372 | 569 WRITE_SUBTITLE("External Programs"); |
348 | 570 secure_fprintf(ssi, "# Maximum of %d programs (external_1 through external_%d)\n", GQ_EDITOR_GENERIC_SLOTS, GQ_EDITOR_GENERIC_SLOTS); |
571 secure_fprintf(ssi, "# external_%d through external_%d are used for file ops\n", GQ_EDITOR_GENERIC_SLOTS + 1, GQ_EDITOR_SLOTS); | |
276 | 572 secure_fprintf(ssi, "# format: external_n: \"menu name\" \"command line\"\n\n"); |
1 | 573 |
283 | 574 for (i = 0; i < GQ_EDITOR_SLOTS; i++) |
1 | 575 { |
348 | 576 if (i == GQ_EDITOR_GENERIC_SLOTS) secure_fputc(ssi, '\n'); |
730 | 577 gchar *qname = escquote_value(options->editor[i].name); |
578 gchar *qcommand = escquote_value(options->editor[i].command); | |
276 | 579 secure_fprintf(ssi, "external_%d: %s %s\n", i+1, qname, qcommand); |
217 | 580 g_free(qname); |
581 g_free(qcommand); | |
1 | 582 } |
583 | |
584 | |
372 | 585 WRITE_SUBTITLE("Exif Options"); |
586 secure_fprintf(ssi, "# Display: 0: never\n" | |
587 "# 1: if set\n" | |
588 "# 2: always\n\n"); | |
222
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
589 for (i = 0; ExifUIList[i].key; i++) |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
590 { |
349 | 591 secure_fprintf(ssi, "exif.display."); |
276 | 592 write_int_option(ssi, (gchar *)ExifUIList[i].key, ExifUIList[i].current); |
222
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
593 } |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
594 |
372 | 595 WRITE_SEPARATOR(); |
596 WRITE_SEPARATOR(); | |
597 | |
276 | 598 secure_fprintf(ssi, "######################################################################\n"); |
288
d1f74154463e
Replace occurences of Geeqie / geeqie by constants defined in main.h.
zas_
parents:
283
diff
changeset
|
599 secure_fprintf(ssi, "# end of config file #\n"); |
276 | 600 secure_fprintf(ssi, "######################################################################\n"); |
1 | 601 |
442 | 602 |
276 | 603 if (secure_close(ssi)) |
741
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
604 { |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
605 log_printf(_("error saving config file: %s\nerror: %s\n"), utf8_path, |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
606 secsave_strerror(secsave_errno)); |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
607 return FALSE; |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
608 } |
1 | 609 |
741
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
610 return TRUE; |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
611 } |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
612 |
742
a336b5545af6
Pass ConfOptions * to save_options() and load_options().
zas_
parents:
741
diff
changeset
|
613 void save_options(ConfOptions *options) |
741
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
614 { |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
615 gchar *rc_path; |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
616 |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
617 rc_path = g_build_filename(homedir(), GQ_RC_DIR, RC_FILE_NAME, NULL); |
742
a336b5545af6
Pass ConfOptions * to save_options() and load_options().
zas_
parents:
741
diff
changeset
|
618 save_options_to(rc_path, options); |
1 | 619 g_free(rc_path); |
620 } | |
621 | |
741
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
622 |
0e8b802e54d5
Move code from save_options() to new save_options_to() which takes
zas_
parents:
738
diff
changeset
|
623 |
1 | 624 /* |
625 *----------------------------------------------------------------------------- | |
626 * load configuration (public) | |
627 *----------------------------------------------------------------------------- | |
442 | 628 */ |
1 | 629 |
729
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
630 static gboolean is_numbered_option(const gchar *option, const gchar *prefix, gint *number) |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
631 { |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
632 gsize n; |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
633 gsize option_len = strlen(option); |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
634 gsize prefix_len = strlen(prefix); |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
635 |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
636 if (option_len <= prefix_len) return FALSE; |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
637 if (g_ascii_strncasecmp(option, prefix, prefix_len) != 0) return FALSE; |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
638 |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
639 n = prefix_len; |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
640 while (g_ascii_isdigit(option[n])) n++; |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
641 if (n < option_len) return FALSE; |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
642 |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
643 if (number) *number = atoi(option + prefix_len); |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
644 return TRUE; |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
645 } |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
646 |
824 | 647 #define OPTION_READ_BUFFER_SIZE 1024 |
738
ff8b802eac58
Separate path building code from options loading code.
zas_
parents:
737
diff
changeset
|
648 |
742
a336b5545af6
Pass ConfOptions * to save_options() and load_options().
zas_
parents:
741
diff
changeset
|
649 static gboolean load_options_from(const gchar *utf8_path, ConfOptions *options) |
1 | 650 { |
651 FILE *f; | |
9 | 652 gchar *rc_pathl; |
824 | 653 gchar s_buf[OPTION_READ_BUFFER_SIZE]; |
654 gchar value_all[OPTION_READ_BUFFER_SIZE]; | |
655 gchar *option; | |
656 gchar *value; | |
350
00696edf1dd3
Partly rewrite option parser to accept whitespaces at start
zas_
parents:
349
diff
changeset
|
657 gint i; |
9 | 658 |
738
ff8b802eac58
Separate path building code from options loading code.
zas_
parents:
737
diff
changeset
|
659 rc_pathl = path_from_utf8(utf8_path); |
9 | 660 f = fopen(rc_pathl,"r"); |
661 g_free(rc_pathl); | |
738
ff8b802eac58
Separate path building code from options loading code.
zas_
parents:
737
diff
changeset
|
662 if (!f) return FALSE; |
1 | 663 |
350
00696edf1dd3
Partly rewrite option parser to accept whitespaces at start
zas_
parents:
349
diff
changeset
|
664 while (fgets(s_buf, sizeof(s_buf), f)) |
1 | 665 { |
824 | 666 gchar *value_end; |
350
00696edf1dd3
Partly rewrite option parser to accept whitespaces at start
zas_
parents:
349
diff
changeset
|
667 gchar *p = s_buf; |
1 | 668 |
824 | 669 /* skip empty lines and comments */ |
516 | 670 while (g_ascii_isspace(*p)) p++; |
350
00696edf1dd3
Partly rewrite option parser to accept whitespaces at start
zas_
parents:
349
diff
changeset
|
671 if (!*p || *p == '\n' || *p == '#') continue; |
824 | 672 |
673 /* parse option name */ | |
674 option = p; | |
675 while (g_ascii_isalnum(*p) || *p == '_' || *p == '.') p++; | |
350
00696edf1dd3
Partly rewrite option parser to accept whitespaces at start
zas_
parents:
349
diff
changeset
|
676 if (!*p) continue; |
00696edf1dd3
Partly rewrite option parser to accept whitespaces at start
zas_
parents:
349
diff
changeset
|
677 *p = '\0'; |
00696edf1dd3
Partly rewrite option parser to accept whitespaces at start
zas_
parents:
349
diff
changeset
|
678 p++; |
824 | 679 |
680 /* search for value start, name and value are normally separated by ': ' | |
681 * but we allow relaxed syntax here, so '=', ':=' or just a tab will work too */ | |
682 while (*p == ':' || g_ascii_isspace(*p) || *p == '=') p++; | |
683 value = p; | |
684 | |
516 | 685 while (*p && !g_ascii_isspace(*p) && *p != '\n') p++; |
824 | 686 value_end = p; /* value part up to the first whitespace or end of line */ |
687 while (*p != '\0') p++; | |
688 memcpy(value_all, value, 1 + p - value); | |
689 | |
690 *value_end = '\0'; | |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
691 |
641
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
692 #define READ_BOOL(_name_) if (read_bool_option(f, option, #_name_, value, &options->_name_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
693 #define READ_INT(_name_) if (read_int_option(f, option, #_name_, value, &options->_name_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
694 #define READ_UINT(_name_) if (read_uint_option(f, option, #_name_, value, &options->_name_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
695 #define READ_INT_CLAMP(_name_, _min_, _max_) if (read_int_option_clamp(f, option, #_name_, value, &options->_name_, _min_, _max_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
696 #define READ_INT_UNIT(_name_, _unit_) if (read_int_unit_option(f, option, #_name_, value, &options->_name_, _unit_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
697 #define READ_CHAR(_name_) if (read_char_option(f, option, #_name_, value_all, &options->_name_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
698 #define READ_COLOR(_name_) if (read_color_option(f, option, #_name_, value, &options->_name_)) continue; |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
699 |
641
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
700 #define COMPAT_READ_BOOL(_oldname_, _name_) if (read_bool_option(f, option, #_oldname_, value, &options->_name_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
701 #define COMPAT_READ_INT(_oldname_, _name_) if (read_int_option(f, option, #_oldname_, value, &options->_name_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
702 #define COMPAT_READ_UINT(_oldname_, _name_) if (read_uint_option(f, option, #_oldname_, value, &options->_name_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
703 #define COMPAT_READ_INT_CLAMP(_oldname_, _name_, _min_, _max_) if (read_int_option_clamp(f, option, #_oldname_, value, &options->_name_, _min_, _max_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
704 #define COMPAT_READ_INT_UNIT(_oldname_, _name_, _unit_) if (read_int_unit_option(f, option, #_oldname_, value, &options->_name_, _unit_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
705 #define COMPAT_READ_CHAR(_oldname_, _name_) if (read_char_option(f, option, #_oldname_, value_all, &options->_name_)) continue; |
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
706 #define COMPAT_READ_COLOR(_oldname_, _name_) if (read_color_option(f, option, #_oldname_, value, &options->_name_)) continue; |
472
3ad502287ff4
Add some macros to handle rc file compatibility issues related to
zas_
parents:
468
diff
changeset
|
707 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
708 /* general options */ |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
709 READ_BOOL(show_icon_names); |
497 | 710 READ_BOOL(show_copy_path); |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
711 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
712 READ_BOOL(tree_descend_subdirs); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
713 READ_BOOL(lazy_image_sync); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
714 READ_BOOL(update_on_time_change); |
442 | 715 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
716 READ_INT(duplicates_similarity_threshold); |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
717 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
718 READ_BOOL(progressive_key_scrolling); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
719 |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
720 READ_BOOL(enable_metadata_dirs); |
594
4cfce4ed35e0
Use a dedicated option to enable keywords and comment saving as XMP tags
zas_
parents:
586
diff
changeset
|
721 READ_BOOL(save_metadata_in_image_file); |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
722 |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
723 READ_BOOL(mousewheel_scrolls); |
442 | 724 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
725 READ_INT(open_recent_list_maxsize); |
458
7a69309b91c8
Allow the user to set the drag'n drop icon size through
zas_
parents:
446
diff
changeset
|
726 READ_INT(dnd_icon_size); |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
727 READ_BOOL(place_dialogs_under_mouse); |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
728 |
629 | 729 /* startup options */ |
730 | |
731 COMPAT_READ_BOOL(startup_path_enable, startup.restore_path); /* 2008/05/11 */ | |
732 READ_BOOL(startup.restore_path); | |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
733 |
630
83d3ded39e49
An option to save and restore the last path used was added.
zas_
parents:
629
diff
changeset
|
734 READ_BOOL(startup.use_last_path); |
83d3ded39e49
An option to save and restore the last path used was added.
zas_
parents:
629
diff
changeset
|
735 |
629 | 736 COMPAT_READ_CHAR(startup_path, startup.path); /* 2008/05/11 */ |
737 READ_CHAR(startup.path); | |
738 | |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
739 /* layout options */ |
1 | 740 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
741 READ_INT(layout.style); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
742 READ_CHAR(layout.order); |
556
fe675761d091
Replace Layout icon_view field by more generic file_view_type.
zas_
parents:
537
diff
changeset
|
743 |
fe675761d091
Replace Layout icon_view field by more generic file_view_type.
zas_
parents:
537
diff
changeset
|
744 COMPAT_READ_UINT(layout.view_as_icons, layout.file_view_type); /* 2008/05/03 */ |
fe675761d091
Replace Layout icon_view field by more generic file_view_type.
zas_
parents:
537
diff
changeset
|
745 |
380
5afe77bb563a
Introduce a new struct ViewDir to handle directory views common
zas_
parents:
377
diff
changeset
|
746 READ_UINT(layout.dir_view_type); |
556
fe675761d091
Replace Layout icon_view field by more generic file_view_type.
zas_
parents:
537
diff
changeset
|
747 READ_UINT(layout.file_view_type); |
433
5ddcf93278c7
Save Show Marks state to rc file and display current state in menu.
zas_
parents:
413
diff
changeset
|
748 READ_BOOL(layout.show_marks); |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
749 READ_BOOL(layout.show_thumbnails); |
825 | 750 READ_BOOL(layout.show_directory_date); |
340
77103f3f2cb1
Rename option thumbnails.enabled to layout.show_thumbnails as it makes
zas_
parents:
339
diff
changeset
|
751 |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
752 /* window positions */ |
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
753 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
754 READ_BOOL(layout.save_window_positions); |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
755 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
756 READ_INT(layout.main_window.x); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
757 READ_INT(layout.main_window.y); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
758 READ_INT(layout.main_window.w); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
759 READ_INT(layout.main_window.h); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
760 READ_BOOL(layout.main_window.maximized); |
764
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
761 READ_INT(layout.main_window.hdivider_pos); |
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
762 READ_INT(layout.main_window.vdivider_pos); |
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
763 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
764 READ_INT(layout.float_window.x); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
765 READ_INT(layout.float_window.y); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
766 READ_INT(layout.float_window.w); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
767 READ_INT(layout.float_window.h); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
768 READ_INT(layout.float_window.vdivider_pos); |
764
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
769 |
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
770 READ_INT(layout.properties_window.w); |
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
771 READ_INT(layout.properties_window.h); |
ae618ebec3e9
Save properties window width and height to rc file and restore
zas_
parents:
743
diff
changeset
|
772 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
773 READ_BOOL(layout.tools_float); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
774 READ_BOOL(layout.tools_hidden); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
775 READ_BOOL(layout.tools_restore_state); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
776 READ_BOOL(layout.toolbar_hidden); |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
777 |
489
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
778 /* panels */ |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
779 READ_BOOL(panels.exif.enabled); |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
780 READ_INT_CLAMP(panels.exif.width, PANEL_MIN_WIDTH, PANEL_MAX_WIDTH); |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
781 READ_BOOL(panels.info.enabled); |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
782 READ_INT_CLAMP(panels.info.width, PANEL_MIN_WIDTH, PANEL_MAX_WIDTH); |
3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
zas_
parents:
475
diff
changeset
|
783 READ_BOOL(panels.sort.enabled); |
491 | 784 READ_INT(panels.sort.action_state); |
785 READ_INT(panels.sort.mode_state); | |
786 READ_INT(panels.sort.selection_state); | |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
787 |
684 | 788 /* properties dialog options */ |
789 READ_CHAR(properties.tabs_order); | |
790 | |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
791 /* image options */ |
604
0b203af63dbf
Use g_ascii_strcasecmp() instead of strcasecmp() where ascii-only strings
zas_
parents:
594
diff
changeset
|
792 if (g_ascii_strcasecmp(option, "image.zoom_mode") == 0) |
442 | 793 { |
604
0b203af63dbf
Use g_ascii_strcasecmp() instead of strcasecmp() where ascii-only strings
zas_
parents:
594
diff
changeset
|
794 if (g_ascii_strcasecmp(value, "original") == 0) |
377 | 795 options->image.zoom_mode = ZOOM_RESET_ORIGINAL; |
604
0b203af63dbf
Use g_ascii_strcasecmp() instead of strcasecmp() where ascii-only strings
zas_
parents:
594
diff
changeset
|
796 else if (g_ascii_strcasecmp(value, "fit") == 0) |
377 | 797 options->image.zoom_mode = ZOOM_RESET_FIT_WINDOW; |
604
0b203af63dbf
Use g_ascii_strcasecmp() instead of strcasecmp() where ascii-only strings
zas_
parents:
594
diff
changeset
|
798 else if (g_ascii_strcasecmp(value, "dont_change") == 0) |
377 | 799 options->image.zoom_mode = ZOOM_RESET_NONE; |
641
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
800 continue; |
442 | 801 } |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
802 READ_BOOL(image.zoom_2pass); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
803 READ_BOOL(image.zoom_to_fit_allow_expand); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
804 READ_BOOL(image.fit_window_to_image); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
805 READ_BOOL(image.limit_window_size); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
806 READ_INT(image.max_window_size); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
807 READ_BOOL(image.limit_autofit_size); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
808 READ_INT(image.max_autofit_size); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
809 READ_INT(image.scroll_reset_method); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
810 READ_INT(image.tile_cache_max); |
848 | 811 READ_INT(image.image_cache_max); |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
812 READ_INT_CLAMP(image.zoom_quality, GDK_INTERP_NEAREST, GDK_INTERP_HYPER); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
813 READ_INT_CLAMP(image.dither_quality, GDK_RGB_DITHER_NONE, GDK_RGB_DITHER_MAX); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
814 READ_INT(image.zoom_increment); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
815 READ_BOOL(image.enable_read_ahead); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
816 READ_BOOL(image.exif_rotate_enable); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
817 READ_BOOL(image.use_custom_border_color); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
818 READ_COLOR(image.border_color); |
413
9e521adbf312
Add two new options to control image read buffer at runtime.
zas_
parents:
403
diff
changeset
|
819 READ_INT_CLAMP(image.read_buffer_size, IMAGE_LOADER_READ_BUFFER_SIZE_MIN, IMAGE_LOADER_READ_BUFFER_SIZE_MAX); |
9e521adbf312
Add two new options to control image read buffer at runtime.
zas_
parents:
403
diff
changeset
|
820 READ_INT_CLAMP(image.idle_read_loop_count, IMAGE_LOADER_IDLE_READ_LOOP_COUNT_MIN, IMAGE_LOADER_IDLE_READ_LOOP_COUNT_MAX); |
442 | 821 |
1 | 822 |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
823 /* thumbnails options */ |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
824 READ_INT_CLAMP(thumbnails.max_width, 16, 512); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
825 READ_INT_CLAMP(thumbnails.max_height, 16, 512); |
351
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
826 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
827 READ_BOOL(thumbnails.enable_caching); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
828 READ_BOOL(thumbnails.cache_into_dirs); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
829 READ_BOOL(thumbnails.fast); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
830 READ_BOOL(thumbnails.use_xvpics); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
831 READ_BOOL(thumbnails.spec_standard); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
832 READ_INT_CLAMP(thumbnails.quality, GDK_INTERP_NEAREST, GDK_INTERP_HYPER); |
9 | 833 |
338
41c3cb73120f
Rename window options (moved to layout) and re-order rc file.
zas_
parents:
337
diff
changeset
|
834 /* file sorting options */ |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
835 READ_UINT(file_sort.method); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
836 READ_BOOL(file_sort.ascending); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
837 READ_BOOL(file_sort.case_sensitive); |
1 | 838 |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
839 /* file operations options */ |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
840 READ_BOOL(file_ops.enable_in_place_rename); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
841 READ_BOOL(file_ops.confirm_delete); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
842 READ_BOOL(file_ops.enable_delete_key); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
843 READ_BOOL(file_ops.safe_delete_enable); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
844 READ_CHAR(file_ops.safe_delete_path); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
845 READ_INT(file_ops.safe_delete_folder_maxsize); |
1 | 846 |
341
15c6b94545a2
Move safe_delete* and in place rename options to file_ops
zas_
parents:
340
diff
changeset
|
847 /* fullscreen options */ |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
848 READ_INT(fullscreen.screen); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
849 READ_BOOL(fullscreen.clean_flip); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
850 READ_BOOL(fullscreen.disable_saver); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
851 READ_BOOL(fullscreen.above); |
468
2df505c60459
Replace fullscreen.info and fullscreen.show_info options by:
zas_
parents:
458
diff
changeset
|
852 |
612 | 853 /* histogram */ |
854 READ_UINT(histogram.last_channel_mode); | |
855 READ_UINT(histogram.last_log_mode); | |
856 | |
468
2df505c60459
Replace fullscreen.info and fullscreen.show_info options by:
zas_
parents:
458
diff
changeset
|
857 /* image overlay */ |
638
8cc9f349c670
Rename option image_overlay.common.enabled to image_overlay.common.state
zas_
parents:
630
diff
changeset
|
858 COMPAT_READ_UINT(image_overlay.common.enabled, image_overlay.common.state); /* 2008-05-12 */ |
8cc9f349c670
Rename option image_overlay.common.enabled to image_overlay.common.state
zas_
parents:
630
diff
changeset
|
859 READ_UINT(image_overlay.common.state); |
8cc9f349c670
Rename option image_overlay.common.enabled to image_overlay.common.state
zas_
parents:
630
diff
changeset
|
860 COMPAT_READ_BOOL(fullscreen.show_info, image_overlay.common.show_at_startup); /* 2008-04-21 */ |
468
2df505c60459
Replace fullscreen.info and fullscreen.show_info options by:
zas_
parents:
458
diff
changeset
|
861 READ_BOOL(image_overlay.common.show_at_startup); |
638
8cc9f349c670
Rename option image_overlay.common.enabled to image_overlay.common.state
zas_
parents:
630
diff
changeset
|
862 COMPAT_READ_CHAR(fullscreen.info, image_overlay.common.template_string); /* 2008-04-21 */ |
468
2df505c60459
Replace fullscreen.info and fullscreen.show_info options by:
zas_
parents:
458
diff
changeset
|
863 READ_CHAR(image_overlay.common.template_string); |
638
8cc9f349c670
Rename option image_overlay.common.enabled to image_overlay.common.state
zas_
parents:
630
diff
changeset
|
864 |
822
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
768
diff
changeset
|
865 READ_INT(image_overlay.common.x); |
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
768
diff
changeset
|
866 READ_INT(image_overlay.common.y); |
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
768
diff
changeset
|
867 |
df541dc41707
Allow to set image overlay info position through options:
zas_
parents:
768
diff
changeset
|
868 |
9 | 869 /* slideshow options */ |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
870 READ_INT_UNIT(slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
871 READ_BOOL(slideshow.random); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
872 READ_BOOL(slideshow.repeat); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
873 |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
874 /* collection options */ |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
875 |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
876 READ_BOOL(collections.rectangular_selection); |
1 | 877 |
878 /* filtering options */ | |
879 | |
356 | 880 READ_BOOL(file_filter.show_hidden_files); |
373
61a3c8b05b24
Add a new option in Preferences > Filtering to allow the
zas_
parents:
372
diff
changeset
|
881 READ_BOOL(file_filter.show_dot_directory); |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
882 READ_BOOL(file_filter.disable); |
1 | 883 |
604
0b203af63dbf
Use g_ascii_strcasecmp() instead of strcasecmp() where ascii-only strings
zas_
parents:
594
diff
changeset
|
884 if (g_ascii_strcasecmp(option, "file_filter.ext") == 0) |
9 | 885 { |
886 filter_parse(value_all); | |
641
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
887 continue; |
9 | 888 } |
1 | 889 |
604
0b203af63dbf
Use g_ascii_strcasecmp() instead of strcasecmp() where ascii-only strings
zas_
parents:
594
diff
changeset
|
890 if (g_ascii_strcasecmp(option, "sidecar.ext") == 0) |
145
8be2cc687304
fixed grouping sidecar files and made it configurable via config file
nadvornik
parents:
113
diff
changeset
|
891 { |
170
9a56e3d13e67
basic sidecar files configuration via preferences dialog
nadvornik
parents:
145
diff
changeset
|
892 sidecar_ext_parse(value_all, TRUE); |
641
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
893 continue; |
145
8be2cc687304
fixed grouping sidecar files and made it configurable via config file
nadvornik
parents:
113
diff
changeset
|
894 } |
442 | 895 |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
896 /* Color Profiles */ |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
897 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
898 READ_BOOL(color_profile.enabled); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
899 READ_BOOL(color_profile.use_image); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
900 READ_INT(color_profile.input_type); |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
901 |
729
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
902 if (is_numbered_option(option, "color_profile.input_file_", &i)) |
442 | 903 { |
729
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
904 if (i > 0 && i <= COLOR_PROFILE_INPUTS) |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
905 { |
729
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
906 i--; |
351
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
907 read_char_option(f, option, option, value, &options->color_profile.input_file[i]); |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
908 } |
641
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
909 continue; |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
910 } |
729
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
911 |
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
912 if (is_numbered_option(option, "color_profile.input_name_", &i)) |
442 | 913 { |
729
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
914 if (i > 0 && i <= COLOR_PROFILE_INPUTS) |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
915 { |
729
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
916 i--; |
351
55ee774d5bc3
Simplify read_*_option() stuff by passing pointer to option value.
zas_
parents:
350
diff
changeset
|
917 read_char_option(f, option, option, value, &options->color_profile.input_name[i]); |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
918 } |
641
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
919 continue; |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
920 } |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
921 |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
922 READ_INT(color_profile.screen_type); |
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
923 READ_CHAR(color_profile.screen_file); |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
924 |
737
8a8873e7a552
Make shell command and its option rc file options instead of hardcoded strings.
zas_
parents:
730
diff
changeset
|
925 /* Shell command */ |
8a8873e7a552
Make shell command and its option rc file options instead of hardcoded strings.
zas_
parents:
730
diff
changeset
|
926 READ_CHAR(shell.path); |
8a8873e7a552
Make shell command and its option rc file options instead of hardcoded strings.
zas_
parents:
730
diff
changeset
|
927 READ_CHAR(shell.options); |
8a8873e7a552
Make shell command and its option rc file options instead of hardcoded strings.
zas_
parents:
730
diff
changeset
|
928 |
1 | 929 /* External Programs */ |
930 | |
729
9a6a7e95467a
Make stricter match for option's names consisting of a prefix and a number.
zas_
parents:
715
diff
changeset
|
931 if (is_numbered_option(option, "external_", &i)) |
1 | 932 { |
283 | 933 if (i > 0 && i <= GQ_EDITOR_SLOTS) |
1 | 934 { |
217 | 935 const gchar *ptr; |
768
ff51413f098d
Use functions to set editors name and command and ensure they are
zas_
parents:
764
diff
changeset
|
936 |
1 | 937 i--; |
768
ff51413f098d
Use functions to set editors name and command and ensure they are
zas_
parents:
764
diff
changeset
|
938 editor_set_name(i, quoted_value(value_all, &ptr)); |
ff51413f098d
Use functions to set editors name and command and ensure they are
zas_
parents:
764
diff
changeset
|
939 editor_set_command(i, quoted_value(ptr, NULL)); |
1 | 940 } |
641
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
941 continue; |
1 | 942 } |
943 | |
352
7e7c9fa8fdeb
Use convenient macros to read options, it will ensure options
zas_
parents:
351
diff
changeset
|
944 /* Exif */ |
605
651ae2be1031
Use g_ascii_strncasecmp() instead of strncasecmp() where applicable.
zas_
parents:
604
diff
changeset
|
945 if (0 == g_ascii_strncasecmp(option, "exif.display.", 13)) |
222
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
946 { |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
947 for (i = 0; ExifUIList[i].key; i++) |
604
0b203af63dbf
Use g_ascii_strcasecmp() instead of strcasecmp() where ascii-only strings
zas_
parents:
594
diff
changeset
|
948 if (0 == g_ascii_strcasecmp(option + 13, ExifUIList[i].key)) |
222
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
949 ExifUIList[i].current = strtol(value, NULL, 10); |
641
81441380d3be
When an option was successfully read, just continue to next line.
zas_
parents:
640
diff
changeset
|
950 continue; |
442 | 951 } |
1 | 952 } |
953 | |
954 fclose(f); | |
738
ff8b802eac58
Separate path building code from options loading code.
zas_
parents:
737
diff
changeset
|
955 return TRUE; |
ff8b802eac58
Separate path building code from options loading code.
zas_
parents:
737
diff
changeset
|
956 } |
ff8b802eac58
Separate path building code from options loading code.
zas_
parents:
737
diff
changeset
|
957 |
742
a336b5545af6
Pass ConfOptions * to save_options() and load_options().
zas_
parents:
741
diff
changeset
|
958 void load_options(ConfOptions *options) |
738
ff8b802eac58
Separate path building code from options loading code.
zas_
parents:
737
diff
changeset
|
959 { |
743
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
960 gboolean success; |
738
ff8b802eac58
Separate path building code from options loading code.
zas_
parents:
737
diff
changeset
|
961 gchar *rc_path; |
ff8b802eac58
Separate path building code from options loading code.
zas_
parents:
737
diff
changeset
|
962 |
743
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
963 if (isdir(GQ_SYSTEM_WIDE_DIR)) |
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
964 { |
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
965 rc_path = g_build_filename(GQ_SYSTEM_WIDE_DIR, RC_FILE_NAME, NULL); |
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
966 success = load_options_from(rc_path, options); |
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
967 DEBUG_1("Loading options from %s ... %s", rc_path, success ? "done" : "failed"); |
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
968 g_free(rc_path); |
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
969 } |
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
970 |
738
ff8b802eac58
Separate path building code from options loading code.
zas_
parents:
737
diff
changeset
|
971 rc_path = g_build_filename(homedir(), GQ_RC_DIR, RC_FILE_NAME, NULL); |
743
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
972 success = load_options_from(rc_path, options); |
77ff94c0490a
Try to load a system-wide rc file if any, before per-user rc file.
zas_
parents:
742
diff
changeset
|
973 DEBUG_1("Loading options from %s ... %s", rc_path, success ? "done" : "failed"); |
1 | 974 g_free(rc_path); |
975 } |