Mercurial > hg > xmms-sid
diff src/xs_config.c @ 548:ba80c052e425
Configuration widget naming cleanups and GUI-related improvements;
Started planning and implementation of SIDPlay2 filter settings
loading/saving and import/export functionality.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 23 Feb 2007 05:13:05 +0000 |
parents | 48fdc91bfea2 |
children | 9494fee305fa |
line wrap: on
line diff
--- a/src/xs_config.c Fri Feb 23 05:11:02 2007 +0000 +++ b/src/xs_config.c Fri Feb 23 05:13:05 2007 +0000 @@ -57,7 +57,7 @@ #include "xs_glade.h" #include "xs_interface.h" #include "xs_support.h" -#include "xs_curve.h" + /* * Global widgets @@ -147,15 +147,15 @@ { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_clock_ntsc", &xs_cfg.clockSpeed, XS_CLOCK_NTSC }, { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_clock_pal", &xs_cfg.clockSpeed, XS_CLOCK_PAL }, { WTYPE_BUTTON, CTYPE_BOOL, "cfg_emu_clock_force", &xs_cfg.forceSpeed, 0 }, -{ WTYPE_BUTTON, CTYPE_BOOL, "cfg_emu_sidplay2_opt", &xs_cfg.sid2OptLevel, 0 }, +{ WTYPE_BUTTON, CTYPE_BOOL, "cfg_emu_sp2_opt", &xs_cfg.sid2OptLevel, 0 }, -{ WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sidplay2_resid",&xs_cfg.sid2Builder, XS_BLD_RESID }, -{ WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sidplay2_hardsid",&xs_cfg.sid2Builder, XS_BLD_HARDSID }, +{ WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sp2_resid", &xs_cfg.sid2Builder, XS_BLD_RESID }, +{ WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sp2_hardsid", &xs_cfg.sid2Builder, XS_BLD_HARDSID }, { WTYPE_BUTTON, CTYPE_BOOL, "cfg_emu_filters", &xs_cfg.emulateFilters, 0 }, -{ WTYPE_SCALE, CTYPE_FLOAT, "cfg_emu_filt_fs", &xs_cfg.filterFs, 0 }, -{ WTYPE_SCALE, CTYPE_FLOAT, "cfg_emu_filt_fm", &xs_cfg.filterFm, 0 }, -{ WTYPE_SCALE, CTYPE_FLOAT, "cfg_emu_filt_ft", &xs_cfg.filterFt, 0 }, +{ WTYPE_SCALE, CTYPE_FLOAT, "cfg_sp1_filter_fs", &xs_cfg.filterFs, 0 }, +{ WTYPE_SCALE, CTYPE_FLOAT, "cfg_sp1_filter_fm", &xs_cfg.filterFm, 0 }, +{ WTYPE_SCALE, CTYPE_FLOAT, "cfg_sp1_filter_ft", &xs_cfg.filterFt, 0 }, { WTYPE_BUTTON, CTYPE_BOOL, "cfg_maxtime_enable", &xs_cfg.playMaxTimeEnable, 0 }, { WTYPE_BUTTON, CTYPE_BOOL, "cfg_maxtime_unknown", &xs_cfg.playMaxTimeUnknown, 0 }, @@ -187,8 +187,7 @@ static const gint xs_widtable_max = (sizeof(xs_widtable) / sizeof(t_xs_wid_item)); -/* - * Reset/initialize the configuration +/* Reset/initialize the configuration */ void xs_init_configuration(void) { @@ -280,8 +279,67 @@ } -/* - * Get the configuration (from file or default) +/* Filter configuration handling + */ +static t_xs_sid2_filter * xs_filter_load(XS_CONFIG_FILE *cfg, gchar *pcFilterName) +{ +} + +static gboolean xs_filter_save(XS_CONFIG_FILE *cfg, t_xs_sid2_filter *pFilter) +{ + gchar *tmpStr; + gint i; + +} + + +/* Filter exporting and importing. These functions export/import + * filter settings to/from SIDPlay2 INI-type files. + */ +static gboolean xs_filters_import(gchar *pcFilename, t_xs_sid2_filter **pFilters, gint *nFilters) +{ + +} + + +static gboolean xs_filters_export(gchar *pcFilename, t_xs_sid2_filter *pFilters, gint nFilters) +{ + FILE *outFile; + t_xs_sid2_filter *f = pFilters; + gint n; + + /* Open/create the file */ + if ((outFile = fopen(pcFilename, "wb")) == NULL) + return FALSE; + + /* Write each filter spec in "INI"-style format */ + for (n = 0; n < nFilters; n++) { + gint i; + + fprintf(outFile, + "[%s]\n" + "type=1\n" + "points=%d\n", + f->name, f->npoints); + + for (i = 0; i < f->npoints; i++) { + fprintf(outFile, + "point%d=%d,%d\n", + i + 1, + f->points[i].x, + f->points[i].y); + } + + fprintf(outFile, "\n"); + f++; + } + + fclose(outFile); + return TRUE; +} + + +/* Get the configuration (from file or default) */ void xs_read_configuration(void) { @@ -339,9 +397,7 @@ } - -/* - * Write the current configuration +/* Write the current configuration */ gint xs_write_configuration(void) { @@ -396,8 +452,7 @@ } -/* - * Configuration panel was canceled +/* Configuration panel was canceled */ void xs_cfg_cancel(void) { @@ -406,8 +461,7 @@ } -/* - * Configuration was accepted (OK), save the settings +/* Configuration was accepted, save the settings */ void xs_cfg_ok(void) { @@ -498,8 +552,7 @@ } -/* - * Reset filter settings to defaults +/* Reset filter settings to defaults */ void xs_cfg_filter_reset(GtkButton * button, gpointer user_data) { @@ -512,8 +565,7 @@ } -/* - * HVSC songlength-database file selector response-functions +/* HVSC songlength-database file selector response-functions */ void xs_cfg_sld_dbbrowse(GtkButton * button, gpointer user_data) { @@ -553,8 +605,7 @@ } -/* - * STIL-database file selector response-functions +/* STIL-database file selector response-functions */ void xs_cfg_stil_browse(GtkButton * button, gpointer user_data) { @@ -594,8 +645,7 @@ } -/* - * HVSC location selector response-functions +/* HVSC location selector response-functions */ void xs_cfg_hvsc_browse(GtkButton * button, gpointer user_data) { @@ -635,8 +685,7 @@ } -/* - * Selection toggle handlers +/* Selection toggle handlers */ void xs_cfg_emu_filters_toggled(GtkToggleButton * togglebutton, gpointer user_data) { @@ -654,9 +703,7 @@ (void) user_data; - gtk_widget_set_sensitive(LUW("cfg_ftitle_format"), isActive); - gtk_widget_set_sensitive(LUW("cfg_ftitle_desc1"), isActive); - gtk_widget_set_sensitive(LUW("cfg_ftitle_desc2"), isActive); + gtk_widget_set_sensitive(LUW("cfg_ftitle_box"), isActive); } @@ -675,21 +722,21 @@ gtk_widget_set_sensitive(LUW("cfg_emu_mem_real"), isActive); - gtk_widget_set_sensitive(LUW("cfg_sidplay2_grp"), isActive); - gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_opt"), isActive); + gtk_widget_set_sensitive(LUW("cfg_sidplay2_frame"), isActive); + gtk_widget_set_sensitive(LUW("cfg_emu_sp2_opt"), isActive); gtk_widget_set_sensitive(LUW("cfg_chn_autopan"), !isActive); #ifdef HAVE_RESID_BUILDER - gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_resid"), isActive); + gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid"), isActive); #else - gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_resid"), FALSE); + gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid"), FALSE); #endif #ifdef HAVE_HARDSID_BUILDER - gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_hardsid"), isActive); + gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), isActive); #else - gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_hardsid"), FALSE); + gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), FALSE); #endif } @@ -700,9 +747,7 @@ (void) user_data; - gtk_widget_set_sensitive(LUW("cfg_oversample_factor"), isActive); - gtk_widget_set_sensitive(LUW("cfg_oversample_label1"), isActive); - gtk_widget_set_sensitive(LUW("cfg_oversample_label2"), isActive); + gtk_widget_set_sensitive(LUW("cfg_oversample_box"), isActive); } @@ -712,9 +757,7 @@ (void) user_data; - gtk_widget_set_sensitive(LUW("cfg_mintime"), isActive); - gtk_widget_set_sensitive(LUW("cfg_mintime_label1"), isActive); - gtk_widget_set_sensitive(LUW("cfg_mintime_label2"), isActive); + gtk_widget_set_sensitive(LUW("cfg_mintime_box"), isActive); } @@ -726,9 +769,7 @@ (void) user_data; gtk_widget_set_sensitive(LUW("cfg_maxtime_unknown"), isActive); - gtk_widget_set_sensitive(LUW("cfg_maxtime"), isActive); - gtk_widget_set_sensitive(LUW("cfg_maxtime_label1"), isActive); - gtk_widget_set_sensitive(LUW("cfg_maxtime_label2"), isActive); + gtk_widget_set_sensitive(LUW("cfg_maxtime_box"), isActive); } @@ -738,9 +779,7 @@ (void) user_data; - gtk_widget_set_sensitive(LUW("cfg_sld_dbpath"), isActive); - gtk_widget_set_sensitive(LUW("cfg_sld_dbbrowse"), isActive); - gtk_widget_set_sensitive(LUW("cfg_sld_label1"), isActive); + gtk_widget_set_sensitive(LUW("cfg_sld_box"), isActive); } @@ -750,13 +789,8 @@ (void) user_data; - gtk_widget_set_sensitive(LUW("cfg_stil_dbpath"), isActive); - gtk_widget_set_sensitive(LUW("cfg_stil_browse"), isActive); - gtk_widget_set_sensitive(LUW("cfg_stil_label1"), isActive); - - gtk_widget_set_sensitive(LUW("cfg_hvsc_path"), isActive); - gtk_widget_set_sensitive(LUW("cfg_hvsc_browse"), isActive); - gtk_widget_set_sensitive(LUW("cfg_hvsc_label1"), isActive); + gtk_widget_set_sensitive(LUW("cfg_stil_box1"), isActive); + gtk_widget_set_sensitive(LUW("cfg_stil_box2"), isActive); } @@ -767,7 +801,7 @@ (void) user_data; gtk_widget_set_sensitive(LUW("cfg_subauto_min_only"), isActive); - gtk_widget_set_sensitive(LUW("cfg_subauto_mintime"), isActive); + gtk_widget_set_sensitive(LUW("cfg_subauto_box"), isActive); } @@ -778,7 +812,7 @@ (void) user_data; - gtk_widget_set_sensitive(LUW("cfg_subauto_mintime"), isActive); + gtk_widget_set_sensitive(LUW("cfg_subauto_box"), isActive); } @@ -814,8 +848,7 @@ } -/* - * Execute the configuration panel +/* Execute the configuration panel */ void xs_configure(void) { @@ -837,14 +870,16 @@ XS_MUTEX_LOCK(xs_cfg); /* Create the custom filter curve widget for libSIDPlay2 */ -/* c = xs_curve_new(); - gtk_widget_set_name(c, "cfg_filter2_curve"); + xs_curve_reset(XS_CURVE(c)); + + gtk_widget_set_name(c, "cfg_sp2_filter_curve"); gtk_widget_ref(c); - gtk_object_set_data_full(GTK_OBJECT(xs_configwin), "cfg_filter2_curve", c, (GtkDestroyNotify) gtk_widget_unref); + gtk_object_set_data_full(GTK_OBJECT(xs_configwin), "cfg_sp2_filter_curve", c, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(c); - gtk_box_pack_start(GTK_BOX(LUW("cfg_box_sidplay2")), c, TRUE, TRUE, 4); -*/ + gtk_container_add(GTK_CONTAINER(LUW("cfg_sp2_filter_frame")), c); + //gtk_container_set_border_width(GTK_CONTAINER(c), 2); + /* Based on available optional parts, gray out options */ #ifndef HAVE_SIDPLAY1 @@ -871,7 +906,7 @@ #endif /* Update the widget sensitivities */ - gtk_widget_set_sensitive(LUW("cfg_resid_grp"), FALSE); + gtk_widget_set_sensitive(LUW("cfg_resid_frame"), FALSE); xs_cfg_emu_filters_toggled((GtkToggleButton *) LUW("cfg_emu_filters"), NULL); xs_cfg_ftitle_override_toggled((GtkToggleButton *) LUW("cfg_ftitle_override"), NULL);