changeset 1688:d6d8e3cd23c5

Branch merge.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 06 Sep 2007 03:03:03 +0300
parents d158ce84fda7 (current diff) 75b8e7737bcd (diff)
children 4dfc5a28d681
files src/modplug/modplugbmp.cxx src/sid/xmms-sid.c
diffstat 12 files changed, 3061 insertions(+), 726 deletions(-) [+]
line wrap: on
line diff
--- a/src/modplug/gui/interface.cxx	Wed Sep 05 09:29:26 2007 +0300
+++ b/src/modplug/gui/interface.cxx	Thu Sep 06 03:03:03 2007 +0300
@@ -10,6 +10,7 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <string.h>
+#include <stdio.h>
 
 #include <gdk/gdkkeysyms.h>
 #include <gtk/gtk.h>
@@ -18,6 +19,13 @@
 #include "interface.h"
 #include "support.h"
 
+#define GLADE_HOOKUP_OBJECT(component,widget,name) \
+  g_object_set_data_full (G_OBJECT (component), name, \
+    gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
+
+#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
+  g_object_set_data (G_OBJECT (component), name, widget)
+
 GtkWidget*
 create_Config (void)
 {
@@ -28,31 +36,73 @@
   GtkWidget *hbox2;
   GtkWidget *frame1;
   GtkWidget *vbox4;
-  GSList *vbox4_group = NULL;
   GtkWidget *bit16;
+  GSList *bit16_group = NULL;
   GtkWidget *bit8;
+  GtkWidget *xlabel2;
   GtkWidget *frame2;
   GtkWidget *vbox5;
-  GSList *vbox5_group = NULL;
   GtkWidget *stereo;
+  GSList *stereo_group = NULL;
   GtkWidget *mono;
-  GtkWidget *hbox10;
-  GtkWidget *frame3;
-  GtkWidget *vbox6;
-  GSList *vbox6_group = NULL;
-  GtkWidget *samp48;
-  GtkWidget *samp44;
-  GtkWidget *samp22;
-  GtkWidget *samp11;
+  GtkWidget *label3;
+  GtkWidget *hbox14;
   GtkWidget *frame9;
   GtkWidget *vbox15;
-  GSList *vbox15_group = NULL;
   GtkWidget *resampNearest;
+  GSList *resampNearest_group = NULL;
   GtkWidget *resampLinear;
   GtkWidget *resampSpline;
   GtkWidget *resampPolyphase;
+  GtkWidget *label4;
+  GtkWidget *frame3;
+  GtkWidget *vbox6;
+  GtkWidget *samp44;
+  GSList *samp44_group = NULL;
+  GtkWidget *samp22;
+  GtkWidget *samp11;
+  GtkWidget *label5;
   GtkWidget *label2;
   GtkWidget *vbox7;
+  GtkWidget *hbox15;
+  GtkWidget *frame5;
+  GtkWidget *vbox20;
+  GtkWidget *fxReverb;
+  GtkWidget *table1;
+  GtkWidget *fxReverbDepth;
+  GtkWidget *fxReverbDelay;
+  GtkWidget *xlabel3;
+  GtkWidget *xlabel4;
+  GtkWidget *label6;
+  GtkWidget *frame6;
+  GtkWidget *vbox21;
+  GtkWidget *fxBassBoost;
+  GtkWidget *table2;
+  GtkWidget *fxBassAmount;
+  GtkWidget *fxBassRange;
+  GtkWidget *xlabel5;
+  GtkWidget *xlabel6;
+  GtkWidget *label7;
+  GtkWidget *hbox16;
+  GtkWidget *frame7;
+  GtkWidget *vbox22;
+  GtkWidget *fxSurround;
+  GtkWidget *table3;
+  GtkWidget *fxSurroundDepth;
+  GtkWidget *fxSurroundDelay;
+  GtkWidget *xlabel7;
+  GtkWidget *label8;
+  GtkWidget *xlabel8;
+  GtkWidget *frame10;
+  GtkWidget *vbox16;
+  GtkWidget *fxPreamp;
+  GtkWidget *hbox11;
+  GtkWidget *label19;
+  GtkWidget *fxPreampLevel;
+  GtkWidget *label20;
+  GtkWidget *label9;
+  GtkWidget *label10;
+  GtkWidget *vbox19;
   GtkWidget *frame4;
   GtkWidget *hbox3;
   GtkWidget *vbox8;
@@ -61,703 +111,711 @@
   GtkWidget *vbox9;
   GtkWidget *fxNR;
   GtkWidget *fxAmigaMOD;
-  GtkWidget *frame5;
-  GtkWidget *hbox4;
-  GtkWidget *fxReverb;
-  GtkWidget *vbox10;
-  GtkWidget *table1;
-  GtkWidget *fxReverbDepth;
-  GtkWidget *fxReverbDelay;
-  GtkWidget *label3;
-  GtkWidget *label4;
-  GtkWidget *frame6;
-  GtkWidget *hbox5;
-  GtkWidget *fxBassBoost;
-  GtkWidget *vbox11;
-  GtkWidget *table2;
-  GtkWidget *fxBassAmount;
-  GtkWidget *fxBassRange;
-  GtkWidget *label5;
-  GtkWidget *label6;
-  GtkWidget *frame7;
-  GtkWidget *hbox6;
-  GtkWidget *fxSurround;
-  GtkWidget *vbox12;
-  GtkWidget *table3;
-  GtkWidget *fxSurroundDepth;
-  GtkWidget *fxSurroundDelay;
-  GtkWidget *label7;
-  GtkWidget *label8;
-  GtkWidget *frame10;
-  GtkWidget *vbox16;
-  GtkWidget *label20;
-  GtkWidget *hbox11;
-  GtkWidget *fxPreamp;
-  GtkWidget *label19;
-  GtkWidget *fxPreampLevel;
+  GtkWidget *label21;
   GtkWidget *frame11;
   GtkWidget *vbox17;
-  GSList *loopGroup_group = NULL;
   GtkWidget *fxNoLoop;
+  GSList *fxNoLoop_group = NULL;
   GtkWidget *hbox13;
   GtkWidget *fxLoopFinite;
   GtkObject *fxLoopCount_adj;
   GtkWidget *fxLoopCount;
-  GtkWidget *label21;
+  GtkWidget *xlabel21;
   GtkWidget *fxLoopForever;
-  GtkWidget *label10;
+  GtkWidget *label22;
+  GtkWidget *xlabel22;
   GtkWidget *hbuttonbox2;
   GtkWidget *config_ok;
   GtkWidget *config_apply;
   GtkWidget *config_cancel;
 
   Config = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_object_set_data (GTK_OBJECT (Config), "Config", Config);
-  gtk_widget_set_usize (Config, -1, -1);
+  gtk_widget_set_name (Config, "Config");
+  gtk_widget_set_size_request (Config, 500, -1);
   gtk_window_set_title (GTK_WINDOW (Config), _("ModPlug Configuration"));
-  gtk_window_set_policy (GTK_WINDOW (Config), FALSE, FALSE, FALSE);
+  gtk_window_set_resizable (GTK_WINDOW (Config), FALSE);
 
   vbox2 = gtk_vbox_new (FALSE, 0);
-  gtk_container_set_border_width(GTK_CONTAINER(vbox2),5);
-  gtk_widget_ref (vbox2);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox2", vbox2,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (vbox2, "vbox2");
   gtk_widget_show (vbox2);
   gtk_container_add (GTK_CONTAINER (Config), vbox2);
 
   notebook1 = gtk_notebook_new ();
-  gtk_widget_ref (notebook1);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "notebook1", notebook1,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (notebook1, "notebook1");
   gtk_widget_show (notebook1);
-  gtk_box_pack_start (GTK_BOX (vbox2), notebook1, TRUE, TRUE, 5);
-  gtk_container_set_border_width (GTK_CONTAINER (notebook1), 0);
+  gtk_box_pack_start (GTK_BOX (vbox2), notebook1, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (notebook1), 4);
 
   vbox3 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox3);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox3", vbox3,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (vbox3, "vbox3");
   gtk_widget_show (vbox3);
   gtk_container_add (GTK_CONTAINER (notebook1), vbox3);
-  gtk_container_set_border_width (GTK_CONTAINER (vbox3), 6);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox3), 2);
 
-  hbox2 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox2);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "hbox2", hbox2,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  hbox2 = gtk_hbox_new (FALSE, 2);
+  gtk_widget_set_name (hbox2, "hbox2");
   gtk_widget_show (hbox2);
-  gtk_box_pack_start (GTK_BOX (vbox3), hbox2, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox3), hbox2, FALSE, TRUE, 0);
 
-  frame1 = gtk_frame_new (_("Resolution"));
-  gtk_widget_ref (frame1);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "frame1", frame1,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  frame1 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame1, "frame1");
   gtk_widget_show (frame1);
   gtk_box_pack_start (GTK_BOX (hbox2), frame1, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame1), 2);
 
   vbox4 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox4);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox4", vbox4,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (vbox4, "vbox4");
   gtk_widget_show (vbox4);
   gtk_container_add (GTK_CONTAINER (frame1), vbox4);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox4), 2);
 
-  bit16 = gtk_radio_button_new_with_label (vbox4_group, _("16 bit"));
-  vbox4_group = gtk_radio_button_group (GTK_RADIO_BUTTON (bit16));
-  gtk_widget_ref (bit16);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "bit16", bit16,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  bit16 = gtk_radio_button_new_with_mnemonic (NULL, _("16 bit"));
+  gtk_widget_set_name (bit16, "bit16");
   gtk_widget_show (bit16);
   gtk_box_pack_start (GTK_BOX (vbox4), bit16, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (bit16), bit16_group);
+  bit16_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (bit16));
 
-  bit8 = gtk_radio_button_new_with_label (vbox4_group, _("8 bit"));
-  vbox4_group = gtk_radio_button_group (GTK_RADIO_BUTTON (bit8));
-  gtk_widget_ref (bit8);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "bit8", bit8,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  bit8 = gtk_radio_button_new_with_mnemonic (NULL, _("8 bit"));
+  gtk_widget_set_name (bit8, "bit8");
   gtk_widget_show (bit8);
   gtk_box_pack_start (GTK_BOX (vbox4), bit8, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (bit8), bit16_group);
+  bit16_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (bit8));
 
-  frame2 = gtk_frame_new (_("Channels"));
-  gtk_widget_ref (frame2);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "frame2", frame2,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  xlabel2 = gtk_label_new (_("Resolution"));
+  gtk_widget_set_name (xlabel2, "xlabel2");
+  gtk_widget_show (xlabel2);
+  gtk_frame_set_label_widget (GTK_FRAME (frame1), xlabel2);
+
+  frame2 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame2, "frame2");
   gtk_widget_show (frame2);
   gtk_box_pack_start (GTK_BOX (hbox2), frame2, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame2), 2);
 
   vbox5 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox5);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox5", vbox5,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (vbox5, "vbox5");
   gtk_widget_show (vbox5);
   gtk_container_add (GTK_CONTAINER (frame2), vbox5);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox5), 2);
 
-  stereo = gtk_radio_button_new_with_label (vbox5_group, _("Stereo"));
-  vbox5_group = gtk_radio_button_group (GTK_RADIO_BUTTON (stereo));
-  gtk_widget_ref (stereo);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "stereo", stereo,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  stereo = gtk_radio_button_new_with_mnemonic (NULL, _("Stereo"));
+  gtk_widget_set_name (stereo, "stereo");
   gtk_widget_show (stereo);
   gtk_box_pack_start (GTK_BOX (vbox5), stereo, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (stereo), stereo_group);
+  stereo_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (stereo));
 
-  mono = gtk_radio_button_new_with_label (vbox5_group, _("Mono (downmix)"));
-  vbox5_group = gtk_radio_button_group (GTK_RADIO_BUTTON (mono));
-  gtk_widget_ref (mono);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "mono", mono,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  mono = gtk_radio_button_new_with_mnemonic (NULL, _("Mono (downmix)"));
+  gtk_widget_set_name (mono, "mono");
   gtk_widget_show (mono);
   gtk_box_pack_start (GTK_BOX (vbox5), mono, FALSE, FALSE, 0);
-
-  hbox10 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox10);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "hbox10", hbox10,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hbox10);
-  gtk_box_pack_start (GTK_BOX (vbox3), hbox10, TRUE, TRUE, 0);
-
-  frame3 = gtk_frame_new (_("Sampling Rate"));
-  gtk_widget_ref (frame3);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "frame3", frame3,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (frame3);
-  gtk_box_pack_start (GTK_BOX (hbox10), frame3, TRUE, TRUE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (mono), stereo_group);
+  stereo_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (mono));
 
-  vbox6 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox6);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox6", vbox6,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (vbox6);
-  gtk_container_add (GTK_CONTAINER (frame3), vbox6);
-
-  samp48 = gtk_radio_button_new_with_label (vbox6_group, _("48 kHz"));
-  vbox6_group = gtk_radio_button_group (GTK_RADIO_BUTTON (samp48));
-  gtk_widget_ref (samp48);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "samp48", samp48,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (samp48);
-  gtk_box_pack_start (GTK_BOX (vbox6), samp48, FALSE, FALSE, 0);
+  label3 = gtk_label_new (_("Channels"));
+  gtk_widget_set_name (label3, "label3");
+  gtk_widget_show (label3);
+  gtk_frame_set_label_widget (GTK_FRAME (frame2), label3);
 
-  samp44 = gtk_radio_button_new_with_label (vbox6_group, _("44 kHz"));
-  vbox6_group = gtk_radio_button_group (GTK_RADIO_BUTTON (samp44));
-  gtk_widget_ref (samp44);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "samp44", samp44,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (samp44);
-  gtk_box_pack_start (GTK_BOX (vbox6), samp44, FALSE, FALSE, 0);
+  hbox14 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_set_name (hbox14, "hbox14");
+  gtk_widget_show (hbox14);
+  gtk_box_pack_start (GTK_BOX (vbox3), hbox14, FALSE, TRUE, 0);
 
-  samp22 = gtk_radio_button_new_with_label (vbox6_group, _("22 kHz"));
-  vbox6_group = gtk_radio_button_group (GTK_RADIO_BUTTON (samp22));
-  gtk_widget_ref (samp22);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "samp22", samp22,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (samp22);
-  gtk_box_pack_start (GTK_BOX (vbox6), samp22, FALSE, FALSE, 0);
-
-  samp11 = gtk_radio_button_new_with_label (vbox6_group, _("11 kHz"));
-  vbox6_group = gtk_radio_button_group (GTK_RADIO_BUTTON (samp11));
-  gtk_widget_ref (samp11);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "samp11", samp11,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (samp11);
-  gtk_box_pack_start (GTK_BOX (vbox6), samp11, FALSE, FALSE, 0);
-
-  frame9 = gtk_frame_new (_("Resampling"));
-  gtk_widget_ref (frame9);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "frame9", frame9,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  frame9 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame9, "frame9");
   gtk_widget_show (frame9);
-  gtk_box_pack_start (GTK_BOX (hbox10), frame9, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (hbox14), frame9, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame9), 2);
 
   vbox15 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox15);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox15", vbox15,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (vbox15, "vbox15");
   gtk_widget_show (vbox15);
   gtk_container_add (GTK_CONTAINER (frame9), vbox15);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox15), 2);
 
-  resampNearest = gtk_radio_button_new_with_label (vbox15_group, _("Nearest (fastest)"));
-  vbox15_group = gtk_radio_button_group (GTK_RADIO_BUTTON (resampNearest));
-  gtk_widget_ref (resampNearest);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "resampNearest", resampNearest,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  resampNearest = gtk_radio_button_new_with_mnemonic (NULL, _("Nearest (fastest)"));
+  gtk_widget_set_name (resampNearest, "resampNearest");
   gtk_widget_show (resampNearest);
   gtk_box_pack_start (GTK_BOX (vbox15), resampNearest, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (resampNearest), resampNearest_group);
+  resampNearest_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (resampNearest));
 
-  resampLinear = gtk_radio_button_new_with_label (vbox15_group, _("Linear (fast)"));
-  vbox15_group = gtk_radio_button_group (GTK_RADIO_BUTTON (resampLinear));
-  gtk_widget_ref (resampLinear);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "resampLinear", resampLinear,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  resampLinear = gtk_radio_button_new_with_mnemonic (NULL, _("Linear (fast)"));
+  gtk_widget_set_name (resampLinear, "resampLinear");
   gtk_widget_show (resampLinear);
   gtk_box_pack_start (GTK_BOX (vbox15), resampLinear, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (resampLinear), resampNearest_group);
+  resampNearest_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (resampLinear));
 
-  resampSpline = gtk_radio_button_new_with_label (vbox15_group, _("Spline (good quality)"));
-  vbox15_group = gtk_radio_button_group (GTK_RADIO_BUTTON (resampSpline));
-  gtk_widget_ref (resampSpline);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "resampSpline", resampSpline,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  resampSpline = gtk_radio_button_new_with_mnemonic (NULL, _("Spline (good quality)"));
+  gtk_widget_set_name (resampSpline, "resampSpline");
   gtk_widget_show (resampSpline);
   gtk_box_pack_start (GTK_BOX (vbox15), resampSpline, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (resampSpline), resampNearest_group);
+  resampNearest_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (resampSpline));
 
-  resampPolyphase = gtk_radio_button_new_with_label (vbox15_group, _("8-tap Fir (extremely high quality)"));
-  vbox15_group = gtk_radio_button_group (GTK_RADIO_BUTTON (resampPolyphase));
-  gtk_widget_ref (resampPolyphase);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "resampPolyphase", resampPolyphase,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  resampPolyphase = gtk_radio_button_new_with_mnemonic (NULL, _("8-tap Fir (extremely high quality)"));
+  gtk_widget_set_name (resampPolyphase, "resampPolyphase");
   gtk_widget_show (resampPolyphase);
   gtk_box_pack_start (GTK_BOX (vbox15), resampPolyphase, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (resampPolyphase), resampNearest_group);
+  resampNearest_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (resampPolyphase));
+
+  label4 = gtk_label_new (_("Resampling"));
+  gtk_widget_set_name (label4, "label4");
+  gtk_widget_show (label4);
+  gtk_frame_set_label_widget (GTK_FRAME (frame9), label4);
+
+  frame3 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame3, "frame3");
+  gtk_widget_show (frame3);
+  gtk_box_pack_start (GTK_BOX (hbox14), frame3, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame3), 2);
+
+  vbox6 = gtk_vbox_new (FALSE, 0);
+  gtk_widget_set_name (vbox6, "vbox6");
+  gtk_widget_show (vbox6);
+  gtk_container_add (GTK_CONTAINER (frame3), vbox6);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox6), 2);
+
+  samp44 = gtk_radio_button_new_with_mnemonic (NULL, _("44 kHz"));
+  gtk_widget_set_name (samp44, "samp44");
+  gtk_widget_show (samp44);
+  gtk_box_pack_start (GTK_BOX (vbox6), samp44, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (samp44), samp44_group);
+  samp44_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (samp44));
+
+  samp22 = gtk_radio_button_new_with_mnemonic (NULL, _("22 kHz"));
+  gtk_widget_set_name (samp22, "samp22");
+  gtk_widget_show (samp22);
+  gtk_box_pack_start (GTK_BOX (vbox6), samp22, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (samp22), samp44_group);
+  samp44_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (samp22));
+
+  samp11 = gtk_radio_button_new_with_mnemonic (NULL, _("11 kHz"));
+  gtk_widget_set_name (samp11, "samp11");
+  gtk_widget_show (samp11);
+  gtk_box_pack_start (GTK_BOX (vbox6), samp11, FALSE, FALSE, 0);
+  gtk_button_set_focus_on_click (GTK_BUTTON (samp11), FALSE);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (samp11), samp44_group);
+  samp44_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (samp11));
+
+  label5 = gtk_label_new (_("Sampling Rate"));
+  gtk_widget_set_name (label5, "label5");
+  gtk_widget_show (label5);
+  gtk_frame_set_label_widget (GTK_FRAME (frame3), label5);
 
   label2 = gtk_label_new (_("Quality"));
-  gtk_widget_ref (label2);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label2", label2,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (label2, "label2");
   gtk_widget_show (label2);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label2);
+  gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_CENTER);
 
   vbox7 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox7);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox7", vbox7,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (vbox7, "vbox7");
   gtk_widget_show (vbox7);
   gtk_container_add (GTK_CONTAINER (notebook1), vbox7);
-  gtk_container_set_border_width (GTK_CONTAINER (vbox7), 6);
-
-  frame4 = gtk_frame_new (_("General"));
-  gtk_widget_ref (frame4);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "frame4", frame4,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (frame4);
-  gtk_box_pack_start (GTK_BOX (vbox7), frame4, TRUE, TRUE, 0);
-
-  hbox3 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox3);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "hbox3", hbox3,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hbox3);
-  gtk_container_add (GTK_CONTAINER (frame4), hbox3);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox7), 2);
 
-  vbox8 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox8);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox8", vbox8,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (vbox8);
-  gtk_box_pack_start (GTK_BOX (hbox3), vbox8, TRUE, TRUE, 0);
-
-  fxUseFilename = gtk_check_button_new_with_label (_("Use Filename as Song Title"));
-  gtk_widget_ref (fxUseFilename);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxUseFilename", fxUseFilename,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fxUseFilename);
-  gtk_box_pack_start (GTK_BOX (vbox8), fxUseFilename, FALSE, FALSE, 0);
-
-  fxFastInfo = gtk_check_button_new_with_label (_("Fast Playlist Info"));
-  gtk_widget_ref (fxFastInfo);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxFastInfo", fxFastInfo,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fxFastInfo);
-  gtk_box_pack_start (GTK_BOX (vbox8), fxFastInfo, FALSE, FALSE, 0);
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxFastInfo), TRUE);
+  hbox15 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_set_name (hbox15, "hbox15");
+  gtk_widget_show (hbox15);
+  gtk_box_pack_start (GTK_BOX (vbox7), hbox15, FALSE, TRUE, 0);
 
-  vbox9 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox9);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox9", vbox9,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (vbox9);
-  gtk_box_pack_start (GTK_BOX (hbox3), vbox9, TRUE, TRUE, 0);
-
-  fxNR = gtk_check_button_new_with_label (_("Noise Reduction"));
-  gtk_widget_ref (fxNR);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxNR", fxNR,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fxNR);
-  gtk_box_pack_start (GTK_BOX (vbox9), fxNR, FALSE, FALSE, 0);
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxNR), TRUE);
+  frame5 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame5, "frame5");
+  gtk_widget_show (frame5);
+  gtk_box_pack_start (GTK_BOX (hbox15), frame5, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame5), 2);
 
-  fxAmigaMOD = gtk_check_button_new_with_label (_("Play Amiga MOD"));
-  gtk_widget_ref (fxAmigaMOD);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxAmigaMOD", fxAmigaMOD,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fxAmigaMOD);
-  gtk_box_pack_start (GTK_BOX (vbox9), fxAmigaMOD, FALSE, FALSE, 0);
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxAmigaMOD), TRUE);
+  vbox20 = gtk_vbox_new (FALSE, 0);
+  gtk_widget_set_name (vbox20, "vbox20");
+  gtk_widget_show (vbox20);
+  gtk_container_add (GTK_CONTAINER (frame5), vbox20);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox20), 2);
 
-  frame5 = gtk_frame_new (_("Reverb"));
-  gtk_widget_ref (frame5);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "frame5", frame5,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (frame5);
-  gtk_box_pack_start (GTK_BOX (vbox7), frame5, TRUE, TRUE, 0);
-
-  hbox4 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox4);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "hbox4", hbox4,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hbox4);
-  gtk_container_add (GTK_CONTAINER (frame5), hbox4);
-
-  fxReverb = gtk_check_button_new_with_label (_("Enable"));
-  gtk_widget_ref (fxReverb);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxReverb", fxReverb,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  fxReverb = gtk_check_button_new_with_mnemonic (_("Enable"));
+  gtk_widget_set_name (fxReverb, "fxReverb");
   gtk_widget_show (fxReverb);
-  gtk_box_pack_start (GTK_BOX (hbox4), fxReverb, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox20), fxReverb, FALSE, FALSE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (fxReverb), 2);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxReverb), TRUE);
 
-  vbox10 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox10);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox10", vbox10,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (vbox10);
-  gtk_box_pack_start (GTK_BOX (hbox4), vbox10, TRUE, TRUE, 0);
-
   table1 = gtk_table_new (2, 2, FALSE);
-  gtk_widget_ref (table1);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "table1", table1,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (table1, "table1");
   gtk_widget_show (table1);
-  gtk_box_pack_start (GTK_BOX (vbox10), table1, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox20), table1, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (table1), 2);
+  gtk_table_set_row_spacings (GTK_TABLE (table1), 4);
+  gtk_table_set_col_spacings (GTK_TABLE (table1), 4);
 
   fxReverbDepth = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (30, 0, 100, 0, 0, 0)));
-  gtk_widget_ref (fxReverbDepth);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxReverbDepth", fxReverbDepth,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (fxReverbDepth, "fxReverbDepth");
   gtk_widget_show (fxReverbDepth);
   gtk_table_attach (GTK_TABLE (table1), fxReverbDepth, 1, 2, 0, 1,
                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
 
   fxReverbDelay = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (90, 40, 200, 0, 0, 0)));
-  gtk_widget_ref (fxReverbDelay);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxReverbDelay", fxReverbDelay,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (fxReverbDelay, "fxReverbDelay");
   gtk_widget_show (fxReverbDelay);
   gtk_table_attach (GTK_TABLE (table1), fxReverbDelay, 1, 2, 1, 2,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
 
-  label3 = gtk_label_new (_("Depth"));
-  gtk_widget_ref (label3);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label3", label3,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label3);
-  gtk_table_attach (GTK_TABLE (table1), label3, 0, 1, 0, 1,
+  xlabel3 = gtk_label_new (_("Depth"));
+  gtk_widget_set_name (xlabel3, "xlabel3");
+  gtk_widget_show (xlabel3);
+  gtk_table_attach (GTK_TABLE (table1), xlabel3, 0, 1, 0, 1,
                     (GtkAttachOptions) (0),
                     (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (xlabel3), GTK_JUSTIFY_CENTER);
 
-  label4 = gtk_label_new (_("Delay"));
-  gtk_widget_ref (label4);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label4", label4,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label4);
-  gtk_table_attach (GTK_TABLE (table1), label4, 0, 1, 1, 2,
+  xlabel4 = gtk_label_new (_("Delay"));
+  gtk_widget_set_name (xlabel4, "xlabel4");
+  gtk_widget_show (xlabel4);
+  gtk_table_attach (GTK_TABLE (table1), xlabel4, 0, 1, 1, 2,
                     (GtkAttachOptions) (0),
                     (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (xlabel4), GTK_JUSTIFY_CENTER);
 
-  frame6 = gtk_frame_new (_("Bass Boost"));
-  gtk_widget_ref (frame6);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "frame6", frame6,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (frame6);
-  gtk_box_pack_start (GTK_BOX (vbox7), frame6, TRUE, TRUE, 0);
+  label6 = gtk_label_new (_("Reverb"));
+  gtk_widget_set_name (label6, "label6");
+  gtk_widget_show (label6);
+  gtk_frame_set_label_widget (GTK_FRAME (frame5), label6);
 
-  hbox5 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox5);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "hbox5", hbox5,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hbox5);
-  gtk_container_add (GTK_CONTAINER (frame6), hbox5);
+  frame6 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame6, "frame6");
+  gtk_widget_show (frame6);
+  gtk_box_pack_start (GTK_BOX (hbox15), frame6, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame6), 2);
 
-  fxBassBoost = gtk_check_button_new_with_label (_("Enable"));
-  gtk_widget_ref (fxBassBoost);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxBassBoost", fxBassBoost,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  vbox21 = gtk_vbox_new (FALSE, 0);
+  gtk_widget_set_name (vbox21, "vbox21");
+  gtk_widget_show (vbox21);
+  gtk_container_add (GTK_CONTAINER (frame6), vbox21);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox21), 2);
+
+  fxBassBoost = gtk_check_button_new_with_mnemonic (_("Enable"));
+  gtk_widget_set_name (fxBassBoost, "fxBassBoost");
   gtk_widget_show (fxBassBoost);
-  gtk_box_pack_start (GTK_BOX (hbox5), fxBassBoost, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox21), fxBassBoost, FALSE, FALSE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (fxBassBoost), 2);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxBassBoost), TRUE);
 
-  vbox11 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox11);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox11", vbox11,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (vbox11);
-  gtk_box_pack_start (GTK_BOX (hbox5), vbox11, TRUE, TRUE, 0);
-
   table2 = gtk_table_new (2, 2, FALSE);
-  gtk_widget_ref (table2);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "table2", table2,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (table2, "table2");
   gtk_widget_show (table2);
-  gtk_box_pack_start (GTK_BOX (vbox11), table2, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox21), table2, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (table2), 2);
+  gtk_table_set_row_spacings (GTK_TABLE (table2), 4);
+  gtk_table_set_col_spacings (GTK_TABLE (table2), 4);
 
   fxBassAmount = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (30, 0, 100, 0, 0, 0)));
-  gtk_widget_ref (fxBassAmount);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxBassAmount", fxBassAmount,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (fxBassAmount, "fxBassAmount");
   gtk_widget_show (fxBassAmount);
   gtk_table_attach (GTK_TABLE (table2), fxBassAmount, 1, 2, 0, 1,
                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
 
   fxBassRange = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (30, 10, 100, 0, 0, 0)));
-  gtk_widget_ref (fxBassRange);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxBassRange", fxBassRange,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (fxBassRange, "fxBassRange");
   gtk_widget_show (fxBassRange);
   gtk_table_attach (GTK_TABLE (table2), fxBassRange, 1, 2, 1, 2,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
 
-  label5 = gtk_label_new (_("Amount"));
-  gtk_widget_ref (label5);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label5", label5,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label5);
-  gtk_table_attach (GTK_TABLE (table2), label5, 0, 1, 0, 1,
+  xlabel5 = gtk_label_new (_("Amount"));
+  gtk_widget_set_name (xlabel5, "xlabel5");
+  gtk_widget_show (xlabel5);
+  gtk_table_attach (GTK_TABLE (table2), xlabel5, 0, 1, 0, 1,
                     (GtkAttachOptions) (0),
                     (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (xlabel5), GTK_JUSTIFY_CENTER);
 
-  label6 = gtk_label_new (_("Range"));
-  gtk_widget_ref (label6);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label6", label6,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label6);
-  gtk_table_attach (GTK_TABLE (table2), label6, 0, 1, 1, 2,
+  xlabel6 = gtk_label_new (_("Range"));
+  gtk_widget_set_name (xlabel6, "xlabel6");
+  gtk_widget_show (xlabel6);
+  gtk_table_attach (GTK_TABLE (table2), xlabel6, 0, 1, 1, 2,
                     (GtkAttachOptions) (0),
                     (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (xlabel6), GTK_JUSTIFY_CENTER);
 
-  frame7 = gtk_frame_new (_("Surround"));
-  gtk_widget_ref (frame7);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "frame7", frame7,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (frame7);
-  gtk_box_pack_start (GTK_BOX (vbox7), frame7, TRUE, TRUE, 0);
+  label7 = gtk_label_new (_("Bass Boost"));
+  gtk_widget_set_name (label7, "label7");
+  gtk_widget_show (label7);
+  gtk_frame_set_label_widget (GTK_FRAME (frame6), label7);
+
+  hbox16 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_set_name (hbox16, "hbox16");
+  gtk_widget_show (hbox16);
+  gtk_box_pack_start (GTK_BOX (vbox7), hbox16, FALSE, TRUE, 0);
 
-  hbox6 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox6);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "hbox6", hbox6,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hbox6);
-  gtk_container_add (GTK_CONTAINER (frame7), hbox6);
+  frame7 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame7, "frame7");
+  gtk_widget_show (frame7);
+  gtk_box_pack_start (GTK_BOX (hbox16), frame7, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame7), 2);
 
-  fxSurround = gtk_check_button_new_with_label (_("Enable"));
-  gtk_widget_ref (fxSurround);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxSurround", fxSurround,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  vbox22 = gtk_vbox_new (FALSE, 0);
+  gtk_widget_set_name (vbox22, "vbox22");
+  gtk_widget_show (vbox22);
+  gtk_container_add (GTK_CONTAINER (frame7), vbox22);
+
+  fxSurround = gtk_check_button_new_with_mnemonic (_("Enable"));
+  gtk_widget_set_name (fxSurround, "fxSurround");
   gtk_widget_show (fxSurround);
-  gtk_box_pack_start (GTK_BOX (hbox6), fxSurround, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox22), fxSurround, FALSE, FALSE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (fxSurround), 2);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxSurround), TRUE);
 
-  vbox12 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox12);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox12", vbox12,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (vbox12);
-  gtk_box_pack_start (GTK_BOX (hbox6), vbox12, TRUE, TRUE, 0);
-
   table3 = gtk_table_new (2, 2, FALSE);
-  gtk_widget_ref (table3);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "table3", table3,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (table3, "table3");
   gtk_widget_show (table3);
-  gtk_box_pack_start (GTK_BOX (vbox12), table3, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox22), table3, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (table3), 2);
+  gtk_table_set_row_spacings (GTK_TABLE (table3), 4);
+  gtk_table_set_col_spacings (GTK_TABLE (table3), 4);
 
   fxSurroundDepth = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (20, 0, 100, 0, 0, 0)));
-  gtk_widget_ref (fxSurroundDepth);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxSurroundDepth", fxSurroundDepth,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (fxSurroundDepth, "fxSurroundDepth");
   gtk_widget_show (fxSurroundDepth);
   gtk_table_attach (GTK_TABLE (table3), fxSurroundDepth, 1, 2, 0, 1,
                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
 
   fxSurroundDelay = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (20, 5, 40, 0, 0, 0)));
-  gtk_widget_ref (fxSurroundDelay);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxSurroundDelay", fxSurroundDelay,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (fxSurroundDelay, "fxSurroundDelay");
   gtk_widget_show (fxSurroundDelay);
   gtk_table_attach (GTK_TABLE (table3), fxSurroundDelay, 1, 2, 1, 2,
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
 
-  label7 = gtk_label_new (_("Depth"));
-  gtk_widget_ref (label7);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label7", label7,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label7);
-  gtk_table_attach (GTK_TABLE (table3), label7, 0, 1, 0, 1,
+  xlabel7 = gtk_label_new (_("Depth"));
+  gtk_widget_set_name (xlabel7, "xlabel7");
+  gtk_widget_show (xlabel7);
+  gtk_table_attach (GTK_TABLE (table3), xlabel7, 0, 1, 0, 1,
                     (GtkAttachOptions) (0),
                     (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (xlabel7), GTK_JUSTIFY_CENTER);
 
   label8 = gtk_label_new (_("Delay"));
-  gtk_widget_ref (label8);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label8", label8,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (label8, "label8");
   gtk_widget_show (label8);
   gtk_table_attach (GTK_TABLE (table3), label8, 0, 1, 1, 2,
                     (GtkAttachOptions) (0),
                     (GtkAttachOptions) (0), 0, 0);
+  gtk_label_set_justify (GTK_LABEL (label8), GTK_JUSTIFY_CENTER);
 
-  frame10 = gtk_frame_new (_("Preamp"));
-  gtk_widget_ref (frame10);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "frame10", frame10,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  xlabel8 = gtk_label_new (_("Surround"));
+  gtk_widget_set_name (xlabel8, "xlabel8");
+  gtk_widget_show (xlabel8);
+  gtk_frame_set_label_widget (GTK_FRAME (frame7), xlabel8);
+
+  frame10 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame10, "frame10");
   gtk_widget_show (frame10);
-  gtk_box_pack_start (GTK_BOX (vbox7), frame10, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (hbox16), frame10, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame10), 2);
 
-  vbox16 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox16);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox16", vbox16,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  vbox16 = gtk_vbox_new (FALSE, 2);
+  gtk_widget_set_name (vbox16, "vbox16");
   gtk_widget_show (vbox16);
   gtk_container_add (GTK_CONTAINER (frame10), vbox16);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox16), 4);
 
-  label20 = gtk_label_new (_("Note:  Setting the preamp too high may cause\nclipping / distortion!"));
-  gtk_widget_ref (label20);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label20", label20,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label20);
-  gtk_box_pack_start (GTK_BOX (vbox16), label20, FALSE, FALSE, 0);
+  fxPreamp = gtk_check_button_new_with_mnemonic (_("Enable"));
+  gtk_widget_set_name (fxPreamp, "fxPreamp");
+  gtk_widget_show (fxPreamp);
+  gtk_box_pack_start (GTK_BOX (vbox16), fxPreamp, FALSE, FALSE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (fxPreamp), 2);
 
-  hbox11 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox11);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "hbox11", hbox11,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  hbox11 = gtk_hbox_new (FALSE, 4);
+  gtk_widget_set_name (hbox11, "hbox11");
   gtk_widget_show (hbox11);
   gtk_box_pack_start (GTK_BOX (vbox16), hbox11, TRUE, TRUE, 0);
 
-  fxPreamp = gtk_check_button_new_with_label (_("Enable"));
-  gtk_widget_ref (fxPreamp);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxPreamp", fxPreamp,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (fxPreamp);
-  gtk_box_pack_start (GTK_BOX (hbox11), fxPreamp, FALSE, FALSE, 0);
-
   label19 = gtk_label_new (_("Volume"));
-  gtk_widget_ref (label19);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label19", label19,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (label19, "label19");
   gtk_widget_show (label19);
   gtk_box_pack_start (GTK_BOX (hbox11), label19, FALSE, FALSE, 0);
+  gtk_label_set_justify (GTK_LABEL (label19), GTK_JUSTIFY_CENTER);
 
   fxPreampLevel = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -3, 3, 1, 0, 0)));
-  gtk_widget_ref (fxPreampLevel);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxPreampLevel", fxPreampLevel,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (fxPreampLevel, "fxPreampLevel");
   gtk_widget_show (fxPreampLevel);
   gtk_box_pack_start (GTK_BOX (hbox11), fxPreampLevel, TRUE, TRUE, 0);
 
-  frame11 = gtk_frame_new (_("Looping"));
-  gtk_widget_ref (frame11);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "frame11", frame11,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  label20 = gtk_label_new (_("Note:  Setting the preamp\ntoo high may cause clipping\n(annoying clicks and pops)!"));
+  gtk_widget_set_name (label20, "label20");
+  gtk_widget_show (label20);
+  gtk_box_pack_start (GTK_BOX (vbox16), label20, FALSE, FALSE, 0);
+  gtk_label_set_justify (GTK_LABEL (label20), GTK_JUSTIFY_CENTER);
+
+  label9 = gtk_label_new (_("Preamp"));
+  gtk_widget_set_name (label9, "label9");
+  gtk_widget_show (label9);
+  gtk_frame_set_label_widget (GTK_FRAME (frame10), label9);
+
+  label10 = gtk_label_new (_("Effects"));
+  gtk_widget_set_name (label10, "label10");
+  gtk_widget_show (label10);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label10);
+  gtk_label_set_justify (GTK_LABEL (label10), GTK_JUSTIFY_CENTER);
+
+  vbox19 = gtk_vbox_new (FALSE, 0);
+  gtk_widget_set_name (vbox19, "vbox19");
+  gtk_widget_show (vbox19);
+  gtk_container_add (GTK_CONTAINER (notebook1), vbox19);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox19), 2);
+
+  frame4 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame4, "frame4");
+  gtk_widget_show (frame4);
+  gtk_box_pack_start (GTK_BOX (vbox19), frame4, FALSE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame4), 2);
+
+  hbox3 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_set_name (hbox3, "hbox3");
+  gtk_widget_show (hbox3);
+  gtk_container_add (GTK_CONTAINER (frame4), hbox3);
+  gtk_container_set_border_width (GTK_CONTAINER (hbox3), 2);
+
+  vbox8 = gtk_vbox_new (FALSE, 0);
+  gtk_widget_set_name (vbox8, "vbox8");
+  gtk_widget_show (vbox8);
+  gtk_box_pack_start (GTK_BOX (hbox3), vbox8, TRUE, TRUE, 0);
+
+  fxUseFilename = gtk_check_button_new_with_mnemonic (_("Use Filename as Song Title"));
+  gtk_widget_set_name (fxUseFilename, "fxUseFilename");
+  gtk_widget_show (fxUseFilename);
+  gtk_box_pack_start (GTK_BOX (vbox8), fxUseFilename, FALSE, FALSE, 0);
+
+  fxFastInfo = gtk_check_button_new_with_mnemonic (_("Fast Playlist Info"));
+  gtk_widget_set_name (fxFastInfo, "fxFastInfo");
+  gtk_widget_show (fxFastInfo);
+  gtk_box_pack_start (GTK_BOX (vbox8), fxFastInfo, FALSE, FALSE, 0);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxFastInfo), TRUE);
+
+  vbox9 = gtk_vbox_new (FALSE, 0);
+  gtk_widget_set_name (vbox9, "vbox9");
+  gtk_widget_show (vbox9);
+  gtk_box_pack_start (GTK_BOX (hbox3), vbox9, TRUE, TRUE, 0);
+
+  fxNR = gtk_check_button_new_with_mnemonic (_("Noise Reduction"));
+  gtk_widget_set_name (fxNR, "fxNR");
+  gtk_widget_show (fxNR);
+  gtk_box_pack_start (GTK_BOX (vbox9), fxNR, FALSE, FALSE, 0);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxNR), TRUE);
+
+  fxAmigaMOD = gtk_check_button_new_with_mnemonic (_("Play Amiga MOD"));
+  gtk_widget_set_name (fxAmigaMOD, "fxAmigaMOD");
+  gtk_widget_show (fxAmigaMOD);
+  gtk_box_pack_start (GTK_BOX (vbox9), fxAmigaMOD, FALSE, FALSE, 0);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxAmigaMOD), TRUE);
+
+  label21 = gtk_label_new (_("General"));
+  gtk_widget_set_name (label21, "label21");
+  gtk_widget_show (label21);
+  gtk_frame_set_label_widget (GTK_FRAME (frame4), label21);
+
+  frame11 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame11, "frame11");
   gtk_widget_show (frame11);
-  gtk_box_pack_start (GTK_BOX (vbox7), frame11, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox19), frame11, FALSE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (frame11), 2);
 
   vbox17 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox17);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "vbox17", vbox17,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (vbox17, "vbox17");
   gtk_widget_show (vbox17);
   gtk_container_add (GTK_CONTAINER (frame11), vbox17);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox17), 2);
 
-  fxNoLoop = gtk_radio_button_new_with_label (loopGroup_group, _("Don't loop"));
-  loopGroup_group = gtk_radio_button_group (GTK_RADIO_BUTTON (fxNoLoop));
-  gtk_widget_ref (fxNoLoop);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxNoLoop", fxNoLoop,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  fxNoLoop = gtk_radio_button_new_with_mnemonic (NULL, _("Don't loop"));
+  gtk_widget_set_name (fxNoLoop, "fxNoLoop");
   gtk_widget_show (fxNoLoop);
   gtk_box_pack_start (GTK_BOX (vbox17), fxNoLoop, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (fxNoLoop), fxNoLoop_group);
+  fxNoLoop_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (fxNoLoop));
 
   hbox13 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox13);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "hbox13", hbox13,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (hbox13, "hbox13");
   gtk_widget_show (hbox13);
   gtk_box_pack_start (GTK_BOX (vbox17), hbox13, FALSE, FALSE, 0);
 
-  fxLoopFinite = gtk_radio_button_new_with_label (loopGroup_group, _("Loop"));
-  loopGroup_group = gtk_radio_button_group (GTK_RADIO_BUTTON (fxLoopFinite));
-  gtk_widget_ref (fxLoopFinite);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxLoopFinite", fxLoopFinite,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  fxLoopFinite = gtk_radio_button_new_with_mnemonic (NULL, _("Loop"));
+  gtk_widget_set_name (fxLoopFinite, "fxLoopFinite");
   gtk_widget_show (fxLoopFinite);
   gtk_box_pack_start (GTK_BOX (hbox13), fxLoopFinite, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (fxLoopFinite), fxNoLoop_group);
+  fxNoLoop_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (fxLoopFinite));
 
   fxLoopCount_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
   fxLoopCount = gtk_spin_button_new (GTK_ADJUSTMENT (fxLoopCount_adj), 1, 0);
-  gtk_widget_ref (fxLoopCount);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxLoopCount", fxLoopCount,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (fxLoopCount, "fxLoopCount");
   gtk_widget_show (fxLoopCount);
   gtk_box_pack_start (GTK_BOX (hbox13), fxLoopCount, FALSE, TRUE, 0);
 
-  label21 = gtk_label_new (_("time(s)"));
-  gtk_widget_ref (label21);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label21", label21,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label21);
-  gtk_box_pack_start (GTK_BOX (hbox13), label21, FALSE, FALSE, 0);
+  xlabel21 = gtk_label_new (_("time(s)"));
+  gtk_widget_set_name (xlabel21, "xlabel21");
+  gtk_widget_show (xlabel21);
+  gtk_box_pack_start (GTK_BOX (hbox13), xlabel21, FALSE, FALSE, 0);
+  gtk_label_set_justify (GTK_LABEL (xlabel21), GTK_JUSTIFY_CENTER);
 
-  fxLoopForever = gtk_radio_button_new_with_label (loopGroup_group, _("Loop forever"));
-  loopGroup_group = gtk_radio_button_group (GTK_RADIO_BUTTON (fxLoopForever));
-  gtk_widget_ref (fxLoopForever);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "fxLoopForever", fxLoopForever,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  fxLoopForever = gtk_radio_button_new_with_mnemonic (NULL, _("Loop forever"));
+  gtk_widget_set_name (fxLoopForever, "fxLoopForever");
   gtk_widget_show (fxLoopForever);
   gtk_box_pack_start (GTK_BOX (vbox17), fxLoopForever, FALSE, FALSE, 0);
+  gtk_radio_button_set_group (GTK_RADIO_BUTTON (fxLoopForever), fxNoLoop_group);
+  fxNoLoop_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (fxLoopForever));
 
-  label10 = gtk_label_new (_("Effects"));
-  gtk_widget_ref (label10);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "label10", label10,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label10);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label10);
+  label22 = gtk_label_new (_("Looping"));
+  gtk_widget_set_name (label22, "label22");
+  gtk_widget_show (label22);
+  gtk_frame_set_label_widget (GTK_FRAME (frame11), label22);
+
+  xlabel22 = gtk_label_new (_("Misc"));
+  gtk_widget_set_name (xlabel22, "xlabel22");
+  gtk_widget_show (xlabel22);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), xlabel22);
+  gtk_label_set_justify (GTK_LABEL (xlabel22), GTK_JUSTIFY_CENTER);
 
   hbuttonbox2 = gtk_hbutton_box_new ();
-  gtk_widget_ref (hbuttonbox2);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "hbuttonbox2", hbuttonbox2,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (hbuttonbox2, "hbuttonbox2");
   gtk_widget_show (hbuttonbox2);
   gtk_box_pack_start (GTK_BOX (vbox2), hbuttonbox2, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox2), 4);
   gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox2), GTK_BUTTONBOX_END);
-  gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox2), 5);
+  gtk_box_set_spacing (GTK_BOX (hbuttonbox2), 8);
 
-  config_ok = gtk_button_new_with_label (_("OK"));
-  gtk_widget_ref (config_ok);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "config_ok", config_ok,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  config_ok = gtk_button_new_with_mnemonic (_("OK"));
+  gtk_widget_set_name (config_ok, "config_ok");
   gtk_widget_show (config_ok);
   gtk_container_add (GTK_CONTAINER (hbuttonbox2), config_ok);
   GTK_WIDGET_SET_FLAGS (config_ok, GTK_CAN_DEFAULT);
 
-  config_apply = gtk_button_new_with_label (_("Apply"));
-  gtk_widget_ref (config_apply);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "config_apply", config_apply,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  config_apply = gtk_button_new_with_mnemonic (_("Apply"));
+  gtk_widget_set_name (config_apply, "config_apply");
   gtk_widget_show (config_apply);
   gtk_container_add (GTK_CONTAINER (hbuttonbox2), config_apply);
   GTK_WIDGET_SET_FLAGS (config_apply, GTK_CAN_DEFAULT);
 
-  config_cancel = gtk_button_new_with_label (_("Cancel"));
-  gtk_widget_ref (config_cancel);
-  gtk_object_set_data_full (GTK_OBJECT (Config), "config_cancel", config_cancel,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  config_cancel = gtk_button_new_with_mnemonic (_("Cancel"));
+  gtk_widget_set_name (config_cancel, "config_cancel");
   gtk_widget_show (config_cancel);
   gtk_container_add (GTK_CONTAINER (hbuttonbox2), config_cancel);
   GTK_WIDGET_SET_FLAGS (config_cancel, GTK_CAN_DEFAULT);
 
-  gtk_signal_connect (GTK_OBJECT (Config), "delete_event",
-                      GTK_SIGNAL_FUNC (hide_window),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (config_ok), "clicked",
-                      GTK_SIGNAL_FUNC (on_config_ok_clicked),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (config_apply), "clicked",
-                      GTK_SIGNAL_FUNC (on_config_apply_clicked),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (config_cancel), "clicked",
-                      GTK_SIGNAL_FUNC (on_config_cancel_clicked),
-                      NULL);
+  g_signal_connect ((gpointer) Config, "delete_event",
+                    G_CALLBACK (hide_window),
+                    NULL);
+  g_signal_connect ((gpointer) config_ok, "clicked",
+                    G_CALLBACK (on_config_ok_clicked),
+                    NULL);
+  g_signal_connect ((gpointer) config_apply, "clicked",
+                    G_CALLBACK (on_config_apply_clicked),
+                    NULL);
+  g_signal_connect ((gpointer) config_cancel, "clicked",
+                    G_CALLBACK (on_config_cancel_clicked),
+                    NULL);
+
+  /* Store pointers to all widgets, for use by lookup_widget(). */
+  GLADE_HOOKUP_OBJECT_NO_REF (Config, Config, "Config");
+  GLADE_HOOKUP_OBJECT (Config, vbox2, "vbox2");
+  GLADE_HOOKUP_OBJECT (Config, notebook1, "notebook1");
+  GLADE_HOOKUP_OBJECT (Config, vbox3, "vbox3");
+  GLADE_HOOKUP_OBJECT (Config, hbox2, "hbox2");
+  GLADE_HOOKUP_OBJECT (Config, frame1, "frame1");
+  GLADE_HOOKUP_OBJECT (Config, vbox4, "vbox4");
+  GLADE_HOOKUP_OBJECT (Config, bit16, "bit16");
+  GLADE_HOOKUP_OBJECT (Config, bit8, "bit8");
+  GLADE_HOOKUP_OBJECT (Config, xlabel2, "xlabel2");
+  GLADE_HOOKUP_OBJECT (Config, frame2, "frame2");
+  GLADE_HOOKUP_OBJECT (Config, vbox5, "vbox5");
+  GLADE_HOOKUP_OBJECT (Config, stereo, "stereo");
+  GLADE_HOOKUP_OBJECT (Config, mono, "mono");
+  GLADE_HOOKUP_OBJECT (Config, label3, "label3");
+  GLADE_HOOKUP_OBJECT (Config, hbox14, "hbox14");
+  GLADE_HOOKUP_OBJECT (Config, frame9, "frame9");
+  GLADE_HOOKUP_OBJECT (Config, vbox15, "vbox15");
+  GLADE_HOOKUP_OBJECT (Config, resampNearest, "resampNearest");
+  GLADE_HOOKUP_OBJECT (Config, resampLinear, "resampLinear");
+  GLADE_HOOKUP_OBJECT (Config, resampSpline, "resampSpline");
+  GLADE_HOOKUP_OBJECT (Config, resampPolyphase, "resampPolyphase");
+  GLADE_HOOKUP_OBJECT (Config, label4, "label4");
+  GLADE_HOOKUP_OBJECT (Config, frame3, "frame3");
+  GLADE_HOOKUP_OBJECT (Config, vbox6, "vbox6");
+  GLADE_HOOKUP_OBJECT (Config, samp44, "samp44");
+  GLADE_HOOKUP_OBJECT (Config, samp22, "samp22");
+  GLADE_HOOKUP_OBJECT (Config, samp11, "samp11");
+  GLADE_HOOKUP_OBJECT (Config, label5, "label5");
+  GLADE_HOOKUP_OBJECT (Config, label2, "label2");
+  GLADE_HOOKUP_OBJECT (Config, vbox7, "vbox7");
+  GLADE_HOOKUP_OBJECT (Config, hbox15, "hbox15");
+  GLADE_HOOKUP_OBJECT (Config, frame5, "frame5");
+  GLADE_HOOKUP_OBJECT (Config, vbox20, "vbox20");
+  GLADE_HOOKUP_OBJECT (Config, fxReverb, "fxReverb");
+  GLADE_HOOKUP_OBJECT (Config, table1, "table1");
+  GLADE_HOOKUP_OBJECT (Config, fxReverbDepth, "fxReverbDepth");
+  GLADE_HOOKUP_OBJECT (Config, fxReverbDelay, "fxReverbDelay");
+  GLADE_HOOKUP_OBJECT (Config, xlabel3, "xlabel3");
+  GLADE_HOOKUP_OBJECT (Config, xlabel4, "xlabel4");
+  GLADE_HOOKUP_OBJECT (Config, label6, "label6");
+  GLADE_HOOKUP_OBJECT (Config, frame6, "frame6");
+  GLADE_HOOKUP_OBJECT (Config, vbox21, "vbox21");
+  GLADE_HOOKUP_OBJECT (Config, fxBassBoost, "fxBassBoost");
+  GLADE_HOOKUP_OBJECT (Config, table2, "table2");
+  GLADE_HOOKUP_OBJECT (Config, fxBassAmount, "fxBassAmount");
+  GLADE_HOOKUP_OBJECT (Config, fxBassRange, "fxBassRange");
+  GLADE_HOOKUP_OBJECT (Config, xlabel5, "xlabel5");
+  GLADE_HOOKUP_OBJECT (Config, xlabel6, "xlabel6");
+  GLADE_HOOKUP_OBJECT (Config, label7, "label7");
+  GLADE_HOOKUP_OBJECT (Config, hbox16, "hbox16");
+  GLADE_HOOKUP_OBJECT (Config, frame7, "frame7");
+  GLADE_HOOKUP_OBJECT (Config, vbox22, "vbox22");
+  GLADE_HOOKUP_OBJECT (Config, fxSurround, "fxSurround");
+  GLADE_HOOKUP_OBJECT (Config, table3, "table3");
+  GLADE_HOOKUP_OBJECT (Config, fxSurroundDepth, "fxSurroundDepth");
+  GLADE_HOOKUP_OBJECT (Config, fxSurroundDelay, "fxSurroundDelay");
+  GLADE_HOOKUP_OBJECT (Config, xlabel7, "xlabel7");
+  GLADE_HOOKUP_OBJECT (Config, label8, "label8");
+  GLADE_HOOKUP_OBJECT (Config, xlabel8, "xlabel8");
+  GLADE_HOOKUP_OBJECT (Config, frame10, "frame10");
+  GLADE_HOOKUP_OBJECT (Config, vbox16, "vbox16");
+  GLADE_HOOKUP_OBJECT (Config, fxPreamp, "fxPreamp");
+  GLADE_HOOKUP_OBJECT (Config, hbox11, "hbox11");
+  GLADE_HOOKUP_OBJECT (Config, label19, "label19");
+  GLADE_HOOKUP_OBJECT (Config, fxPreampLevel, "fxPreampLevel");
+  GLADE_HOOKUP_OBJECT (Config, label20, "label20");
+  GLADE_HOOKUP_OBJECT (Config, label9, "label9");
+  GLADE_HOOKUP_OBJECT (Config, label10, "label10");
+  GLADE_HOOKUP_OBJECT (Config, vbox19, "vbox19");
+  GLADE_HOOKUP_OBJECT (Config, frame4, "frame4");
+  GLADE_HOOKUP_OBJECT (Config, hbox3, "hbox3");
+  GLADE_HOOKUP_OBJECT (Config, vbox8, "vbox8");
+  GLADE_HOOKUP_OBJECT (Config, fxUseFilename, "fxUseFilename");
+  GLADE_HOOKUP_OBJECT (Config, fxFastInfo, "fxFastInfo");
+  GLADE_HOOKUP_OBJECT (Config, vbox9, "vbox9");
+  GLADE_HOOKUP_OBJECT (Config, fxNR, "fxNR");
+  GLADE_HOOKUP_OBJECT (Config, fxAmigaMOD, "fxAmigaMOD");
+  GLADE_HOOKUP_OBJECT (Config, label21, "label21");
+  GLADE_HOOKUP_OBJECT (Config, frame11, "frame11");
+  GLADE_HOOKUP_OBJECT (Config, vbox17, "vbox17");
+  GLADE_HOOKUP_OBJECT (Config, fxNoLoop, "fxNoLoop");
+  GLADE_HOOKUP_OBJECT (Config, hbox13, "hbox13");
+  GLADE_HOOKUP_OBJECT (Config, fxLoopFinite, "fxLoopFinite");
+  GLADE_HOOKUP_OBJECT (Config, fxLoopCount, "fxLoopCount");
+  GLADE_HOOKUP_OBJECT (Config, xlabel21, "xlabel21");
+  GLADE_HOOKUP_OBJECT (Config, fxLoopForever, "fxLoopForever");
+  GLADE_HOOKUP_OBJECT (Config, label22, "label22");
+  GLADE_HOOKUP_OBJECT (Config, xlabel22, "xlabel22");
+  GLADE_HOOKUP_OBJECT (Config, hbuttonbox2, "hbuttonbox2");
+  GLADE_HOOKUP_OBJECT (Config, config_ok, "config_ok");
+  GLADE_HOOKUP_OBJECT (Config, config_apply, "config_apply");
+  GLADE_HOOKUP_OBJECT (Config, config_cancel, "config_cancel");
 
   return Config;
 }
@@ -781,182 +839,160 @@
   GtkWidget *info_instruments;
   GtkWidget *label17;
   GtkWidget *scrolledwindow3;
-  GtkWidget *viewport3;
   GtkWidget *info_message;
   GtkWidget *label18;
   GtkWidget *hbuttonbox3;
   GtkWidget *info_close;
 
   Info = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_object_set_data (GTK_OBJECT (Info), "Info", Info);
-  gtk_widget_set_usize (Info, -1, 264);
+  gtk_widget_set_name (Info, "Info");
   gtk_window_set_title (GTK_WINDOW (Info), _("MOD Info"));
 
   vbox14 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_ref (vbox14);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "vbox14", vbox14,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (vbox14, "vbox14");
   gtk_widget_show (vbox14);
   gtk_container_add (GTK_CONTAINER (Info), vbox14);
 
   notebook2 = gtk_notebook_new ();
-  gtk_widget_ref (notebook2);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "notebook2", notebook2,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (notebook2, "notebook2");
   gtk_widget_show (notebook2);
   gtk_box_pack_start (GTK_BOX (vbox14), notebook2, TRUE, TRUE, 8);
-  gtk_container_set_border_width (GTK_CONTAINER (notebook2), 6);
+  gtk_container_set_border_width (GTK_CONTAINER (notebook2), 4);
 
   hbox9 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_ref (hbox9);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "hbox9", hbox9,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (hbox9, "hbox9");
   gtk_widget_show (hbox9);
   gtk_container_add (GTK_CONTAINER (notebook2), hbox9);
+  gtk_container_set_border_width (GTK_CONTAINER (hbox9), 2);
 
   label11 = gtk_label_new (_("Filename:\nTitle:\nType:\nLength:\nSpeed:\nTempo:\nSamples:\nInstruments:\nPatterns:\nChannels:"));
-  gtk_widget_ref (label11);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "label11", label11,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (label11, "label11");
   gtk_widget_show (label11);
   gtk_box_pack_start (GTK_BOX (hbox9), label11, FALSE, FALSE, 4);
-  gtk_label_set_justify (GTK_LABEL (label11), GTK_JUSTIFY_LEFT);
 
-  info_general = gtk_label_new ("---\n---\n---\n---\n---\n---\n---\n---\n---\n---");
-  gtk_widget_ref (info_general);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "info_general", info_general,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  info_general = gtk_label_new (_("---\n---\n---\n---\n---\n---\n---\n---\n---\n---"));
+  gtk_widget_set_name (info_general, "info_general");
   gtk_widget_show (info_general);
   gtk_box_pack_start (GTK_BOX (hbox9), info_general, FALSE, FALSE, 4);
-  gtk_label_set_justify (GTK_LABEL (info_general), GTK_JUSTIFY_LEFT);
 
   label13 = gtk_label_new (_("General"));
-  gtk_widget_ref (label13);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "label13", label13,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (label13, "label13");
   gtk_widget_show (label13);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 0), label13);
+  gtk_label_set_justify (GTK_LABEL (label13), GTK_JUSTIFY_CENTER);
 
   scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_ref (scrolledwindow1);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "scrolledwindow1", scrolledwindow1,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (scrolledwindow1, "scrolledwindow1");
   gtk_widget_show (scrolledwindow1);
   gtk_container_add (GTK_CONTAINER (notebook2), scrolledwindow1);
   gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow1), 6);
+  GTK_WIDGET_UNSET_FLAGS (scrolledwindow1, GTK_CAN_FOCUS);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
 
   viewport1 = gtk_viewport_new (NULL, NULL);
-  gtk_widget_ref (viewport1);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "viewport1", viewport1,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (viewport1, "viewport1");
   gtk_widget_show (viewport1);
   gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1);
 
   info_samples = gtk_label_new ("");
-  gtk_widget_ref (info_samples);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "info_samples", info_samples,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (info_samples, "info_samples");
   gtk_widget_show (info_samples);
   gtk_container_add (GTK_CONTAINER (viewport1), info_samples);
-  gtk_label_set_justify (GTK_LABEL (info_samples), GTK_JUSTIFY_LEFT);
   gtk_misc_set_alignment (GTK_MISC (info_samples), 7.45058e-09, 7.45058e-09);
-  gtk_label_set_selectable(GTK_LABEL (info_samples), TRUE);
 
   label15 = gtk_label_new (_("Samples"));
-  gtk_widget_ref (label15);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "label15", label15,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (label15, "label15");
   gtk_widget_show (label15);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 1), label15);
+  gtk_label_set_justify (GTK_LABEL (label15), GTK_JUSTIFY_CENTER);
 
   scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_ref (scrolledwindow2);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "scrolledwindow2", scrolledwindow2,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (scrolledwindow2, "scrolledwindow2");
   gtk_widget_show (scrolledwindow2);
   gtk_container_add (GTK_CONTAINER (notebook2), scrolledwindow2);
   gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow2), 6);
+  GTK_WIDGET_UNSET_FLAGS (scrolledwindow2, GTK_CAN_FOCUS);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
 
   viewport2 = gtk_viewport_new (NULL, NULL);
-  gtk_widget_ref (viewport2);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "viewport2", viewport2,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (viewport2, "viewport2");
   gtk_widget_show (viewport2);
   gtk_container_add (GTK_CONTAINER (scrolledwindow2), viewport2);
 
   info_instruments = gtk_label_new ("");
-  gtk_widget_ref (info_instruments);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "info_instruments", info_instruments,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (info_instruments, "info_instruments");
   gtk_widget_show (info_instruments);
   gtk_container_add (GTK_CONTAINER (viewport2), info_instruments);
-  gtk_label_set_justify (GTK_LABEL (info_instruments), GTK_JUSTIFY_LEFT);
   gtk_misc_set_alignment (GTK_MISC (info_instruments), 1.49012e-08, 7.45058e-09);
-  gtk_label_set_selectable(GTK_LABEL (info_instruments), TRUE);
 
   label17 = gtk_label_new (_("Instruments"));
-  gtk_widget_ref (label17);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "label17", label17,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (label17, "label17");
   gtk_widget_show (label17);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 2), label17);
+  gtk_label_set_justify (GTK_LABEL (label17), GTK_JUSTIFY_CENTER);
 
   scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_ref (scrolledwindow3);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "scrolledwindow3", scrolledwindow3,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (scrolledwindow3, "scrolledwindow3");
   gtk_widget_show (scrolledwindow3);
   gtk_container_add (GTK_CONTAINER (notebook2), scrolledwindow3);
-  gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow3), 6);
+  GTK_WIDGET_UNSET_FLAGS (scrolledwindow3, GTK_CAN_FOCUS);
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
-
-  viewport3 = gtk_viewport_new (NULL, NULL);
-  gtk_widget_ref (viewport3);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "viewport3", viewport3,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (viewport3);
-  gtk_container_add (GTK_CONTAINER (scrolledwindow3), viewport3);
+  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_SHADOW_IN);
 
-  info_message = gtk_label_new ("");
-  gtk_widget_ref (info_message);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "info_message", info_message,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  info_message = gtk_text_view_new ();
+  gtk_widget_set_name (info_message, "info_message");
   gtk_widget_show (info_message);
-  gtk_container_add (GTK_CONTAINER (viewport3), info_message);
-  gtk_label_set_justify (GTK_LABEL (info_message), GTK_JUSTIFY_LEFT);
-  gtk_label_set_line_wrap(GTK_LABEL (info_message), TRUE);
-  gtk_label_set_selectable(GTK_LABEL (info_message), TRUE);
+  gtk_container_add (GTK_CONTAINER (scrolledwindow3), info_message);
+  gtk_text_view_set_editable (GTK_TEXT_VIEW (info_message), FALSE);
+  gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (info_message), GTK_WRAP_WORD);
 
   label18 = gtk_label_new (_("Message"));
-  gtk_widget_ref (label18);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "label18", label18,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (label18, "label18");
   gtk_widget_show (label18);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 3), label18);
+  gtk_label_set_justify (GTK_LABEL (label18), GTK_JUSTIFY_CENTER);
 
   hbuttonbox3 = gtk_hbutton_box_new ();
-  gtk_widget_ref (hbuttonbox3);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "hbuttonbox3", hbuttonbox3,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_set_name (hbuttonbox3, "hbuttonbox3");
   gtk_widget_show (hbuttonbox3);
   gtk_box_pack_start (GTK_BOX (vbox14), hbuttonbox3, FALSE, FALSE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox3), 2);
+  gtk_box_set_spacing (GTK_BOX (hbuttonbox3), 30);
 
-  info_close = gtk_button_new_with_label (_("Close"));
-  gtk_widget_ref (info_close);
-  gtk_object_set_data_full (GTK_OBJECT (Info), "info_close", info_close,
-                            (GtkDestroyNotify) gtk_widget_unref);
+  info_close = gtk_button_new_with_mnemonic (_("Close"));
+  gtk_widget_set_name (info_close, "info_close");
   gtk_widget_show (info_close);
   gtk_container_add (GTK_CONTAINER (hbuttonbox3), info_close);
   GTK_WIDGET_SET_FLAGS (info_close, GTK_CAN_DEFAULT);
 
-  gtk_signal_connect (GTK_OBJECT (Info), "delete_event",
-                      GTK_SIGNAL_FUNC (hide_window),
-                      NULL);
-  gtk_signal_connect (GTK_OBJECT (info_close), "clicked",
-                      GTK_SIGNAL_FUNC (on_info_close_clicked),
-                      NULL);
+  g_signal_connect ((gpointer) Info, "delete_event",
+                    G_CALLBACK (hide_window),
+                    NULL);
+  g_signal_connect ((gpointer) info_close, "clicked",
+                    G_CALLBACK (on_info_close_clicked),
+                    NULL);
+
+  /* Store pointers to all widgets, for use by lookup_widget(). */
+  GLADE_HOOKUP_OBJECT_NO_REF (Info, Info, "Info");
+  GLADE_HOOKUP_OBJECT (Info, vbox14, "vbox14");
+  GLADE_HOOKUP_OBJECT (Info, notebook2, "notebook2");
+  GLADE_HOOKUP_OBJECT (Info, hbox9, "hbox9");
+  GLADE_HOOKUP_OBJECT (Info, label11, "label11");
+  GLADE_HOOKUP_OBJECT (Info, info_general, "info_general");
+  GLADE_HOOKUP_OBJECT (Info, label13, "label13");
+  GLADE_HOOKUP_OBJECT (Info, scrolledwindow1, "scrolledwindow1");
+  GLADE_HOOKUP_OBJECT (Info, viewport1, "viewport1");
+  GLADE_HOOKUP_OBJECT (Info, info_samples, "info_samples");
+  GLADE_HOOKUP_OBJECT (Info, label15, "label15");
+  GLADE_HOOKUP_OBJECT (Info, scrolledwindow2, "scrolledwindow2");
+  GLADE_HOOKUP_OBJECT (Info, viewport2, "viewport2");
+  GLADE_HOOKUP_OBJECT (Info, info_instruments, "info_instruments");
+  GLADE_HOOKUP_OBJECT (Info, label17, "label17");
+  GLADE_HOOKUP_OBJECT (Info, scrolledwindow3, "scrolledwindow3");
+  GLADE_HOOKUP_OBJECT (Info, info_message, "info_message");
+  GLADE_HOOKUP_OBJECT (Info, label18, "label18");
+  GLADE_HOOKUP_OBJECT (Info, hbuttonbox3, "hbuttonbox3");
+  GLADE_HOOKUP_OBJECT (Info, info_close, "info_close");
 
   return Info;
 }
--- a/src/modplug/gui/main.cxx	Wed Sep 05 09:29:26 2007 +0300
+++ b/src/modplug/gui/main.cxx	Thu Sep 06 03:03:03 2007 +0300
@@ -9,7 +9,10 @@
 
 #include <gtk/gtk.h>
 #include <libintl.h>
+extern "C" {
 #include "audacious/util.h"
+#include "audacious/strings.h"
+}
 
 #include "interface.h"
 #include "support.h"
@@ -152,7 +155,7 @@
 
 	uint32 lSongTime, lNumSamples, lNumInstruments, i;
 	string lInfo;
-	char lBuffer[33];
+	gchar lBuffer[33];
 	stringstream lStrStream(ios::out);   //C++ replacement for sprintf()
 
 	CSoundFile* lSoundFile;
@@ -160,6 +163,7 @@
 	Archive* lArchive;
 	string lShortFN;
 	uint32 lPos;
+	gchar *tmps;
 
 	lPos = aFilename.find_last_of('/') + 1;
 	lShortFN = aFilename.substr(lPos);
@@ -177,7 +181,9 @@
 
 	lInfo = lShortFN;
 	lInfo += '\n';
-	lInfo += lSoundFile->GetTitle();
+	tmps = str_to_utf8(lSoundFile->GetTitle());
+	lInfo += tmps;
+	g_free(tmps);
 	lInfo += '\n';
 
 	switch(lSoundFile->GetType())
@@ -275,7 +281,9 @@
 	for(i = 0; i < lNumSamples; i++)
 	{
 		lSoundFile->GetSampleName(i, lBuffer);
-		lInfo += lBuffer;
+		tmps = str_to_utf8(lBuffer);
+		lInfo += tmps;
+		g_free(tmps);
 		lInfo += '\n';
 	}
 	gtk_label_set_text((GtkLabel*)lookup_widget(InfoWin, "info_samples"), lInfo.c_str());
@@ -284,7 +292,9 @@
 	for(i = 0; i < lNumInstruments; i++)
 	{
 		lSoundFile->GetInstrumentName(i, lBuffer);
-		lInfo += lBuffer;
+		tmps = str_to_utf8(lBuffer);
+		lInfo += tmps;
+		g_free(tmps);
 		lInfo += '\n';
 	}
 	gtk_label_set_text((GtkLabel*)lookup_widget(InfoWin, "info_instruments"), lInfo.c_str());
@@ -296,7 +306,9 @@
 	//gtk_text_backward_delete(textbox, length);
 	length = lSoundFile->GetSongComments(message, MAX_MESSAGE_LENGTH, 80);
 	if (length != 0) {
-		gtk_label_set_text((GtkLabel*)lookup_widget(InfoWin, "info_message"), message);
+		tmps = str_to_utf8(message);
+		gtk_label_set_text((GtkLabel*)lookup_widget(InfoWin, "info_message"), tmps);
+		g_free(tmps);
 	}
 	
 	//unload the file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/modplug/gui/modplug.glade	Thu Sep 06 03:03:03 2007 +0300
@@ -0,0 +1,2028 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="Config">
+  <property name="width_request">500</property>
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">ModPlug Configuration</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">False</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+  <property name="urgency_hint">False</property>
+  <signal name="delete_event" handler="hide_window"/>
+
+  <child>
+    <widget class="GtkVBox" id="vbox2">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child>
+	<widget class="GtkNotebook" id="notebook1">
+	  <property name="border_width">4</property>
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="show_tabs">True</property>
+	  <property name="show_border">True</property>
+	  <property name="tab_pos">GTK_POS_TOP</property>
+	  <property name="scrollable">False</property>
+	  <property name="enable_popup">False</property>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox3">
+	      <property name="border_width">2</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox2">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">2</property>
+
+		  <child>
+		    <widget class="GtkFrame" id="frame1">
+		      <property name="border_width">2</property>
+		      <property name="visible">True</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox4">
+			  <property name="border_width">2</property>
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="bit16">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">16 bit</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="bit8">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">8 bit</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <property name="group">bit16</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="xlabel2">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Resolution</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkFrame" id="frame2">
+		      <property name="border_width">2</property>
+		      <property name="visible">True</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox5">
+			  <property name="border_width">2</property>
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="stereo">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Stereo</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="mono">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Mono (downmix)</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <property name="group">stereo</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label3">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Channels</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox14">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="GtkFrame" id="frame9">
+		      <property name="border_width">2</property>
+		      <property name="visible">True</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox15">
+			  <property name="border_width">2</property>
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="resampNearest">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Nearest (fastest)</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="resampLinear">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Linear (fast)</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <property name="group">resampNearest</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="resampSpline">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Spline (good quality)</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <property name="group">resampNearest</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="resampPolyphase">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">8-tap Fir (extremely high quality)</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <property name="group">resampNearest</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label4">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Resampling</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkFrame" id="frame3">
+		      <property name="border_width">2</property>
+		      <property name="visible">True</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox6">
+			  <property name="border_width">2</property>
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="samp44">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">44 kHz</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="samp22">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">22 kHz</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <property name="group">samp44</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="samp11">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">11 kHz</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">False</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <property name="group">samp44</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label5">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Sampling Rate</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label2">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Quality</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_CENTER</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox7">
+	      <property name="border_width">2</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox15">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="GtkFrame" id="frame5">
+		      <property name="border_width">2</property>
+		      <property name="visible">True</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox20">
+			  <property name="border_width">2</property>
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="fxReverb">
+			      <property name="border_width">2</property>
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Enable</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">True</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkTable" id="table1">
+			      <property name="border_width">2</property>
+			      <property name="visible">True</property>
+			      <property name="n_rows">2</property>
+			      <property name="n_columns">2</property>
+			      <property name="homogeneous">False</property>
+			      <property name="row_spacing">4</property>
+			      <property name="column_spacing">4</property>
+
+			      <child>
+				<widget class="GtkHScale" id="fxReverbDepth">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="draw_value">True</property>
+				  <property name="value_pos">GTK_POS_TOP</property>
+				  <property name="digits">1</property>
+				  <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+				  <property name="inverted">False</property>
+				  <property name="adjustment">30 0 100 0 0 0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">1</property>
+				  <property name="right_attach">2</property>
+				  <property name="top_attach">0</property>
+				  <property name="bottom_attach">1</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkHScale" id="fxReverbDelay">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="draw_value">True</property>
+				  <property name="value_pos">GTK_POS_TOP</property>
+				  <property name="digits">1</property>
+				  <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+				  <property name="inverted">False</property>
+				  <property name="adjustment">90 40 200 0 0 0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">1</property>
+				  <property name="right_attach">2</property>
+				  <property name="top_attach">1</property>
+				  <property name="bottom_attach">2</property>
+				  <property name="x_options">fill</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="xlabel3">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Depth</property>
+				  <property name="use_underline">False</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_CENTER</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				  <property name="width_chars">-1</property>
+				  <property name="single_line_mode">False</property>
+				  <property name="angle">0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">0</property>
+				  <property name="right_attach">1</property>
+				  <property name="top_attach">0</property>
+				  <property name="bottom_attach">1</property>
+				  <property name="x_options"></property>
+				  <property name="y_options"></property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="xlabel4">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Delay</property>
+				  <property name="use_underline">False</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_CENTER</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				  <property name="width_chars">-1</property>
+				  <property name="single_line_mode">False</property>
+				  <property name="angle">0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">0</property>
+				  <property name="right_attach">1</property>
+				  <property name="top_attach">1</property>
+				  <property name="bottom_attach">2</property>
+				  <property name="x_options"></property>
+				  <property name="y_options"></property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">True</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label6">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Reverb</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkFrame" id="frame6">
+		      <property name="border_width">2</property>
+		      <property name="visible">True</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox21">
+			  <property name="border_width">2</property>
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="fxBassBoost">
+			      <property name="border_width">2</property>
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Enable</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">True</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkTable" id="table2">
+			      <property name="border_width">2</property>
+			      <property name="visible">True</property>
+			      <property name="n_rows">2</property>
+			      <property name="n_columns">2</property>
+			      <property name="homogeneous">False</property>
+			      <property name="row_spacing">4</property>
+			      <property name="column_spacing">4</property>
+
+			      <child>
+				<widget class="GtkHScale" id="fxBassAmount">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="draw_value">True</property>
+				  <property name="value_pos">GTK_POS_TOP</property>
+				  <property name="digits">1</property>
+				  <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+				  <property name="inverted">False</property>
+				  <property name="adjustment">30 0 100 0 0 0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">1</property>
+				  <property name="right_attach">2</property>
+				  <property name="top_attach">0</property>
+				  <property name="bottom_attach">1</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkHScale" id="fxBassRange">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="draw_value">True</property>
+				  <property name="value_pos">GTK_POS_TOP</property>
+				  <property name="digits">1</property>
+				  <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+				  <property name="inverted">False</property>
+				  <property name="adjustment">30 10 100 0 0 0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">1</property>
+				  <property name="right_attach">2</property>
+				  <property name="top_attach">1</property>
+				  <property name="bottom_attach">2</property>
+				  <property name="x_options">fill</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="xlabel5">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Amount</property>
+				  <property name="use_underline">False</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_CENTER</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				  <property name="width_chars">-1</property>
+				  <property name="single_line_mode">False</property>
+				  <property name="angle">0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">0</property>
+				  <property name="right_attach">1</property>
+				  <property name="top_attach">0</property>
+				  <property name="bottom_attach">1</property>
+				  <property name="x_options"></property>
+				  <property name="y_options"></property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="xlabel6">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Range</property>
+				  <property name="use_underline">False</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_CENTER</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				  <property name="width_chars">-1</property>
+				  <property name="single_line_mode">False</property>
+				  <property name="angle">0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">0</property>
+				  <property name="right_attach">1</property>
+				  <property name="top_attach">1</property>
+				  <property name="bottom_attach">2</property>
+				  <property name="x_options"></property>
+				  <property name="y_options"></property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">True</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label7">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Bass Boost</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox16">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="GtkFrame" id="frame7">
+		      <property name="border_width">2</property>
+		      <property name="visible">True</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox22">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="fxSurround">
+			      <property name="border_width">2</property>
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Enable</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">True</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkTable" id="table3">
+			      <property name="border_width">2</property>
+			      <property name="visible">True</property>
+			      <property name="n_rows">2</property>
+			      <property name="n_columns">2</property>
+			      <property name="homogeneous">False</property>
+			      <property name="row_spacing">4</property>
+			      <property name="column_spacing">4</property>
+
+			      <child>
+				<widget class="GtkHScale" id="fxSurroundDepth">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="draw_value">True</property>
+				  <property name="value_pos">GTK_POS_TOP</property>
+				  <property name="digits">1</property>
+				  <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+				  <property name="inverted">False</property>
+				  <property name="adjustment">20 0 100 0 0 0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">1</property>
+				  <property name="right_attach">2</property>
+				  <property name="top_attach">0</property>
+				  <property name="bottom_attach">1</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkHScale" id="fxSurroundDelay">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="draw_value">True</property>
+				  <property name="value_pos">GTK_POS_TOP</property>
+				  <property name="digits">1</property>
+				  <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+				  <property name="inverted">False</property>
+				  <property name="adjustment">20 5 40 0 0 0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">1</property>
+				  <property name="right_attach">2</property>
+				  <property name="top_attach">1</property>
+				  <property name="bottom_attach">2</property>
+				  <property name="x_options">fill</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="xlabel7">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Depth</property>
+				  <property name="use_underline">False</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_CENTER</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				  <property name="width_chars">-1</property>
+				  <property name="single_line_mode">False</property>
+				  <property name="angle">0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">0</property>
+				  <property name="right_attach">1</property>
+				  <property name="top_attach">0</property>
+				  <property name="bottom_attach">1</property>
+				  <property name="x_options"></property>
+				  <property name="y_options"></property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="label8">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Delay</property>
+				  <property name="use_underline">False</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_CENTER</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				  <property name="width_chars">-1</property>
+				  <property name="single_line_mode">False</property>
+				  <property name="angle">0</property>
+				</widget>
+				<packing>
+				  <property name="left_attach">0</property>
+				  <property name="right_attach">1</property>
+				  <property name="top_attach">1</property>
+				  <property name="bottom_attach">2</property>
+				  <property name="x_options"></property>
+				  <property name="y_options"></property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">True</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="xlabel8">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Surround</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkFrame" id="frame10">
+		      <property name="border_width">2</property>
+		      <property name="visible">True</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox16">
+			  <property name="border_width">4</property>
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">2</property>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="fxPreamp">
+			      <property name="border_width">2</property>
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Enable</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkHBox" id="hbox11">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">4</property>
+
+			      <child>
+				<widget class="GtkLabel" id="label19">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Volume</property>
+				  <property name="use_underline">False</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_CENTER</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				  <property name="width_chars">-1</property>
+				  <property name="single_line_mode">False</property>
+				  <property name="angle">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkHScale" id="fxPreampLevel">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="draw_value">True</property>
+				  <property name="value_pos">GTK_POS_TOP</property>
+				  <property name="digits">1</property>
+				  <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+				  <property name="inverted">False</property>
+				  <property name="adjustment">0 -3 3 1 0 0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">True</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="label20">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">Note:  Setting the preamp
+too high may cause clipping
+(annoying clicks and pops)!</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_CENTER</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label9">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Preamp</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label10">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Effects</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_CENTER</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox19">
+	      <property name="border_width">2</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkFrame" id="frame4">
+		  <property name="border_width">2</property>
+		  <property name="visible">True</property>
+		  <property name="label_xalign">0</property>
+		  <property name="label_yalign">0.5</property>
+		  <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox3">
+		      <property name="border_width">2</property>
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox8">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="fxUseFilename">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Use Filename as Song Title</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="fxFastInfo">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Fast Playlist Info</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">True</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox9">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="fxNR">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Noise Reduction</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">True</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="fxAmigaMOD">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Play Amiga MOD</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">True</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label21">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">General</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="type">label_item</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkFrame" id="frame11">
+		  <property name="border_width">2</property>
+		  <property name="visible">True</property>
+		  <property name="label_xalign">0</property>
+		  <property name="label_yalign">0.5</property>
+		  <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox17">
+		      <property name="border_width">2</property>
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkRadioButton" id="fxNoLoop">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">Don't loop</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkHBox" id="hbox13">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">0</property>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="fxLoopFinite">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Loop</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <property name="group">fxNoLoop</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkSpinButton" id="fxLoopCount">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="climb_rate">1</property>
+			      <property name="digits">0</property>
+			      <property name="numeric">False</property>
+			      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			      <property name="snap_to_ticks">False</property>
+			      <property name="wrap">False</property>
+			      <property name="adjustment">1 0 100 1 10 10</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="xlabel21">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">time(s)</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_CENTER</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkRadioButton" id="fxLoopForever">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">Loop forever</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			  <property name="group">fxNoLoop</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label22">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Looping</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="type">label_item</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="xlabel22">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Misc</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_CENTER</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHButtonBox" id="hbuttonbox2">
+	  <property name="border_width">4</property>
+	  <property name="visible">True</property>
+	  <property name="layout_style">GTK_BUTTONBOX_END</property>
+	  <property name="spacing">8</property>
+
+	  <child>
+	    <widget class="GtkButton" id="config_ok">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label" translatable="yes">OK</property>
+	      <property name="use_underline">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <signal name="clicked" handler="on_config_ok_clicked"/>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkButton" id="config_apply">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label" translatable="yes">Apply</property>
+	      <property name="use_underline">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <signal name="clicked" handler="on_config_apply_clicked"/>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkButton" id="config_cancel">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label" translatable="yes">Cancel</property>
+	      <property name="use_underline">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <signal name="clicked" handler="on_config_cancel_clicked"/>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+<widget class="GtkWindow" id="Info">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">MOD Info</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+  <property name="urgency_hint">False</property>
+  <signal name="delete_event" handler="hide_window"/>
+
+  <child>
+    <widget class="GtkVBox" id="vbox14">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child>
+	<widget class="GtkNotebook" id="notebook2">
+	  <property name="border_width">4</property>
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="show_tabs">True</property>
+	  <property name="show_border">True</property>
+	  <property name="tab_pos">GTK_POS_TOP</property>
+	  <property name="scrollable">False</property>
+	  <property name="enable_popup">False</property>
+
+	  <child>
+	    <widget class="GtkHBox" id="hbox9">
+	      <property name="border_width">2</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label11">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Filename:
+Title:
+Type:
+Length:
+Speed:
+Tempo:
+Samples:
+Instruments:
+Patterns:
+Channels:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">4</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="info_general">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">---
+---
+---
+---
+---
+---
+---
+---
+---
+---</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">4</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label13">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">General</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_CENTER</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkScrolledWindow" id="scrolledwindow1">
+	      <property name="border_width">6</property>
+	      <property name="visible">True</property>
+	      <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+	      <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+	      <property name="shadow_type">GTK_SHADOW_NONE</property>
+	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+	      <child>
+		<widget class="GtkViewport" id="viewport1">
+		  <property name="visible">True</property>
+		  <property name="shadow_type">GTK_SHADOW_IN</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="info_samples">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes"></property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">7.45058015283e-09</property>
+		      <property name="yalign">7.45058015283e-09</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label15">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Samples</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_CENTER</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkScrolledWindow" id="scrolledwindow2">
+	      <property name="border_width">6</property>
+	      <property name="visible">True</property>
+	      <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+	      <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+	      <property name="shadow_type">GTK_SHADOW_NONE</property>
+	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+	      <child>
+		<widget class="GtkViewport" id="viewport2">
+		  <property name="visible">True</property>
+		  <property name="shadow_type">GTK_SHADOW_IN</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="info_instruments">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes"></property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">1.49012002737e-08</property>
+		      <property name="yalign">7.45058015283e-09</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label17">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Instruments</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_CENTER</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkScrolledWindow" id="scrolledwindow3">
+	      <property name="visible">True</property>
+	      <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+	      <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+	      <property name="shadow_type">GTK_SHADOW_IN</property>
+	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+	      <child>
+		<widget class="GtkTextView" id="info_message">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="editable">False</property>
+		  <property name="overwrite">False</property>
+		  <property name="accepts_tab">True</property>
+		  <property name="justification">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap_mode">GTK_WRAP_WORD</property>
+		  <property name="cursor_visible">True</property>
+		  <property name="pixels_above_lines">0</property>
+		  <property name="pixels_below_lines">0</property>
+		  <property name="pixels_inside_wrap">0</property>
+		  <property name="left_margin">0</property>
+		  <property name="right_margin">0</property>
+		  <property name="indent">0</property>
+		  <property name="text" translatable="yes"></property>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label18">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Message</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_CENTER</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">8</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHButtonBox" id="hbuttonbox3">
+	  <property name="border_width">2</property>
+	  <property name="visible">True</property>
+	  <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property>
+	  <property name="spacing">30</property>
+
+	  <child>
+	    <widget class="GtkButton" id="info_close">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label" translatable="yes">Close</property>
+	      <property name="use_underline">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <signal name="clicked" handler="on_info_close_clicked"/>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/modplug/gui/modplug.gladep	Thu Sep 06 03:03:03 2007 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd">
+
+<glade-project>
+  <name>ModPlug</name>
+  <program_name>modplug</program_name>
+  <source_directory>.</source_directory>
+  <pixmaps_directory>.</pixmaps_directory>
+  <gnome_support>FALSE</gnome_support>
+  <use_widget_names>TRUE</use_widget_names>
+  <output_main_file>FALSE</output_main_file>
+  <output_build_files>FALSE</output_build_files>
+  <main_source_file>interface.cxx</main_source_file>
+  <handler_source_file>callbacks.cxx</handler_source_file>
+  <support_source_file>support.cxx</support_source_file>
+</glade-project>
--- a/src/modplug/gui/support.cxx	Wed Sep 05 09:29:26 2007 +0300
+++ b/src/modplug/gui/support.cxx	Thu Sep 06 03:03:03 2007 +0300
@@ -10,18 +10,12 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <string.h>
+#include <stdio.h>
 
 #include <gtk/gtk.h>
 
 #include "support.h"
 
-/* This is an internally used function to check if a pixmap file exists. */
-static gchar* check_file_exists        (const gchar     *directory,
-                                        const gchar     *filename);
-
-/* This is an internally used function to create pixmaps. */
-static GtkWidget* create_dummy_pixmap  (GtkWidget       *widget);
-
 GtkWidget*
 lookup_widget                          (GtkWidget       *widget,
                                         const gchar     *widget_name)
@@ -34,47 +28,20 @@
         parent = gtk_menu_get_attach_widget (GTK_MENU (widget));
       else
         parent = widget->parent;
+      if (!parent)
+        parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey");
       if (parent == NULL)
         break;
       widget = parent;
     }
 
-  found_widget = (GtkWidget*) gtk_object_get_data (GTK_OBJECT (widget),
-                                                   widget_name);
+  found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget),
+                                                 widget_name);
   if (!found_widget)
     g_warning ("Widget not found: %s", widget_name);
   return found_widget;
 }
 
-/* This is a dummy pixmap we use when a pixmap can't be found. */
-static const char *dummy_pixmap_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"1 1 1 1",
-"  c None",
-/* pixels */
-" "
-};
-
-/* This is an internally used function to create pixmaps. */
-static GtkWidget*
-create_dummy_pixmap                    (GtkWidget       *widget)
-{
-  GdkColormap *colormap;
-  GdkPixmap *gdkpixmap;
-  GdkBitmap *mask;
-  GtkWidget *pixmap;
-
-  colormap = gtk_widget_get_colormap (widget);
-  gdkpixmap = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &mask,
-                                                     NULL, (gchar **)dummy_pixmap_xpm);
-  if (gdkpixmap == NULL)
-    g_error ("Couldn't create replacement pixmap.");
-  pixmap = gtk_pixmap_new (gdkpixmap, mask);
-  gdk_pixmap_unref (gdkpixmap);
-  gdk_bitmap_unref (mask);
-  return pixmap;
-}
-
 static GList *pixmaps_directories = NULL;
 
 /* Use this function to set the directory containing installed pixmaps. */
@@ -85,75 +52,93 @@
                                         g_strdup (directory));
 }
 
+/* This is an internally used function to find pixmap files. */
+static gchar*
+find_pixmap_file                       (const gchar     *filename)
+{
+  GList *elem;
+
+  /* We step through each of the pixmaps directory to find it. */
+  elem = pixmaps_directories;
+  while (elem)
+    {
+      gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data,
+                                         G_DIR_SEPARATOR_S, filename);
+      if (g_file_test (pathname, G_FILE_TEST_EXISTS))
+        return pathname;
+      g_free (pathname);
+      elem = elem->next;
+    }
+  return NULL;
+}
+
 /* This is an internally used function to create pixmaps. */
 GtkWidget*
 create_pixmap                          (GtkWidget       *widget,
                                         const gchar     *filename)
 {
-  gchar *found_filename = NULL;
-  GdkColormap *colormap;
-  GdkPixmap *gdkpixmap;
-  GdkBitmap *mask;
+  gchar *pathname = NULL;
   GtkWidget *pixmap;
-  GList *elem;
+
+  if (!filename || !filename[0])
+      return gtk_image_new ();
 
-  /* We first try any pixmaps directories set by the application. */
-  elem = pixmaps_directories;
-  while (elem)
+  pathname = find_pixmap_file (filename);
+
+  if (!pathname)
     {
-      found_filename = check_file_exists ((gchar*)elem->data, filename);
-      if (found_filename)
-        break;
-      elem = elem->next;
+      g_warning (_("Couldn't find pixmap file: %s"), filename);
+      return gtk_image_new ();
     }
 
-  /* If we haven't found the pixmap, try the source directory. */
-  if (!found_filename)
-    {
-      found_filename = check_file_exists ("../pixmaps", filename);
-    }
-
-  if (!found_filename)
-    {
-      g_warning (_("Couldn't find pixmap file: %s"), filename);
-      return create_dummy_pixmap (widget);
-    }
-
-  colormap = gtk_widget_get_colormap (widget);
-  gdkpixmap = gdk_pixmap_colormap_create_from_xpm (NULL, colormap, &mask,
-                                                   NULL, found_filename);
-  if (gdkpixmap == NULL)
-    {
-      g_warning (_("Error loading pixmap file: %s"), found_filename);
-      g_free (found_filename);
-      return create_dummy_pixmap (widget);
-    }
-  g_free (found_filename);
-  pixmap = gtk_pixmap_new (gdkpixmap, mask);
-  gdk_pixmap_unref (gdkpixmap);
-  gdk_bitmap_unref (mask);
+  pixmap = gtk_image_new_from_file (pathname);
+  g_free (pathname);
   return pixmap;
 }
 
-/* This is an internally used function to check if a pixmap file exists. */
-gchar*
-check_file_exists                      (const gchar     *directory,
-                                        const gchar     *filename)
+/* This is an internally used function to create pixmaps. */
+GdkPixbuf*
+create_pixbuf                          (const gchar     *filename)
 {
-  gchar *full_filename;
-  struct stat s;
-  gint status;
+  gchar *pathname = NULL;
+  GdkPixbuf *pixbuf;
+  GError *error = NULL;
+
+  if (!filename || !filename[0])
+      return NULL;
+
+  pathname = find_pixmap_file (filename);
 
-  full_filename = (gchar*) g_malloc (strlen (directory) + 1
-                                     + strlen (filename) + 1);
-  strcpy (full_filename, directory);
-  strcat (full_filename, G_DIR_SEPARATOR_S);
-  strcat (full_filename, filename);
+  if (!pathname)
+    {
+      g_warning (_("Couldn't find pixmap file: %s"), filename);
+      return NULL;
+    }
 
-  status = stat (full_filename, &s);
-  if (status == 0 && S_ISREG (s.st_mode))
-    return full_filename;
-  g_free (full_filename);
-  return NULL;
+  pixbuf = gdk_pixbuf_new_from_file (pathname, &error);
+  if (!pixbuf)
+    {
+      fprintf (stderr, "Failed to load pixbuf file: %s: %s\n",
+               pathname, error->message);
+      g_error_free (error);
+    }
+  g_free (pathname);
+  return pixbuf;
 }
 
+/* This is used to set ATK action descriptions. */
+void
+glade_set_atk_action_description       (AtkAction       *action,
+                                        const gchar     *action_name,
+                                        const gchar     *description)
+{
+  gint n_actions, i;
+
+  n_actions = atk_action_get_n_actions (action);
+  for (i = 0; i < n_actions; i++)
+    {
+      if (!strcmp (atk_action_get_name (action, i), action_name))
+        atk_action_set_description (action, i, description);
+    }
+}
+
--- a/src/modplug/gui/support.h	Wed Sep 05 09:29:26 2007 +0300
+++ b/src/modplug/gui/support.h	Thu Sep 06 03:03:03 2007 +0300
@@ -11,10 +11,11 @@
 /*
  * Standard gettext macros.
  */
-#if defined ENABLE_NLS && !defined __NetBSD__
+#ifdef ENABLE_NLS
 #  include <libintl.h>
 #  undef _
 #  define _(String) dgettext (PACKAGE, String)
+#  define Q_(String) g_strip_context ((String), gettext (String))
 #  ifdef gettext_noop
 #    define N_(String) gettext_noop (String)
 #  else
@@ -27,6 +28,7 @@
 #  define dcgettext(Domain,Message,Type) (Message)
 #  define bindtextdomain(Domain,Directory) (Domain)
 #  define _(String) (String)
+#  define Q_(String) g_strip_context ((String), (String))
 #  define N_(String) (String)
 #endif
 
@@ -44,8 +46,6 @@
 GtkWidget*  lookup_widget              (GtkWidget       *widget,
                                         const gchar     *widget_name);
 
-/* get_widget() is deprecated. Use lookup_widget instead. */
-#define get_widget lookup_widget
 
 /* Use this function to set the directory containing installed pixmaps. */
 void        add_pixmap_directory       (const gchar     *directory);
@@ -55,7 +55,15 @@
  * Private Functions.
  */
 
-/* This is used to create the pixmaps in the interface. */
+/* This is used to create the pixmaps used in the interface. */
 GtkWidget*  create_pixmap              (GtkWidget       *widget,
                                         const gchar     *filename);
 
+/* This is used to create the pixbufs used in the interface. */
+GdkPixbuf*  create_pixbuf              (const gchar     *filename);
+
+/* This is used to set ATK action descriptions. */
+void        glade_set_atk_action_description (AtkAction       *action,
+                                              const gchar     *action_name,
+                                              const gchar     *description);
+
--- a/src/modplug/modplugbmp.cxx	Wed Sep 05 09:29:26 2007 +0300
+++ b/src/modplug/modplugbmp.cxx	Thu Sep 06 03:03:03 2007 +0300
@@ -19,6 +19,7 @@
 #include "audacious/tuple.h"
 #include "audacious/tuple_formatter.h"
 #include "audacious/vfs.h"
+#include "audacious/strings.h"
 }
 
 static char* format_and_free_ti( Tuple* ti, int* length )
@@ -505,7 +506,7 @@
 {
 	CSoundFile* lSoundFile;
 	Archive* lArchive;
-	char* tmps;
+	gchar* tmps;
 	
 	//open and mmap the file
         lArchive = OpenArchive(aFilename);
@@ -546,8 +547,15 @@
 	}
 	tuple_associate_string(ti, FIELD_CODEC, NULL, tmps);
 	tuple_associate_string(ti, FIELD_QUALITY, NULL, "sequenced");
+	tuple_associate_int(ti, FIELD_LENGTH, NULL, lSoundFile->GetSongTime() * 1000);
+
+	/* NOTICE! FIXME? This is actually incorrect. We _cannot_ know what charset
+	 * an arbitrary module file uses .. typically it is some DOS CP-variant,
+	 * except for true Amiga modules.
+	 */
+	tmps = str_to_utf8(lSoundFile->GetTitle());
 	tuple_associate_string(ti, FIELD_TITLE, NULL, lSoundFile->GetTitle());
-	tuple_associate_int(ti, FIELD_LENGTH, NULL, lSoundFile->GetSongTime() * 1000);
+	g_free(tmps);
 	
 	//unload the file
 	lSoundFile->Destroy();
--- a/src/sid/xmms-sid.c	Wed Sep 05 09:29:26 2007 +0300
+++ b/src/sid/xmms-sid.c	Thu Sep 06 03:03:03 2007 +0300
@@ -88,7 +88,7 @@
 XS_MUTEX(xs_status);
 static XS_THREAD_T xs_decode_thread;
 
-Tuple * xs_get_song_tuple_info(gchar *songFilename, gint subTune);
+void xs_get_song_tuple_info(Tuple *pResult, t_xs_tuneinfo *pInfo, gint subTune);
 
 /*
  * Error messages
@@ -460,11 +460,12 @@
 	/* Set song information for current subtune */
 	XSDEBUG("foobar #1\n");
 	xs_status.sidPlayer->plrUpdateSIDInfo(&xs_status);
-	XSDEBUG("foobar #2\n");
 	XS_MUTEX_UNLOCK(xs_status);
-	tmpTuple = xs_get_song_tuple_info(tmpTune->sidFilename, xs_status.currSong);
-	XSDEBUG("foobar #3\n");
-	tmpTitle = tuple_formatter_process_string(tmpTuple, get_gentitle_format());
+	tmpTuple = tuple_new_from_filename(tmpTune->sidFilename);
+	xs_get_song_tuple_info(tmpTuple, tmpTune, xs_status.currSong);
+
+	tmpTitle = tuple_formatter_process_string(tmpTuple,
+		xs_cfg.titleOverride ? xs_cfg.titleFormat : get_gentitle_format());
 	
 	XSDEBUG("foobar #4\n");
 	XS_MUTEX_LOCK(xs_status);
@@ -655,29 +656,17 @@
 
 /* Return song information Tuple
  */
-Tuple * xs_get_song_tuple_info(gchar *songFilename, gint subTune)
+void xs_get_song_tuple_info(Tuple *pResult, t_xs_tuneinfo *pInfo, gint subTune)
 {
-	t_xs_tuneinfo *pInfo;
-	Tuple *pResult;
-	gchar *tmpStr;
-
-	pResult = tuple_new_from_filename(songFilename);
+	gchar *tmpStr, tmpStr2[64];
 
-	/* Get tune information from emulation engine */
-	XS_MUTEX_LOCK(xs_status);
-	pInfo = xs_status.sidPlayer->plrGetSIDInfo(songFilename);
-	if (!pInfo) {
-		XS_MUTEX_UNLOCK(xs_status);
-		return pResult;
-	}
-	XS_MUTEX_UNLOCK(xs_status);
-	
-	tuple_associate_string(pResult, FIELD_TITLE, "title", pInfo->sidName);
-	tuple_associate_string(pResult, FIELD_ARTIST, "artist", pInfo->sidComposer);
-	tuple_associate_string(pResult, FIELD_GENRE, "genre", "SID-tune");
-	tuple_associate_string(pResult, FIELD_COPYRIGHT, "copyright", pInfo->sidCopyright);
+	tuple_associate_string(pResult, FIELD_TITLE, NULL, pInfo->sidName);
+	tuple_associate_string(pResult, FIELD_ARTIST, NULL, pInfo->sidComposer);
+	tuple_associate_string(pResult, FIELD_GENRE, NULL, "SID-tune");
+	tuple_associate_string(pResult, FIELD_COPYRIGHT, NULL, pInfo->sidCopyright);
+
+	tuple_associate_int(pResult, -1, "subtunes", pInfo->nsubTunes);
 	tuple_associate_string(pResult, -1, "sid-format", pInfo->sidFormat);
-	tuple_associate_int(pResult, -1, "subtunes", pInfo->nsubTunes);
 
 	switch (pInfo->sidModel) {
 		case XS_SIDMODEL_6581: tmpStr = "6581"; break;
@@ -686,34 +675,69 @@
 		default: tmpStr = "?"; break;
 	}
 	tuple_associate_string(pResult, -1, "sid-model", tmpStr);
-
+	
 	/* Get sub-tune information, if available */
 	if (subTune < 0 || pInfo->startTune > pInfo->nsubTunes)
 		subTune = pInfo->startTune;
 	
 	if ((subTune > 0) && (subTune <= pInfo->nsubTunes)) {
 		gint tmpInt = pInfo->subTunes[subTune - 1].tuneLength;
-		tuple_associate_int(pResult, FIELD_LENGTH, "length", (tmpInt < 0) ? -1 : tmpInt * 1000);
+		tuple_associate_int(pResult, FIELD_LENGTH, NULL, (tmpInt < 0) ? -1 : tmpInt * 1000);
+		
+		tmpInt = pInfo->subTunes[subTune - 1].tuneSpeed;
+		if (tmpInt > 0) {
+			switch (tmpInt) {
+			case XS_CLOCK_PAL: tmpStr = "PAL"; break;
+			case XS_CLOCK_NTSC: tmpStr = "NTSC"; break;
+			case XS_CLOCK_ANY: tmpStr = "ANY"; break;
+			case XS_CLOCK_VBI: tmpStr = "VBI"; break;
+			case XS_CLOCK_CIA: tmpStr = "CIA"; break;
+			default:
+				g_snprintf(tmpStr2, sizeof(tmpStr2), "%dHz", tmpInt);
+				tmpStr = tmpStr2;
+				break;
+			}
+		} else
+			tmpStr = "?";
+
+		tuple_associate_string(pResult, -1, "sid-speed", tmpStr);
 	} else
 		subTune = 1;
 
 	tuple_associate_int(pResult, -1, "subtune", subTune);
-	tuple_associate_int(pResult, FIELD_TRACK_NUMBER, "track-number", subTune);
+	tuple_associate_int(pResult, FIELD_TRACK_NUMBER, NULL, subTune);
 
-	/* Free tune information */
-	xs_tuneinfo_free(pInfo);
-	return pResult;
+	if (xs_cfg.titleOverride)
+		tuple_associate_string(pResult, FIELD_FORMATTER, NULL, xs_cfg.titleFormat);
 }
 
 Tuple * xs_get_song_tuple(gchar *songFilename)
 {
-	Tuple *pResult;
+	Tuple *tmpResult;
 	gchar *tmpFilename;
+	t_xs_tuneinfo *tmpInfo;
 	gint subTune;
 
+	/* Get information from URL */
 	xs_get_trackinfo(songFilename, &tmpFilename, &subTune);
-	pResult = xs_get_song_tuple_info(tmpFilename, subTune);
+
+	tmpResult = tuple_new_from_filename(tmpFilename);
+	if (!tmpResult) {
+		g_free(tmpFilename);
+		return NULL;
+	}
+
+	/* Get tune information from emulation engine */
+	XS_MUTEX_LOCK(xs_status);
+	tmpInfo = xs_status.sidPlayer->plrGetSIDInfo(tmpFilename);
+	XS_MUTEX_UNLOCK(xs_status);
 	g_free(tmpFilename);
 
-	return pResult;
+	if (!tmpInfo)
+		return tmpResult;
+	
+	xs_get_song_tuple_info(tmpResult, tmpInfo, subTune);
+	xs_tuneinfo_free(tmpInfo);
+
+	return tmpResult;
 }
--- a/src/sid/xmms-sid.glade	Wed Sep 05 09:29:26 2007 +0300
+++ b/src/sid/xmms-sid.glade	Thu Sep 06 03:03:03 2007 +0300
@@ -2410,6 +2410,154 @@
 	  </child>
 
 	  <child>
+	    <widget class="GtkFrame" id="frame1">
+	      <property name="border_width">4</property>
+	      <property name="visible">True</property>
+	      <property name="label_xalign">0</property>
+	      <property name="label_yalign">0.5</property>
+	      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox1">
+		  <property name="border_width">2</property>
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">2</property>
+
+		  <child>
+		    <widget class="GtkCheckButton" id="cfg_ftitle_override">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">By enabling this option you can specify a custom Tuplez formatting string for SID-files. The SID-plugin specific Tuplez tags are described shortly below.</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">Override generic Tuplez format string</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
+		      <signal name="toggled" handler="xs_cfg_ftitle_override_toggled" last_modification_time="Wed, 05 Sep 2007 21:51:50 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkVBox" id="cfg_ftitle_box">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkEntry" id="cfg_ftitle_format">
+			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">Tuplez format string for SID-files</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text" translatable="yes"></property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char">●</property>
+			  <property name="activates_default">False</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="cfg_ftitle_descs">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Descriptions of &lt;i&gt;SID-specific&lt;/i&gt; Tuplez fields go here. &lt;b&gt;:D&lt;/b&gt;</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">True</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">True</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">8</property>
+			  <property name="ypad">8</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="label29">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Song title format:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="type">label_item</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="w_label27">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Title</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
 	    <widget class="GtkVBox" id="w_vbox19">
 	      <property name="visible">True</property>
 	      <property name="homogeneous">False</property>
@@ -2433,6 +2581,7 @@
 		      <child>
 			<widget class="GtkCheckButton" id="cfg_subauto_enable">
 			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">If enabled, sub-tunes of each file will be added to playlist. If disabled, only the default sub-tune will be added.</property>
 			  <property name="can_focus">True</property>
 			  <property name="label" translatable="yes">Add sub-tunes to playlist</property>
 			  <property name="use_underline">True</property>
@@ -2453,8 +2602,9 @@
 		      <child>
 			<widget class="GtkCheckButton" id="cfg_subauto_min_only">
 			  <property name="visible">True</property>
+			  <property name="tooltip" translatable="yes">Only add sub-tunes that have a duration of at least specified time.</property>
 			  <property name="can_focus">True</property>
-			  <property name="label" translatable="yes">Only tunes with specified minimum length </property>
+			  <property name="label" translatable="yes">Only tunes with specified minimum duration</property>
 			  <property name="use_underline">True</property>
 			  <property name="relief">GTK_RELIEF_NORMAL</property>
 			  <property name="focus_on_click">True</property>
--- a/src/sid/xs_config.c	Wed Sep 05 09:29:26 2007 +0300
+++ b/src/sid/xs_config.c	Thu Sep 06 03:03:03 2007 +0300
@@ -127,10 +127,10 @@
 #ifndef AUDACIOUS_PLUGIN
 { CTYPE_INT,	&xs_cfg.subsongControl,		"subsongControl" },
 { CTYPE_BOOL,	&xs_cfg.detectMagic,		"detectMagic" },
+#endif
 
 { CTYPE_BOOL,	&xs_cfg.titleOverride,		"titleOverride" },
 { CTYPE_STR,	&xs_cfg.titleFormat,		"titleFormat" },
-#endif
 
 { CTYPE_BOOL,	&xs_cfg.subAutoEnable,		"subAutoEnable" },
 { CTYPE_BOOL,	&xs_cfg.subAutoMinOnly,		"subAutoMinOnly" },
@@ -191,10 +191,10 @@
 { WTYPE_BGROUP,	CTYPE_INT,	"cfg_subctrl_patch",	&xs_cfg.subsongControl,		XS_SSC_PATCH },
 
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_detectmagic",	&xs_cfg.detectMagic,		0 },
+#endif
 
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_ftitle_override",	&xs_cfg.titleOverride,		0 },
 { WTYPE_TEXT,	CTYPE_STR,	"cfg_ftitle_format",	&xs_cfg.titleFormat,		0 },
-#endif
 
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_subauto_enable",	&xs_cfg.subAutoEnable,		0 },
 { WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_subauto_min_only",	&xs_cfg.subAutoMinOnly,		0 },
@@ -275,7 +275,7 @@
 	xs_pstrcpy(&xs_cfg.stilDBPath, "~/C64Music/DOCUMENTS/STIL.txt");
 	xs_pstrcpy(&xs_cfg.hvscPath, "~/C64Music");
 
-#ifdef HAVE_SONG_POSITION
+#if defined(HAVE_SONG_POSITION) && !defined(AUDACIOUS_PLUGIN)
 	xs_cfg.subsongControl = XS_SSC_PATCH;
 #else
 	xs_cfg.subsongControl = XS_SSC_POPUP;
@@ -283,9 +283,7 @@
 
 	xs_cfg.detectMagic = FALSE;
 
-#if defined(HAVE_XMMSEXTRA) || defined(AUDACIOUS_PLUGIN)
-	xs_cfg.titleOverride = FALSE;
-#else
+#ifndef HAVE_XMMSEXTRA
 	xs_cfg.titleOverride = TRUE;
 #endif
 	xs_pstrcpy(&xs_cfg.titleFormat, "%p - %t (%c) [%n/%N][%m/%C]");
@@ -1280,29 +1278,26 @@
 	/* Based on available optional parts, gray out options */
 #ifndef HAVE_SIDPLAY1
 	gtk_widget_set_sensitive(LUW("cfg_emu_sidplay1"), FALSE);
-	gtk_widget_set_sensitive(LUW("cfg_box_sidplay1"), FALSE);
+	gtk_widget_set_sensitive(LUW("cfg_box_filter_sidplay1"), FALSE);
 #endif
 
 #ifndef HAVE_SIDPLAY2
 	gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2"), FALSE);
-	gtk_widget_set_sensitive(LUW("cfg_box_sidplay2"), FALSE);
+	gtk_widget_set_sensitive(LUW("cfg_box_filter_sidplay2"), FALSE);
 #endif
 
-#ifndef HAVE_XMMSEXTRA
+	gtk_widget_set_sensitive(LUW("cfg_resid_frame"), FALSE);
+
+#if !defined(HAVE_XMMSEXTRA) && !defined(AUDACIOUS_PLUGIN)
 	gtk_widget_set_sensitive(LUW("cfg_ftitle_override"), FALSE);
 	xs_cfg.titleOverride = TRUE;
 #endif
 
-#ifndef HAVE_SONG_POSITION
+#if !defined(HAVE_SONG_POSITION) && !defined(AUDACIOUS_PLUGIN)
 	gtk_widget_set_sensitive(LUW("cfg_subctrl_patch"), FALSE);
 #endif
 
-	/* Update the widget sensitivities */
-	gtk_widget_set_sensitive(LUW("cfg_resid_frame"), FALSE);
-
-#ifndef AUDACIOUS_PLUGIN
 	xs_cfg_ftitle_override_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_ftitle_override")), NULL);
-#endif
 	xs_cfg_emu_filters_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_filters")), NULL);
 	xs_cfg_emu_sidplay1_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay1")), NULL);
 	xs_cfg_emu_sidplay2_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay2")), NULL);
--- a/src/sid/xs_genui.h	Wed Sep 05 09:29:26 2007 +0300
+++ b/src/sid/xs_genui.h	Thu Sep 06 03:03:03 2007 +0300
@@ -188,3 +188,7 @@
 xs_confirmwin_delete                   (GtkWidget       *widget,
                                         GdkEvent        *event,
                                         gpointer         user_data);
+
+void
+xs_cfg_ftitle_override_toggled         (GtkToggleButton *togglebutton,
+                                        gpointer         user_data);
--- a/src/sid/xs_interface.c	Wed Sep 05 09:29:26 2007 +0300
+++ b/src/sid/xs_interface.c	Thu Sep 06 03:03:03 2007 +0300
@@ -173,6 +173,14 @@
   GtkWidget *cfg_sld_dbbrowse;
   GtkWidget *label17;
   GtkWidget *w_label26;
+  GtkWidget *frame1;
+  GtkWidget *vbox1;
+  GtkWidget *cfg_ftitle_override;
+  GtkWidget *cfg_ftitle_box;
+  GtkWidget *cfg_ftitle_format;
+  GtkWidget *cfg_ftitle_descs;
+  GtkWidget *label29;
+  GtkWidget *w_label27;
   GtkWidget *w_vbox19;
   GtkWidget *w_frame31;
   GtkWidget *w_vbox35;
@@ -1016,6 +1024,54 @@
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (cfg_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (cfg_notebook), 4), w_label26);
   gtk_label_set_justify (GTK_LABEL (w_label26), GTK_JUSTIFY_CENTER);
 
+  frame1 = gtk_frame_new (NULL);
+  gtk_widget_set_name (frame1, "frame1");
+  gtk_widget_show (frame1);
+  gtk_container_add (GTK_CONTAINER (cfg_notebook), frame1);
+  gtk_container_set_border_width (GTK_CONTAINER (frame1), 4);
+
+  vbox1 = gtk_vbox_new (FALSE, 2);
+  gtk_widget_set_name (vbox1, "vbox1");
+  gtk_widget_show (vbox1);
+  gtk_container_add (GTK_CONTAINER (frame1), vbox1);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
+
+  cfg_ftitle_override = gtk_check_button_new_with_mnemonic (_("Override generic Tuplez format string"));
+  gtk_widget_set_name (cfg_ftitle_override, "cfg_ftitle_override");
+  gtk_widget_show (cfg_ftitle_override);
+  gtk_box_pack_start (GTK_BOX (vbox1), cfg_ftitle_override, FALSE, FALSE, 0);
+  gtk_tooltips_set_tip (tooltips, cfg_ftitle_override, _("By enabling this option you can specify a custom Tuplez formatting string for SID-files. The SID-plugin specific Tuplez tags are described shortly below."), NULL);
+
+  cfg_ftitle_box = gtk_vbox_new (FALSE, 0);
+  gtk_widget_set_name (cfg_ftitle_box, "cfg_ftitle_box");
+  gtk_widget_show (cfg_ftitle_box);
+  gtk_box_pack_start (GTK_BOX (vbox1), cfg_ftitle_box, TRUE, TRUE, 0);
+
+  cfg_ftitle_format = gtk_entry_new ();
+  gtk_widget_set_name (cfg_ftitle_format, "cfg_ftitle_format");
+  gtk_widget_show (cfg_ftitle_format);
+  gtk_box_pack_start (GTK_BOX (cfg_ftitle_box), cfg_ftitle_format, FALSE, FALSE, 0);
+  gtk_tooltips_set_tip (tooltips, cfg_ftitle_format, _("Tuplez format string for SID-files"), NULL);
+  gtk_entry_set_invisible_char (GTK_ENTRY (cfg_ftitle_format), 9679);
+
+  cfg_ftitle_descs = gtk_label_new (_("Descriptions of <i>SID-specific</i> Tuplez fields go here. <b>:D</b>"));
+  gtk_widget_set_name (cfg_ftitle_descs, "cfg_ftitle_descs");
+  gtk_widget_show (cfg_ftitle_descs);
+  gtk_box_pack_start (GTK_BOX (cfg_ftitle_box), cfg_ftitle_descs, TRUE, TRUE, 0);
+  gtk_label_set_use_markup (GTK_LABEL (cfg_ftitle_descs), TRUE);
+  gtk_label_set_line_wrap (GTK_LABEL (cfg_ftitle_descs), TRUE);
+  gtk_misc_set_padding (GTK_MISC (cfg_ftitle_descs), 8, 8);
+
+  label29 = gtk_label_new (_("Song title format:"));
+  gtk_widget_set_name (label29, "label29");
+  gtk_widget_show (label29);
+  gtk_frame_set_label_widget (GTK_FRAME (frame1), label29);
+
+  w_label27 = gtk_label_new (_("Title"));
+  gtk_widget_set_name (w_label27, "w_label27");
+  gtk_widget_show (w_label27);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (cfg_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (cfg_notebook), 5), w_label27);
+
   w_vbox19 = gtk_vbox_new (FALSE, 0);
   gtk_widget_set_name (w_vbox19, "w_vbox19");
   gtk_widget_show (w_vbox19);
@@ -1037,11 +1093,13 @@
   gtk_widget_set_name (cfg_subauto_enable, "cfg_subauto_enable");
   gtk_widget_show (cfg_subauto_enable);
   gtk_box_pack_start (GTK_BOX (w_vbox35), cfg_subauto_enable, FALSE, FALSE, 0);
+  gtk_tooltips_set_tip (tooltips, cfg_subauto_enable, _("If enabled, sub-tunes of each file will be added to playlist. If disabled, only the default sub-tune will be added."), NULL);
 
-  cfg_subauto_min_only = gtk_check_button_new_with_mnemonic (_("Only tunes with specified minimum length "));
+  cfg_subauto_min_only = gtk_check_button_new_with_mnemonic (_("Only tunes with specified minimum duration"));
   gtk_widget_set_name (cfg_subauto_min_only, "cfg_subauto_min_only");
   gtk_widget_show (cfg_subauto_min_only);
   gtk_box_pack_start (GTK_BOX (w_vbox35), cfg_subauto_min_only, FALSE, FALSE, 0);
+  gtk_tooltips_set_tip (tooltips, cfg_subauto_min_only, _("Only add sub-tunes that have a duration of at least specified time."), NULL);
 
   cfg_subauto_box = gtk_hbox_new (FALSE, 2);
   gtk_widget_set_name (cfg_subauto_box, "cfg_subauto_box");
@@ -1171,7 +1229,7 @@
   w_label3 = gtk_label_new (_("Misc"));
   gtk_widget_set_name (w_label3, "w_label3");
   gtk_widget_show (w_label3);
-  gtk_notebook_set_tab_label (GTK_NOTEBOOK (cfg_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (cfg_notebook), 5), w_label3);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (cfg_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (cfg_notebook), 6), w_label3);
   gtk_label_set_justify (GTK_LABEL (w_label3), GTK_JUSTIFY_CENTER);
 
   hbuttonbox1 = gtk_hbutton_box_new ();
@@ -1247,6 +1305,9 @@
   g_signal_connect ((gpointer) cfg_sld_dbbrowse, "clicked",
                     G_CALLBACK (xs_cfg_sldb_browse),
                     NULL);
+  g_signal_connect ((gpointer) cfg_ftitle_override, "toggled",
+                    G_CALLBACK (xs_cfg_ftitle_override_toggled),
+                    NULL);
   g_signal_connect ((gpointer) cfg_subauto_enable, "toggled",
                     G_CALLBACK (xs_cfg_subauto_enable_toggled),
                     NULL);
@@ -1401,6 +1462,14 @@
   GLADE_HOOKUP_OBJECT (xs_configwin, cfg_sld_dbbrowse, "cfg_sld_dbbrowse");
   GLADE_HOOKUP_OBJECT (xs_configwin, label17, "label17");
   GLADE_HOOKUP_OBJECT (xs_configwin, w_label26, "w_label26");
+  GLADE_HOOKUP_OBJECT (xs_configwin, frame1, "frame1");
+  GLADE_HOOKUP_OBJECT (xs_configwin, vbox1, "vbox1");
+  GLADE_HOOKUP_OBJECT (xs_configwin, cfg_ftitle_override, "cfg_ftitle_override");
+  GLADE_HOOKUP_OBJECT (xs_configwin, cfg_ftitle_box, "cfg_ftitle_box");
+  GLADE_HOOKUP_OBJECT (xs_configwin, cfg_ftitle_format, "cfg_ftitle_format");
+  GLADE_HOOKUP_OBJECT (xs_configwin, cfg_ftitle_descs, "cfg_ftitle_descs");
+  GLADE_HOOKUP_OBJECT (xs_configwin, label29, "label29");
+  GLADE_HOOKUP_OBJECT (xs_configwin, w_label27, "w_label27");
   GLADE_HOOKUP_OBJECT (xs_configwin, w_vbox19, "w_vbox19");
   GLADE_HOOKUP_OBJECT (xs_configwin, w_frame31, "w_frame31");
   GLADE_HOOKUP_OBJECT (xs_configwin, w_vbox35, "w_vbox35");