Mercurial > geeqie.yaz
annotate src/rcfile.c @ 307:667e49f52168
Move secure save code to its own files: secure_save.{c,h}.
author | zas_ |
---|---|
date | Fri, 11 Apr 2008 12:31:32 +0000 |
parents | d1f74154463e |
children | b16b9b8979e5 |
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 |
1 | 4 * |
5 * Author: John Ellis | |
6 * | |
9 | 7 * This software is released under the GNU General Public License (GNU GPL). |
8 * Please read the included file COPYING for more information. | |
9 * This software comes with no warranty of any kind, use at your own risk! | |
1 | 10 */ |
11 | |
276 | 12 #include <glib/gstdio.h> |
13 #include <errno.h> | |
9 | 14 |
281 | 15 #include "main.h" |
9 | 16 #include "rcfile.h" |
1 | 17 |
307
667e49f52168
Move secure save code to its own files: secure_save.{c,h}.
zas_
parents:
288
diff
changeset
|
18 #include "bar_exif.h" |
9 | 19 #include "filelist.h" |
307
667e49f52168
Move secure save code to its own files: secure_save.{c,h}.
zas_
parents:
288
diff
changeset
|
20 #include "secure_save.h" |
9 | 21 #include "slideshow.h" |
22 #include "ui_fileops.h" | |
23 | |
1 | 24 |
25 /* | |
26 *----------------------------------------------------------------------------- | |
27 * line write/parse routines (private) | |
28 *----------------------------------------------------------------------------- | |
29 */ | |
217 | 30 |
31 /* | |
32 returns text without quotes or NULL for empty or broken string | |
33 any text up to first '"' is skipped | |
34 tail is set to point at the char after the second '"' | |
35 or at the ending \0 | |
36 | |
37 */ | |
1 | 38 |
217 | 39 gchar *quoted_value(const gchar *text, const gchar **tail) |
1 | 40 { |
9 | 41 const gchar *ptr; |
1 | 42 gint c = 0; |
43 gint l = strlen(text); | |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
44 gchar *retval = NULL; |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
45 |
217 | 46 if (tail) *tail = text; |
47 | |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
48 if (l == 0) return retval; |
1 | 49 |
50 while (c < l && text[c] !='"') c++; | |
51 if (text[c] == '"') | |
52 { | |
9 | 53 gint e; |
1 | 54 c++; |
55 ptr = text + c; | |
9 | 56 e = c; |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
57 while (e < l) |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
58 { |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
59 if (text[e-1] != '\\' && text[e] == '"') break; |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
60 e++; |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
61 } |
9 | 62 if (text[e] == '"') |
1 | 63 { |
9 | 64 if (e - c > 0) |
1 | 65 { |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
66 gchar *substring = g_strndup(ptr, e - c); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
67 |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
68 if (substring) |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
69 { |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
70 retval = g_strcompress(substring); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
71 g_free(substring); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
72 } |
1 | 73 } |
74 } | |
217 | 75 if (tail) *tail = text + e + 1; |
1 | 76 } |
77 else | |
78 /* for compatibility with older formats (<0.3.7) | |
79 * read a line without quotes too */ | |
80 { | |
81 c = 0; | |
82 while (c < l && text[c] !=' ' && text[c] !=8 && text[c] != '\n') c++; | |
83 if (c != 0) | |
84 { | |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
85 retval = g_strndup(text, c); |
1 | 86 } |
217 | 87 if (tail) *tail = text + c; |
1 | 88 } |
89 | |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
90 return retval; |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
91 } |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
92 |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
93 gchar *escquote_value(const gchar *text) |
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 *e; |
250 | 96 |
217 | 97 if (!text) return g_strdup("\"\""); |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
98 |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
99 e = g_strescape(text, ""); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
100 if (e) |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
101 { |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
102 gchar *retval = g_strdup_printf("\"%s\"", e); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
103 g_free(e); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
104 return retval; |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
105 } |
217 | 106 return g_strdup("\"\""); |
1 | 107 } |
108 | |
276 | 109 static void write_char_option(SecureSaveInfo *ssi, gchar *label, gchar *text) |
1 | 110 { |
210
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
111 gchar *escval = escquote_value(text); |
3fa93ab9b119
Improve escaping and quoting of strings saved in rc files.
zas_
parents:
209
diff
changeset
|
112 |
276 | 113 secure_fprintf(ssi, "%s: %s\n", label, escval); |
217 | 114 g_free(escval); |
1 | 115 } |
116 | |
117 static gchar *read_char_option(FILE *f, gchar *option, gchar *label, gchar *value, gchar *text) | |
118 { | |
9 | 119 if (strcasecmp(option, label) == 0) |
1 | 120 { |
121 g_free(text); | |
217 | 122 text = quoted_value(value, NULL); |
1 | 123 } |
124 return text; | |
125 } | |
126 | |
267
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
127 /* 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
|
128 * here is an equivalent stub function. */ |
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
129 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
|
130 { |
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
131 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
|
132 } |
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
133 |
276 | 134 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
|
135 { |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
136 if (color) |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
137 { |
267
a9adf9e1a746
Remove dependency on GTK 2.12, reported by John Vodden and Vladimir
zas_
parents:
250
diff
changeset
|
138 gchar *colorstring = color_to_string(color); |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
139 |
276 | 140 write_char_option(ssi, label, colorstring); |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
141 g_free(colorstring); |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
142 } |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
143 else |
276 | 144 secure_fprintf(ssi, "%s: \n", label); |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
145 } |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
146 |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
147 static GdkColor *read_color_option(FILE *f, gchar *option, gchar *label, gchar *value, GdkColor *color) |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
148 { |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
149 if (strcasecmp(option, label) == 0) |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
150 { |
217 | 151 gchar *colorstr = quoted_value(value, NULL); |
152 if (colorstr) gdk_color_parse(colorstr, color); | |
153 g_free(colorstr); | |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
154 } |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
155 return color; |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
156 } |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
157 |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
158 |
276 | 159 static void write_int_option(SecureSaveInfo *ssi, gchar *label, gint n) |
1 | 160 { |
276 | 161 secure_fprintf(ssi, "%s: %d\n", label, n); |
1 | 162 } |
163 | |
164 static gint read_int_option(FILE *f, gchar *option, gchar *label, gchar *value, gint n) | |
165 { | |
9 | 166 if (strcasecmp(option, label) == 0) |
167 { | |
168 n = strtol(value, NULL, 10); | |
169 } | |
170 return n; | |
171 } | |
172 | |
276 | 173 static void write_int_unit_option(SecureSaveInfo *ssi, gchar *label, gint n, gint subunits) |
9 | 174 { |
175 gint l, r; | |
176 | |
177 if (subunits > 0) | |
178 { | |
179 l = n / subunits; | |
180 r = n % subunits; | |
181 } | |
182 else | |
1 | 183 { |
9 | 184 l = n; |
185 r = 0; | |
186 } | |
187 | |
276 | 188 secure_fprintf(ssi, "%s: %d.%d\n", label, l, r); |
9 | 189 } |
190 | |
191 static gint read_int_unit_option(FILE *f, gchar *option, gchar *label, gchar *value, gint n, gint subunits) | |
192 { | |
193 if (strcasecmp(option, label) == 0) | |
194 { | |
195 gint l, r; | |
196 gchar *ptr; | |
197 | |
198 ptr = value; | |
199 while (*ptr != '\0' && *ptr != '.') ptr++; | |
200 if (*ptr == '.') | |
201 { | |
202 *ptr = '\0'; | |
203 l = strtol(value, NULL, 10); | |
204 *ptr = '.'; | |
205 ptr++; | |
206 r = strtol(ptr, NULL, 10); | |
207 } | |
208 else | |
209 { | |
210 l = strtol(value, NULL, 10); | |
211 r = 0; | |
212 } | |
213 | |
214 n = l * subunits + r; | |
1 | 215 } |
216 return n; | |
217 } | |
218 | |
276 | 219 static void write_bool_option(SecureSaveInfo *ssi, gchar *label, gint n) |
1 | 220 { |
276 | 221 secure_fprintf(ssi, "%s: ", label); |
222 if (n) secure_fprintf(ssi, "true\n"); else secure_fprintf(ssi, "false\n"); | |
1 | 223 } |
224 | |
225 static gint read_bool_option(FILE *f, gchar *option, gchar *label, gchar *value, gint n) | |
226 { | |
9 | 227 if (strcasecmp(option, label) == 0) |
1 | 228 { |
9 | 229 if (strcasecmp(value, "true") == 0) |
1 | 230 n = TRUE; |
231 else | |
232 n = FALSE; | |
233 } | |
234 return n; | |
235 } | |
236 | |
237 /* | |
238 *----------------------------------------------------------------------------- | |
239 * save configuration (public) | |
240 *----------------------------------------------------------------------------- | |
241 */ | |
242 | |
9 | 243 void save_options(void) |
1 | 244 { |
276 | 245 SecureSaveInfo *ssi; |
1 | 246 gchar *rc_path; |
9 | 247 gchar *rc_pathl; |
1 | 248 gint i; |
249 | |
283 | 250 rc_path = g_strconcat(homedir(), "/", GQ_RC_DIR, "/", RC_FILE_NAME, NULL); |
1 | 251 |
9 | 252 rc_pathl = path_from_utf8(rc_path); |
276 | 253 ssi = secure_open(rc_pathl); |
9 | 254 g_free(rc_pathl); |
276 | 255 if (!ssi) |
1 | 256 { |
9 | 257 gchar *buf; |
258 | |
259 buf = g_strdup_printf(_("error saving config file: %s\n"), rc_path); | |
260 print_term(buf); | |
261 g_free(buf); | |
262 | |
1 | 263 g_free(rc_path); |
264 return; | |
265 } | |
276 | 266 |
267 secure_fprintf(ssi, "######################################################################\n"); | |
288
d1f74154463e
Replace occurences of Geeqie / geeqie by constants defined in main.h.
zas_
parents:
283
diff
changeset
|
268 secure_fprintf(ssi, "# %30s config file version %7s #\n", GQ_APPNAME, VERSION); |
276 | 269 secure_fprintf(ssi, "######################################################################\n"); |
270 secure_fputc(ssi, '\n'); | |
1 | 271 |
276 | 272 secure_fprintf(ssi, "# Note: This file is autogenerated. Options can be changed here,\n"); |
273 secure_fprintf(ssi, "# but user comments and formatting will be lost.\n"); | |
274 secure_fputc(ssi, '\n'); | |
275 | |
276 secure_fprintf(ssi, "##### General Options #####\n\n"); | |
1 | 277 |
276 | 278 write_int_option(ssi, "layout_style", layout_style); |
279 write_char_option(ssi, "layout_order", layout_order); | |
280 secure_fputc(ssi, '\n'); | |
9 | 281 |
276 | 282 write_bool_option(ssi, "layout_view_as_icons", layout_view_icons); |
283 write_bool_option(ssi, "layout_view_as_tree", layout_view_tree); | |
284 write_bool_option(ssi, "show_icon_names", show_icon_names); | |
285 secure_fputc(ssi, '\n'); | |
9 | 286 |
276 | 287 write_bool_option(ssi, "tree_descend_folders", tree_descend_subdirs); |
288 write_bool_option(ssi, "lazy_image_sync", lazy_image_sync); | |
289 write_bool_option(ssi, "update_on_time_change", update_on_time_change); | |
290 write_bool_option(ssi, "exif_auto_rotate", exif_rotate_enable); | |
291 secure_fputc(ssi, '\n'); | |
1 | 292 |
276 | 293 write_bool_option(ssi, "enable_startup_path", startup_path_enable); |
294 write_char_option(ssi, "startup_path", startup_path); | |
295 secure_fputc(ssi, '\n'); | |
9 | 296 |
276 | 297 secure_fprintf(ssi, "zoom_mode: "); |
298 if (zoom_mode == ZOOM_RESET_ORIGINAL) secure_fprintf(ssi, "original\n"); | |
299 if (zoom_mode == ZOOM_RESET_FIT_WINDOW) secure_fprintf(ssi, "fit\n"); | |
300 if (zoom_mode == ZOOM_RESET_NONE) secure_fprintf(ssi, "dont_change\n"); | |
301 write_bool_option(ssi, "two_pass_scaling", two_pass_zoom); | |
302 write_bool_option(ssi, "zoom_to_fit_allow_expand", zoom_to_fit_expands); | |
303 secure_fputc(ssi, '\n'); | |
1 | 304 |
276 | 305 write_bool_option(ssi, "fit_window_to_image", fit_window); |
306 write_bool_option(ssi, "limit_window_size", limit_window_size); | |
307 write_int_option(ssi, "max_window_size", max_window_size); | |
308 write_bool_option(ssi, "limit_autofit_size", limit_autofit_size); | |
309 write_int_option(ssi, "max_autofit_size", max_autofit_size); | |
310 secure_fputc(ssi, '\n'); | |
1 | 311 |
276 | 312 write_bool_option(ssi, "progressive_keyboard_scrolling", progressive_key_scrolling); |
313 write_int_option(ssi, "scroll_reset_method", scroll_reset_method); | |
314 secure_fputc(ssi, '\n'); | |
9 | 315 |
276 | 316 write_bool_option(ssi, "enable_thumbnails", thumbnails_enabled); |
317 write_int_option(ssi, "thumbnail_width", thumb_max_width); | |
318 write_int_option(ssi, "thumbnail_height", thumb_max_height); | |
319 write_bool_option(ssi, "cache_thumbnails", enable_thumb_caching); | |
320 write_bool_option(ssi, "cache_thumbnails_into_dirs", enable_thumb_dirs); | |
321 write_bool_option(ssi, "thumbnail_fast", thumbnail_fast); | |
322 write_bool_option(ssi, "use_xvpics_thumbnails", use_xvpics_thumbnails); | |
323 write_bool_option(ssi, "thumbnail_spec_standard", thumbnail_spec_standard); | |
324 secure_fputc(ssi, '\n'); | |
9 | 325 |
276 | 326 write_bool_option(ssi, "local_metadata", enable_metadata_dirs); |
327 secure_fputc(ssi, '\n'); | |
1 | 328 |
276 | 329 write_int_option(ssi, "sort_method", (gint)file_sort_method); |
330 write_bool_option(ssi, "sort_ascending", file_sort_ascending); | |
331 write_bool_option(ssi, "sort_case_sensitive", file_sort_case_sensitive); | |
332 secure_fputc(ssi, '\n'); | |
1 | 333 |
276 | 334 write_bool_option(ssi, "confirm_delete", confirm_delete); |
335 write_bool_option(ssi, "enable_delete_key", enable_delete_key); | |
336 write_bool_option(ssi, "safe_delete", safe_delete_enable); | |
337 write_char_option(ssi, "safe_delete_path", safe_delete_path); | |
338 write_int_option(ssi, "safe_delete_size", safe_delete_size); | |
339 secure_fputc(ssi, '\n'); | |
9 | 340 |
276 | 341 write_bool_option(ssi, "tools_float", tools_float); |
342 write_bool_option(ssi, "tools_hidden", tools_hidden); | |
343 write_bool_option(ssi, "restore_tool_state", restore_tool); | |
344 write_bool_option(ssi, "toolbar_hidden", toolbar_hidden); | |
345 secure_fputc(ssi, '\n'); | |
9 | 346 |
276 | 347 write_bool_option(ssi, "mouse_wheel_scrolls", mousewheel_scrolls); |
348 write_bool_option(ssi, "in_place_rename", enable_in_place_rename); | |
349 write_int_option(ssi, "open_recent_max", recent_list_max); | |
350 write_int_option(ssi, "image_cache_size_max", tile_cache_max); | |
351 write_int_option(ssi, "thumbnail_quality", thumbnail_quality); | |
352 write_int_option(ssi, "zoom_quality", zoom_quality); | |
353 write_int_option(ssi, "dither_quality", dither_quality); | |
354 write_int_option(ssi, "zoom_increment", zoom_increment); | |
355 write_bool_option(ssi, "enable_read_ahead", enable_read_ahead); | |
356 write_bool_option(ssi, "display_dialogs_under_mouse", place_dialogs_under_mouse); | |
357 secure_fputc(ssi, '\n'); | |
9 | 358 |
276 | 359 write_bool_option(ssi, "user_specified_window_background", user_specified_window_background); |
360 write_color_option(ssi, "window_background_color", &window_background_color); | |
361 secure_fputc(ssi, '\n'); | |
4 | 362 |
276 | 363 write_int_option(ssi, "fullscreen_screen", fullscreen_screen); |
364 write_bool_option(ssi, "fullscreen_clean_flip", fullscreen_clean_flip); | |
365 write_bool_option(ssi, "fullscreen_disable_saver", fullscreen_disable_saver); | |
366 write_bool_option(ssi, "fullscreen_above", fullscreen_above); | |
367 write_bool_option(ssi, "show_fullscreen_info", show_fullscreen_info); | |
368 write_char_option(ssi, "fullscreen_info", fullscreen_info); | |
369 secure_fputc(ssi, '\n'); | |
1 | 370 |
276 | 371 write_int_option(ssi, "custom_similarity_threshold", dupe_custom_threshold); |
1 | 372 |
276 | 373 secure_fprintf(ssi, "\n##### Slideshow Options #####\n\n"); |
374 | |
375 write_int_unit_option(ssi, "slideshow_delay", slideshow_delay, SLIDESHOW_SUBSECOND_PRECISION); | |
1 | 376 |
276 | 377 write_bool_option(ssi, "slideshow_random", slideshow_random); |
378 write_bool_option(ssi, "slideshow_repeat", slideshow_repeat); | |
379 | |
380 secure_fprintf(ssi, "\n##### Filtering Options #####\n\n"); | |
1 | 381 |
276 | 382 write_bool_option(ssi, "show_dotfiles", show_dot_files); |
383 write_bool_option(ssi, "disable_filtering", file_filter_disable); | |
145
8be2cc687304
fixed grouping sidecar files and made it configurable via config file
nadvornik
parents:
113
diff
changeset
|
384 |
276 | 385 filter_write_list(ssi); |
386 | |
387 sidecar_ext_write(ssi); | |
1 | 388 |
276 | 389 secure_fprintf(ssi, "\n##### Color Profiles #####\n\n"); |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
390 |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
391 #ifndef HAVE_LCMS |
288
d1f74154463e
Replace occurences of Geeqie / geeqie by constants defined in main.h.
zas_
parents:
283
diff
changeset
|
392 secure_fprintf(ssi, "# NOTICE: %s was not built with support for color profiles,\n" |
d1f74154463e
Replace occurences of Geeqie / geeqie by constants defined in main.h.
zas_
parents:
283
diff
changeset
|
393 "# 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
|
394 #endif |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
395 |
276 | 396 write_bool_option(ssi, "color_profile_enabled", color_profile_enabled); |
397 write_bool_option(ssi, "color_profile_use_image", color_profile_use_image); | |
398 write_int_option(ssi, "color_profile_input_type", color_profile_input_type); | |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
399 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
|
400 { |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
401 gchar *buf; |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
402 |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
403 buf = g_strdup_printf("color_profile_input_file_%d", i + 1); |
276 | 404 write_char_option(ssi, buf, color_profile_input_file[i]); |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
405 g_free(buf); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
406 |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
407 buf = g_strdup_printf("color_profile_input_name_%d", i + 1); |
276 | 408 write_char_option(ssi, buf, color_profile_input_name[i]); |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
409 g_free(buf); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
410 } |
276 | 411 secure_fputc(ssi, '\n'); |
412 write_int_option(ssi, "color_profile_screen_type", color_profile_screen_type); | |
413 write_char_option(ssi, "color_profile_screen_file_1", color_profile_screen_file); | |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
414 |
276 | 415 secure_fprintf(ssi, "\n##### External Programs #####\n"); |
416 secure_fprintf(ssi, "# Maximum of 10 programs (external_1 through external_10)\n"); | |
417 secure_fprintf(ssi, "# format: external_n: \"menu name\" \"command line\"\n\n"); | |
1 | 418 |
283 | 419 for (i = 0; i < GQ_EDITOR_SLOTS; i++) |
1 | 420 { |
276 | 421 gchar *qname = escquote_value(editor_name[i]); |
422 gchar *qcommand = escquote_value(editor_command[i]); | |
423 secure_fprintf(ssi, "external_%d: %s %s\n", i+1, qname, qcommand); | |
217 | 424 g_free(qname); |
425 g_free(qcommand); | |
1 | 426 } |
427 | |
276 | 428 secure_fprintf(ssi, "\n##### Collection Options #####\n\n"); |
9 | 429 |
276 | 430 write_bool_option(ssi, "rectangular_selections", collection_rectangular_selection); |
9 | 431 |
276 | 432 secure_fprintf(ssi, "\n##### Window Positions #####\n\n"); |
1 | 433 |
276 | 434 write_bool_option(ssi, "restore_window_positions", save_window_positions); |
435 secure_fputc(ssi, '\n'); | |
436 write_int_option(ssi, "main_window_x", main_window_x); | |
437 write_int_option(ssi, "main_window_y", main_window_y); | |
438 write_int_option(ssi, "main_window_width", main_window_w); | |
439 write_int_option(ssi, "main_window_height", main_window_h); | |
440 write_bool_option(ssi, "main_window_maximized", main_window_maximized); | |
441 write_int_option(ssi, "float_window_x", float_window_x); | |
442 write_int_option(ssi, "float_window_y", float_window_y); | |
443 write_int_option(ssi, "float_window_width", float_window_w); | |
444 write_int_option(ssi, "float_window_height", float_window_h); | |
445 write_int_option(ssi, "float_window_divider", float_window_divider); | |
446 write_int_option(ssi, "divider_position_h", window_hdivider_pos); | |
447 write_int_option(ssi, "divider_position_v", window_vdivider_pos); | |
1 | 448 |
276 | 449 secure_fprintf(ssi, "\n##### Exif #####\n# 0: never\n# 1: if set\n# 2: always\n\n"); |
222
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
450 for (i = 0; ExifUIList[i].key; i++) |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
451 { |
276 | 452 secure_fprintf(ssi, "exif_"); |
453 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
|
454 } |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
455 |
276 | 456 secure_fputc(ssi, '\n'); |
457 secure_fprintf(ssi, "######################################################################\n"); | |
288
d1f74154463e
Replace occurences of Geeqie / geeqie by constants defined in main.h.
zas_
parents:
283
diff
changeset
|
458 secure_fprintf(ssi, "# end of config file #\n"); |
276 | 459 secure_fprintf(ssi, "######################################################################\n"); |
1 | 460 |
276 | 461 |
462 if (secure_close(ssi)) | |
463 { | |
464 gchar *buf; | |
465 | |
466 buf = g_strdup_printf(_("error saving config file: %s\nerror: %s\n"), rc_path, | |
467 secsave_strerror(secsave_errno)); | |
468 print_term(buf); | |
469 g_free(buf); | |
470 | |
471 g_free(rc_path); | |
472 return; | |
473 } | |
1 | 474 |
475 g_free(rc_path); | |
476 } | |
477 | |
478 /* | |
479 *----------------------------------------------------------------------------- | |
480 * load configuration (public) | |
481 *----------------------------------------------------------------------------- | |
482 */ | |
483 | |
9 | 484 void load_options(void) |
1 | 485 { |
486 FILE *f; | |
487 gchar *rc_path; | |
9 | 488 gchar *rc_pathl; |
1 | 489 gchar s_buf[1024]; |
490 gchar *s_buf_ptr; | |
491 gchar option[1024]; | |
492 gchar value[1024]; | |
493 gchar value_all[1024]; | |
494 gint c,l,i; | |
9 | 495 |
222
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
496 for (i = 0; ExifUIList[i].key; i++) |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
497 ExifUIList[i].current = ExifUIList[i].default_value; |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
498 |
283 | 499 rc_path = g_strconcat(homedir(), "/", GQ_RC_DIR, "/", RC_FILE_NAME, NULL); |
1 | 500 |
9 | 501 rc_pathl = path_from_utf8(rc_path); |
502 f = fopen(rc_pathl,"r"); | |
503 g_free(rc_pathl); | |
1 | 504 if (!f) |
505 { | |
506 g_free(rc_path); | |
507 return; | |
508 } | |
509 | |
510 while (fgets(s_buf,1024,f)) | |
511 { | |
512 if (s_buf[0]=='#') continue; | |
513 if (s_buf[0]=='\n') continue; | |
514 c = 0; | |
515 l = strlen(s_buf); | |
516 while (s_buf[c] != ':' && c < l) c++; | |
517 if (c >= l) continue; | |
518 s_buf[c] = '\0'; | |
519 c++; | |
9 | 520 while ((s_buf[c] == ' ' || s_buf[c] == 8) && c < l) c++; |
1 | 521 s_buf_ptr = s_buf + c; |
9 | 522 strncpy(value_all, s_buf_ptr, sizeof(value_all)); |
1 | 523 while (s_buf[c] != 8 && s_buf[c] != ' ' && s_buf[c] != '\n' && c < l) c++; |
524 s_buf[c] = '\0'; | |
9 | 525 strncpy(option, s_buf, sizeof(option)); |
526 strncpy(value, s_buf_ptr, sizeof(value)); | |
1 | 527 |
528 /* general options */ | |
529 | |
9 | 530 layout_style = read_int_option(f, option, |
531 "layout_style", value, layout_style); | |
532 layout_order = read_char_option(f, option, | |
533 "layout_order", value, layout_order); | |
534 layout_view_icons = read_bool_option(f, option, | |
535 "layout_view_as_icons", value, layout_view_icons); | |
536 layout_view_tree = read_bool_option(f, option, | |
537 "layout_view_as_tree", value, layout_view_tree); | |
538 show_icon_names = read_bool_option(f, option, | |
539 "show_icon_names", value, show_icon_names); | |
540 | |
541 tree_descend_subdirs = read_bool_option(f, option, | |
542 "tree_descend_folders", value, tree_descend_subdirs); | |
543 lazy_image_sync = read_bool_option(f, option, | |
544 "lazy_image_sync", value, lazy_image_sync); | |
545 update_on_time_change = read_bool_option(f, option, | |
546 "update_on_time_change", value, update_on_time_change); | |
547 exif_rotate_enable = read_bool_option(f, option, | |
548 "exif_auto_rotate", value, exif_rotate_enable); | |
549 | |
1 | 550 startup_path_enable = read_bool_option(f, option, |
551 "enable_startup_path", value, startup_path_enable); | |
552 startup_path = read_char_option(f, option, | |
553 "startup_path", value_all, startup_path); | |
554 | |
9 | 555 if (strcasecmp(option,"zoom_mode") == 0) |
1 | 556 { |
9 | 557 if (strcasecmp(value, "original") == 0) zoom_mode = ZOOM_RESET_ORIGINAL; |
558 if (strcasecmp(value, "fit") == 0) zoom_mode = ZOOM_RESET_FIT_WINDOW; | |
559 if (strcasecmp(value, "dont_change") == 0) zoom_mode = ZOOM_RESET_NONE; | |
1 | 560 } |
9 | 561 two_pass_zoom = read_bool_option(f, option, |
562 "two_pass_scaling", value, two_pass_zoom); | |
563 zoom_to_fit_expands = read_bool_option(f, option, | |
564 "zoom_to_fit_allow_expand", value, zoom_to_fit_expands); | |
1 | 565 |
566 fit_window = read_bool_option(f, option, | |
567 "fit_window_to_image", value, fit_window); | |
568 limit_window_size = read_bool_option(f, option, | |
569 "limit_window_size", value, limit_window_size); | |
570 max_window_size = read_int_option(f, option, | |
571 "max_window_size", value, max_window_size); | |
209
ad78ad18523a
configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
nadvornik
parents:
208
diff
changeset
|
572 limit_autofit_size = read_bool_option(f, option, |
ad78ad18523a
configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
nadvornik
parents:
208
diff
changeset
|
573 "limit_autofit_size", value, limit_autofit_size); |
ad78ad18523a
configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
nadvornik
parents:
208
diff
changeset
|
574 max_autofit_size = read_int_option(f, option, |
ad78ad18523a
configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
nadvornik
parents:
208
diff
changeset
|
575 "max_autofit_size", value, max_autofit_size); |
1 | 576 progressive_key_scrolling = read_bool_option(f, option, |
577 "progressive_keyboard_scrolling", value, progressive_key_scrolling); | |
9 | 578 scroll_reset_method = read_int_option(f, option, |
579 "scroll_reset_method", value, scroll_reset_method); | |
1 | 580 |
3 | 581 thumbnails_enabled = read_bool_option(f, option, |
582 "enable_thumbnails", value, thumbnails_enabled); | |
1 | 583 thumb_max_width = read_int_option(f, option, |
584 "thumbnail_width", value, thumb_max_width); | |
226
3c89da4aef95
Fix and simplify thumbnails size combo box related code.
zas_
parents:
222
diff
changeset
|
585 if (thumb_max_width < 16) thumb_max_width = 16; |
1 | 586 thumb_max_height = read_int_option(f, option, |
587 "thumbnail_height", value, thumb_max_height); | |
226
3c89da4aef95
Fix and simplify thumbnails size combo box related code.
zas_
parents:
222
diff
changeset
|
588 if (thumb_max_height < 16) thumb_max_height = 16; |
1 | 589 enable_thumb_caching = read_bool_option(f, option, |
590 "cache_thumbnails", value, enable_thumb_caching); | |
9 | 591 enable_thumb_dirs = read_bool_option(f, option, |
592 "cache_thumbnails_into_dirs", value, enable_thumb_dirs); | |
14
25335c62cd9b
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
593 thumbnail_fast = read_bool_option(f, option, |
25335c62cd9b
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents:
9
diff
changeset
|
594 "thumbnail_fast", value, thumbnail_fast); |
1 | 595 use_xvpics_thumbnails = read_bool_option(f, option, |
596 "use_xvpics_thumbnails", value, use_xvpics_thumbnails); | |
9 | 597 thumbnail_spec_standard = read_bool_option(f, option, |
598 "thumbnail_spec_standard", value, thumbnail_spec_standard); | |
599 | |
600 enable_metadata_dirs = read_bool_option(f, option, | |
601 "local_metadata", value, enable_metadata_dirs); | |
602 | |
603 file_sort_method = (SortType)read_int_option(f, option, | |
604 "sort_method", value, (gint)file_sort_method); | |
605 file_sort_ascending = read_bool_option(f, option, | |
606 "sort_ascending", value, file_sort_ascending); | |
607 file_sort_case_sensitive = read_bool_option(f, option, | |
608 "sort_case_sensitive", value, file_sort_case_sensitive); | |
1 | 609 |
610 confirm_delete = read_bool_option(f, option, | |
611 "confirm_delete", value, confirm_delete); | |
9 | 612 enable_delete_key = read_bool_option(f, option, |
613 "enable_delete_key", value, enable_delete_key); | |
614 safe_delete_enable = read_bool_option(f, option, | |
615 "safe_delete", value, safe_delete_enable); | |
616 safe_delete_path = read_char_option(f, option, | |
617 "safe_delete_path", value, safe_delete_path); | |
618 safe_delete_size = read_int_option(f, option, | |
619 "safe_delete_size", value, safe_delete_size); | |
1 | 620 |
621 tools_float = read_bool_option(f, option, | |
622 "tools_float", value, tools_float); | |
623 tools_hidden = read_bool_option(f, option, | |
624 "tools_hidden", value, tools_hidden); | |
625 restore_tool = read_bool_option(f, option, | |
626 "restore_tool_state", value, restore_tool); | |
627 | |
9 | 628 toolbar_hidden = read_bool_option(f, option, |
629 "toolbar_hidden", value, toolbar_hidden); | |
630 | |
4 | 631 mousewheel_scrolls = read_bool_option(f, option, |
632 "mouse_wheel_scrolls", value, mousewheel_scrolls); | |
9 | 633 enable_in_place_rename = read_bool_option(f, option, |
634 "in_place_rename", value, enable_in_place_rename); | |
4 | 635 |
9 | 636 recent_list_max = read_int_option(f, option, |
637 "open_recent_max", value, recent_list_max); | |
638 | |
639 tile_cache_max = read_int_option(f, option, | |
640 "image_cache_size_max", value, tile_cache_max); | |
641 | |
642 thumbnail_quality = CLAMP(read_int_option(f, option, | |
643 "thumbnail_quality", value, thumbnail_quality), GDK_INTERP_NEAREST, GDK_INTERP_HYPER); | |
644 zoom_quality = CLAMP(read_int_option(f, option, | |
645 "zoom_quality", value, zoom_quality), GDK_INTERP_NEAREST, GDK_INTERP_HYPER); | |
646 dither_quality = CLAMP(read_int_option(f, option, | |
647 "dither_quality", value, dither_quality), GDK_RGB_DITHER_NONE, GDK_RGB_DITHER_MAX); | |
648 | |
649 zoom_increment = read_int_option(f, option, | |
650 "zoom_increment", value, zoom_increment); | |
651 | |
652 enable_read_ahead = read_bool_option(f, option, | |
653 "enable_read_ahead", value, enable_read_ahead); | |
4 | 654 |
9 | 655 place_dialogs_under_mouse = read_bool_option(f, option, |
656 "display_dialogs_under_mouse", value, place_dialogs_under_mouse); | |
657 | |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
658 user_specified_window_background = read_bool_option(f, option, |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
659 "user_specified_window_background", value, user_specified_window_background); |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
660 read_color_option(f, option, |
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
661 "window_background_color", value, &window_background_color); |
1 | 662 |
9 | 663 fullscreen_screen = read_int_option(f, option, |
664 "fullscreen_screen", value, fullscreen_screen); | |
665 fullscreen_clean_flip = read_bool_option(f, option, | |
666 "fullscreen_clean_flip", value, fullscreen_clean_flip); | |
667 fullscreen_disable_saver = read_bool_option(f, option, | |
668 "fullscreen_disable_saver", value, fullscreen_disable_saver); | |
669 fullscreen_above = read_bool_option(f, option, | |
670 "fullscreen_above", value, fullscreen_above); | |
218
f4a0555794a9
Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents:
217
diff
changeset
|
671 show_fullscreen_info = read_bool_option(f, option, |
f4a0555794a9
Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents:
217
diff
changeset
|
672 "show_fullscreen_info", value, show_fullscreen_info); |
f4a0555794a9
Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents:
217
diff
changeset
|
673 fullscreen_info = read_char_option(f, option, |
f4a0555794a9
Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
zas_
parents:
217
diff
changeset
|
674 "fullscreen_info", value_all, fullscreen_info); |
9 | 675 |
676 dupe_custom_threshold = read_int_option(f, option, | |
677 "custom_similarity_threshold", value, dupe_custom_threshold); | |
678 | |
679 /* slideshow options */ | |
680 | |
681 slideshow_delay = read_int_unit_option(f, option, | |
682 "slideshow_delay", value, slideshow_delay, SLIDESHOW_SUBSECOND_PRECISION); | |
1 | 683 slideshow_random = read_bool_option(f, option, |
684 "slideshow_random", value, slideshow_random); | |
685 slideshow_repeat = read_bool_option(f, option, | |
686 "slideshow_repeat", value, slideshow_repeat); | |
687 | |
688 /* filtering options */ | |
689 | |
690 show_dot_files = read_bool_option(f, option, | |
691 "show_dotfiles", value, show_dot_files); | |
692 file_filter_disable = read_bool_option(f, option, | |
693 "disable_filtering", value, file_filter_disable); | |
694 | |
9 | 695 if (strcasecmp(option, "filter_ext") == 0) |
696 { | |
697 filter_parse(value_all); | |
698 } | |
1 | 699 |
145
8be2cc687304
fixed grouping sidecar files and made it configurable via config file
nadvornik
parents:
113
diff
changeset
|
700 if (strcasecmp(option, "sidecar_ext") == 0) |
8be2cc687304
fixed grouping sidecar files and made it configurable via config file
nadvornik
parents:
113
diff
changeset
|
701 { |
170
9a56e3d13e67
basic sidecar files configuration via preferences dialog
nadvornik
parents:
145
diff
changeset
|
702 sidecar_ext_parse(value_all, TRUE); |
145
8be2cc687304
fixed grouping sidecar files and made it configurable via config file
nadvornik
parents:
113
diff
changeset
|
703 } |
8be2cc687304
fixed grouping sidecar files and made it configurable via config file
nadvornik
parents:
113
diff
changeset
|
704 |
113
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
705 /* Color Profiles */ |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
706 |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
707 color_profile_enabled = read_bool_option(f, option, |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
708 "color_profile_enabled", value, color_profile_enabled); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
709 color_profile_use_image = read_bool_option(f, option, |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
710 "color_profile_use_image", value, color_profile_use_image); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
711 color_profile_input_type = read_int_option(f, option, |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
712 "color_profile_input_type", value, color_profile_input_type); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
713 |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
714 if (strncasecmp(option, "color_profile_input_file_", 25) == 0) |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
715 { |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
716 i = strtol(option + 25, NULL, 0) - 1; |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
717 if (i >= 0 && i < COLOR_PROFILE_INPUTS) |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
718 { |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
719 color_profile_input_file[i] = read_char_option(f, option, |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
720 option, value, color_profile_input_file[i]); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
721 } |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
722 } |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
723 if (strncasecmp(option, "color_profile_input_name_", 25) == 0) |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
724 { |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
725 i = strtol(option + 25, NULL, 0) - 1; |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
726 if (i >= 0 && i < COLOR_PROFILE_INPUTS) |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
727 { |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
728 color_profile_input_name[i] = read_char_option(f, option, |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
729 option, value, color_profile_input_name[i]); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
730 } |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
731 } |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
732 |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
733 color_profile_screen_type = read_int_option(f, option, |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
734 "color_profile_screen_type", value, color_profile_screen_type); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
735 color_profile_screen_file = read_char_option(f, option, |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
736 "color_profile_screen_file_1", value, color_profile_screen_file); |
55166d93498d
Fri Nov 24 21:37:01 2006 John Ellis <johne@verizon.net>
gqview
parents:
41
diff
changeset
|
737 |
1 | 738 /* External Programs */ |
739 | |
9 | 740 if (strncasecmp(option, "external_", 9) == 0) |
1 | 741 { |
742 i = strtol(option + 9, NULL, 0); | |
283 | 743 if (i > 0 && i <= GQ_EDITOR_SLOTS) |
1 | 744 { |
217 | 745 const gchar *ptr; |
1 | 746 i--; |
747 g_free(editor_name[i]); | |
748 g_free(editor_command[i]); | |
217 | 749 |
750 editor_name[i] = quoted_value(value_all, &ptr); | |
751 editor_command[i] = quoted_value(ptr, NULL); | |
1 | 752 } |
753 } | |
754 | |
9 | 755 /* colection options */ |
756 | |
757 collection_rectangular_selection = read_bool_option(f, option, | |
758 "rectangular_selections", value, collection_rectangular_selection); | |
759 | |
1 | 760 /* window positions */ |
761 | |
762 save_window_positions = read_bool_option(f, option, | |
763 "restore_window_positions", value, save_window_positions); | |
764 | |
765 main_window_x = read_int_option(f, option, | |
766 "main_window_x", value, main_window_x); | |
767 main_window_y = read_int_option(f, option, | |
768 "main_window_y", value, main_window_y); | |
769 main_window_w = read_int_option(f, option, | |
770 "main_window_width", value, main_window_w); | |
771 main_window_h = read_int_option(f, option, | |
772 "main_window_height", value, main_window_h); | |
9 | 773 main_window_maximized = read_bool_option(f, option, |
774 "main_window_maximized", value, main_window_maximized); | |
1 | 775 float_window_x = read_int_option(f, option, |
776 "float_window_x", value, float_window_x); | |
777 float_window_y = read_int_option(f, option, | |
778 "float_window_y", value, float_window_y); | |
779 float_window_w = read_int_option(f, option, | |
780 "float_window_width", value, float_window_w); | |
781 float_window_h = read_int_option(f, option, | |
782 "float_window_height", value, float_window_h); | |
9 | 783 float_window_divider = read_int_option(f, option, |
784 "float_window_divider", value, float_window_divider); | |
785 window_hdivider_pos = read_int_option(f, option, | |
786 "divider_position_h", value, window_hdivider_pos); | |
787 window_vdivider_pos = read_int_option(f, option, | |
788 "divider_position_v", value, window_vdivider_pos); | |
789 | |
222
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
790 if (0 == strncasecmp(option, "exif_", 5)) |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
791 { |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
792 for (i = 0; ExifUIList[i].key; i++) |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
793 if (0 == strcasecmp(option+5, ExifUIList[i].key)) |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
794 ExifUIList[i].current = strtol(value, NULL, 10); |
77f1bcc6c161
various exif improvements based on patch by Uwe Ohse
nadvornik
parents:
218
diff
changeset
|
795 } |
1 | 796 } |
797 | |
798 fclose(f); | |
799 g_free(rc_path); | |
800 } | |
801 |