diff options
author | 2011-05-01 18:34:19 +0200 | |
---|---|---|
committer | 2011-05-01 18:34:19 +0200 | |
commit | d7d4cb0eb1bd956a1f2fa4f48a1a2b4dc9e5fd98 (patch) | |
tree | 442447db7acc564ee44624b6fbdf169ec9335ab5 | |
parent | 9cd88b754f57118dcdf7945a39c463f36a036984 (diff) |
regenerate dsp preset dropdown after saving new preset
-rw-r--r-- | plugins/gtkui/dspconfig.c | 67 |
1 files changed, 38 insertions, 29 deletions
diff --git a/plugins/gtkui/dspconfig.c b/plugins/gtkui/dspconfig.c index 268f1b16..38ec5b9a 100644 --- a/plugins/gtkui/dspconfig.c +++ b/plugins/gtkui/dspconfig.c @@ -77,6 +77,41 @@ scandir_preset_filter (const struct dirent *ent) { return 0; } +static void +dsp_fill_preset_list (GtkWidget *combobox) { + // fill list of presets + GtkListStore *mdl; + mdl = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (combobox))); + gtk_list_store_clear (mdl); + struct dirent **namelist = NULL; + char path[1024]; + if (snprintf (path, sizeof (path), "%s/presets/dsp", deadbeef->get_config_dir ()) > 0) { + int n = scandir (path, &namelist, scandir_preset_filter, dirent_alphasort); + int i; + for (i = 0; i < n; i++) { + char title[100]; + strcpy (title, namelist[i]->d_name); + char *e = strrchr (title, '.'); + if (e) { + *e = 0; + } + GtkTreeIter iter; + gtk_list_store_append (mdl, &iter); + gtk_list_store_set (mdl, &iter, 0, title, -1); + free (namelist[i]); + } + free (namelist); + } + + // set last preset name + GtkWidget *entry = gtk_bin_get_child (GTK_BIN (combobox)); + if (entry) { + deadbeef->conf_lock (); + gtk_entry_set_text (GTK_ENTRY (entry), deadbeef->conf_get_str_fast ("gtkui.conf_dsp_preset", "")); + deadbeef->conf_unlock (); + } +} + void dsp_setup_init (GtkWidget *_prefwin) { prefwin = _prefwin; @@ -108,36 +143,8 @@ dsp_setup_init (GtkWidget *_prefwin) { fill_dsp_chain (mdl); - // set last preset name GtkWidget *combobox = lookup_widget (prefwin, "dsp_preset"); - GtkWidget *entry = gtk_bin_get_child (GTK_BIN (combobox)); - if (entry) { - deadbeef->conf_lock (); - gtk_entry_set_text (GTK_ENTRY (entry), deadbeef->conf_get_str_fast ("gtkui.conf_dsp_preset", "")); - deadbeef->conf_unlock (); - } - - // fill list of presets - mdl = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (combobox))); - struct dirent **namelist = NULL; - char path[1024]; - if (snprintf (path, sizeof (path), "%s/presets/dsp", deadbeef->get_config_dir ()) > 0) { - int n = scandir (path, &namelist, scandir_preset_filter, dirent_alphasort); - int i; - for (i = 0; i < n; i++) { - char title[100]; - strcpy (title, namelist[i]->d_name); - char *e = strrchr (title, '.'); - if (e) { - *e = 0; - } - GtkTreeIter iter; - gtk_list_store_append (mdl, &iter); - gtk_list_store_set (mdl, &iter, 0, title, -1); - free (namelist[i]); - } - free (namelist); - } + dsp_fill_preset_list (combobox); } void @@ -452,6 +459,8 @@ on_dsp_preset_save_clicked (GtkButton *button, return; } deadbeef->dsp_preset_save (path, chain); + + dsp_fill_preset_list (combobox); } |