# HG changeset patch # User nadvornik # Date 1198445088 0 # Node ID 9a56e3d13e675d1edaa55af5f84f2325a0c3e852 # Parent 501010403a041bab1f2f4b53ad295802e9bba200 basic sidecar files configuration via preferences dialog diff -r 501010403a04 -r 9a56e3d13e67 src/filelist.c --- a/src/filelist.c Sun Dec 23 20:28:50 2007 +0000 +++ b/src/filelist.c Sun Dec 23 21:24:48 2007 +0000 @@ -416,7 +416,7 @@ return sidecar_ext_list; } -void sidecar_ext_parse(const gchar *text) +void sidecar_ext_parse(const gchar *text, gint quoted) { GList *work; gchar *value; @@ -431,7 +431,10 @@ g_list_free(sidecar_ext_list); sidecar_ext_list = NULL; - value = quoted_value(text); + if (quoted) + value = quoted_value(text); + else + value = g_strdup(text); if (value == NULL) return; @@ -443,22 +446,28 @@ void sidecar_ext_write(FILE *f) { GList *work; - fprintf(f, "\nsidecar_ext: \""); - + fprintf(f, "\nsidecar_ext: \"%s\"\n", sidecar_ext_to_string()); +} + +char *sidecar_ext_to_string() +{ + GList *work; + GString *str = g_string_new(""); + work = sidecar_ext_list; while (work) { gchar *ext = work->data; work = work->next; - fprintf(f, "%s%s", ext, work ? ";" : ""); + g_string_append(str, ext); + if (work) g_string_append(str, ";"); } - fprintf(f, "\"\n"); - + return g_string_free(str, FALSE); } void sidecar_ext_add_defaults() { - sidecar_ext_parse("\".jpg;.cr2;.nef;.crw\""); + sidecar_ext_parse(".jpg;.cr2;.nef;.crw", FALSE); } /* diff -r 501010403a04 -r 9a56e3d13e67 src/filelist.h --- a/src/filelist.h Sun Dec 23 20:28:50 2007 +0000 +++ b/src/filelist.h Sun Dec 23 21:24:48 2007 +0000 @@ -38,8 +38,9 @@ void filter_write_list(FILE *f); void filter_parse(const gchar *text); -void sidecar_ext_parse(const gchar *text); +void sidecar_ext_parse(const gchar *text, gint quoted); void sidecar_ext_write(FILE *f); +char *sidecar_ext_to_string(); void sidecar_ext_add_defaults(); gint ishidden(const gchar *name); diff -r 501010403a04 -r 9a56e3d13e67 src/preferences.c --- a/src/preferences.c Sun Dec 23 20:28:50 2007 +0000 +++ b/src/preferences.c Sun Dec 23 21:24:48 2007 +0000 @@ -142,7 +142,7 @@ static GtkWidget *color_profile_input_name_entry[COLOR_PROFILE_INPUTS]; static GtkWidget *color_profile_screen_file_entry; - +static GtkWidget *sidecar_ext_entry; /* *----------------------------------------------------------------------------- * option widget callbacks (private) @@ -256,6 +256,8 @@ file_sort_case_sensitive = file_sort_case_sensitive_c; file_filter_disable = file_filter_disable_c; + sidecar_ext_parse(gtk_entry_get_text(GTK_ENTRY(sidecar_ext_entry)), FALSE); + slideshow_random = slideshow_random_c; slideshow_repeat = slideshow_repeat_c; slideshow_delay = slideshow_delay_c; @@ -1022,6 +1024,14 @@ ct_button = pref_checkbox_new_int(group, _("Disable File Filtering"), file_filter_disable, &file_filter_disable_c); + + group = pref_group_new(vbox, FALSE, _("Grouping sidecar extensions"), GTK_ORIENTATION_VERTICAL); + + sidecar_ext_entry = gtk_entry_new(); + gtk_entry_set_text(GTK_ENTRY(sidecar_ext_entry), sidecar_ext_to_string()); + gtk_box_pack_start(GTK_BOX(group), sidecar_ext_entry, FALSE, FALSE, 0); + gtk_widget_show(sidecar_ext_entry); + group = pref_group_new(vbox, TRUE, _("File types"), GTK_ORIENTATION_VERTICAL); frame = pref_group_parent(group); diff -r 501010403a04 -r 9a56e3d13e67 src/rcfile.c --- a/src/rcfile.c Sun Dec 23 20:28:50 2007 +0000 +++ b/src/rcfile.c Sun Dec 23 21:24:48 2007 +0000 @@ -585,7 +585,7 @@ if (strcasecmp(option, "sidecar_ext") == 0) { - sidecar_ext_parse(value_all); + sidecar_ext_parse(value_all, TRUE); } /* Color Profiles */