Mercurial > geeqie
annotate src/rcfile.c @ 326:509b84801d66
Rename slideshow options.
author | zas_ |
---|---|
date | Sat, 12 Apr 2008 07:46:01 +0000 |
parents | d344bcf37618 |
children | 049d6b00cc14 |
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 |
320 | 278 write_int_option(ssi, "layout_style", options->layout_style); |
279 write_char_option(ssi, "layout_order", options->layout_order); | |
276 | 280 secure_fputc(ssi, '\n'); |
9 | 281 |
320 | 282 write_bool_option(ssi, "layout_view_as_icons", options->layout_view_icons); |
283 write_bool_option(ssi, "layout_view_as_tree", options->layout_view_tree); | |
284 write_bool_option(ssi, "show_icon_names", options->show_icon_names); | |
276 | 285 secure_fputc(ssi, '\n'); |
9 | 286 |
320 | 287 write_bool_option(ssi, "tree_descend_folders", options->tree_descend_subdirs); |
288 write_bool_option(ssi, "lazy_image_sync", options->lazy_image_sync); | |
289 write_bool_option(ssi, "update_on_time_change", options->update_on_time_change); | |
290 write_bool_option(ssi, "exif_auto_rotate", options->exif_rotate_enable); | |
276 | 291 secure_fputc(ssi, '\n'); |
1 | 292 |
318 | 293 write_bool_option(ssi, "enable_startup_path", options->startup_path_enable); |
294 write_char_option(ssi, "startup_path", options->startup_path); | |
276 | 295 secure_fputc(ssi, '\n'); |
9 | 296 |
276 | 297 secure_fprintf(ssi, "zoom_mode: "); |
318 | 298 if (options->zoom_mode == ZOOM_RESET_ORIGINAL) secure_fprintf(ssi, "original\n"); |
299 if (options->zoom_mode == ZOOM_RESET_FIT_WINDOW) secure_fprintf(ssi, "fit\n"); | |
300 if (options->zoom_mode == ZOOM_RESET_NONE) secure_fprintf(ssi, "dont_change\n"); | |
301 write_bool_option(ssi, "two_pass_scaling", options->two_pass_zoom); | |
302 write_bool_option(ssi, "zoom_to_fit_allow_expand", options->zoom_to_fit_expands); | |
276 | 303 secure_fputc(ssi, '\n'); |
1 | 304 |
318 | 305 write_bool_option(ssi, "fit_window_to_image", options->fit_window); |
306 write_bool_option(ssi, "limit_window_size", options->limit_window_size); | |
307 write_int_option(ssi, "max_window_size", options->max_window_size); | |
308 write_bool_option(ssi, "limit_autofit_size", options->limit_autofit_size); | |
309 write_int_option(ssi, "max_autofit_size", options->max_autofit_size); | |
276 | 310 secure_fputc(ssi, '\n'); |
1 | 311 |
318 | 312 write_bool_option(ssi, "progressive_keyboard_scrolling", options->progressive_key_scrolling); |
313 write_int_option(ssi, "scroll_reset_method", options->scroll_reset_method); | |
276 | 314 secure_fputc(ssi, '\n'); |
9 | 315 |
318 | 316 write_bool_option(ssi, "enable_thumbnails", options->thumbnails_enabled); |
317 write_int_option(ssi, "thumbnail_width", options->thumb_max_width); | |
318 write_int_option(ssi, "thumbnail_height", options->thumb_max_height); | |
319 write_bool_option(ssi, "cache_thumbnails", options->enable_thumb_caching); | |
320 write_bool_option(ssi, "cache_thumbnails_into_dirs", options->enable_thumb_dirs); | |
321 write_bool_option(ssi, "thumbnail_fast", options->thumbnail_fast); | |
322 write_bool_option(ssi, "use_xvpics_thumbnails", options->use_xvpics_thumbnails); | |
323 write_bool_option(ssi, "thumbnail_spec_standard", options->thumbnail_spec_standard); | |
276 | 324 secure_fputc(ssi, '\n'); |
9 | 325 |
318 | 326 write_bool_option(ssi, "local_metadata", options->enable_metadata_dirs); |
276 | 327 secure_fputc(ssi, '\n'); |
1 | 328 |
318 | 329 write_int_option(ssi, "sort_method", (gint)options->file_sort_method); |
330 write_bool_option(ssi, "sort_ascending", options->file_sort_ascending); | |
319 | 331 write_bool_option(ssi, "sort_case_sensitive", options->file_sort_case_sensitive); |
276 | 332 secure_fputc(ssi, '\n'); |
1 | 333 |
318 | 334 write_bool_option(ssi, "confirm_delete", options->confirm_delete); |
335 write_bool_option(ssi, "enable_delete_key", options->enable_delete_key); | |
336 write_bool_option(ssi, "safe_delete", options->safe_delete_enable); | |
337 write_char_option(ssi, "safe_delete_path", options->safe_delete_path); | |
338 write_int_option(ssi, "safe_delete_size", options->safe_delete_size); | |
276 | 339 secure_fputc(ssi, '\n'); |
9 | 340 |
318 | 341 write_bool_option(ssi, "tools_float", options->tools_float); |
342 write_bool_option(ssi, "tools_hidden", options->tools_hidden); | |
343 write_bool_option(ssi, "restore_tool_state", options->restore_tool); | |
344 write_bool_option(ssi, "toolbar_hidden", options->toolbar_hidden); | |
276 | 345 secure_fputc(ssi, '\n'); |
9 | 346 |
318 | 347 write_bool_option(ssi, "mouse_wheel_scrolls", options->mousewheel_scrolls); |
348 write_bool_option(ssi, "in_place_rename", options->enable_in_place_rename); | |
349 write_int_option(ssi, "open_recent_max", options->recent_list_max); | |
350 write_int_option(ssi, "image_cache_size_max", options->tile_cache_max); | |
351 write_int_option(ssi, "thumbnail_quality", options->thumbnail_quality); | |
352 write_int_option(ssi, "zoom_quality", options->zoom_quality); | |
353 write_int_option(ssi, "dither_quality", options->dither_quality); | |
354 write_int_option(ssi, "zoom_increment", options->zoom_increment); | |
355 write_bool_option(ssi, "enable_read_ahead", options->enable_read_ahead); | |
356 write_bool_option(ssi, "display_dialogs_under_mouse", options->place_dialogs_under_mouse); | |
276 | 357 secure_fputc(ssi, '\n'); |
9 | 358 |
318 | 359 write_bool_option(ssi, "user_specified_window_background", options->user_specified_window_background); |
360 write_color_option(ssi, "window_background_color", &options->window_background_color); | |
276 | 361 secure_fputc(ssi, '\n'); |
4 | 362 |
322 | 363 write_int_option(ssi, "fullscreen.screen", options->fullscreen.screen); |
364 write_bool_option(ssi, "fullscreen.clean_flip", options->fullscreen.clean_flip); | |
365 write_bool_option(ssi, "fullscreen.disable_saver", options->fullscreen.disable_saver); | |
366 write_bool_option(ssi, "fullscreen.above", options->fullscreen.above); | |
367 write_bool_option(ssi, "fullscreen.show_info", options->fullscreen.show_info); | |
368 write_char_option(ssi, "fullscreen.info", options->fullscreen.info); | |
276 | 369 secure_fputc(ssi, '\n'); |
1 | 370 |
318 | 371 write_int_option(ssi, "custom_similarity_threshold", options->dupe_custom_threshold); |
1 | 372 |
276 | 373 secure_fprintf(ssi, "\n##### Slideshow Options #####\n\n"); |
374 | |
326 | 375 write_int_unit_option(ssi, "slideshow.delay", options->slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION); |
1 | 376 |
326 | 377 write_bool_option(ssi, "slideshow.random", options->slideshow.random); |
378 write_bool_option(ssi, "slideshow.repeat", options->slideshow.repeat); | |
276 | 379 |
380 secure_fprintf(ssi, "\n##### Filtering Options #####\n\n"); | |
1 | 381 |
318 | 382 write_bool_option(ssi, "show_dotfiles", options->show_dot_files); |
383 write_bool_option(ssi, "disable_filtering", options->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 |
320 | 396 write_bool_option(ssi, "color_profile_enabled", options->color_profile_enabled); |
397 write_bool_option(ssi, "color_profile_use_image", options->color_profile_use_image); | |
398 write_int_option(ssi, "color_profile_input_type", options->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); |
320 | 404 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
|
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); |
320 | 408 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
|
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'); |
320 | 412 write_int_option(ssi, "color_profile_screen_type", options->color_profile_screen_type); |
413 write_char_option(ssi, "color_profile_screen_file_1", options->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 { |
318 | 421 gchar *qname = escquote_value(options->editor_name[i]); |
422 gchar *qcommand = escquote_value(options->editor_command[i]); | |
276 | 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 |
318 | 430 write_bool_option(ssi, "rectangular_selections", options->collection_rectangular_selection); |
9 | 431 |
276 | 432 secure_fprintf(ssi, "\n##### Window Positions #####\n\n"); |
1 | 433 |
318 | 434 write_bool_option(ssi, "restore_window_positions", options->save_window_positions); |
276 | 435 secure_fputc(ssi, '\n'); |
318 | 436 write_int_option(ssi, "main_window_x", options->main_window_x); |
437 write_int_option(ssi, "main_window_y", options->main_window_y); | |
438 write_int_option(ssi, "main_window_width", options->main_window_w); | |
439 write_int_option(ssi, "main_window_height", options->main_window_h); | |
440 write_bool_option(ssi, "main_window_maximized", options->main_window_maximized); | |
441 write_int_option(ssi, "float_window_x", options->float_window_x); | |
442 write_int_option(ssi, "float_window_y", options->float_window_y); | |
443 write_int_option(ssi, "float_window_width", options->float_window_w); | |
444 write_int_option(ssi, "float_window_height", options->float_window_h); | |
445 write_int_option(ssi, "float_window_divider", options->float_window_divider); | |
446 write_int_option(ssi, "divider_position_h", options->window_hdivider_pos); | |
447 write_int_option(ssi, "divider_position_v", options->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 | |
320 | 530 options->layout_style = read_int_option(f, option, |
531 "layout_style", value, options->layout_style); | |
532 options->layout_order = read_char_option(f, option, | |
533 "layout_order", value, options->layout_order); | |
534 options->layout_view_icons = read_bool_option(f, option, | |
535 "layout_view_as_icons", value, options->layout_view_icons); | |
536 options->layout_view_tree = read_bool_option(f, option, | |
537 "layout_view_as_tree", value, options->layout_view_tree); | |
538 options->show_icon_names = read_bool_option(f, option, | |
539 "show_icon_names", value, options->show_icon_names); | |
9 | 540 |
320 | 541 options->tree_descend_subdirs = read_bool_option(f, option, |
542 "tree_descend_folders", value, options->tree_descend_subdirs); | |
543 options->lazy_image_sync = read_bool_option(f, option, | |
544 "lazy_image_sync", value, options->lazy_image_sync); | |
545 options->update_on_time_change = read_bool_option(f, option, | |
546 "update_on_time_change", value, options->update_on_time_change); | |
547 options->exif_rotate_enable = read_bool_option(f, option, | |
548 "exif_auto_rotate", value, options->exif_rotate_enable); | |
9 | 549 |
318 | 550 options->startup_path_enable = read_bool_option(f, option, |
551 "enable_startup_path", value, options->startup_path_enable); | |
552 options->startup_path = read_char_option(f, option, | |
553 "startup_path", value_all, options->startup_path); | |
1 | 554 |
318 | 555 if (strcasecmp(option, "zoom_mode") == 0) |
1 | 556 { |
318 | 557 if (strcasecmp(value, "original") == 0) options->zoom_mode = ZOOM_RESET_ORIGINAL; |
558 if (strcasecmp(value, "fit") == 0) options->zoom_mode = ZOOM_RESET_FIT_WINDOW; | |
559 if (strcasecmp(value, "dont_change") == 0) options->zoom_mode = ZOOM_RESET_NONE; | |
1 | 560 } |
318 | 561 options->two_pass_zoom = read_bool_option(f, option, |
562 "two_pass_scaling", value, options->two_pass_zoom); | |
563 options->zoom_to_fit_expands = read_bool_option(f, option, | |
564 "zoom_to_fit_allow_expand", value, options->zoom_to_fit_expands); | |
1 | 565 |
318 | 566 options->fit_window = read_bool_option(f, option, |
567 "fit_window_to_image", value, options->fit_window); | |
568 options->limit_window_size = read_bool_option(f, option, | |
569 "limit_window_size", value, options->limit_window_size); | |
570 options->max_window_size = read_int_option(f, option, | |
571 "max_window_size", value, options->max_window_size); | |
572 options->limit_autofit_size = read_bool_option(f, option, | |
573 "limit_autofit_size", value, options->limit_autofit_size); | |
574 options->max_autofit_size = read_int_option(f, option, | |
575 "max_autofit_size", value, options->max_autofit_size); | |
576 options->progressive_key_scrolling = read_bool_option(f, option, | |
577 "progressive_keyboard_scrolling", value, options->progressive_key_scrolling); | |
578 options->scroll_reset_method = read_int_option(f, option, | |
579 "scroll_reset_method", value, options->scroll_reset_method); | |
1 | 580 |
318 | 581 options->thumbnails_enabled = read_bool_option(f, option, |
582 "enable_thumbnails", value, options->thumbnails_enabled); | |
583 options->thumb_max_width = read_int_option(f, option, | |
584 "thumbnail_width", value, options->thumb_max_width); | |
585 if (options->thumb_max_width < 16) options->thumb_max_width = 16; | |
586 options->thumb_max_height = read_int_option(f, option, | |
587 "thumbnail_height", value, options->thumb_max_height); | |
588 if (options->thumb_max_height < 16) options->thumb_max_height = 16; | |
589 options->enable_thumb_caching = read_bool_option(f, option, | |
590 "cache_thumbnails", value, options->enable_thumb_caching); | |
591 options->enable_thumb_dirs = read_bool_option(f, option, | |
592 "cache_thumbnails_into_dirs", value, options->enable_thumb_dirs); | |
593 options->thumbnail_fast = read_bool_option(f, option, | |
594 "thumbnail_fast", value, options->thumbnail_fast); | |
595 options->use_xvpics_thumbnails = read_bool_option(f, option, | |
596 "use_xvpics_thumbnails", value, options->use_xvpics_thumbnails); | |
597 options->thumbnail_spec_standard = read_bool_option(f, option, | |
598 "thumbnail_spec_standard", value, options->thumbnail_spec_standard); | |
9 | 599 |
318 | 600 options->enable_metadata_dirs = read_bool_option(f, option, |
601 "local_metadata", value, options->enable_metadata_dirs); | |
9 | 602 |
318 | 603 options->file_sort_method = (SortType)read_int_option(f, option, |
604 "sort_method", value, (gint)options->file_sort_method); | |
605 options->file_sort_ascending = read_bool_option(f, option, | |
606 "sort_ascending", value, options->file_sort_ascending); | |
319 | 607 options->file_sort_case_sensitive = read_bool_option(f, option, |
608 "sort_case_sensitive", value, options->file_sort_case_sensitive); | |
1 | 609 |
318 | 610 options->confirm_delete = read_bool_option(f, option, |
611 "confirm_delete", value, options->confirm_delete); | |
612 options->enable_delete_key = read_bool_option(f, option, | |
613 "enable_delete_key", value, options->enable_delete_key); | |
614 options->safe_delete_enable = read_bool_option(f, option, | |
615 "safe_delete", value, options->safe_delete_enable); | |
616 options->safe_delete_path = read_char_option(f, option, | |
617 "safe_delete_path", value, options->safe_delete_path); | |
618 options->safe_delete_size = read_int_option(f, option, | |
619 "safe_delete_size", value,options->safe_delete_size); | |
1 | 620 |
318 | 621 options->tools_float = read_bool_option(f, option, |
622 "tools_float", value, options->tools_float); | |
623 options->tools_hidden = read_bool_option(f, option, | |
624 "tools_hidden", value, options->tools_hidden); | |
625 options->restore_tool = read_bool_option(f, option, | |
626 "restore_tool_state", value, options->restore_tool); | |
1 | 627 |
318 | 628 options->toolbar_hidden = read_bool_option(f, option, |
629 "toolbar_hidden", value, options->toolbar_hidden); | |
9 | 630 |
318 | 631 options->mousewheel_scrolls = read_bool_option(f, option, |
632 "mouse_wheel_scrolls", value, options->mousewheel_scrolls); | |
633 options->enable_in_place_rename = read_bool_option(f, option, | |
634 "in_place_rename", value, options->enable_in_place_rename); | |
4 | 635 |
318 | 636 options->recent_list_max = read_int_option(f, option, |
637 "open_recent_max", value, options->recent_list_max); | |
9 | 638 |
318 | 639 options->tile_cache_max = read_int_option(f, option, |
640 "image_cache_size_max", value, options->tile_cache_max); | |
9 | 641 |
318 | 642 options->thumbnail_quality = CLAMP(read_int_option(f, option, |
643 "thumbnail_quality", value, options->thumbnail_quality), GDK_INTERP_NEAREST, GDK_INTERP_HYPER); | |
644 options->zoom_quality = CLAMP(read_int_option(f, option, | |
645 "zoom_quality", value, options->zoom_quality), GDK_INTERP_NEAREST, GDK_INTERP_HYPER); | |
646 options->dither_quality = CLAMP(read_int_option(f, option, | |
647 "dither_quality", value, options->dither_quality), GDK_RGB_DITHER_NONE, GDK_RGB_DITHER_MAX); | |
9 | 648 |
318 | 649 options->zoom_increment = read_int_option(f, option, |
650 "zoom_increment", value, options->zoom_increment); | |
9 | 651 |
318 | 652 options->enable_read_ahead = read_bool_option(f, option, |
653 "enable_read_ahead", value, options->enable_read_ahead); | |
4 | 654 |
318 | 655 options->place_dialogs_under_mouse = read_bool_option(f, option, |
656 "display_dialogs_under_mouse", value, options->place_dialogs_under_mouse); | |
9 | 657 |
318 | 658 options->user_specified_window_background = read_bool_option(f, option, |
659 "user_specified_window_background", value, options->user_specified_window_background); | |
208
fa0e05f985c3
set user-defined color as image background - patch by Laurent MONIN
nadvornik
parents:
196
diff
changeset
|
660 read_color_option(f, option, |
318 | 661 "window_background_color", value, &options->window_background_color); |
1 | 662 |
322 | 663 options->fullscreen.screen = read_int_option(f, option, |
664 "fullscreen.screen", value, options->fullscreen.screen); | |
665 options->fullscreen.clean_flip = read_bool_option(f, option, | |
666 "fullscreen.clean_flip", value, options->fullscreen.clean_flip); | |
667 options->fullscreen.disable_saver = read_bool_option(f, option, | |
668 "fullscreen.disable_saver", value, options->fullscreen.disable_saver); | |
669 options->fullscreen.above = read_bool_option(f, option, | |
670 "fullscreen.above", value, options->fullscreen.above); | |
671 options->fullscreen.show_info = read_bool_option(f, option, | |
672 "fullscreen.show_info", value, options->fullscreen.show_info); | |
673 options->fullscreen.info = read_char_option(f, option, | |
674 "fullscreen.info", value_all, options->fullscreen.info); | |
9 | 675 |
318 | 676 options->dupe_custom_threshold = read_int_option(f, option, |
677 "custom_similarity_threshold", value, options->dupe_custom_threshold); | |
9 | 678 |
679 /* slideshow options */ | |
680 | |
326 | 681 options->slideshow.delay = read_int_unit_option(f, option, |
682 "slideshow.delay", value, options->slideshow.delay, SLIDESHOW_SUBSECOND_PRECISION); | |
683 options->slideshow.random = read_bool_option(f, option, | |
684 "slideshow.random", value, options->slideshow.random); | |
685 options->slideshow.repeat = read_bool_option(f, option, | |
686 "slideshow.repeat", value, options->slideshow.repeat); | |
1 | 687 |
688 /* filtering options */ | |
689 | |
318 | 690 options->show_dot_files = read_bool_option(f, option, |
691 "show_dotfiles", value, options->show_dot_files); | |
692 options->file_filter_disable = read_bool_option(f, option, | |
693 "disable_filtering", value, options->file_filter_disable); | |
1 | 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 |
320 | 707 options->color_profile_enabled = read_bool_option(f, option, |
708 "color_profile_enabled", value, options->color_profile_enabled); | |
709 options->color_profile_use_image = read_bool_option(f, option, | |
710 "color_profile_use_image", value, options->color_profile_use_image); | |
711 options->color_profile_input_type = read_int_option(f, option, | |
712 "color_profile_input_type", value, options->color_profile_input_type); | |
113
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 { |
320 | 719 options->color_profile_input_file[i] = read_char_option(f, option, |
720 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
|
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 { |
320 | 728 options->color_profile_input_name[i] = read_char_option(f, option, |
729 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
|
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 |
320 | 733 options->color_profile_screen_type = read_int_option(f, option, |
734 "color_profile_screen_type", value, options->color_profile_screen_type); | |
735 options->color_profile_screen_file = read_char_option(f, option, | |
736 "color_profile_screen_file_1", value, options->color_profile_screen_file); | |
113
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--; |
318 | 747 g_free(options->editor_name[i]); |
748 g_free(options->editor_command[i]); | |
217 | 749 |
318 | 750 options->editor_name[i] = quoted_value(value_all, &ptr); |
751 options->editor_command[i] = quoted_value(ptr, NULL); | |
1 | 752 } |
753 } | |
754 | |
9 | 755 /* colection options */ |
756 | |
318 | 757 options->collection_rectangular_selection = read_bool_option(f, option, |
758 "rectangular_selections", value, options->collection_rectangular_selection); | |
9 | 759 |
1 | 760 /* window positions */ |
761 | |
318 | 762 options->save_window_positions = read_bool_option(f, option, |
763 "restore_window_positions", value, options->save_window_positions); | |
1 | 764 |
318 | 765 options->main_window_x = read_int_option(f, option, |
766 "main_window_x", value, options->main_window_x); | |
767 options->main_window_y = read_int_option(f, option, | |
768 "main_window_y", value, options->main_window_y); | |
769 options->main_window_w = read_int_option(f, option, | |
770 "main_window_width", value, options->main_window_w); | |
771 options->main_window_h = read_int_option(f, option, | |
772 "main_window_height", value, options->main_window_h); | |
773 options->main_window_maximized = read_bool_option(f, option, | |
774 "main_window_maximized", value, options->main_window_maximized); | |
775 options->float_window_x = read_int_option(f, option, | |
776 "float_window_x", value, options->float_window_x); | |
777 options->float_window_y = read_int_option(f, option, | |
778 "float_window_y", value, options->float_window_y); | |
779 options->float_window_w = read_int_option(f, option, | |
780 "float_window_width", value, options->float_window_w); | |
781 options->float_window_h = read_int_option(f, option, | |
782 "float_window_height", value, options->float_window_h); | |
783 options->float_window_divider = read_int_option(f, option, | |
784 "float_window_divider", value, options->float_window_divider); | |
785 options->window_hdivider_pos = read_int_option(f, option, | |
786 "divider_position_h", value,options-> window_hdivider_pos); | |
787 options->window_vdivider_pos = read_int_option(f, option, | |
788 "divider_position_v", value, options->window_vdivider_pos); | |
9 | 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 |