Mercurial > hg > xmms-sid
changeset 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 | 6490ceb38b64 |
children | 081088695019 |
files | src/xs_config.c src/xs_config.h xmms-sid.glade |
diffstat | 3 files changed, 323 insertions(+), 272 deletions(-) [+] |
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);
--- a/src/xs_config.h Fri Feb 23 05:11:02 2007 +0000 +++ b/src/xs_config.h Fri Feb 23 05:13:05 2007 +0000 @@ -2,13 +2,14 @@ #define XS_CONFIG_H #include "xmms-sid.h" +#include "xs_curve.h" #ifdef __cplusplus extern "C" { #endif -/* - * Configuration structure + +/* Configuration structure */ enum XS_EMUENGINE { XS_ENG_SIDPLAY1 = 1, @@ -66,31 +67,43 @@ }; +typedef struct { + t_xs_int_point points[XS_SIDPLAY2_NFPOINTS]; + gint npoints; + gchar *name; +} t_xs_sid2_filter; + + extern struct t_xs_cfg { /* General audio settings */ gint audioBitsPerSample; gint audioChannels; gint audioFrequency; - /* General libSIDPlay settings */ + gboolean oversampleEnable; + gint oversampleFactor; /* Factor of oversampling */ + + /* Emulation settings */ gboolean mos8580; /* TRUE = 8580, FALSE = 6581 */ gboolean forceModel; - gboolean emulateFilters; - gfloat filterFs; - gfloat filterFm; - gfloat filterFt; gint memoryMode; /* See XS_MPU-constants */ gint clockSpeed; /* PAL (50Hz) or NTSC (60Hz) */ gboolean forceSpeed; /* TRUE = force to given clockspeed */ gint playerEngine; /* Selected player engine */ + gboolean emulateFilters; + gfloat sid1FilterFs; + gfloat sid1FilterFm; + gfloat sid1FilterFt; + gint sid2OptLevel; /* SIDPlay2 emulation optimization */ gint sid2Builder; /* SIDPlay2 "builder" aka SID-emu */ - - gboolean oversampleEnable; - gint oversampleFactor; /* Factor of oversampling */ - + t_xs_sid2_filter sid2Filter; /* Current SIDPlay2 filter */ + t_xs_sid2_filter **sid2FilterPresets; + gint sid2NFilterPresets; + + /* Playing settings */ gboolean playMaxTimeEnable, playMaxTimeUnknown; /* Use max-time only when song-length is unknown */ @@ -121,8 +134,8 @@ XS_MUTEX_H(xs_cfg); -/* - * Configuration-file + +/* Configuration-file */ enum { CTYPE_INT = 1, @@ -157,16 +170,14 @@ } t_xs_wid_item; -/* - * Functions +/* Functions */ void xs_init_configuration(void); void xs_configure(void); void xs_read_configuration(void); gint xs_write_configuration(void); - #ifdef __cplusplus } #endif -#endif /* XS_CONFIG_H */ +#endif /* XS_CONFIG_H */
--- a/xmms-sid.glade Fri Feb 23 05:11:02 2007 +0000 +++ b/xmms-sid.glade Fri Feb 23 05:13:05 2007 +0000 @@ -75,7 +75,7 @@ <widget> <class>GtkFrame</class> - <name>w_frame4</name> + <name>cfg_sndres_frame</name> <border_width>4</border_width> <label>Resolution:</label> <label_xalign>0</label_xalign> @@ -127,7 +127,7 @@ <widget> <class>GtkFrame</class> - <name>w_frame5</name> + <name>cfg_channels_frame</name> <border_width>4</border_width> <label>Channels:</label> <label_xalign>0</label_xalign> @@ -195,7 +195,7 @@ <widget> <class>GtkFrame</class> - <name>w_frame8</name> + <name>cfg_samplerate_frame</name> <border_width>4</border_width> <label>Samplerate:</label> <label_xalign>0</label_xalign> @@ -285,7 +285,7 @@ <widget> <class>GtkFrame</class> - <name>cfg_oversample_grp</name> + <name>cfg_oversample_frame</name> <border_width>4</border_width> <label>Oversampling:</label> <label_xalign>0</label_xalign> @@ -324,7 +324,7 @@ <widget> <class>GtkHBox</class> - <name>w_hbox16</name> + <name>cfg_oversample_box</name> <border_width>2</border_width> <homogeneous>False</homogeneous> <spacing>4</spacing> @@ -427,7 +427,7 @@ <widget> <class>GtkFrame</class> - <name>w_frame2</name> + <name>cfg_clock_frame</name> <border_width>4</border_width> <label>Clock speed:</label> <label_xalign>0</label_xalign> @@ -496,7 +496,7 @@ <widget> <class>GtkFrame</class> - <name>w_frame3</name> + <name>cfg_sid_model_frame</name> <border_width>4</border_width> <label>SID model:</label> <label_xalign>0</label_xalign> @@ -565,7 +565,7 @@ <widget> <class>GtkFrame</class> - <name>w_frame26</name> + <name>cfg_emulib_frame</name> <border_width>4</border_width> <label>Emulation library selection:</label> <label_xalign>0</label_xalign> @@ -629,7 +629,7 @@ <widget> <class>GtkFrame</class> - <name>w_frame1</name> + <name>cfg_memmode_frame</name> <border_width>4</border_width> <label>Memory mode:</label> <label_xalign>0</label_xalign> @@ -731,7 +731,7 @@ <widget> <class>GtkFrame</class> - <name>cfg_sidplay2_grp</name> + <name>cfg_sidplay2_frame</name> <border_width>4</border_width> <label>SIDPlay 2 options:</label> <label_xalign>0</label_xalign> @@ -751,7 +751,7 @@ <widget> <class>GtkCheckButton</class> - <name>cfg_emu_sidplay2_opt</name> + <name>cfg_emu_sp2_opt</name> <tooltip>This setting can be used to enable libSIDPlay2's "optimization mode", which in downgrades the emulation from cycle-exact to something similar to frame-exact. The result is lower CPU usage, but worse accuracy.</tooltip> <can_focus>True</can_focus> <label>Optimization mode (faster, inaccurate)</label> @@ -766,7 +766,7 @@ <widget> <class>GtkRadioButton</class> - <name>cfg_emu_sidplay2_resid</name> + <name>cfg_emu_sp2_resid</name> <tooltip>reSID is the software SID-chip simulator based on SID reverse-engineering, created by Dag Lem. It is probably the closest thing to real SID available as software-only emulation.</tooltip> <can_focus>True</can_focus> <label>reSID-emulation</label> @@ -782,7 +782,7 @@ <widget> <class>GtkRadioButton</class> - <name>cfg_emu_sidplay2_hardsid</name> + <name>cfg_emu_sp2_hardsid</name> <tooltip>HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a real SID-chip. Software can be used to control the HardSID and combined with software emulation of rest of C64 via libSIDPlay2 HardSID can be used to achieve "near 100%" similarity to real C64. For more information, see http://www.hardsid.com/</tooltip> <can_focus>True</can_focus> <label>HardSID</label> @@ -800,7 +800,7 @@ <widget> <class>GtkFrame</class> - <name>cfg_resid_grp</name> + <name>cfg_resid_frame</name> <border_width>4</border_width> <label>reSID sampling options:</label> <label_xalign>0</label_xalign> @@ -942,14 +942,14 @@ <widget> <class>GtkHBox</class> - <name>cfg_box_sidplay1</name> + <name>cfg_box_filter_sidplay1</name> <border_width>4</border_width> <homogeneous>False</homogeneous> <spacing>0</spacing> <widget> <class>GtkFrame</class> - <name>cfg_frm_fs</name> + <name>cfg_sp1_frm_fs</name> <border_width>2</border_width> <width>45</width> <label>FS</label> @@ -957,13 +957,13 @@ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type> <child> <padding>0</padding> - <expand>False</expand> + <expand>True</expand> <fill>True</fill> </child> <widget> <class>GtkVScale</class> - <name>cfg_emu_filt_fs</name> + <name>cfg_sp1_filter_fs</name> <can_focus>True</can_focus> <draw_value>True</draw_value> <value_pos>GTK_POS_TOP</value_pos> @@ -980,7 +980,7 @@ <widget> <class>GtkFrame</class> - <name>cfg_frm_fm</name> + <name>cfg_sp1_frm_fm</name> <border_width>2</border_width> <width>45</width> <label>FM</label> @@ -988,13 +988,13 @@ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type> <child> <padding>0</padding> - <expand>False</expand> + <expand>True</expand> <fill>True</fill> </child> <widget> <class>GtkVScale</class> - <name>cfg_emu_filt_fm</name> + <name>cfg_sp1_filter_fm</name> <can_focus>True</can_focus> <draw_value>True</draw_value> <value_pos>GTK_POS_TOP</value_pos> @@ -1011,7 +1011,7 @@ <widget> <class>GtkFrame</class> - <name>cfg_frm_ft</name> + <name>cfg_sp1_frm_ft</name> <border_width>2</border_width> <width>45</width> <label>FT</label> @@ -1019,13 +1019,13 @@ <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type> <child> <padding>0</padding> - <expand>False</expand> + <expand>True</expand> <fill>True</fill> </child> <widget> <class>GtkVScale</class> - <name>cfg_emu_filt_ft</name> + <name>cfg_sp1_filter_ft</name> <can_focus>True</can_focus> <draw_value>True</draw_value> <value_pos>GTK_POS_TOP</value_pos> @@ -1054,7 +1054,7 @@ <widget> <class>GtkButton</class> - <name>cfg_filter_reset</name> + <name>cfg_sp1_filter_reset</name> <can_focus>True</can_focus> <signal> <name>clicked</name> @@ -1086,16 +1086,93 @@ </widget> <widget> - <class>GtkHBox</class> - <name>cfg_box_sidplay2</name> - <border_width>4</border_width> + <class>GtkVBox</class> + <name>cfg_box_filter_sidplay2</name> <homogeneous>False</homogeneous> <spacing>0</spacing> <widget> + <class>GtkHBox</class> + <name>cfg_sp_filter_controlbox</name> + <border_width>2</border_width> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkCombo</class> + <name>cfg_sp2_filter_combo</name> + <value_in_list>False</value_in_list> + <ok_if_empty>True</ok_if_empty> + <case_sensitive>False</case_sensitive> + <use_arrows>True</use_arrows> + <use_arrows_always>False</use_arrows_always> + <items>6581 (reSID) +8580 (reSID) +6581R1 (alankila) +6581R4 (alankila) +</items> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkEntry</class> + <child_name>GtkCombo:entry</child_name> + <name>cfg_sp2_filter_combo_entry</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text>6581R1 (alankila)</text> + </widget> + </widget> + + <widget> + <class>GtkHButtonBox</class> + <name>hbuttonbox2</name> + <layout_style>GTK_BUTTONBOX_END</layout_style> + <spacing>0</spacing> + <child_min_width>85</child_min_width> + <child_min_height>27</child_min_height> + <child_ipad_x>7</child_ipad_x> + <child_ipad_y>0</child_ipad_y> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkButton</class> + <name>cfg_sp2_filter_load</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>Load</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + + <widget> + <class>GtkButton</class> + <name>cfg_sp2_filter_save</name> + <can_default>True</can_default> + <can_focus>True</can_focus> + <label>Save</label> + <relief>GTK_RELIEF_NORMAL</relief> + </widget> + </widget> + </widget> + + <widget> <class>GtkFrame</class> - <name>w_frame33</name> - <border_width>4</border_width> + <name>cfg_sp2_filter_frame</name> + <border_width>2</border_width> <label>Filter curve:</label> <label_xalign>0</label_xalign> <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type> @@ -1109,106 +1186,6 @@ <class>Placeholder</class> </widget> </widget> - - <widget> - <class>GtkVBox</class> - <name>w_vbox38</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - - <widget> - <class>GtkFrame</class> - <name>w_frame32</name> - <border_width>4</border_width> - <label>Presets:</label> - <label_xalign>0</label_xalign> - <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkVBox</class> - <name>w_vboxbaz</name> - <border_width>2</border_width> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - - <widget> - <class>GtkCombo</class> - <name>combo1</name> - <value_in_list>False</value_in_list> - <ok_if_empty>True</ok_if_empty> - <case_sensitive>False</case_sensitive> - <use_arrows>True</use_arrows> - <use_arrows_always>False</use_arrows_always> - <items>6581 (reSID) -8580 (reSID) -6581R1 (alankila) -6581R4 (alankila) -</items> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - - <widget> - <class>GtkEntry</class> - <child_name>GtkCombo:entry</child_name> - <name>combo-entry1</name> - <can_focus>True</can_focus> - <editable>True</editable> - <text_visible>True</text_visible> - <text_max_length>0</text_max_length> - <text>6581R1 (alankila)</text> - </widget> - </widget> - - <widget> - <class>GtkHButtonBox</class> - <name>hbuttonbox2</name> - <border_width>2</border_width> - <layout_style>GTK_BUTTONBOX_SPREAD</layout_style> - <spacing>0</spacing> - <child_min_width>85</child_min_width> - <child_min_height>27</child_min_height> - <child_ipad_x>7</child_ipad_x> - <child_ipad_y>0</child_ipad_y> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - - <widget> - <class>GtkButton</class> - <name>button3</name> - <can_default>True</can_default> - <can_focus>True</can_focus> - <label>Load</label> - <relief>GTK_RELIEF_NORMAL</relief> - </widget> - - <widget> - <class>GtkButton</class> - <name>button4</name> - <can_default>True</can_default> - <can_focus>True</can_focus> - <label>Save</label> - <relief>GTK_RELIEF_NORMAL</relief> - </widget> - </widget> - </widget> - </widget> - </widget> </widget> <widget> @@ -1287,7 +1264,7 @@ <widget> <class>GtkHBox</class> - <name>w_hbox18</name> + <name>cfg_mintime_box</name> <homogeneous>False</homogeneous> <spacing>2</spacing> <child> @@ -1418,7 +1395,7 @@ <widget> <class>GtkHBox</class> - <name>w_hbox14</name> + <name>cfg_maxtime_box</name> <homogeneous>False</homogeneous> <spacing>2</spacing> <child> @@ -1534,7 +1511,7 @@ <widget> <class>GtkHBox</class> - <name>w_hbox13</name> + <name>cfg_sld_box</name> <homogeneous>False</homogeneous> <spacing>4</spacing> <child> @@ -1660,7 +1637,7 @@ <widget> <class>GtkHBox</class> - <name>w_hbox3</name> + <name>cfg_stil_box1</name> <homogeneous>False</homogeneous> <spacing>0</spacing> <child> @@ -1744,7 +1721,7 @@ <widget> <class>GtkHBox</class> - <name>w_hbox17</name> + <name>cfg_stil_box2</name> <homogeneous>False</homogeneous> <spacing>0</spacing> <child> @@ -1843,10 +1820,10 @@ <widget> <class>GtkVBox</class> - <name>w_vbox16</name> + <name>vbox1</name> <border_width>2</border_width> <homogeneous>False</homogeneous> - <spacing>2</spacing> + <spacing>0</spacing> <widget> <class>GtkCheckButton</class> @@ -1869,73 +1846,85 @@ </widget> <widget> - <class>GtkEntry</class> - <name>cfg_ftitle_format</name> - <can_focus>True</can_focus> - <editable>True</editable> - <text_visible>True</text_visible> - <text_max_length>0</text_max_length> - <text></text> + <class>GtkVBox</class> + <name>cfg_ftitle_box</name> + <homogeneous>False</homogeneous> + <spacing>2</spacing> <child> - <padding>2</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - - <widget> - <class>GtkHBox</class> - <name>w_hbox9</name> - <homogeneous>True</homogeneous> - <spacing>0</spacing> - <child> - <padding>2</padding> - <expand>False</expand> - <fill>False</fill> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> </child> <widget> - <class>GtkLabel</class> - <name>cfg_ftitle_desc1</name> - <label>%% - '%' character -%p - Performer/composer -%t - Song name (title) -%c - Copyright -%s - File type -%m - SID model</label> - <justify>GTK_JUSTIFY_LEFT</justify> - <wrap>False</wrap> - <xalign>0.04</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> + <class>GtkEntry</class> + <name>cfg_ftitle_format</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> <child> - <padding>0</padding> + <padding>2</padding> <expand>False</expand> <fill>False</fill> </child> </widget> <widget> - <class>GtkLabel</class> - <name>cfg_ftitle_desc2</name> - <label>%C - Speed/clock (PAL/NTSC) + <class>GtkHBox</class> + <name>w_hbox9</name> + <homogeneous>True</homogeneous> + <spacing>0</spacing> + <child> + <padding>2</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkLabel</class> + <name>cfg_ftitle_desc1</name> + <label>%% - '%' character +%p - Performer/composer +%t - Song name (title) +%c - Copyright +%s - File type +%m - SID model</label> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.04</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GtkLabel</class> + <name>cfg_ftitle_desc2</name> + <label>%C - Speed/clock (PAL/NTSC) %n - Subtune %N - Number of subtunes %f - Filename %F - File path %e - File extension</label> - <justify>GTK_JUSTIFY_LEFT</justify> - <wrap>False</wrap> - <xalign>0.04</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> + <justify>GTK_JUSTIFY_LEFT</justify> + <wrap>False</wrap> + <xalign>0.04</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> </widget> </widget> </widget> @@ -2107,7 +2096,7 @@ <widget> <class>GtkHBox</class> - <name>w_hbox20</name> + <name>cfg_subauto_box</name> <homogeneous>False</homogeneous> <spacing>2</spacing> <child> @@ -2994,4 +2983,20 @@ </widget> </widget> +<widget> + <class>GtkWindow</class> + <name>window1</name> + <title>window1</title> + <type>GTK_WINDOW_TOPLEVEL</type> + <position>GTK_WIN_POS_NONE</position> + <modal>False</modal> + <allow_shrink>False</allow_shrink> + <allow_grow>True</allow_grow> + <auto_shrink>False</auto_shrink> + + <widget> + <class>Placeholder</class> + </widget> +</widget> + </GTK-Interface>