# HG changeset patch # User Matti Hamalainen # Date 1054638002 0 # Node ID 279b1e12df2bffafa988290c8fcdd9719b1830b0 # Parent 041bebb28dc0b76c845845589cc85c815514fa0f Updated to version 0.8-devel diff -r 041bebb28dc0 -r 279b1e12df2b src/xmms-sid.h --- a/src/xmms-sid.h Tue Jun 03 10:29:02 2003 +0000 +++ b/src/xmms-sid.h Tue Jun 03 11:00:02 2003 +0000 @@ -1,9 +1,9 @@ /* - xmms-sid - SIDPlay input plugin for X MultiMedia System (XMMS) + XMMS-SID - SIDPlay input plugin for X MultiMedia System (XMMS) Main header file - Written by Matti "ccr" Hamalainen + Written by Matti "ccr" Hamalainen (few bits may still be by Willem Monsuwe) This program is free software; you can redistribute it and/or modify @@ -20,12 +20,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* - #define DEBUG -*/ +#define DEBUG -#ifndef _XMMS_SID_H -#define _XMMS_SID_H +#ifndef XMMS_SID_H +#define XMMS_SID_H #ifdef __cplusplus extern "C" { @@ -34,71 +32,22 @@ #include #include -extern InputPlugin xmms_sid_ip; - /* - * Configuration structure + * Generals */ -#define XMMS_SID_CONFIG_IDENT "XMMS-SID" -#define XMMS_SID_BUFSIZE 4096 -#define XMMS_SID_NAME "xmms-sid" - -#define XMMS_SID_CHN_MONO 0 -#define XMMS_SID_CHN_STEREO 1 -#define XMMS_SID_CHN_AUTOPAN 2 - -#define XMMS_SID_CLOCK_PAL 1 -#define XMMS_SID_CLOCK_NTSC 2 - -#define XMMS_SID_DEFAULT_FILTERFS 400.0 -#define XMMS_SID_DEFAULT_FILTERFM 60.0 -#define XMMS_SID_DEFAULT_FILTERFT 0.05 +#define XMMS_SID_NAME "XMMS-SID" /* Plugin name */ +#define XMMS_SID_CONFIG_IDENT "XMMS-SID" /* Configuration file identifier */ +#define XMMS_SID_BUFSIZE 4096 /* Size for some buffers */ -#define XMMS_SID_MPU_BANK_SWITCHING 1 -#define XMMS_SID_MPU_TRANSPARENT_ROM 2 -#define XMMS_SID_MPU_PLAYSID_ENVIRONMENT 3 -extern struct T_sid_cfg { - gint bitsPerSample; - gint channels; - gint frequency; - gboolean mos8580; - gboolean emulateFilter; - gfloat filterFs; - gfloat filterFm; - gfloat filterFt; - gint memoryMode; - gint clockSpeed; - gboolean forceSpeed; - gboolean detectMagic; - gboolean usestil; - gchar *stilpath; - gchar *fileInfo; -} xs_cfg; +extern InputPlugin xs_plugin_ip; /* - * Configuration specific stuff - */ -enum { - ATYPE_INT = 1, - ATYPE_FLOAT, - ATYPE_STR, - ATYPE_BOOL -}; - - -typedef struct { - int atype; - void *adata; - gchar *aname; -} T_sid_cfg_entry; - - -/* - * General plugin function prototypes + * Plugin function prototypes */ void xs_init(void); +void xs_close(void); int xs_is_our_file(char *); void xs_play_file(char *); void xs_stop(void); @@ -106,32 +55,10 @@ void xs_seek(int); int xs_get_time(void); void xs_get_song_info(char *, char **, int *); -void xs_file_info_box(char *); -void xs_configure(void); -void xs_get_configure(void); -void xs_aboutbox(void); -int xs_stil_get(gchar *); - -int xs_strcalloc(gchar **, gchar *); -void xs_stil_clear(void); - -/* - * STIL information specific - */ -#define XMMS_SID_STIL_MAXENTRY 64 - -typedef struct { - gchar *title; - gchar *name; - gchar *artist; - gchar *comment; -} T_sid_stil_subtune; +// void xs_file_info_box(char *); -extern struct T_sid_stil_info { - T_sid_stil_subtune subtune[XMMS_SID_STIL_MAXENTRY]; -} xs_stil_info; - +#define LWW lookup_widget /* * Debugging and error handling macros @@ -148,4 +75,4 @@ #ifdef __cplusplus } #endif -#endif /* _XMMS_SID_H */ +#endif /* XMMS_SID_H */ diff -r 041bebb28dc0 -r 279b1e12df2b src/xs_config.c --- a/src/xs_config.c Tue Jun 03 10:29:02 2003 +0000 +++ b/src/xs_config.c Tue Jun 03 11:00:02 2003 +0000 @@ -1,11 +1,9 @@ /* - xmms-sid - SIDPlay input plugin for X MultiMedia System (XMMS) + XMMS-SID - SIDPlay input plugin for X MultiMedia System (XMMS) Configuration dialog - Written by Matti "ccr" Hamalainen - (Interface created with Glade, the Gtk+ interface builder, - code edited by hand afterwards to make it work here) + Written by Matti "ccr" Hamalainen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,130 +19,171 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include +#include #include "xmms-sid.h" -#include -#include -#include +#include "xs_config.h" +#include "xs_glade.h" +#include "xs_interface.h" /* - * General stuff + * Global widgets */ -static GtkWidget *xs_configwin = NULL; -static GtkWidget *xs_fileselector = NULL; - -static GtkObject *cfg_samplerate_adj, *cfg_filt_fm_adj, *cfg_filt_ft_adj, *cfg_filt_fs_adj; -static GtkWidget *cfg_res_8bit, *cfg_res_16bit, *cfg_checkfilecontent, *cfg_chn_mono; -static GtkWidget *cfg_chn_stereo, *cfg_chn_autopan, *cfg_mem_banksw, *cfg_mem_transrom, *cfg_mem_playsid; -static GtkWidget *cfg_songnameformat, *cfg_clock_pal, *cfg_clock_ntsc, *cfg_clock_force, *cfg_ok, *cfg_cancel; -static GtkWidget *cfg_wav_mos6581, *cfg_wav_mos8580, *cfg_emufilters, *cfg_stil_browse, *cfg_stil_use, *cfg_stil_path; - +static GtkWidget *xs_configwin = NULL; /* * Configuration specific stuff */ -#define XS_CFGTABLE_MAX 15 +#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_sid_cfg_entry xs_cfgtable[XS_CFGTABLE_MAX] = { - { ATYPE_INT, &xs_cfg.bitsPerSample, "bitsPerSample",}, - { ATYPE_INT, &xs_cfg.channels, "channels" }, - { ATYPE_INT, &xs_cfg.frequency, "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.detectMagic, "detectMagic" }, - { ATYPE_STR, &xs_cfg.stilpath, "STILpath" }, - { ATYPE_BOOL, &xs_cfg.usestil, "useSTIL" }, - { ATYPE_STR, &xs_cfg.fileInfo, "fileInfo" } + {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.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.useSTIL, "useSTIL"}, + {ATYPE_STR, &xs_cfg.STILpath, "STILpath"}, + + {ATYPE_BOOL, &xs_cfg.finfoUseColors, "useColors"}, + {ATYPE_BOOL,&xs_cfg.detectMagic, "detectMagic"}, + + + {ATYPE_BOOL, &xs_cfg.titleOverride, "titleOverride"}, + {ATYPE_STR, &xs_cfg.titleFormat, "fileInfo"} }; +/* + * Reset the filter settings + */ +void xs_reset_filters(void) +{ + /* Reset filter values */ +// FIXME FIX ME +/* + xs_cfg.filterFs = XMMS_SID_DEFAULT_FILTERFS; + xs_cfg.filterFm = XMMS_SID_DEFAULT_FILTERFM; + xs_cfg.filterFt = XMMS_SID_DEFAULT_FILTERFT; +*/ +} + /* * Get the configuration (from file or default) */ -void xs_cfg_filter_reset(void) -{ - /* Reset filter values */ - xs_cfg.filterFs = XMMS_SID_DEFAULT_FILTERFS; - xs_cfg.filterFm = XMMS_SID_DEFAULT_FILTERFM; - xs_cfg.filterFt = XMMS_SID_DEFAULT_FILTERFT; -} - - void xs_get_configure(void) { gchar *cfg_fn, *tmpstr; ConfigFile *cfg_file; gint i; - + + XSDEBUG("initializing configuration ...\n"); + /* Pre-initialize configuration structure */ - xs_cfg.bitsPerSample = 16; - xs_cfg.channels = XMMS_SID_CHN_MONO; - xs_cfg.frequency = 44100; - xs_cfg.mos8580 = FALSE; - xs_cfg.emulateFilter = TRUE; - xs_cfg.memoryMode = XMMS_SID_MPU_BANK_SWITCHING; - xs_cfg.clockSpeed = XMMS_SID_CLOCK_PAL; - xs_cfg.forceSpeed = FALSE; - xs_cfg.detectMagic = FALSE; - xs_strcalloc(&xs_cfg.stilpath, "~/C64Music/DOCUMENTS/STIL.txt"); - xs_cfg.usestil = FALSE; - xs_strcalloc(&xs_cfg.fileInfo, "%1 - %2"); + xs_cfg.fmtBitsPerSample = 16; + xs_cfg.fmtChannels = XMMS_SID_CHN_MONO; + xs_cfg.fmtFrequency = 44100; + + xs_cfg.muffledOutput = FALSE; + xs_cfg.addStaticNoise = FALSE; + + + 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_filter_reset(); + 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.useSTIL = FALSE; + xs_strcalloc(&xs_cfg.STILpath, "~/C64Music/DOCUMENTS/STIL.txt"); - + xs_cfg.finfoUseColors = TRUE; + xs_cfg.detectMagic = FALSE; + + + 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 == 0) return; + if (cfg_file == NULL) return; + /* Read the new settings from XMMS configuration file */ - - /* WARNING: Some "goto magic" coming up! */ + for (i = 0; i < XS_CFGTABLE_MAX; i++) { - for (i = 0; i < XS_CFGTABLE_MAX; i++) { - switch (xs_cfgtable[i].atype) { - case ATYPE_INT: if (!xmms_cfg_read_int(cfg_file, XMMS_SID_CONFIG_IDENT, - xs_cfgtable[i].aname, (gint *) xs_cfgtable[i].adata)) goto rexit; - break; - - case ATYPE_BOOL: if (!xmms_cfg_read_boolean(cfg_file, XMMS_SID_CONFIG_IDENT, - xs_cfgtable[i].aname, (gboolean *) xs_cfgtable[i].adata)) goto rexit; - break; - - case ATYPE_FLOAT: if (!xmms_cfg_read_float(cfg_file, XMMS_SID_CONFIG_IDENT, - xs_cfgtable[i].aname, (gfloat *) xs_cfgtable[i].adata)) goto rexit; - break; - - case ATYPE_STR: if (!xmms_cfg_read_string(cfg_file, XMMS_SID_CONFIG_IDENT, - xs_cfgtable[i].aname, &tmpstr)) goto rexit; + case ATYPE_INT: + xmms_cfg_read_int(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, (gint *) xs_cfgtable[i].adata); + break; + + case ATYPE_BOOL: + xmms_cfg_read_boolean(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, (gboolean *) xs_cfgtable[i].adata); + break; + + case ATYPE_FLOAT: + xmms_cfg_read_float(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, (gfloat *) xs_cfgtable[i].adata); + break; - /* Read was successfull */ - xs_strcalloc((gchar **) xs_cfgtable[i].adata, tmpstr); - - g_free(tmpstr); - - break; + case ATYPE_STR: + if (xmms_cfg_read_string(cfg_file, XMMS_SID_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; + default: + XSERR("Internal: Unsupported setting type found while reading configuration file. Please report to author!\n"); + break; } + } - } -rexit: /* Free the config file */ xmms_cfg_free(cfg_file); + + XSDEBUG("OK\n"); } @@ -154,6 +193,7 @@ void xs_configure_cancel(void) { gtk_widget_destroy(xs_configwin); + xs_configwin = NULL; } @@ -165,22 +205,41 @@ ConfigFile *cfg_file; gchar *cfg_fn; gint i; - - /* Check the resolution settings */ + + XSDEBUG("get data from widgets to config...\n"); + + /* Check the resolution settings */ if (GTK_TOGGLE_BUTTON(cfg_res_16bit)->active) - xs_cfg.bitsPerSample = 16; + xs_cfg.fmtBitsPerSample = 16; else if (GTK_TOGGLE_BUTTON(cfg_res_8bit)->active) - xs_cfg.bitsPerSample = 8; + xs_cfg.fmtBitsPerSample = 8; + + /* Channel settings */ if (GTK_TOGGLE_BUTTON(cfg_chn_mono)->active) - xs_cfg.channels = XMMS_SID_CHN_MONO; + xs_cfg.fmtChannels = XMMS_SID_CHN_MONO; else if (GTK_TOGGLE_BUTTON(cfg_chn_stereo)->active) - xs_cfg.channels = XMMS_SID_CHN_STEREO; + xs_cfg.fmtChannels = XMMS_SID_CHN_STEREO; else if (GTK_TOGGLE_BUTTON(cfg_chn_autopan)->active) - xs_cfg.channels = XMMS_SID_CHN_AUTOPAN; - - xs_cfg.frequency = (gint)GTK_ADJUSTMENT(cfg_samplerate_adj)->value; - + 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; + + + /* 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; + /* Memorymode settings */ if (GTK_TOGGLE_BUTTON(cfg_mem_banksw)->active) @@ -190,7 +249,7 @@ else if (GTK_TOGGLE_BUTTON(cfg_mem_playsid)->active) xs_cfg.memoryMode = XMMS_SID_MPU_PLAYSID_ENVIRONMENT; - + /* Clockspeed settings */ if (GTK_TOGGLE_BUTTON(cfg_clock_pal)->active) xs_cfg.clockSpeed = XMMS_SID_CLOCK_PAL; @@ -200,69 +259,92 @@ xs_cfg.forceSpeed = GTK_TOGGLE_BUTTON(cfg_clock_force)->active; - /* 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; - + /* 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; + + 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; - /* STIL and miscellaneous settings */ - xs_cfg.detectMagic = GTK_TOGGLE_BUTTON(cfg_checkfilecontent)->active; - xs_cfg.usestil = GTK_TOGGLE_BUTTON(cfg_stil_use)->active; + xs_strcalloc(&xs_cfg.STILpath, gtk_entry_get_text(GTK_ENTRY(cfg_stil_path))); + + 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.stilpath, gtk_entry_get_text(GTK_ENTRY(cfg_stil_path))); - xs_strcalloc(&xs_cfg.fileInfo, gtk_entry_get_text(GTK_ENTRY(cfg_songnameformat))); - + xs_strcalloc(&xs_cfg.titleFormat, gtk_entry_get_text(GTK_ENTRY(cfg_ftitle_format))); + - /* Try to open the XMMS configuration file */ - cfg_fn = g_strconcat(g_get_home_dir(),"/.xmms/config",NULL); + /* + * 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); - if (!cfg_file) cfg_file = xmms_cfg_new(); + + if (!cfg_file) + cfg_file = 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(cfg_file, XMMS_SID_CONFIG_IDENT, - xs_cfgtable[i].aname, * (gint *) xs_cfgtable[i].adata); - break; - - case ATYPE_BOOL: xmms_cfg_write_boolean(cfg_file, XMMS_SID_CONFIG_IDENT, - xs_cfgtable[i].aname, * (gboolean *) xs_cfgtable[i].adata); - break; + case ATYPE_INT: + xmms_cfg_write_int(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, *(gint *) xs_cfgtable[i].adata); + break; + + case ATYPE_BOOL: + xmms_cfg_write_boolean(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, *(gboolean *) xs_cfgtable[i].adata); + break; + + case ATYPE_FLOAT: + xmms_cfg_write_float(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, *(gfloat *) xs_cfgtable[i].adata); + break; - case ATYPE_FLOAT: xmms_cfg_write_float(cfg_file, XMMS_SID_CONFIG_IDENT, - xs_cfgtable[i].aname, * (gfloat *) xs_cfgtable[i].adata); - break; + case ATYPE_STR: + xmms_cfg_write_string(cfg_file, XMMS_SID_CONFIG_IDENT, xs_cfgtable[i].aname, *(gchar **) xs_cfgtable[i].adata); + break; - case ATYPE_STR: xmms_cfg_write_string(cfg_file, XMMS_SID_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; + } - default: XSERR("Internal: Unsupported setting type found while writing configuration file. Please report to author!\n"); - break; - } - - } + } + /* Flush the file */ xmms_cfg_write_file(cfg_file, cfg_fn); + /* Free the memory areas */ xmms_cfg_free(cfg_file); g_free(cfg_fn); gtk_widget_destroy(xs_configwin); + xs_configwin = NULL; } /* * Update filter setting sliders */ -static void xs_cfg_filt_update(void) +static 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); @@ -273,84 +355,56 @@ /* * Reset filter settings to defaults */ -static void xs_cfg_filt_reset(void) +static void xs_cfg_filter_reset(void) +{ + xs_reset_filters(); + xs_update_filters(); +} + + +/* + * HVSC songlength-database file selector response-functions + */ +void xs_cfg_sld_fs_ok(void) { - xs_cfg_filter_reset(); - xs_cfg_filt_update(); + /* 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) +{ + /* Close file selector window */ + gtk_widget_destroy(xs_sld_fileselector); + xs_sld_fileselector = NULL; } /* * STIL-database file selector response-functions */ -void xs_cfg_fs_ok(void) +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_fileselector)) - ); + gtk_entry_set_text(GTK_ENTRY(cfg_stil_path), gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_stil_fileselector)) + ); /* Close file selector window */ - gtk_widget_destroy(xs_fileselector); - xs_fileselector = NULL; -} - - -void xs_cfg_fs_cancel(void) -{ - /* Close file selector window */ - gtk_widget_destroy(xs_fileselector); - xs_fileselector = NULL; + gtk_widget_destroy(xs_stil_fileselector); + xs_stil_fileselector = NULL; } -/* - * Open up a file-selection dialog for browsing STIL-database file - */ -void xs_cfg_stil_browse(void) +void xs_cfg_stil_fs_cancel(void) { - GtkWidget *fs_but_ok, *fs_but_cancel; - - /* Check if the window already exists */ - if (xs_fileselector != NULL) { - gdk_window_raise(xs_fileselector->window); - return; - } - - /* No, create a new one */ - xs_fileselector = gtk_file_selection_new ("Select STIL Database-File"); - gtk_signal_connect(GTK_OBJECT(xs_fileselector),"destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed),&xs_fileselector); - - gtk_object_set_data (GTK_OBJECT (xs_fileselector), "xs_fileselector", xs_fileselector); - gtk_container_set_border_width (GTK_CONTAINER (xs_fileselector), 10); - GTK_WINDOW (xs_fileselector)->type = GTK_WINDOW_DIALOG; - gtk_window_set_position (GTK_WINDOW (xs_fileselector), GTK_WIN_POS_MOUSE); - gtk_window_set_modal (GTK_WINDOW (xs_fileselector), TRUE); - gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (xs_fileselector)); - - fs_but_ok = GTK_FILE_SELECTION (xs_fileselector)->ok_button; - gtk_object_set_data (GTK_OBJECT (xs_fileselector), "fs_but_ok", fs_but_ok); - gtk_widget_show (fs_but_ok); - GTK_WIDGET_SET_FLAGS (fs_but_ok, GTK_CAN_DEFAULT); - - fs_but_cancel = GTK_FILE_SELECTION (xs_fileselector)->cancel_button; - gtk_object_set_data (GTK_OBJECT (xs_fileselector), "fs_but_cancel", fs_but_cancel); - gtk_widget_show (fs_but_cancel); - GTK_WIDGET_SET_FLAGS (fs_but_cancel, GTK_CAN_DEFAULT); - - - /* Connect signals */ - gtk_signal_connect (GTK_OBJECT (fs_but_ok), "clicked", - GTK_SIGNAL_FUNC (xs_cfg_fs_ok), - NULL); - - gtk_signal_connect (GTK_OBJECT (fs_but_cancel), "clicked", - GTK_SIGNAL_FUNC (xs_cfg_fs_cancel), - NULL); - - /* Show the dialog */ - gtk_widget_show(xs_fileselector); + /* Close file selector window */ + gtk_widget_destroy(xs_stil_fileselector); + xs_stil_fileselector = NULL; } @@ -359,456 +413,55 @@ */ void xs_configure(void) { - GSList *resolution_group = NULL; - GSList *channels_group = NULL; - GSList *speed_group = NULL; - GSList *waveforms_group = NULL; - GSList *memorymode_group = NULL; - GtkWidget *vbox1, *cfg_notebook, *vbox6, *hbox2, *frame4, *vbox9, *frame5, *vbox10; - GtkWidget *frame8, *alignment4, *hbox4, *label8, *label1, *vbox2, *hbox1, *frame2, *vbox4, *frame3; - GtkWidget *vbox3, *frame1, *vbox5, *label2, *vbox7, *frame7, *vbox8, *hbox3, *label4, *alignment2; - GtkWidget *alignment1, *frame9, *vbox11, *alignment3, *label7, *label3, *fixed1,*label9, *frame12; - GtkWidget *cfg_frm2, *cfg_frm1, *label6, *hbuttonbox1; - GtkWidget *cfg_filt_reset, *cfg_samplerate, *cfg_filt_fm,*cfg_filt_fs, *cfg_filt_ft; - GtkTooltips *tooltips; - /* 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; } - /* No, create a new one */ - tooltips = gtk_tooltips_new (); - - xs_configwin = gtk_window_new (GTK_WINDOW_DIALOG); - gtk_signal_connect(GTK_OBJECT(xs_configwin),"destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed),&xs_configwin); - gtk_object_set_data (GTK_OBJECT (xs_configwin), "xs_configwin", xs_configwin); - gtk_window_set_title (GTK_WINDOW (xs_configwin), "xmms-sid configuration"); - gtk_window_set_policy (GTK_WINDOW (xs_configwin), FALSE, FALSE, FALSE); - gtk_window_set_position (GTK_WINDOW(xs_configwin), GTK_WIN_POS_MOUSE); - - /* Start creating the widgets ! */ - vbox1 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox1); - gtk_widget_show (vbox1); - gtk_container_add (GTK_CONTAINER (xs_configwin), vbox1); - gtk_container_set_border_width (GTK_CONTAINER (vbox1), 8); - - cfg_notebook = gtk_notebook_new (); - gtk_widget_ref (cfg_notebook); - gtk_widget_show (cfg_notebook); - gtk_box_pack_start (GTK_BOX (vbox1), cfg_notebook, TRUE, TRUE, 0); - - vbox6 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox6); - gtk_widget_show (vbox6); - gtk_container_add (GTK_CONTAINER (cfg_notebook), vbox6); - - hbox2 = gtk_hbox_new (FALSE, 0); - gtk_widget_ref (hbox2); - gtk_widget_show (hbox2); - gtk_box_pack_start (GTK_BOX (vbox6), hbox2, TRUE, TRUE, 0); - - frame4 = gtk_frame_new ("Resolution:"); - gtk_widget_ref (frame4); - gtk_widget_show (frame4); - gtk_box_pack_start (GTK_BOX (hbox2), frame4, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame4), 4); - - vbox9 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox9); - gtk_widget_show (vbox9); - gtk_container_add (GTK_CONTAINER (frame4), vbox9); - - cfg_res_8bit = gtk_radio_button_new_with_label (resolution_group, "8-bit"); - resolution_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_res_8bit)); - gtk_widget_ref (cfg_res_8bit); - gtk_widget_show (cfg_res_8bit); - gtk_box_pack_start (GTK_BOX (vbox9), cfg_res_8bit, FALSE, FALSE, 0); - - cfg_res_16bit = gtk_radio_button_new_with_label (resolution_group, "16-bit"); - resolution_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_res_16bit)); - gtk_widget_ref (cfg_res_16bit); - gtk_widget_show (cfg_res_16bit); - gtk_box_pack_start (GTK_BOX (vbox9), cfg_res_16bit, FALSE, FALSE, 0); - - frame5 = gtk_frame_new ("Channels:"); - gtk_widget_ref (frame5); - gtk_widget_show (frame5); - gtk_box_pack_start (GTK_BOX (hbox2), frame5, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame5), 4); - - vbox10 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox10); - gtk_widget_show (vbox10); - gtk_container_add (GTK_CONTAINER (frame5), vbox10); - - cfg_chn_mono = gtk_radio_button_new_with_label (channels_group, "Mono"); - channels_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_chn_mono)); - gtk_widget_ref (cfg_chn_mono); - gtk_widget_show (cfg_chn_mono); - gtk_box_pack_start (GTK_BOX (vbox10), cfg_chn_mono, FALSE, FALSE, 0); - - cfg_chn_stereo = gtk_radio_button_new_with_label (channels_group, "Stereo"); - channels_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_chn_stereo)); - gtk_widget_ref (cfg_chn_stereo); - gtk_widget_show (cfg_chn_stereo); - gtk_box_pack_start (GTK_BOX (vbox10), cfg_chn_stereo, FALSE, FALSE, 0); - - cfg_chn_autopan = gtk_radio_button_new_with_label (channels_group, "Autopanning"); - channels_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_chn_autopan)); - gtk_widget_ref (cfg_chn_autopan); - gtk_widget_show (cfg_chn_autopan); - gtk_box_pack_start (GTK_BOX (vbox10), cfg_chn_autopan, FALSE, FALSE, 0); - - frame8 = gtk_frame_new ("Samplerate:"); - gtk_widget_ref (frame8); - gtk_widget_show (frame8); - gtk_box_pack_start (GTK_BOX (vbox6), frame8, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame8), 4); - - alignment4 = gtk_alignment_new (0.04, 0, 0.12, 0.5); - gtk_widget_ref (alignment4); - gtk_widget_show (alignment4); - gtk_container_add (GTK_CONTAINER (frame8), alignment4); - - hbox4 = gtk_hbox_new (FALSE, 0); - gtk_widget_ref (hbox4); - gtk_widget_show (hbox4); - gtk_container_add (GTK_CONTAINER (alignment4), hbox4); - - cfg_samplerate_adj = gtk_adjustment_new (44100, 4000, 48000, 100, 1000, 0); - cfg_samplerate = gtk_spin_button_new (GTK_ADJUSTMENT (cfg_samplerate_adj), 1, 0); - gtk_widget_ref (cfg_samplerate); - gtk_widget_show (cfg_samplerate); - gtk_box_pack_start (GTK_BOX (hbox4), cfg_samplerate, TRUE, TRUE, 0); - - label8 = gtk_label_new ("Hz"); - gtk_widget_ref (label8); - gtk_widget_show (label8); - gtk_box_pack_start (GTK_BOX (hbox4), label8, FALSE, TRUE, 4); - - cfg_checkfilecontent = gtk_check_button_new_with_label ("Determine filetype by contents (slower)"); - gtk_widget_ref (cfg_checkfilecontent); - gtk_widget_show (cfg_checkfilecontent); - gtk_box_pack_start (GTK_BOX (vbox6), cfg_checkfilecontent, FALSE, FALSE, 0); - - label1 = gtk_label_new ("Audio"); - gtk_widget_ref (label1); - gtk_widget_show (label1); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (cfg_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (cfg_notebook), 0), label1); - - vbox2 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox2); - gtk_widget_show (vbox2); - gtk_container_add (GTK_CONTAINER (cfg_notebook), vbox2); - - hbox1 = gtk_hbox_new (FALSE, 0); - gtk_widget_ref (hbox1); - gtk_widget_show (hbox1); - gtk_box_pack_start (GTK_BOX (vbox2), hbox1, TRUE, TRUE, 0); - - frame2 = gtk_frame_new ("Clock Speed:"); - gtk_widget_ref (frame2); - gtk_widget_show (frame2); - gtk_box_pack_start (GTK_BOX (hbox1), frame2, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame2), 4); - - vbox4 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox4); - gtk_widget_show (vbox4); - gtk_container_add (GTK_CONTAINER (frame2), vbox4); - - cfg_clock_pal = gtk_radio_button_new_with_label (speed_group, "PAL"); - speed_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_clock_pal)); - gtk_widget_ref (cfg_clock_pal); - gtk_widget_show (cfg_clock_pal); - gtk_box_pack_start (GTK_BOX (vbox4), cfg_clock_pal, FALSE, FALSE, 0); - - cfg_clock_ntsc = gtk_radio_button_new_with_label (speed_group, "NTSC"); - speed_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_clock_ntsc)); - gtk_widget_ref (cfg_clock_ntsc); - gtk_widget_show (cfg_clock_ntsc); - gtk_box_pack_start (GTK_BOX (vbox4), cfg_clock_ntsc, FALSE, FALSE, 0); - - cfg_clock_force = gtk_check_button_new_with_label ("Force speed"); - gtk_widget_ref (cfg_clock_force); - gtk_widget_show (cfg_clock_force); - gtk_box_pack_start (GTK_BOX (vbox4), cfg_clock_force, FALSE, FALSE, 0); - - frame3 = gtk_frame_new ("Waveforms:"); - gtk_widget_ref (frame3); - gtk_widget_show (frame3); - gtk_box_pack_start (GTK_BOX (hbox1), frame3, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame3), 4); - - vbox3 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox3); - gtk_widget_show (vbox3); - gtk_container_add (GTK_CONTAINER (frame3), vbox3); - - cfg_wav_mos6581 = gtk_radio_button_new_with_label (waveforms_group, "MOS 6581"); - waveforms_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_wav_mos6581)); - gtk_widget_ref (cfg_wav_mos6581); - gtk_widget_show (cfg_wav_mos6581); - gtk_box_pack_start (GTK_BOX (vbox3), cfg_wav_mos6581, FALSE, FALSE, 0); - - cfg_wav_mos8580 = gtk_radio_button_new_with_label (waveforms_group, "MOS 8580"); - waveforms_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_wav_mos8580)); - gtk_widget_ref (cfg_wav_mos8580); - gtk_widget_show (cfg_wav_mos8580); - gtk_box_pack_start (GTK_BOX (vbox3), cfg_wav_mos8580, FALSE, FALSE, 0); - - cfg_emufilters = gtk_check_button_new_with_label ("Emulate filters"); - gtk_widget_ref (cfg_emufilters); - gtk_widget_show (cfg_emufilters); - gtk_box_pack_start (GTK_BOX (vbox3), cfg_emufilters, FALSE, FALSE, 0); - - frame1 = gtk_frame_new ("Memory Mode:"); - gtk_widget_ref (frame1); - gtk_widget_show (frame1); - gtk_box_pack_start (GTK_BOX (vbox2), frame1, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame1), 4); - - vbox5 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox5); - gtk_widget_show (vbox5); - gtk_container_add (GTK_CONTAINER (frame1), vbox5); - - cfg_mem_banksw = gtk_radio_button_new_with_label (memorymode_group, "Bank switching"); - memorymode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_mem_banksw)); - gtk_widget_ref (cfg_mem_banksw); - gtk_widget_show (cfg_mem_banksw); - gtk_box_pack_start (GTK_BOX (vbox5), cfg_mem_banksw, FALSE, FALSE, 0); - - cfg_mem_transrom = gtk_radio_button_new_with_label (memorymode_group, "Transparent ROM"); - memorymode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_mem_transrom)); - gtk_widget_ref (cfg_mem_transrom); - gtk_widget_show (cfg_mem_transrom); - gtk_box_pack_start (GTK_BOX (vbox5), cfg_mem_transrom, FALSE, FALSE, 0); - - cfg_mem_playsid = gtk_radio_button_new_with_label (memorymode_group, "PlaySID environment"); - memorymode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (cfg_mem_playsid)); - gtk_widget_ref (cfg_mem_playsid); - gtk_widget_show (cfg_mem_playsid); - gtk_box_pack_start (GTK_BOX (vbox5), cfg_mem_playsid, FALSE, FALSE, 0); - - label2 = gtk_label_new ("Emulation"); - gtk_widget_ref (label2); - gtk_widget_show (label2); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (cfg_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (cfg_notebook), 1), label2); - - vbox7 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox7); - gtk_widget_show (vbox7); - gtk_container_add (GTK_CONTAINER (cfg_notebook), vbox7); - - frame7 = gtk_frame_new ("STIL Configuration:"); - gtk_widget_ref (frame7); - gtk_widget_show (frame7); - gtk_box_pack_start (GTK_BOX (vbox7), frame7, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame7), 4); - - vbox8 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox8); - gtk_widget_show (vbox8); - gtk_container_add (GTK_CONTAINER (frame7), vbox8); - - cfg_stil_use = gtk_check_button_new_with_label ("Use STIL information database"); - gtk_widget_ref (cfg_stil_use); - gtk_widget_show (cfg_stil_use); - gtk_box_pack_start (GTK_BOX (vbox8), cfg_stil_use, TRUE, FALSE, 0); - - hbox3 = gtk_hbox_new (FALSE, 0); - gtk_widget_ref (hbox3); - gtk_widget_show (hbox3); - gtk_box_pack_start (GTK_BOX (vbox8), hbox3, TRUE, TRUE, 0); - - label4 = gtk_label_new ("STIL path:"); - gtk_widget_ref (label4); - gtk_widget_show (label4); - gtk_box_pack_start (GTK_BOX (hbox3), label4, FALSE, FALSE, 0); - gtk_misc_set_padding (GTK_MISC (label4), 4, 0); - - alignment2 = gtk_alignment_new (0.5, 0.5, 1, 1); - gtk_widget_ref (alignment2); - gtk_widget_show (alignment2); - gtk_box_pack_start (GTK_BOX (hbox3), alignment2, TRUE, TRUE, 4); - - cfg_stil_path = gtk_entry_new (); - gtk_widget_ref (cfg_stil_path); - gtk_widget_show (cfg_stil_path); - gtk_container_add (GTK_CONTAINER (alignment2), cfg_stil_path); - - alignment1 = gtk_alignment_new (0.5, 0.5, 1, 0.300001); - gtk_widget_ref (alignment1); - gtk_widget_show (alignment1); - gtk_box_pack_end (GTK_BOX (hbox3), alignment1, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (alignment1), 4); - - cfg_stil_browse = gtk_button_new_with_label ("Browse"); - gtk_widget_ref (cfg_stil_browse); - gtk_widget_show (cfg_stil_browse); - gtk_container_add (GTK_CONTAINER (alignment1), cfg_stil_browse); - - frame9 = gtk_frame_new ("Songname (Fileinfo) format:"); - gtk_widget_ref (frame9); - gtk_widget_show (frame9); - gtk_box_pack_start (GTK_BOX (vbox7), frame9, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame9), 4); - - vbox11 = gtk_vbox_new (FALSE, 0); - gtk_widget_ref (vbox11); - gtk_widget_show (vbox11); - gtk_container_add (GTK_CONTAINER (frame9), vbox11); - - alignment3 = gtk_alignment_new (0.5, 0.5, 0.96, 1); - gtk_widget_ref (alignment3); - gtk_widget_show (alignment3); - gtk_box_pack_start (GTK_BOX (vbox11), alignment3, FALSE, FALSE, 0); - - cfg_songnameformat = gtk_entry_new (); - gtk_widget_ref (cfg_songnameformat); - gtk_widget_show (cfg_songnameformat); - gtk_container_add (GTK_CONTAINER (alignment3), cfg_songnameformat); - - label7 = gtk_label_new ( - "%1 - Composer\n" - "%2 - Song name (title)\n" - "%3 - Copyright\n" - "%4 - SID-file type"); - gtk_widget_ref (label7); - gtk_widget_show (label7); - gtk_box_pack_start (GTK_BOX (vbox11), label7, TRUE, TRUE, 0); - gtk_label_set_justify (GTK_LABEL (label7), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment (GTK_MISC (label7), 0.04, 0.5); - - label3 = gtk_label_new ("STIL"); - gtk_widget_ref (label3); - gtk_widget_show (label3); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (cfg_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (cfg_notebook), 2), label3); - - fixed1 = gtk_fixed_new (); - gtk_widget_ref (fixed1); - gtk_widget_show (fixed1); - gtk_container_add (GTK_CONTAINER (cfg_notebook), fixed1); - gtk_tooltips_set_tip (tooltips, fixed1, "Reset filter to default values", NULL); - - cfg_filt_reset = gtk_button_new_with_label ("Reset values"); - gtk_widget_ref (cfg_filt_reset); - gtk_widget_show (cfg_filt_reset); - gtk_fixed_put (GTK_FIXED (fixed1), cfg_filt_reset, 224, 16); - gtk_widget_set_uposition (cfg_filt_reset, 224, 16); - gtk_widget_set_usize (cfg_filt_reset, 120, 32); - - label9 = gtk_label_new ( - "These sliders affect the emulated SID's filter values.\n" - "Defaults are what the libsidplay sets them on init."); - gtk_widget_ref (label9); - gtk_widget_show (label9); - gtk_fixed_put (GTK_FIXED (fixed1), label9, 224, 56); - gtk_widget_set_uposition (label9, 224, 56); - gtk_widget_set_usize (label9, 136, 104); - gtk_label_set_justify (GTK_LABEL (label9), GTK_JUSTIFY_LEFT); - gtk_label_set_line_wrap (GTK_LABEL (label9), TRUE); - gtk_misc_set_alignment (GTK_MISC (label9), 0.5, 7.45058e-09); - - frame12 = gtk_frame_new ("FT"); - gtk_widget_ref (frame12); - gtk_widget_show (frame12); - gtk_fixed_put (GTK_FIXED (fixed1), frame12, 160, 16); - gtk_widget_set_uposition (frame12, 160, 16); - gtk_widget_set_usize (frame12, 48, 152); - - cfg_filt_ft_adj = gtk_adjustment_new (0, 0, 1, 0.01, 0.1, 0); - cfg_filt_ft = gtk_vscale_new (GTK_ADJUSTMENT (cfg_filt_ft_adj)); - gtk_widget_ref (cfg_filt_ft); - gtk_widget_show (cfg_filt_ft); - gtk_container_add (GTK_CONTAINER (frame12), cfg_filt_ft); - gtk_scale_set_digits (GTK_SCALE (cfg_filt_ft), 2); - - cfg_frm2 = gtk_frame_new ("FM"); - gtk_widget_ref (cfg_frm2); - gtk_widget_show (cfg_frm2); - gtk_fixed_put (GTK_FIXED (fixed1), cfg_frm2, 88, 16); - gtk_widget_set_uposition (cfg_frm2, 88, 16); - gtk_widget_set_usize (cfg_frm2, 48, 152); - - cfg_filt_fm_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 0); - cfg_filt_fm = gtk_vscale_new (GTK_ADJUSTMENT (cfg_filt_fm_adj)); - gtk_widget_ref (cfg_filt_fm); - gtk_widget_show (cfg_filt_fm); - gtk_container_add (GTK_CONTAINER (cfg_frm2), cfg_filt_fm); - - cfg_frm1 = gtk_frame_new ("FS"); - gtk_widget_ref (cfg_frm1); - gtk_widget_show (cfg_frm1); - gtk_fixed_put (GTK_FIXED (fixed1), cfg_frm1, 16, 16); - gtk_widget_set_uposition (cfg_frm1, 16, 16); - gtk_widget_set_usize (cfg_frm1, 56, 152); - - cfg_filt_fs_adj = gtk_adjustment_new (0, 0, 1000, 1, 100, 0); - cfg_filt_fs = gtk_vscale_new (GTK_ADJUSTMENT (cfg_filt_fs_adj)); - gtk_widget_ref (cfg_filt_fs); - gtk_widget_show (cfg_filt_fs); - gtk_container_add (GTK_CONTAINER (cfg_frm1), cfg_filt_fs); - - label6 = gtk_label_new ("Filters"); - gtk_widget_ref (label6); - gtk_widget_show (label6); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (cfg_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (cfg_notebook), 3), label6); - - hbuttonbox1 = gtk_hbutton_box_new (); - gtk_widget_ref (hbuttonbox1); - gtk_widget_show (hbuttonbox1); - gtk_box_pack_end (GTK_BOX (vbox1), hbuttonbox1, FALSE, FALSE, 0); - gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END); - gtk_button_box_set_child_size (GTK_BUTTON_BOX (hbuttonbox1), 85, 30); - - cfg_ok = gtk_button_new_with_label ("OK"); - gtk_widget_ref (cfg_ok); - gtk_widget_show (cfg_ok); - gtk_container_add (GTK_CONTAINER (hbuttonbox1), cfg_ok); - GTK_WIDGET_SET_FLAGS (cfg_ok, GTK_CAN_DEFAULT); - gtk_tooltips_set_tip (tooltips, cfg_ok, "Accept and update changes", NULL); - - cfg_cancel = gtk_button_new_with_label ("Cancel"); - gtk_widget_ref (cfg_cancel); - gtk_widget_show (cfg_cancel); - gtk_container_add (GTK_CONTAINER (hbuttonbox1), cfg_cancel); - GTK_WIDGET_SET_FLAGS (cfg_cancel, GTK_CAN_DEFAULT); - gtk_tooltips_set_tip (tooltips, cfg_cancel, "Cancel any changes", NULL); /* Set the states of widgets */ /* Sound resolution settings */ - switch (xs_cfg.bitsPerSample) { - case 16: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_res_16bit), TRUE); break; - case 8: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_res_8bit), TRUE); break; + switch (xs_cfg.fmtBitsPerSample) { + case 16: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_res_16bit), TRUE); + break; + case 8: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_res_8bit), TRUE); + break; } - gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_samplerate_adj), xs_cfg.frequency); - + gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_samplerate_adj), xs_cfg.fmtFrequency); + + /* Channel settings */ - switch (xs_cfg.channels) { - case 0: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_chn_mono), TRUE); break; - case 1: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_chn_stereo), TRUE); break; - case 2: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_chn_autopan), TRUE); break; + switch (xs_cfg.fmtChannels) { + case 0: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_chn_mono), TRUE); + break; + case 1: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_chn_stereo), TRUE); + break; + case 2: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_chn_autopan), TRUE); + break; } - + + /* Memorymode settings */ switch (xs_cfg.memoryMode) { case XMMS_SID_MPU_BANK_SWITCHING: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_mem_banksw), TRUE); break; - + case XMMS_SID_MPU_TRANSPARENT_ROM: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_mem_transrom), TRUE); break; - + case XMMS_SID_MPU_PLAYSID_ENVIRONMENT: gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_mem_playsid), TRUE); break; @@ -817,46 +470,75 @@ /* Filter and waveform settings */ if (xs_cfg.mos8580) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_wav_mos8580), TRUE); - } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_wav_mos6581), TRUE); - } - + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_wav_mos8580), TRUE); + } else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_wav_mos6581), TRUE); + } + if (xs_cfg.emulateFilter) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_emufilters), TRUE); } xs_cfg_filt_update(); - + + + /* Song-length detection */ + switch (xs_cfg.playMethod) { + case XMMS_SID_PMETHOD_NONE: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_none), TRUE); + break; + + case XMMS_SID_PMETHOD_MAXSILENCE: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_maxsilence), TRUE); + break; + + + case XMMS_SID_PMETHOD_DATABASE: + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_database), TRUE); + break; + } + + if (xs_cfg.playUseMaxTime) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_sld_usemaxtime), TRUE); + } + + gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_sld_maxtime_adj), xs_cfg.playMaxTime); + gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_sld_silencetime_adj), xs_cfg.playMaxSilentTime); + gtk_adjustment_set_value(GTK_ADJUSTMENT(cfg_sld_percentage_adj), xs_cfg.playSilentPercent); + + if (xs_cfg.playDBPath != NULL) { + gtk_entry_set_text(GTK_ENTRY(cfg_sld_dbpath), xs_cfg.playDBPath); + } + /* STIL and miscellaneous settings */ - if (xs_cfg.usestil) { + if (xs_cfg.useSTIL) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_stil_use), TRUE); } + if (xs_cfg.STILpath != NULL) { + gtk_entry_set_text(GTK_ENTRY(cfg_stil_path), xs_cfg.STILpath); + } + + if (xs_cfg.finfoUseColors) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_finfo_usecolors), TRUE); + } + if (xs_cfg.detectMagic) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_checkfilecontent), TRUE); - } - - if (xs_cfg.stilpath != NULL) { - gtk_entry_set_text(GTK_ENTRY(cfg_stil_path), xs_cfg.stilpath); - } - - if (xs_cfg.fileInfo != NULL) { - gtk_entry_set_text(GTK_ENTRY(cfg_songnameformat), xs_cfg.fileInfo); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_detectmagic), TRUE); } - /* Connect the signals */ - gtk_signal_connect (GTK_OBJECT (cfg_stil_browse), "clicked", GTK_SIGNAL_FUNC (xs_cfg_stil_browse), NULL); - gtk_signal_connect (GTK_OBJECT (cfg_filt_reset), "clicked", GTK_SIGNAL_FUNC (xs_cfg_filt_reset), NULL); - - gtk_signal_connect (GTK_OBJECT (cfg_ok), "clicked", GTK_SIGNAL_FUNC (xs_configure_ok), NULL); - - gtk_signal_connect (GTK_OBJECT (cfg_cancel), "clicked", GTK_SIGNAL_FUNC (xs_configure_cancel), NULL); + /* Title-settings */ + if (xs_cfg.titleOverride) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cfg_ftitle_override), TRUE); + } - gtk_object_set_data (GTK_OBJECT (xs_configwin), "tooltips", tooltips); + if (xs_cfg.titleFormat != NULL) { + gtk_entry_set_text(GTK_ENTRY(cfg_ftitle_format), xs_cfg.titleFormat); + } + gtk_widget_show(xs_configwin); } diff -r 041bebb28dc0 -r 279b1e12df2b src/xs_init.c --- a/src/xs_init.c Tue Jun 03 10:29:02 2003 +0000 +++ b/src/xs_init.c Tue Jun 03 11:00:02 2003 +0000 @@ -1,9 +1,9 @@ /* - xmms-sid - SIDPlay input plugin for X MultiMedia System (XMMS) + XMMS-SID - SIDPlay input plugin for X MultiMedia System (XMMS) Plugin initialization point - Written by Matti "ccr" Hamalainen + Written by Matti "ccr" Hamalainen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,35 +23,41 @@ #include "xmms-sid.h" -InputPlugin xmms_sid_ip = -{ - NULL, - NULL, - "xmms-sid SIDPlay plugin " VERSION, - xs_init, - xs_aboutbox, - xs_configure, - xs_is_our_file, - NULL, - xs_play_file, - xs_stop, - xs_pause, - xs_seek, - NULL, /* mpg123_set_eq, */ - xs_get_time, - NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - xs_get_song_info, - xs_file_info_box, - NULL +InputPlugin xs_plugin_ip = { + NULL, /* FILLED BY XMMS */ + NULL, /* FILLED BY XMMS */ + XMMS_SID_NAME " " VERSION, /* Plugin description */ + xs_init, /* Initialization */ + xs_aboutbox, /* Show aboutbox */ + xs_configure, /* Show/edit configuration */ + xs_is_our_file, /* Check file */ + NULL, /* Scan directory */ + xs_play_file, /* Play given file */ + xs_stop, /* Stop playing */ + xs_pause, /* Pause playing */ + xs_seek, /* Seek time */ + NULL, /* Set equalizer */ + xs_get_time, /* Get playing time */ + NULL, /* Get volume */ + NULL, /* Set volume */ + xs_close, /* Cleanup */ + NULL, /* OBSOLETE! */ + NULL, /* Send data to Visualization plugin */ + NULL, NULL, /* FILLED BY XMMS */ + xs_get_song_info, /* Get song title and length */ + + NULL, // xs_fileinfo_dialog, /* Show file-information dialog */ + + NULL /* FILLED BY XMMS */ }; /* - * Return xmms-sid plugin information - */ -InputPlugin * get_iplugin_info(void) + * Return plugin information + */ +InputPlugin *get_iplugin_info(void) { - return &xmms_sid_ip; + return &xs_plugin_ip; } +