Mercurial > hg > xmms-sid
diff src/xs_config.c @ 40:1788f4ce6a44
Numerous changes towards 0.8
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 19 Jun 2003 22:38:01 +0000 |
parents | 271be59be975 |
children | 0f00ebab063d |
line wrap: on
line diff
--- a/src/xs_config.c Thu Jun 19 20:49:01 2003 +0000 +++ b/src/xs_config.c Thu Jun 19 22:38:01 2003 +0000 @@ -19,10 +19,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include "xs_config.h" #include <xmms/configfile.h> #include <stdio.h> -#include "xmms-sid.h" -#include "xs_config.h" #include "xs_glade.h" #include "xs_interface.h" @@ -30,51 +29,48 @@ /* * Global widgets */ -static GtkWidget *xs_configwin = NULL; +static GtkWidget *xs_configwin = NULL, + *xs_sldb_fileselector = NULL, + *xs_stil_fileselector = NULL; + +#define LUW(x...) lookup_widget(xs_configwin, ## x) /* * Configuration specific stuff */ -#define XS_CFGTABLE_MAX 25 - -t_xs_cfg_item xs_cfgtable[XS_CFGTABLE_MAX] = { - {ATYPE_INT, &xs_cfg.fmtBitsPerSample, "bitsPerSample"}, - {ATYPE_INT, &xs_cfg.fmtChannels, "channels"}, - {ATYPE_INT, &xs_cfg.fmtFrequency, "frequency"}, - - {ATYPE_BOOL,&xs_cfg.muffledOutput, "muffledOutput"}, - {ATYPE_BOOL,&xs_cfg.addStaticNoise, "addStaticNoise"}, +t_xs_cfg_item xs_cfgtable[] = { + {ATYPE_INT, &xs_cfg.fmtBitsPerSample,"bitsPerSample"}, + {ATYPE_INT, &xs_cfg.fmtChannels, "channels"}, + {ATYPE_INT, &xs_cfg.fmtFrequency, "frequency"}, - - {ATYPE_BOOL, &xs_cfg.mos8580, "mos8580"}, - {ATYPE_BOOL, &xs_cfg.emulateFilter, "emulateFilter"}, - {ATYPE_FLOAT, &xs_cfg.filterFs, "filterFs"}, - {ATYPE_FLOAT, &xs_cfg.filterFm, "filterFm"}, - {ATYPE_FLOAT, &xs_cfg.filterFt, "filterFt"}, - {ATYPE_INT, &xs_cfg.memoryMode, "memoryMode"}, - {ATYPE_INT, &xs_cfg.clockSpeed, "clockSpeed"}, - {ATYPE_BOOL, &xs_cfg.forceSpeed, "forceSpeed"}, + {ATYPE_BOOL, &xs_cfg.mos8580, "mos8580"}, + {ATYPE_BOOL, &xs_cfg.emulateFilters, "emulateFilters"}, + {ATYPE_FLOAT, &xs_cfg.filterFs, "filterFs"}, + {ATYPE_FLOAT, &xs_cfg.filterFm, "filterFm"}, + {ATYPE_FLOAT, &xs_cfg.filterFt, "filterFt"}, + {ATYPE_INT, &xs_cfg.memoryMode, "memoryMode"}, + {ATYPE_INT, &xs_cfg.clockSpeed, "clockSpeed"}, + {ATYPE_BOOL, &xs_cfg.forceSpeed, "forceSpeed"}, + {ATYPE_BOOL, &xs_cfg.oversampleEnable,"oversampleEnable"}, + {ATYPE_INT, &xs_cfg.oversampleFactor,"oversampleFactor"}, - {ATYPE_BOOL,&xs_cfg.playUseMaxTime, "playUseMaxTime"}, - {ATYPE_INT, &xs_cfg.playMaxTime, "playMaxTime"}, - {ATYPE_INT, &xs_cfg.playMethod, "playMethod"}, - {ATYPE_INT, &xs_cfg.playMaxSilentTime, "playMaxSilentTime"}, - {ATYPE_INT, &xs_cfg.playSilentPercent, "playSilentPercent"}, - {ATYPE_STR, &xs_cfg.playDBPath, "playDBPath"}, + {ATYPE_BOOL, &xs_cfg.playMaxTimeEnable,"playMaxTimeEnable"}, + {ATYPE_INT, &xs_cfg.playMaxTime, "playMaxTime"}, + {ATYPE_BOOL, &xs_cfg.songlenDBEnable,"songlenDBEnable"}, + {ATYPE_STR, &xs_cfg.songlenDBPath, "songlenDBPath"}, - - {ATYPE_BOOL,&xs_cfg.useSTIL, "useSTIL"}, - {ATYPE_STR, &xs_cfg.STILpath, "STILpath"}, + {ATYPE_BOOL, &xs_cfg.stilDBEnable, "useSTIL"}, + {ATYPE_STR, &xs_cfg.stilDBPath, "STILpath"}, + + {ATYPE_BOOL, &xs_cfg.detectMagic, "detectMagic"}, - {ATYPE_BOOL, &xs_cfg.finfoUseColors, "useColors"}, - {ATYPE_BOOL,&xs_cfg.detectMagic, "detectMagic"}, - + {ATYPE_BOOL, &xs_cfg.titleOverride, "titleOverride"}, + {ATYPE_STR, &xs_cfg.titleFormat, "fileInfo"} +}; - {ATYPE_BOOL, &xs_cfg.titleOverride, "titleOverride"}, - {ATYPE_STR, &xs_cfg.titleFormat, "fileInfo"} -}; +const gint XS_CFGTABLE_MAX = (sizeof(xs_cfgtable) / sizeof(t_xs_cfg_item)); /* @@ -82,12 +78,11 @@ */ void xs_reset_filters(void) { - /* Reset filter values */ -// FIXME FIX ME + /* Reset filter values */ /* - xs_cfg.filterFs = XMMS_SID_DEFAULT_FILTERFS; - xs_cfg.filterFm = XMMS_SID_DEFAULT_FILTERFM; - xs_cfg.filterFt = XMMS_SID_DEFAULT_FILTERFT; + xs_cfg.filterFs = SIDEMU_DEFAULTFILTERFS; + xs_cfg.filterFm = SIDEMU_DEFAULTFILTERFM; + xs_cfg.filterFt = SIDEMU_DEFAULTFILTERFT; */ } @@ -95,316 +90,331 @@ /* * Get the configuration (from file or default) */ -void xs_get_configure(void) +void xs_read_configuration(void) { - gchar *cfg_fn, *tmpstr; - ConfigFile *cfg_file; - gint i; - - XSDEBUG("initializing configuration ...\n"); + gchar *cfgFilename, *tmpStr; + ConfigFile *cfgFile; + gint i; - /* Pre-initialize configuration structure */ - xs_cfg.fmtBitsPerSample = 16; - xs_cfg.fmtChannels = XMMS_SID_CHN_MONO; - xs_cfg.fmtFrequency = 44100; + XSDEBUG("initializing configuration ...\n"); - xs_cfg.muffledOutput = FALSE; - xs_cfg.addStaticNoise = FALSE; - + /* Pre-initialize configuration structure */ + xs_cfg.fmtBitsPerSample = 16; + xs_cfg.fmtChannels = XS_CHN_MONO; + xs_cfg.fmtFrequency = 44100; - xs_cfg.mos8580 = FALSE; - xs_cfg.emulateFilter = TRUE; - xs_reset_filters(); - xs_cfg.memoryMode = XMMS_SID_MPU_BANK_SWITCHING; - xs_cfg.clockSpeed = XMMS_SID_CLOCK_PAL; - xs_cfg.forceSpeed = FALSE; + xs_cfg.mos8580 = FALSE; + xs_cfg.emulateFilters = TRUE; + xs_reset_filters(); + xs_cfg.memoryMode = XS_MPU_BANK_SWITCHING; + xs_cfg.clockSpeed = XS_CLOCK_PAL; + xs_cfg.forceSpeed = FALSE; + xs_cfg.oversampleEnable = FALSE; + xs_cfg.oversampleFactor = XS_MIN_OVERSAMPLE; - xs_cfg.playUseMaxTime = FALSE; - xs_cfg.playMaxTime = 150; - xs_cfg.playMethod = XMMS_SID_PMETHOD_NONE; - xs_cfg.playMaxSilentTime = 20; - xs_cfg.playSilentPercent = 3; - xs_strcalloc(&xs_cfg.playDBPath, "~/C64Music/Songlength.txt"); + xs_cfg.playMaxTimeEnable = FALSE; + xs_cfg.playMaxTime = 150; + xs_cfg.songlenDBEnable = FALSE; + xs_strcalloc(&xs_cfg.songlenDBPath, "~/C64Music/Songlengths.txt"); + xs_cfg.stilDBEnable = FALSE; + xs_strcalloc(&xs_cfg.stilDBPath, "~/C64Music/DOCUMENTS/STIL.txt"); - xs_cfg.useSTIL = FALSE; - xs_strcalloc(&xs_cfg.STILpath, "~/C64Music/DOCUMENTS/STIL.txt"); + xs_cfg.detectMagic = FALSE; - xs_cfg.finfoUseColors = TRUE; - xs_cfg.detectMagic = FALSE; + xs_cfg.titleOverride = FALSE; + xs_strcalloc(&xs_cfg.titleFormat, "%1 - %2"); - xs_cfg.titleOverride = FALSE; - xs_strcalloc(&xs_cfg.titleFormat, "%1 - %2"); - - - /* Try to open the XMMS configuration file */ - XSDEBUG("loading from config-file ...\n"); - - cfg_fn = g_strconcat(g_get_home_dir(), "/.xmms/config", NULL); - cfg_file = xmms_cfg_open_file(cfg_fn); - g_free(cfg_fn); - if (cfg_file == NULL) return; - - - /* Read the new settings from XMMS configuration file */ - for (i = 0; i < XS_CFGTABLE_MAX; i++) { - - switch (xs_cfgtable[i].atype) { - case ATYPE_INT: - xmms_cfg_read_int(cfg_file, XS_CONFIG_IDENT, xs_cfgtable[i].aname, (gint *) xs_cfgtable[i].adata); - break; + /* Try to open the XMMS configuration file */ + XSDEBUG("loading from config-file ...\n"); - case ATYPE_BOOL: - xmms_cfg_read_boolean(cfg_file, XS_CONFIG_IDENT, xs_cfgtable[i].aname, (gboolean *) xs_cfgtable[i].adata); - break; - - case ATYPE_FLOAT: - xmms_cfg_read_float(cfg_file, XS_CONFIG_IDENT, xs_cfgtable[i].aname, (gfloat *) xs_cfgtable[i].adata); - break; - - case ATYPE_STR: - if (xmms_cfg_read_string(cfg_file, XS_CONFIG_IDENT, xs_cfgtable[i].aname, (gchar **) &tmpstr)) - { - /* Read was successfull */ - xs_strcalloc((gchar **) xs_cfgtable[i].adata, tmpstr); - g_free(tmpstr); - } - break; - - default: - XSERR("Internal: Unsupported setting type found while reading configuration file. Please report to author!\n"); - break; - } + cfgFilename = g_strconcat(g_get_home_dir(), XS_CONFIG_FILE, NULL); + cfgFile = xmms_cfg_open_file(cfgFilename); + g_free(cfgFilename); + if (cfgFile == NULL) + { + XSDEBUG("could not open configuration file, trying to write defaults...\n"); + xs_write_configuration(); + return; } - /* Free the config file */ - xmms_cfg_free(cfg_file); + /* Read the new settings from XMMS configuration file */ + for (i = 0; i < XS_CFGTABLE_MAX; i++) + { + switch (xs_cfgtable[i].atype) { + case ATYPE_INT: + xmms_cfg_read_int(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].aname, (gint *) xs_cfgtable[i].adata); + break; + + case ATYPE_BOOL: + xmms_cfg_read_boolean(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].aname, (gboolean *) xs_cfgtable[i].adata); + break; + + case ATYPE_FLOAT: + xmms_cfg_read_float(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].aname, (gfloat *) xs_cfgtable[i].adata); + break; - XSDEBUG("OK\n"); + case ATYPE_STR: + if (xmms_cfg_read_string(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].aname, (gchar **) &tmpStr)) + { + /* Read was successfull */ + xs_strcalloc((gchar **) xs_cfgtable[i].adata, tmpStr); + g_free(tmpStr); + } + break; + + default: + XSERR("Internal: Unsupported setting type found while reading configuration file. Please report to author!\n"); + break; + } + } + + + /* Free the config file */ + xmms_cfg_free(cfgFile); + + xs_write_configuration(); + + XSDEBUG("OK\n"); } -#if 0 + + +/* + * Write the current configuration + */ +gint xs_write_configuration(void) +{ + gchar *cfgFilename; + ConfigFile *cfgFile; + gint i; + + XSDEBUG("writing configuration ...\n"); + + /* + * Try to open the XMMS configuration file + */ + cfgFilename = g_strconcat(g_get_home_dir(), XS_CONFIG_FILE, NULL); + cfgFile = xmms_cfg_open_file(cfgFilename); + + if (!cfgFile) + cfgFile = xmms_cfg_new(); + + + /* Write the new settings to XMMS configuration file */ + for (i = 0; i < XS_CFGTABLE_MAX; i++) + { + switch (xs_cfgtable[i].atype) { + case ATYPE_INT: + xmms_cfg_write_int(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].aname, *(gint *) xs_cfgtable[i].adata); + break; + + case ATYPE_BOOL: + xmms_cfg_write_boolean(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].aname, *(gboolean *) xs_cfgtable[i].adata); + break; + + case ATYPE_FLOAT: + xmms_cfg_write_float(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].aname, *(gfloat *) xs_cfgtable[i].adata); + break; + + case ATYPE_STR: + xmms_cfg_write_string(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].aname, *(gchar **) xs_cfgtable[i].adata); + break; + + default: + XSERR("Internal: Unsupported setting type found while writing configuration file. Please report to author!\n"); + break; + } + } + + /* Flush the file */ + xmms_cfg_write_file(cfgFile, cfgFilename); + + /* Free the memory areas */ + xmms_cfg_free(cfgFile); + g_free(cfgFilename); + + return 0; +} + + /* * Configuration panel was canceled */ -void xs_configure_cancel(void) +void xs_cfg_cancel(void) { - gtk_widget_destroy(xs_configwin); - xs_configwin = NULL; + gtk_widget_destroy(xs_configwin); + xs_configwin = NULL; } /* * Configuration was accepted (OK), save the settings */ -void xs_configure_ok(void) +void xs_cfg_ok(void) { - ConfigFile *cfg_file; - gchar *cfg_fn; - gint i; + XSDEBUG("get data from widgets to config...\n"); - XSDEBUG("get data from widgets to config...\n"); - - /* Check the resolution settings */ - if (GTK_TOGGLE_BUTTON(cfg_res_16bit)->active) - xs_cfg.fmtBitsPerSample = 16; - else if (GTK_TOGGLE_BUTTON(cfg_res_8bit)->active) - xs_cfg.fmtBitsPerSample = 8; + /* Check the resolution settings */ + if (GTK_TOGGLE_BUTTON(LUW("cfg_res_16bit"))->active) + xs_cfg.fmtBitsPerSample = XS_RES_16BIT; + else + xs_cfg.fmtBitsPerSample = XS_RES_8BIT; - /* Channel settings */ - if (GTK_TOGGLE_BUTTON(cfg_chn_mono)->active) - xs_cfg.fmtChannels = XMMS_SID_CHN_MONO; - else if (GTK_TOGGLE_BUTTON(cfg_chn_stereo)->active) - xs_cfg.fmtChannels = XMMS_SID_CHN_STEREO; - else if (GTK_TOGGLE_BUTTON(cfg_chn_autopan)->active) - xs_cfg.fmtChannels = XMMS_SID_CHN_AUTOPAN; - - /* Frequency setting */ - xs_cfg.fmtFrequency = (gint) GTK_ADJUSTMENT(cfg_samplerate_adj)->value; - - /* Experimental settings */ - xs_cfg.muffledOutput = GTK_TOGGLE_BUTTON(cfg_muffledoutput)->active; - xs_cfg.addStaticNoise = GTK_TOGGLE_BUTTON(cfg_addstaticnoise)->active; + /* Channel settings */ + if (GTK_TOGGLE_BUTTON(LUW("cfg_chn_mono"))->active) + xs_cfg.fmtChannels = XS_CHN_MONO; + else + if (GTK_TOGGLE_BUTTON(LUW("cfg_chn_stereo"))->active) + xs_cfg.fmtChannels = XS_CHN_STEREO; + else + if (GTK_TOGGLE_BUTTON(LUW("cfg_chn_autopan"))->active) + xs_cfg.fmtChannels = XS_CHN_AUTOPAN; - /* Filter and waveform settings */ - xs_cfg.mos8580 = ((GTK_TOGGLE_BUTTON(cfg_wav_mos8580)->active) && (!GTK_TOGGLE_BUTTON(cfg_wav_mos6581)->active)); - - xs_cfg.emulateFilter = GTK_TOGGLE_BUTTON(cfg_emufilters)->active; - - xs_cfg.filterFs = GTK_ADJUSTMENT(cfg_filt_fs_adj)->value; - xs_cfg.filterFm = GTK_ADJUSTMENT(cfg_filt_fm_adj)->value; - xs_cfg.filterFt = GTK_ADJUSTMENT(cfg_filt_ft_adj)->value; + /* Frequency setting */ + xs_cfg.fmtFrequency = (gint) GTK_ADJUSTMENT(LUW("cfg_samplerate_adj"))->value; - /* Memorymode settings */ - if (GTK_TOGGLE_BUTTON(cfg_mem_banksw)->active) - xs_cfg.memoryMode = XMMS_SID_MPU_BANK_SWITCHING; - else if (GTK_TOGGLE_BUTTON(cfg_mem_transrom)->active) - xs_cfg.memoryMode = XMMS_SID_MPU_TRANSPARENT_ROM; - else if (GTK_TOGGLE_BUTTON(cfg_mem_playsid)->active) - xs_cfg.memoryMode = XMMS_SID_MPU_PLAYSID_ENVIRONMENT; + /* Filter and waveform settings */ + xs_cfg.mos8580 = GTK_TOGGLE_BUTTON(LUW("cfg_wav_mos8580"))->active; + xs_cfg.emulateFilters = GTK_TOGGLE_BUTTON(LUW("cfg_emufilters"))->active; - /* Clockspeed settings */ - if (GTK_TOGGLE_BUTTON(cfg_clock_pal)->active) - xs_cfg.clockSpeed = XMMS_SID_CLOCK_PAL; - else if (GTK_TOGGLE_BUTTON(cfg_clock_ntsc)->active) - xs_cfg.clockSpeed = XMMS_SID_CLOCK_NTSC; - - xs_cfg.forceSpeed = GTK_TOGGLE_BUTTON(cfg_clock_force)->active; + xs_cfg.filterFs = GTK_ADJUSTMENT(LUW("cfg_filt_fs_adj"))->value; + xs_cfg.filterFm = GTK_ADJUSTMENT(LUW("cfg_filt_fm_adj"))->value; + xs_cfg.filterFt = GTK_ADJUSTMENT(LUW("cfg_filt_ft_adj"))->value; - /* Songlength-detection settings */ - xs_cfg.playUseMaxTime = GTK_TOGGLE_BUTTON(cfg_sld_usemaxtime)->active; - xs_cfg.playMaxTime = GTK_ADJUSTMENT(cfg_sld_maxtime_adj)->value; - - if (GTK_TOGGLE_BUTTON(cfg_sld_none)->active) - xs_cfg.playMethod = XMMS_SID_PMETHOD_NONE; - else if (GTK_TOGGLE_BUTTON(cfg_sld_maxsilence)->active) - xs_cfg.playMethod = XMMS_SID_PMETHOD_MAXSILENCE; - else if (GTK_TOGGLE_BUTTON(cfg_sld_database)->active) - xs_cfg.playMethod = XMMS_SID_PMETHOD_DATABASE; - - xs_cfg.playMaxSilentTime = GTK_ADJUSTMENT(cfg_sld_silencetime_adj)->value; - xs_cfg.playSilentPercent = GTK_ADJUSTMENT(cfg_sld_percentage_adj)->value; + /* Memorymode settings */ + if (GTK_TOGGLE_BUTTON(LUW("cfg_mem_banksw"))->active) + xs_cfg.memoryMode = XS_MPU_BANK_SWITCHING; + else + if (GTK_TOGGLE_BUTTON(LUW("cfg_mem_transrom"))->active) + xs_cfg.memoryMode = XS_MPU_TRANSPARENT_ROM; + else + if (GTK_TOGGLE_BUTTON(LUW("cfg_mem_playsid"))->active) + xs_cfg.memoryMode = XS_MPU_PLAYSID_ENVIRONMENT; - xs_strcalloc(&xs_cfg.playDBPath, gtk_entry_get_text(GTK_ENTRY(cfg_sld_dbpath))); - - - /* STIL and miscellaneous settings */ - xs_cfg.useSTIL = GTK_TOGGLE_BUTTON(cfg_stil_use)->active; - - xs_strcalloc(&xs_cfg.STILpath, gtk_entry_get_text(GTK_ENTRY(cfg_stil_path))); + /* Clockspeed settings */ + if (GTK_TOGGLE_BUTTON(LUW("cfg_clock_ntsc"))->active) + xs_cfg.clockSpeed = XS_CLOCK_NTSC; + else + xs_cfg.clockSpeed = XS_CLOCK_PAL; - xs_cfg.finfoUseColors = GTK_TOGGLE_BUTTON(cfg_finfo_usecolors)->active; - xs_cfg.detectMagic = GTK_TOGGLE_BUTTON(cfg_detectmagic)->active; - - - /* Title settings */ - xs_cfg.titleOverride = GTK_TOGGLE_BUTTON(cfg_ftitle_override)->active; - - xs_strcalloc(&xs_cfg.titleFormat, gtk_entry_get_text(GTK_ENTRY(cfg_ftitle_format))); + xs_cfg.forceSpeed = GTK_TOGGLE_BUTTON(LUW("cfg_clock_force"))->active; - /* - * Try to open the XMMS configuration file - */ - cfg_fn = g_strconcat(g_get_home_dir(), "/.xmms/config", NULL); - cfg_file = xmms_cfg_open_file(cfg_fn); + /* Songlength-detection settings */ + xs_cfg.playMaxTimeEnable = GTK_TOGGLE_BUTTON(LUW("cfg_sld_usemaxtime"))->active; + xs_cfg.playMaxTime = GTK_ADJUSTMENT(LUW("cfg_sld_maxtime_adj"))->value; - if (!cfg_file) - cfg_file = xmms_cfg_new(); + xs_cfg.songlenDBEnable = (GTK_TOGGLE_BUTTON(LUW("cfg_sld"))->active); + xs_strcalloc(&xs_cfg.songlenDBPath, gtk_entry_get_text(GTK_ENTRY(LUW("cfg_sld_dbpath")))); - /* Write the new settings to XMMS configuration file */ - for (i = 0; i < XS_CFGTABLE_MAX; i++) { - - switch (xs_cfgtable[i].atype) { - case ATYPE_INT: - xmms_cfg_write_int(cfg_file, XS_CONFIG_IDENT, xs_cfgtable[i].aname, *(gint *) xs_cfgtable[i].adata); - break; + /* STIL and miscellaneous settings */ + xs_cfg.stilDBEnable = GTK_TOGGLE_BUTTON(LUW("cfg_stil_use"))->active; + xs_strcalloc(&xs_cfg.stilDBPath, gtk_entry_get_text(GTK_ENTRY(LUW("cfg_stil_path")))); - case ATYPE_BOOL: - xmms_cfg_write_boolean(cfg_file, XS_CONFIG_IDENT, xs_cfgtable[i].aname, *(gboolean *) xs_cfgtable[i].adata); - break; + xs_cfg.detectMagic = GTK_TOGGLE_BUTTON(LUW("cfg_detectmagic"))->active; - case ATYPE_FLOAT: - xmms_cfg_write_float(cfg_file, XS_CONFIG_IDENT, xs_cfgtable[i].aname, *(gfloat *) xs_cfgtable[i].adata); - break; + /* Title settings */ + xs_cfg.titleOverride = GTK_TOGGLE_BUTTON(LUW("cfg_ftitle_override"))->active; + xs_strcalloc(&xs_cfg.titleFormat, gtk_entry_get_text(GTK_ENTRY(LUW("cfg_ftitle_format")))); - case ATYPE_STR: - xmms_cfg_write_string(cfg_file, XS_CONFIG_IDENT, xs_cfgtable[i].aname, *(gchar **) xs_cfgtable[i].adata); - break; - default: - XSERR("Internal: Unsupported setting type found while writing configuration file. Please report to author!\n"); - break; - } - - } + /* Write settings */ + xs_write_configuration(); - /* Flush the file */ - xmms_cfg_write_file(cfg_file, cfg_fn); +/* NOTICE/FIXME FIX ME: if songlendb or stildb settings changed, we need to flush and reread them */ - /* Free the memory areas */ - xmms_cfg_free(cfg_file); - - g_free(cfg_fn); - - gtk_widget_destroy(xs_configwin); - xs_configwin = NULL; + /* Close window */ + gtk_widget_destroy(xs_configwin); + xs_configwin = NULL; } /* * Update filter setting sliders */ -static void xs_update_filters(void) +void xs_update_filters(void) { - gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_filt_fs_adj), xs_cfg.filterFs); - gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_filt_fm_adj), xs_cfg.filterFm); - gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_filt_ft_adj), xs_cfg.filterFt); + gtk_adjustment_set_value(GTK_ADJUSTMENT(LUW("cfg_filt_fs_adj")), xs_cfg.filterFs); + gtk_adjustment_set_value(GTK_ADJUSTMENT(LUW("cfg_filt_fm_adj")), xs_cfg.filterFm); + gtk_adjustment_set_value(GTK_ADJUSTMENT(LUW("cfg_filt_ft_adj")), xs_cfg.filterFt); } /* * Reset filter settings to defaults */ -static void xs_cfg_filter_reset(void) +void xs_cfg_filter_reset(void) { - xs_reset_filters(); - xs_update_filters(); + xs_reset_filters(); + xs_update_filters(); } /* * HVSC songlength-database file selector response-functions */ -void xs_cfg_sld_fs_ok(void) +void xs_cfg_sld_dbbrowse(GtkButton *button, gpointer user_data) { - /* Selection was accepted! */ - gtk_entry_set_text(GTK_ENTRY(cfg_sld_dbpath), gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_sld_fileselector)) - ); - - /* Close file selector window */ - gtk_widget_destroy(xs_sld_fileselector); - xs_sld_fileselector = NULL; } -void xs_cfg_sld_fs_cancel(void) +void xs_cfg_sldb_fs_ok(void) { - /* Close file selector window */ - gtk_widget_destroy(xs_sld_fileselector); - xs_sld_fileselector = NULL; + /* Selection was accepted! */ + gtk_entry_set_text(GTK_ENTRY(LUW("cfg_sld_dbpath")), + gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_sldb_fileselector)) + ); + + /* Close file selector window */ + gtk_widget_destroy(xs_sldb_fileselector); + xs_sldb_fileselector = NULL; +} + + +void xs_cfg_sldb_fs_cancel(void) +{ + /* Close file selector window */ + gtk_widget_destroy(xs_sldb_fileselector); + xs_sldb_fileselector = NULL; } /* * STIL-database file selector response-functions */ +void xs_cfg_stil_browse(GtkButton *button, gpointer user_data) +{ + +} + + void xs_cfg_stil_fs_ok(void) { - /* Selection was accepted! */ - gtk_entry_set_text(GTK_ENTRY(cfg_stil_path), gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_stil_fileselector)) - ); + /* Selection was accepted! */ + gtk_entry_set_text(GTK_ENTRY(LUW("cfg_stil_path")), + gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_stil_fileselector))); - /* Close file selector window */ - gtk_widget_destroy(xs_stil_fileselector); - xs_stil_fileselector = NULL; + /* Close file selector window */ + gtk_widget_destroy(xs_stil_fileselector); + xs_stil_fileselector = NULL; } void xs_cfg_stil_fs_cancel(void) { - /* Close file selector window */ - gtk_widget_destroy(xs_stil_fileselector); - xs_stil_fileselector = NULL; + /* Close file selector window */ + gtk_widget_destroy(xs_stil_fileselector); + xs_stil_fileselector = NULL; } @@ -413,15 +423,17 @@ */ void xs_configure(void) { - - /* Check if the window already exists */ - if (xs_configwin != NULL) { - gdk_window_raise(xs_configwin->window); - return; + /* Check if the window already exists */ + if (xs_configwin != NULL) + { + gdk_window_raise(xs_configwin->window); + return; } - - + /* Create the window */ + xs_configwin = create_xs_configwin(); + +#if 0 /* Set the states of widgets */ @@ -454,15 +466,15 @@ /* Memorymode settings */ switch (xs_cfg.memoryMode) { - case XMMS_SID_MPU_BANK_SWITCHING: + case XS_MPU_BANK_SWITCHING: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_mem_banksw), TRUE); break; - case XMMS_SID_MPU_TRANSPARENT_ROM: + case XS_MPU_TRANSPARENT_ROM: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_mem_transrom), TRUE); break; - case XMMS_SID_MPU_PLAYSID_ENVIRONMENT: + case XS_MPU_PLAYSID_ENVIRONMENT: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_mem_playsid), TRUE); break; } @@ -485,16 +497,16 @@ /* Song-length detection */ switch (xs_cfg.playMethod) { - case XMMS_SID_PMETHOD_NONE: + case XS_PMETHOD_NONE: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_none), TRUE); break; - case XMMS_SID_PMETHOD_MAXSILENCE: + case XS_PMETHOD_MAXSILENCE: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_maxsilence), TRUE); break; - case XMMS_SID_PMETHOD_DATABASE: + case XS_PMETHOD_DATABASE: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_database), TRUE); break; } @@ -539,11 +551,8 @@ gtk_entry_set_text(GTK_ENTRY(cfg_ftitle_format), xs_cfg.titleFormat); } +#endif - gtk_widget_show(xs_configwin); + gtk_widget_show(xs_configwin); } -#endif -void xs_configure(void) -{ -}