# HG changeset patch # User Matti Hamalainen # Date 1169826423 0 # Node ID 6357b7fe5b0d8806f6385a6d3c6493734988f74d # Parent 4c599be2d349e40723082c41d4a2d22f566bb7fa Added new WTYPE_COMBO, the audio frequency selection now uses a combobox. diff -r 4c599be2d349 -r 6357b7fe5b0d src/xs_config.c --- a/src/xs_config.c Fri Jan 26 15:47:00 2007 +0000 +++ b/src/xs_config.c Fri Jan 26 15:47:03 2007 +0000 @@ -100,7 +100,7 @@ { WTYPE_BGROUP, CTYPE_INT, "cfg_chn_mono", &xs_cfg.audioChannels, XS_CHN_MONO }, { WTYPE_BGROUP, CTYPE_INT, "cfg_chn_stereo", &xs_cfg.audioChannels, XS_CHN_STEREO }, { WTYPE_BGROUP, CTYPE_INT, "cfg_chn_autopan", &xs_cfg.audioChannels, XS_CHN_AUTOPAN }, -{ WTYPE_SPIN, CTYPE_INT, "cfg_samplerate", &xs_cfg.audioFrequency, 0 }, +{ WTYPE_COMBO, CTYPE_INT, "cfg_samplerate", &xs_cfg.audioFrequency, XS_AUDIO_FREQ }, { WTYPE_BUTTON, CTYPE_BOOL, "cfg_oversample", &xs_cfg.oversampleEnable, 0 }, { WTYPE_SPIN, CTYPE_INT, "cfg_oversample_factor",&xs_cfg.oversampleFactor, 0 }, @@ -168,7 +168,7 @@ /* Initialize values with sensible defaults */ xs_cfg.audioBitsPerSample = XS_RES_16BIT; xs_cfg.audioChannels = XS_CHN_MONO; - xs_cfg.audioFrequency = 44100; + xs_cfg.audioFrequency = XS_AUDIO_FREQ; xs_cfg.mos8580 = FALSE; xs_cfg.forceModel = FALSE; @@ -236,7 +236,7 @@ #else xs_cfg.titleOverride = TRUE; #endif - xs_pstrcpy(&xs_cfg.titleFormat, "%p - %t (%c) [%n/%N][%m]"); + xs_pstrcpy(&xs_cfg.titleFormat, "%p - %t (%c) [%n/%N][%m/%C]"); xs_cfg.subAutoEnable = FALSE; @@ -283,32 +283,31 @@ for (i = 0; i < xs_cfgtable_max; i++) { switch (xs_cfgtable[i].itemType) { case CTYPE_INT: - xmms_cfg_read_int(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].itemName, - (gint *) xs_cfgtable[i].itemData); + xmms_cfg_read_int(cfgFile, XS_CONFIG_IDENT, + xs_cfgtable[i].itemName, + (gint *) xs_cfgtable[i].itemData); break; case CTYPE_BOOL: - xmms_cfg_read_boolean(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].itemName, - (gboolean *) xs_cfgtable[i].itemData); + xmms_cfg_read_boolean(cfgFile, XS_CONFIG_IDENT, + xs_cfgtable[i].itemName, + (gboolean *) xs_cfgtable[i].itemData); break; case CTYPE_FLOAT: - xmms_cfg_read_float(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].itemName, - (gfloat *) xs_cfgtable[i].itemData); + xmms_cfg_read_float(cfgFile, XS_CONFIG_IDENT, + xs_cfgtable[i].itemName, + (gfloat *) xs_cfgtable[i].itemData); break; - + case CTYPE_STR: - if (xmms_cfg_read_string - (cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].itemName, (gchar **) & tmpStr)) { + if (xmms_cfg_read_string(cfgFile, XS_CONFIG_IDENT, + xs_cfgtable[i].itemName, (gchar **) &tmpStr)) { /* Read was successfull */ xs_pstrcpy((gchar **) xs_cfgtable[i].itemData, tmpStr); g_free(tmpStr); } break; - - default: - xs_error(_("Internal: Unsupported setting type found while reading configuration file. Please report to author!\n")); - break; } } @@ -351,27 +350,27 @@ for (i = 0; i < xs_cfgtable_max; i++) { switch (xs_cfgtable[i].itemType) { case CTYPE_INT: - xmms_cfg_write_int(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].itemName, - *(gint *) xs_cfgtable[i].itemData); + xmms_cfg_write_int(cfgFile, XS_CONFIG_IDENT, + xs_cfgtable[i].itemName, + *(gint *) xs_cfgtable[i].itemData); break; case CTYPE_BOOL: - xmms_cfg_write_boolean(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].itemName, - *(gboolean *) xs_cfgtable[i].itemData); + xmms_cfg_write_boolean(cfgFile, XS_CONFIG_IDENT, + xs_cfgtable[i].itemName, + *(gboolean *) xs_cfgtable[i].itemData); break; case CTYPE_FLOAT: - xmms_cfg_write_float(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].itemName, - *(gfloat *) xs_cfgtable[i].itemData); + xmms_cfg_write_float(cfgFile, XS_CONFIG_IDENT, + xs_cfgtable[i].itemName, + *(gfloat *) xs_cfgtable[i].itemData); break; case CTYPE_STR: - xmms_cfg_write_string(cfgFile, XS_CONFIG_IDENT, xs_cfgtable[i].itemName, - *(gchar **) xs_cfgtable[i].itemData); - break; - - default: - xs_error(_("Internal: Unsupported setting type found while writing configuration file. Please report to author!\n")); + xmms_cfg_write_string(cfgFile, XS_CONFIG_IDENT, + xs_cfgtable[i].itemName, + *(gchar **) xs_cfgtable[i].itemData); break; } } @@ -410,6 +409,11 @@ { gint i; gfloat tmpValue; + gint tmpInt; + gchar *tmpStr; + + /* Get lock on configuration */ + XS_MUTEX_LOCK(xs_cfg); XSDEBUG("get data from widgets to config...\n"); @@ -423,21 +427,30 @@ } break; + case WTYPE_COMBO: + /* Get text from text-widget */ + tmpStr = gtk_entry_get_text(GTK_ENTRY(LUW(xs_widtable[i].widName))); + if (sscanf(tmpStr, "%d", &tmpInt) != 1) + tmpInt = xs_widtable[i].itemSet; + + *((gint *) xs_widtable[i].itemData) = tmpInt; + break; + case WTYPE_SPIN: case WTYPE_SCALE: /* Get the value */ switch (xs_widtable[i].widType) { case WTYPE_SPIN: - tmpValue = - gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(LUW(xs_widtable[i].widName)))->value; + tmpValue = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(LUW(xs_widtable[i].widName)))->value; break; case WTYPE_SCALE: tmpValue = gtk_range_get_adjustment(GTK_RANGE(LUW(xs_widtable[i].widName)))->value; break; - + default: tmpValue = -1; + break; } /* Set the value */ @@ -455,18 +468,20 @@ case WTYPE_BUTTON: /* Check if toggle-button is active */ *((gboolean *) xs_widtable[i].itemData) = - (GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName))->active); + (GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName))->active); break; case WTYPE_TEXT: /* Get text from text-widget */ xs_pstrcpy((gchar **) xs_widtable[i].itemData, - gtk_entry_get_text(GTK_ENTRY(LUW(xs_widtable[i].widName))) - ); + gtk_entry_get_text(GTK_ENTRY(LUW(xs_widtable[i].widName)))); break; } } + /* Release lock */ + XS_MUTEX_UNLOCK(xs_cfg); + /* Close window */ gtk_widget_destroy(xs_configwin); xs_configwin = NULL; @@ -493,8 +508,6 @@ } - - /* * HVSC songlength-database file selector response-functions */ @@ -819,6 +832,7 @@ { gint i; gfloat tmpValue; + gchar tmpStr[32]; GtkWidget *c; /* Check if the window already exists */ @@ -830,6 +844,9 @@ /* Create the window */ xs_configwin = create_xs_configwin(); + /* Get lock on configuration */ + XS_MUTEX_LOCK(xs_cfg); + /* Create the custom filter curve widget for libSIDPlay2 */ c = xs_curve_new(); @@ -841,9 +858,6 @@ xs_cfg_filter2_reset(NULL, NULL); - /* Get lock on configuration */ - XS_MUTEX_LOCK(xs_cfg); - /* Based on available optional parts, gray out options */ #ifndef HAVE_SIDPLAY1 gtk_widget_set_sensitive(LUW("cfg_emu_sidplay1"), FALSE); @@ -882,13 +896,18 @@ for (i = 0; i < xs_widtable_max; i++) { switch (xs_widtable[i].widType) { case WTYPE_BGROUP: + assert(xs_widtable[i].itemType == CTYPE_INT); /* Check if current value matches the given one */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName)), - (*((gint *) xs_widtable[i].itemData) == xs_widtable[i].itemSet) - ); + (*((gint *) xs_widtable[i].itemData) == xs_widtable[i].itemSet)); break; - + case WTYPE_COMBO: + assert(xs_widtable[i].itemType == CTYPE_INT); + g_snprintf(tmpStr, sizeof(tmpStr), "%d", *(gint *) xs_widtable[i].itemData); + gtk_entry_set_text(GTK_ENTRY(LUW(xs_widtable[i].widName)), tmpStr); + break; + case WTYPE_SPIN: case WTYPE_SCALE: /* Get the value */ @@ -903,34 +922,37 @@ default: tmpValue = -1; + assert(0); + break; } /* Set the value */ switch (xs_widtable[i].widType) { case WTYPE_SPIN: gtk_adjustment_set_value(gtk_spin_button_get_adjustment - (GTK_SPIN_BUTTON(LUW(xs_widtable[i].widName))), tmpValue); + (GTK_SPIN_BUTTON(LUW(xs_widtable[i].widName))), tmpValue); break; case WTYPE_SCALE: gtk_adjustment_set_value(gtk_range_get_adjustment - (GTK_RANGE(LUW(xs_widtable[i].widName))), tmpValue); + (GTK_RANGE(LUW(xs_widtable[i].widName))), tmpValue); break; } break; case WTYPE_BUTTON: + assert(xs_widtable[i].itemType == CTYPE_BOOL); /* Set toggle-button */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName)), - *((gboolean *) xs_widtable[i].itemData) - ); + *((gboolean *) xs_widtable[i].itemData)); break; case WTYPE_TEXT: + assert(xs_widtable[i].itemType == CTYPE_STR); /* Set text to text-widget */ if (*(gchar **) xs_widtable[i].itemData != NULL) { gtk_entry_set_text(GTK_ENTRY(LUW(xs_widtable[i].widName)), - *(gchar **) xs_widtable[i].itemData); + *(gchar **) xs_widtable[i].itemData); } break; } diff -r 4c599be2d349 -r 6357b7fe5b0d src/xs_config.h --- a/src/xs_config.h Fri Jan 26 15:47:00 2007 +0000 +++ b/src/xs_config.h Fri Jan 26 15:47:03 2007 +0000 @@ -136,7 +136,8 @@ WTYPE_SPIN, WTYPE_SCALE, WTYPE_BUTTON, - WTYPE_TEXT + WTYPE_TEXT, + WTYPE_COMBO };