# HG changeset patch # User Matti Hamalainen # Date 1092799620 0 # Node ID 6e350784aa57f66ad33251494d120027269a4aa7 # Parent d109d928ccc367bb3db44ca67da9107a312a954b Various cleanups. Min-playtime option now works. Configuration has more consistent operation while graying out unavailable settings. diff -r d109d928ccc3 -r 6e350784aa57 Makefile.am --- a/Makefile.am Wed Aug 18 03:24:04 2004 +0000 +++ b/Makefile.am Wed Aug 18 03:27:00 2004 +0000 @@ -20,5 +20,5 @@ xmms-sid.spec \ xmms-1.2.10-songpos.patch -ChangeLog: +ChangeLog: CVS/Entries src/CVS/Entries cvs2cl.pl --passwd /etc/passwd --domain tnsp.org diff -r d109d928ccc3 -r 6e350784aa57 src/xmms-sid.c --- a/src/xmms-sid.c Wed Aug 18 03:24:04 2004 +0000 +++ b/src/xmms-sid.c Wed Aug 18 03:27:00 2004 +0000 @@ -303,6 +303,11 @@ XSDEBUG("subtune #%i selected, initializing...\n", myStatus.currSong); songLength = myTune->subTunes[myStatus.currSong - 1].tuneLength; + if (xs_cfg.playMinTimeEnable) + { + if (songLength < xs_cfg.playMinTime) + songLength = xs_cfg.playMinTime; + } /* Initialize song */ if (!xs_player->plrInitSong(&myStatus)) @@ -490,13 +495,31 @@ /* * Pop-up subtune selector */ +#define LUW(x...) lookup_widget(xs_fileinfowin, ## x) + void xs_subctrl_update(void) { + GtkAdjustment *tmpAdj; + if (xs_subctrl) { - GTK_ADJUSTMENT(xs_subctrl_adj)->value = xs_status.currSong; - gtk_adjustment_value_changed(GTK_ADJUSTMENT(xs_subctrl_adj)); + tmpAdj = GTK_ADJUSTMENT(xs_subctrl_adj); + + tmpAdj->value = xs_status.currSong; + tmpAdj->lower = 1; + tmpAdj->upper = (xs_status.pTune) ? xs_status.pTune->nsubTunes : 1; + gtk_adjustment_value_changed(tmpAdj); } + + if (xs_fileinfowin) + { + tmpAdj = gtk_range_get_adjustment(GTK_RANGE(LUW("fileinfo_subctrl_adj"))); + + tmpAdj->value = xs_status.currSong; + tmpAdj->lower = 1; + tmpAdj->upper = xs_status.pTune->nsubTunes; + gtk_adjustment_value_changed(tmpAdj); + } } @@ -664,7 +687,7 @@ /* Let's see what we do */ switch (xs_cfg.subsongControl) { case XS_SSC_SEEK: - xs_status.lastTime = xs_plugin_ip.output->output_time() / 1000; + xs_status.lastTime = (xs_plugin_ip.output->output_time() / 1000); break; #ifdef HAVE_SONG_POSITION @@ -676,7 +699,7 @@ #endif } - /* Else, return output time reported by audio output plugin */ + /* Return output time reported by audio output plugin */ return xs_plugin_ip.output->output_time(); } @@ -689,9 +712,11 @@ t_xs_tune *pInfo; gint tmpInt; + /* Get tune information from emulation engine */ pInfo = xs_player->plrGetSIDInfo(songFilename); if (!pInfo) return; + /* Get sub-tune information, if available */ if ((pInfo->startTune >= 0) && (pInfo->startTune <= pInfo->nsubTunes)) { (*songTitle) = g_strdup(pInfo->subTunes[pInfo->startTune - 1].tuneTitle); @@ -702,7 +727,8 @@ else (*songLength) = (tmpInt * 1000); } - + + /* Free tune information */ xs_tune_free(pInfo); } @@ -764,14 +790,13 @@ /* * File-information window */ -#define LUW(x...) lookup_widget(xs_fileinfowin, ## x) - void xs_fileinfo_ok(void) { gtk_widget_destroy(xs_fileinfowin); xs_fileinfowin = NULL; } + void xs_fileinfo_subtune(GtkWidget *widget, void *data) { t_xs_stil_subnode *tmpNode; @@ -788,9 +813,10 @@ if (xs_fileinfostil) { - /* Get subtune number */ - - + /* Get subtune number */ + tmpItem = gtk_menu_get_active(GTK_MENU(data)); + tmpIndex = g_list_index(GTK_MENU_SHELL(data)->children, tmpItem); + /* Get subtune information */ tmpNode = &xs_fileinfostil->subTune[tmpIndex]; subName = tmpNode->pName; @@ -819,7 +845,10 @@ void xs_fileinfo(gchar *pcFilename) { + GtkWidget *tmpMenuItem, *tmpMenu, *tmpOptionMenu; t_xs_stil_subnode *tmpNode; + gchar tmpStr[32], *tmpS; + gint n; /* Free old info, if set */ if (xs_fileinfotune) @@ -857,9 +886,49 @@ gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_composer")), xs_fileinfotune->tuneComposer); gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_copyright")), xs_fileinfotune->tuneCopyright); - /* Set the sub-tune information */ + + /* Main tune - the pseudo tune */ + tmpOptionMenu = LUW("fileinfo_sub_tune"); + tmpMenu = GTK_OPTION_MENU(tmpOptionMenu)->menu; + + tmpMenuItem = gtk_menu_item_new_with_label ("General info"); + gtk_widget_show (tmpMenuItem); + gtk_menu_append (GTK_MENU(tmpMenu), tmpMenuItem); + gtk_signal_connect (GTK_OBJECT (tmpMenuItem), "activate", + GTK_SIGNAL_FUNC (xs_fileinfo_subtune), tmpMenu); + + /* Other menu items */ + for (n = 1; n <= xs_fileinfotune->nsubTunes; n++) + { + if (xs_fileinfostil) + { + tmpNode = &xs_fileinfostil->subTune[n]; + if (tmpNode->pName) + tmpS = tmpNode->pName; + else + if (tmpNode->pInfo) + tmpS = tmpNode->pInfo; + else + tmpS = "---"; + + snprintf(tmpStr, sizeof(tmpStr), "Tune #%i: %s", n, tmpS); + } else + snprintf(tmpStr, sizeof(tmpStr), "Tune #%i", n); + + tmpMenuItem = gtk_menu_item_new_with_label(tmpStr); + gtk_widget_show (tmpMenuItem); + gtk_menu_append (GTK_MENU(tmpMenu), tmpMenuItem); + + gtk_signal_connect (GTK_OBJECT(tmpMenuItem), "activate", + GTK_SIGNAL_FUNC(xs_fileinfo_subtune), tmpMenu); + } + + /* Set the subtune information */ xs_fileinfo_subtune(NULL, tmpMenu); + /* Update subtune controls */ + xs_subctrl_update(); + /* Show the window */ gtk_widget_show(xs_fileinfowin); } diff -r d109d928ccc3 -r 6e350784aa57 src/xs_about.c --- a/src/xs_about.c Wed Aug 18 03:24:04 2004 +0000 +++ b/src/xs_about.c Wed Aug 18 03:27:00 2004 +0000 @@ -61,7 +61,6 @@ gtk_widget_set_name (xs_aboutwin, "xs_aboutwin"); gtk_object_set_data (GTK_OBJECT (xs_aboutwin), "xs_aboutwin", xs_aboutwin); gtk_window_set_title (GTK_WINDOW (xs_aboutwin), "About " PACKAGE_STRING); - gtk_window_set_modal (GTK_WINDOW (xs_aboutwin), TRUE); gtk_window_set_default_size (GTK_WINDOW (xs_aboutwin), 300, -1); about_vbox1 = gtk_vbox_new (FALSE, 0); diff -r d109d928ccc3 -r 6e350784aa57 src/xs_config.c --- a/src/xs_config.c Wed Aug 18 03:24:04 2004 +0000 +++ b/src/xs_config.c Wed Aug 18 03:27:00 2004 +0000 @@ -617,12 +617,12 @@ gtk_widget_set_sensitive(LUW("cfg_oversample_grp"), isActive); gtk_widget_set_sensitive(LUW("cfg_oversample"), isActive); gtk_widget_set_sensitive(LUW("cfg_oversample_factor"), isActive); - gtk_widget_set_sensitive(LUW("cfg_overfilter_average"), isActive); - gtk_widget_set_sensitive(LUW("cfg_overfilter_sinc"), 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_chn_autopan"), !isActive); + #ifdef HAVE_RESID_BUILDER gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2_resid"), isActive); #else @@ -642,27 +642,91 @@ } +void xs_cfg_oversample_toggled(GtkToggleButton *togglebutton, gpointer user_data) +{ + gboolean isActive = GTK_TOGGLE_BUTTON(LUW("cfg_oversample"))->active; + + 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); +} + + +void xs_cfg_mintime_enable_toggled(GtkToggleButton *togglebutton, gpointer user_data) +{ + gboolean isActive = GTK_TOGGLE_BUTTON(LUW("cfg_mintime_enable"))->active; + + 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); +} + + +void xs_cfg_maxtime_enable_toggled(GtkToggleButton *togglebutton, gpointer user_data) +{ + gboolean isActive = GTK_TOGGLE_BUTTON(LUW("cfg_maxtime_enable"))->active; + + 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); +} + + +void xs_cfg_sld_enable_toggled(GtkToggleButton *togglebutton, gpointer user_data) +{ + gboolean isActive = GTK_TOGGLE_BUTTON(LUW("cfg_sld_enable"))->active; + + 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); +} + + +void xs_cfg_stil_enable_toggled(GtkToggleButton *togglebutton, gpointer user_data) +{ + gboolean isActive = GTK_TOGGLE_BUTTON(LUW("cfg_stil_enable"))->active; + + 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); +} + + void xs_cfg_mintime_changed(GtkEditable *editable, gpointer user_data) { - gint tmpValue, maxValue; + gint tmpValue; + GtkAdjustment *tmpAdj; + + tmpAdj = gtk_spin_button_get_adjustment( + GTK_SPIN_BUTTON(LUW("cfg_maxtime"))); - if (tmpValue > maxValue) - - gtk_adjustment_set_value( - gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(LUW("cfg_maxtime"))), - tmpValue); + tmpValue = gtk_spin_button_get_adjustment( + GTK_SPIN_BUTTON(editable))->value; + + if (tmpValue > tmpAdj->value) + gtk_adjustment_set_value(tmpAdj, tmpValue); } void xs_cfg_maxtime_changed(GtkEditable *editable, gpointer user_data) { - gint tmpValue, minValue; + gint tmpValue; + GtkAdjustment *tmpAdj; + tmpAdj = gtk_spin_button_get_adjustment( + GTK_SPIN_BUTTON(LUW("cfg_mintime"))); - gtk_adjustment_set_value( - gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(LUW("cfg_mintime"))), - tmpValue); + tmpValue = gtk_spin_button_get_adjustment( + GTK_SPIN_BUTTON(editable))->value; + + if (tmpValue < tmpAdj->value) + gtk_adjustment_set_value(tmpAdj, tmpValue); } @@ -685,7 +749,7 @@ xs_configwin = create_xs_configwin(); - /* Based on selected emulation library, disable options */ + /* Based on available optional parts, gray out options */ #ifndef HAVE_SIDPLAY1 gtk_widget_set_sensitive(LUW("cfg_emu_sidplay1"), FALSE); #endif @@ -698,7 +762,6 @@ gtk_widget_set_sensitive(LUW("cfg_emu_nanosid"), FALSE); #endif - /* Other UI options */ #ifndef HAVE_XMMSEXTRA gtk_widget_set_sensitive(LUW("cfg_ftitle_override"), FALSE); xs_cfg.titleOverride = TRUE; @@ -714,6 +777,11 @@ xs_cfg_emu_sidplay1_toggled(NULL, NULL); xs_cfg_emu_sidplay2_toggled(NULL, NULL); xs_cfg_emu_nanosid_toggled(NULL, NULL); + xs_cfg_oversample_toggled(NULL, NULL); + xs_cfg_mintime_enable_toggled(NULL, NULL); + xs_cfg_maxtime_enable_toggled(NULL, NULL); + xs_cfg_sld_enable_toggled(NULL, NULL); + xs_cfg_stil_enable_toggled(NULL, NULL); /* Set current data to widgets */ diff -r d109d928ccc3 -r 6e350784aa57 src/xs_genui.c --- a/src/xs_genui.c Wed Aug 18 03:24:04 2004 +0000 +++ b/src/xs_genui.c Wed Aug 18 03:27:00 2004 +0000 @@ -7,3 +7,4 @@ #include "xs_genui.h" #include "xs_interface.h" #include "xs_glade.h" + diff -r d109d928ccc3 -r 6e350784aa57 src/xs_genui.h --- a/src/xs_genui.h Wed Aug 18 03:24:04 2004 +0000 +++ b/src/xs_genui.h Wed Aug 18 03:27:00 2004 +0000 @@ -84,3 +84,31 @@ void xs_cfg_maxtime_changed (GtkEditable *editable, gpointer user_data); + +void +xs_subctrl_prevsong (GtkButton *button, + gpointer user_data); + +void +xs_subctrl_nextsong (GtkButton *button, + gpointer user_data); + +void +xs_cfg_oversample_toggled (GtkToggleButton *togglebutton, + gpointer user_data); + +void +xs_cfg_mintime_enable_toggled (GtkToggleButton *togglebutton, + gpointer user_data); + +void +xs_cfg_maxtime_enable_toggled (GtkToggleButton *togglebutton, + gpointer user_data); + +void +xs_cfg_sld_enable_toggled (GtkToggleButton *togglebutton, + gpointer user_data); + +void +xs_cfg_stil_enable_toggled (GtkToggleButton *togglebutton, + gpointer user_data); diff -r d109d928ccc3 -r 6e350784aa57 xmms-sid.glade --- a/xmms-sid.glade Wed Aug 18 03:24:04 2004 +0000 +++ b/xmms-sid.glade Wed Aug 18 03:27:00 2004 +0000 @@ -295,6 +295,11 @@ cfg_oversample 2 True + + toggled + xs_cfg_oversample_toggled + Wed, 18 Aug 2004 02:20:35 GMT + False True @@ -319,7 +324,7 @@ GtkLabel - label42 + cfg_oversample_label1 GTK_JUSTIFY_CENTER False @@ -359,7 +364,7 @@ GtkLabel - label43 + cfg_oversample_label2 GTK_JUSTIFY_CENTER False @@ -1042,6 +1047,11 @@ cfg_mintime_enable 2 True + + toggled + xs_cfg_mintime_enable_toggled + Wed, 18 Aug 2004 02:51:28 GMT + False True @@ -1066,7 +1076,7 @@ GtkLabel - label51 + cfg_mintime_label1 GTK_JUSTIFY_CENTER False @@ -1111,7 +1121,7 @@ GtkLabel - label52 + cfg_mintime_label2 GTK_JUSTIFY_CENTER False @@ -1154,6 +1164,11 @@ cfg_maxtime_enable 2 True + + toggled + xs_cfg_maxtime_enable_toggled + Wed, 18 Aug 2004 02:51:37 GMT + False True @@ -1193,7 +1208,7 @@ GtkLabel - label37 + cfg_maxtime_label1 GTK_JUSTIFY_CENTER False @@ -1238,7 +1253,7 @@ GtkLabel - label36 + cfg_maxtime_label2 GTK_JUSTIFY_CENTER False @@ -1282,6 +1297,11 @@ 2 This option enables using of XSIDPLAY compatible HVSC Song-length database. (See documentation for more information) True + + toggled + xs_cfg_sld_enable_toggled + Wed, 18 Aug 2004 02:51:47 GMT + False True @@ -1306,7 +1326,7 @@ GtkLabel - label33 + cfg_sld_label1 GTK_JUSTIFY_CENTER False @@ -1404,6 +1424,11 @@ cfg_stil_enable 2 True + + toggled + xs_cfg_stil_enable_toggled + Wed, 18 Aug 2004 02:52:39 GMT + False True @@ -1427,7 +1452,7 @@ GtkLabel - label4 + cfg_stil_label1 GTK_JUSTIFY_CENTER False @@ -1510,7 +1535,7 @@ GtkLabel - label49 + cfg_hvsc_label1 GTK_JUSTIFY_CENTER False @@ -1714,7 +1739,7 @@ GtkFrame frame28 4 - + 0 GTK_SHADOW_ETCHED_IN @@ -1820,8 +1845,9 @@ GtkCheckButton cfg_detectmagic 2 + Determine if file is a SID-tune by checking the file contents. If NOT selected, filetype is determined by checking filename extension (.sid, .dat, ...) True - + False True @@ -1902,7 +1928,6 @@ GtkWindow xs_fileinfowin 400 - 350 XMMS-SID Fileinfo GTK_WINDOW_DIALOG GTK_WIN_POS_MOUSE @@ -1919,6 +1944,84 @@ GtkFrame + frame30 + 2 + 0 + GTK_SHADOW_OUT + + 0 + False + False + + + + GtkHBox + hbox19 + 4 + False + 0 + + + GtkButton + fileinfo_subctrl_prev + True + + clicked + xs_subctrl_prevsong + Wed, 18 Aug 2004 01:40:46 GMT + + + GTK_RELIEF_NORMAL + + 0 + False + False + + + + + GtkHScale + fileinfo_subctrl_adj + True + True + GTK_POS_TOP + 0 + GTK_UPDATE_CONTINUOUS + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + True + True + + + + + GtkButton + fileinfo_subctrl_next + True + + clicked + xs_subctrl_nextsong + Wed, 18 Aug 2004 01:41:09 GMT + + + GTK_RELIEF_NORMAL + + 0 + False + False + + + + + + + GtkFrame frame14 4 @@ -2146,7 +2249,7 @@ GtkFrame frame15 4 - + 0 GTK_SHADOW_ETCHED_IN @@ -2191,19 +2294,11 @@ - GtkHScale + GtkOptionMenu fileinfo_sub_tune True - True - GTK_POS_TOP - 0 - GTK_UPDATE_CONTINUOUS - 10 - 1 - 12 - 0 - 0 - 0 + + 0 2 True