Mercurial > audlegacy
view Plugins/Output/crossfade/interface.c @ 259:88b38e2414a1 trunk
[svn] First attempt at porting the crossfade plugin; patches from bug #363 applied, GThreadified, includes fixed. Will most probably not compile as of yet.
author | chainsaw |
---|---|
date | Sun, 04 Dec 2005 15:58:55 -0800 |
parents | |
children |
line wrap: on
line source
/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include <config.h> #endif #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <string.h> #include <gdk/gdkkeysyms.h> #include <gtk/gtk.h> #include "callbacks.h" #include "interface.h" #include "support.h" GtkWidget* create_config_win (void) { GtkWidget *config_win; GtkWidget *config_vbox; GtkWidget *config_notebook; GtkWidget *config_output_page; GtkWidget *output_options_hbox; GtkWidget *output_method_frame; GtkWidget *output_method_vbox; GSList *output_method_group_group = NULL; GtkWidget *output_oss_radio; GtkWidget *output_plugin_radio; GtkWidget *output_none_radio; GtkWidget *output_resampling_frame; GtkWidget *output_resampling_table; GtkWidget *resampling_rate_optionmenu; GtkWidget *resampling_rate_optionmenu_menu; GtkWidget *resampling_quality_optionmenu; GtkWidget *resampling_quality_optionmenu_menu; GtkWidget *resampling_rate_hbox; GtkWidget *resampling_rate_label; GtkWidget *resampling_quality_hbox; GtkWidget *resampling_quality_label; GtkWidget *output_notebook; GtkWidget *output_oss_page; GtkWidget *output_oss_notebook; GtkWidget *oss_device_page; GtkWidget *oss_adevice_frame; GtkWidget *oss_adevice_vbox; GtkWidget *oss_adevice_hbox; GtkWidget *oss_adevice_optionmenu; GtkWidget *oss_adevice_optionmenu_menu; GtkWidget *glade_menuitem; GtkWidget *oss_adevice_alt_hbox; GtkWidget *oss_adevice_alt_check; GtkWidget *oss_adevice_alt_entry; GtkWidget *oss_mdevice_frame; GtkWidget *oss_mdevice_vbox; GtkWidget *oss_mdevice_hbox; GtkWidget *oss_mdevice_optionmenu; GtkWidget *oss_mdevice_optionmenu_menu; GtkWidget *oss_mdevice_alt_hbox; GtkWidget *oss_mdevice_alt_check; GtkWidget *oss_mdevice_alt_entry; GtkWidget *oss_device_label; GtkWidget *oss_buffer_page; GtkWidget *oss_buffer_frame; GtkWidget *oss_buffer_vbox; GtkWidget *ossbuf_buffer_hbox; GtkWidget *ossbuf_buffer_label; GtkObject *ossbuf_buffer_spin_adj; GtkWidget *ossbuf_buffer_spin; GtkWidget *ossbuf_preload_hbox; GtkWidget *ossbuf_preload_label; GtkObject *ossbuf_preload_spin_adj; GtkWidget *ossbuf_preload_spin; GtkWidget *oss_hwbuf_frame; GtkWidget *oss_hwbuf_vbox; GtkWidget *osshwb_maxbuf_check; GtkWidget *osshwb_fragments_hbox; GtkWidget *osshwb_fragments_label; GtkObject *osshwb_fragments_spin_adj; GtkWidget *osshwb_fragments_spin; GtkWidget *osshwb_fragsize_hbox; GtkWidget *osshwb_fragsize_label; GtkObject *osshwb_fragsize_spin_adj; GtkWidget *osshwb_fragsize_spin; GtkWidget *oss_buffer_label; GtkWidget *oss_mixer_page; GtkWidget *oss_mixer_frame; GtkWidget *oss_mixer_vbox; GtkWidget *ossmixer_pcm_check; GtkWidget *oss_mixer_label; GtkWidget *output_plugin_page; GtkWidget *op_plugin_frame; GtkWidget *op_plugin_vbox; GtkWidget *op_plugin_optionmenu; GtkWidget *op_plugin_optionmenu_menu; GtkWidget *op_plugin_buttonbox; GtkWidget *op_configure_button; GtkWidget *op_about_button; GtkWidget *op_options_frame; GtkWidget *op_options_vbox; GtkWidget *op_throttle_check; GtkWidget *op_maxblock_hbox; GtkWidget *op_maxblock_check; GtkObject *op_maxblock_spin_adj; GtkWidget *op_maxblock_spin; GtkWidget *op_forcereopen_check; GtkWidget *empty_notebook_page; GtkWidget *output_help_label; GtkWidget *config_devices_label; GtkWidget *config_effects_page; GtkWidget *ep_plugin_frame; GtkWidget *ep_plugin_vbox; GtkWidget *ep_plugin_optionmenu; GtkWidget *ep_plugin_optionmenu_menu; GtkWidget *ep_plugin_buttonbox; GtkWidget *ep_configure_button; GtkWidget *ep_about_button; GtkWidget *ep_enable_check; GtkWidget *effects_volnorm_frame; GtkWidget *effects_volnorm_table; GtkWidget *volnorm_quantaudio_check; GtkObject *volnorm_target_spin_adj; GtkWidget *volnorm_target_spin; GtkWidget *volnorm_target_hbox; GtkWidget *volnorm_target_label; GtkWidget *volnorm_enable_check; GtkWidget *volnorm_rva2_check; GtkWidget *effects_help_label; GtkWidget *config_effects_label; GtkWidget *config_crossfader_page; GtkWidget *xf_bufsize_hbox; GtkWidget *xf_bufsize_label; GtkObject *xf_buffer_spin_adj; GtkWidget *xf_buffer_spin; GtkWidget *xf_autobuf_check; GtkWidget *xf_config_hbox; GtkWidget *xf_config_label; GtkWidget *xf_config_optionmenu; GtkWidget *xf_config_optionmenu_menu; GtkWidget *xf_type_hbox; GtkWidget *xf_type_label; GtkWidget *xf_type_optionmenu; GtkWidget *xf_type_optionmenu_menu; GtkWidget *xf_type_notebook; GtkWidget *xft_reopen_label; GtkWidget *xft_flush_page; GtkWidget *xftf_pause_frame; GtkWidget *xftf_pause_table; GtkWidget *xftfp_length_label; GtkObject *xftfp_length_spin_adj; GtkWidget *xftfp_length_spin; GtkWidget *xftfp_enable_check; GtkWidget *xftf_fadein_frame; GtkWidget *xftf_fadein_table; GtkWidget *xftffi_length_hbox; GtkWidget *xftffi_length_label; GtkWidget *xftffi_volume_hbox; GtkWidget *xftffi_volume_label; GtkObject *xftffi_length_spin_adj; GtkWidget *xftffi_length_spin; GtkWidget *xftffi_enable_check; GtkObject *xftffi_volume_spin_adj; GtkWidget *xftffi_volume_spin; GtkWidget *xft_flush_label; GtkWidget *xft_none_label; GtkWidget *xft_pause_page; GtkWidget *xf_pause_frame; GtkWidget *xf_pause_table; GtkWidget *pause_length_hbox; GtkWidget *pause_length_label; GtkObject *pause_length_spin_adj; GtkWidget *pause_length_spin; GtkWidget *xft_pause_label; GtkWidget *xft_simplexf_page; GtkWidget *xf_simple_frame; GtkWidget *xf_simple_table; GtkWidget *simple_length_hbox; GtkWidget *simple_length_label; GtkObject *simple_length_spin_adj; GtkWidget *simple_length_spin; GtkWidget *xft_simplexf_label; GtkWidget *xft_advancedxf_page; GtkWidget *xf_fadeout_frame; GtkWidget *xf_fadeout_table; GtkWidget *fadeout_length_hbox; GtkWidget *fadeout_length_label; GtkObject *fadeout_length_spin_adj; GtkWidget *fadeout_length_spin; GtkWidget *fadeout_volume_hbox; GtkWidget *fadeout_volume_label; GtkObject *fadeout_volume_spin_adj; GtkWidget *fadeout_volume_spin; GtkWidget *fadeout_options_hbox; GtkWidget *fadeout_enable_check; GtkWidget *xf_offset_frame; GtkWidget *xf_offset_table; GtkWidget *xfofs_custom_hbox; GSList *offset_group_group = NULL; GtkWidget *xfofs_custom_radiobutton; GtkObject *xfofs_custom_spin_adj; GtkWidget *xfofs_custom_spin; GtkWidget *xfofs_none_radiobutton; GtkWidget *xfofs_lockout_radiobutton; GtkWidget *xfofs_lockin_radiobutton; GtkWidget *xf_fadein_frame; GtkWidget *xf_fadein_table; GtkWidget *fadein_length_hbox; GtkWidget *fadein_length_label; GtkWidget *fadein_volume_hbox; GtkWidget *fadein_volume_label; GtkObject *fadein_length_spin_adj; GtkWidget *fadein_length_spin; GtkWidget *fadein_enable_check; GtkWidget *fadein_lock_check; GtkObject *fadein_volume_spin_adj; GtkWidget *fadein_volume_spin; GtkWidget *xft_advancedxf_label; GtkWidget *xft_fadein_page; GtkWidget *xftfi_fadein_frame; GtkWidget *xftfi_fadein_table; GtkWidget *xftfi_length_hbox; GtkWidget *xftfi_length_label; GtkWidget *xftfi_volume_hbox; GtkWidget *xftfi_volume_label; GtkObject *xftfi_length_spin_adj; GtkWidget *xftfi_length_spin; GtkObject *xftfi_volume_spin_adj; GtkWidget *xftfi_volume_spin; GtkWidget *xft_fadein_label; GtkWidget *xft_fadeout_page; GtkWidget *xftfo_fadeout_frame; GtkWidget *xftfo_fadeout_table; GtkWidget *xftfo_length_hbox; GtkWidget *xftfo_length_label; GtkObject *xftfo_length_spin_adj; GtkWidget *xftfo_length_spin; GtkWidget *xftfo_volume_hbox; GtkWidget *xftfo_volume_label; GtkObject *xftfo_volume_spin_adj; GtkWidget *xftfo_volume_spin; GtkWidget *xftfo_silence_frame; GtkWidget *xftfo_silence_table; GtkWidget *xftfo_silence_hbox; GtkWidget *xftfo_silence_label; GtkObject *xftfo_silence_spin_adj; GtkWidget *xftfo_silence_spin; GtkWidget *xft_fadeout_label; GtkWidget *xft_pause_none_label; GtkWidget *xft_pause_adv_page; GtkWidget *xft_fadeoutin_frame; GtkWidget *xft_fadeoutin_table; GtkObject *xftfoi_fadeout_spin_adj; GtkWidget *xftfoi_fadeout_spin; GtkObject *xftfoi_silence_spin_adj; GtkWidget *xftfoi_silence_spin; GtkObject *xftfoi_fadein_spin_adj; GtkWidget *xftfoi_fadein_spin; GtkWidget *xftfoi_fadein_hbox; GtkWidget *xftfoi_fadein_label; GtkWidget *xftfoi_silence_hbox; GtkWidget *xftfoi_silence_label; GtkWidget *xftfoi_fadeout_hbox; GtkWidget *xftfoi_fadeout_label; GtkWidget *xft_pause_adv_label; GtkWidget *config_crossfade_label; GtkWidget *config_gapkiller_page; GtkWidget *gap_leading_frame; GtkWidget *gap_leading_table; GtkObject *lgap_length_spin_adj; GtkWidget *lgap_length_spin; GtkObject *lgap_level_spin_adj; GtkWidget *lgap_level_spin; GtkWidget *lgap_length_hbox; GtkWidget *lgap_length_label; GtkWidget *lgap_level_hbox; GtkWidget *lgap_level_label; GtkWidget *lgap_enable_check; GtkWidget *gap_trailing_frame; GtkWidget *gap_trailing_table; GtkWidget *tgap_length_hbox; GtkWidget *tgap_length_label; GtkWidget *tgap_level_hbox; GtkWidget *tgap_level_label; GtkObject *tgap_length_spin_adj; GtkWidget *tgap_length_spin; GtkObject *tgap_level_spin_adj; GtkWidget *tgap_level_spin; GtkWidget *tgap_lock_check; GtkWidget *tgap_enable_check; GtkWidget *gap_advanced_frame; GtkWidget *gap_advanced_vbox; GtkWidget *gadv_crossing_check; GtkWidget *config_gapkiller_label; GtkWidget *config_misc_page; GtkWidget *misc_debug_frame; GtkWidget *misc_debug_vbox; GtkWidget *debug_stderr_check; GtkWidget *debug_monitor_check; GtkWidget *misc_mixopt_frame; GtkWidget *misc_mixopt_vbox; GtkWidget *mixopt_enable_check; GtkWidget *mixopt_reverse_check; GtkWidget *mixopt_software_check; GtkWidget *misc_other_frame; GtkWidget *misc_other_vbox; GtkWidget *moth_songchange_hbox; GtkWidget *moth_songchange_label; GtkObject *moth_songchange_spin_adj; GtkWidget *moth_songchange_spin; GtkWidget *moth_preload_hbox; GtkWidget *moth_preload_label; GtkObject *moth_preload_spin_adj; GtkWidget *moth_preload_spin; GtkWidget *moth_noxf_hbox; GtkWidget *moth_noxf_label; GtkWidget *noxf_album_check; GtkWidget *noxf_samefile_check; GtkWidget *moth_httpworkaround_check; GtkWidget *moth_opmaxused_hbox; GtkWidget *moth_opmaxused_check; GtkObject *moth_opmaxused_spin_adj; GtkWidget *moth_opmaxused_spin; GtkWidget *moth_quantaudio_check; GtkWidget *moth_outputkeepopened_check; GtkWidget *config_misc_label; GtkWidget *config_presets_page; GtkWidget *presets_name_hbox; GtkWidget *presets_name_entry; GtkWidget *presets_delete_button; GtkWidget *presets_new_button; GtkWidget *presets_list_scrolledwindow; GtkWidget *presets_list_list; GtkWidget *label6; GtkWidget *label7; GtkWidget *label8; GtkWidget *presets_list_bbox; GtkWidget *presets_load_button; GtkWidget *presets_save_button; GtkWidget *config_presets_label; GtkWidget *config_bbox; GtkWidget *config_ok; GtkWidget *config_cancel; GtkWidget *config_apply; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); config_win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_object_set_data (GTK_OBJECT (config_win), "config_win", config_win); gtk_window_set_title (GTK_WINDOW (config_win), "Crossfade Configuration"); config_vbox = gtk_vbox_new (FALSE, 10); gtk_widget_ref (config_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_vbox", config_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_vbox); gtk_container_add (GTK_CONTAINER (config_win), config_vbox); gtk_container_set_border_width (GTK_CONTAINER (config_vbox), 10); config_notebook = gtk_notebook_new (); gtk_widget_ref (config_notebook); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_notebook", config_notebook, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_notebook); gtk_box_pack_start (GTK_BOX (config_vbox), config_notebook, TRUE, TRUE, 0); config_output_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (config_output_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_output_page", config_output_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_output_page); gtk_container_add (GTK_CONTAINER (config_notebook), config_output_page); gtk_container_set_border_width (GTK_CONTAINER (config_output_page), 5); output_options_hbox = gtk_hbox_new (FALSE, 6); gtk_widget_ref (output_options_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_options_hbox", output_options_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_options_hbox); gtk_box_pack_start (GTK_BOX (config_output_page), output_options_hbox, FALSE, TRUE, 0); output_method_frame = gtk_frame_new ("Output method"); gtk_widget_ref (output_method_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_method_frame", output_method_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_method_frame); gtk_box_pack_start (GTK_BOX (output_options_hbox), output_method_frame, TRUE, TRUE, 0); output_method_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (output_method_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_method_vbox", output_method_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_method_vbox); gtk_container_add (GTK_CONTAINER (output_method_frame), output_method_vbox); gtk_container_set_border_width (GTK_CONTAINER (output_method_vbox), 5); output_oss_radio = gtk_radio_button_new_with_label (output_method_group_group, "Builtin OSS driver"); output_method_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (output_oss_radio)); gtk_widget_ref (output_oss_radio); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_oss_radio", output_oss_radio, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_oss_radio); gtk_box_pack_start (GTK_BOX (output_method_vbox), output_oss_radio, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, output_oss_radio, "Use XMMS-crossfade's builtin OSS driver for output.", NULL); output_plugin_radio = gtk_radio_button_new_with_label (output_method_group_group, "Output plugin"); output_method_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (output_plugin_radio)); gtk_widget_ref (output_plugin_radio); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_plugin_radio", output_plugin_radio, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_plugin_radio); gtk_box_pack_start (GTK_BOX (output_method_vbox), output_plugin_radio, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, output_plugin_radio, "Use an existing plugin for output.", NULL); output_none_radio = gtk_radio_button_new_with_label (output_method_group_group, "None [not implemented]"); output_method_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (output_none_radio)); gtk_widget_ref (output_none_radio); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_none_radio", output_none_radio, (GtkDestroyNotify) gtk_widget_unref); gtk_box_pack_start (GTK_BOX (output_method_vbox), output_none_radio, FALSE, FALSE, 0); gtk_widget_set_sensitive (output_none_radio, FALSE); output_resampling_frame = gtk_frame_new ("Resampling"); gtk_widget_ref (output_resampling_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_resampling_frame", output_resampling_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_resampling_frame); gtk_box_pack_start (GTK_BOX (output_options_hbox), output_resampling_frame, FALSE, TRUE, 0); output_resampling_table = gtk_table_new (2, 2, FALSE); gtk_widget_ref (output_resampling_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_resampling_table", output_resampling_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_resampling_table); gtk_container_add (GTK_CONTAINER (output_resampling_frame), output_resampling_table); gtk_container_set_border_width (GTK_CONTAINER (output_resampling_table), 5); gtk_table_set_row_spacings (GTK_TABLE (output_resampling_table), 2); gtk_table_set_col_spacings (GTK_TABLE (output_resampling_table), 2); resampling_rate_optionmenu = gtk_option_menu_new (); gtk_widget_ref (resampling_rate_optionmenu); gtk_object_set_data_full (GTK_OBJECT (config_win), "resampling_rate_optionmenu", resampling_rate_optionmenu, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (resampling_rate_optionmenu); gtk_table_attach (GTK_TABLE (output_resampling_table), resampling_rate_optionmenu, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, resampling_rate_optionmenu, "Set the sample rate for playback. Internally, XMMS-crossfade will resample all audio to this sample rate before playback.\nDefault: 44100 Hz", NULL); resampling_rate_optionmenu_menu = gtk_menu_new (); gtk_option_menu_set_menu (GTK_OPTION_MENU (resampling_rate_optionmenu), resampling_rate_optionmenu_menu); resampling_quality_optionmenu = gtk_option_menu_new (); gtk_widget_ref (resampling_quality_optionmenu); gtk_object_set_data_full (GTK_OBJECT (config_win), "resampling_quality_optionmenu", resampling_quality_optionmenu, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (resampling_quality_optionmenu); gtk_table_attach (GTK_TABLE (output_resampling_table), resampling_quality_optionmenu, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, resampling_quality_optionmenu, "Set the resampling quality. Note that higher quality also means higher CPU usage.", NULL); resampling_quality_optionmenu_menu = gtk_menu_new (); gtk_option_menu_set_menu (GTK_OPTION_MENU (resampling_quality_optionmenu), resampling_quality_optionmenu_menu); resampling_rate_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (resampling_rate_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "resampling_rate_hbox", resampling_rate_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (resampling_rate_hbox); gtk_table_attach (GTK_TABLE (output_resampling_table), resampling_rate_hbox, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); resampling_rate_label = gtk_label_new ("Rate:"); gtk_widget_ref (resampling_rate_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "resampling_rate_label", resampling_rate_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (resampling_rate_label); gtk_box_pack_end (GTK_BOX (resampling_rate_hbox), resampling_rate_label, FALSE, FALSE, 0); resampling_quality_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (resampling_quality_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "resampling_quality_hbox", resampling_quality_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (resampling_quality_hbox); gtk_table_attach (GTK_TABLE (output_resampling_table), resampling_quality_hbox, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); resampling_quality_label = gtk_label_new ("Quality:"); gtk_widget_ref (resampling_quality_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "resampling_quality_label", resampling_quality_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (resampling_quality_label); gtk_box_pack_end (GTK_BOX (resampling_quality_hbox), resampling_quality_label, FALSE, FALSE, 0); output_notebook = gtk_notebook_new (); gtk_widget_ref (output_notebook); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_notebook", output_notebook, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_notebook); gtk_box_pack_start (GTK_BOX (config_output_page), output_notebook, FALSE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS (output_notebook, GTK_CAN_FOCUS); gtk_notebook_set_show_tabs (GTK_NOTEBOOK (output_notebook), FALSE); gtk_notebook_set_show_border (GTK_NOTEBOOK (output_notebook), FALSE); output_oss_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (output_oss_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_oss_page", output_oss_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_oss_page); gtk_container_add (GTK_CONTAINER (output_notebook), output_oss_page); output_oss_notebook = gtk_notebook_new (); gtk_widget_ref (output_oss_notebook); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_oss_notebook", output_oss_notebook, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_oss_notebook); gtk_box_pack_start (GTK_BOX (output_oss_page), output_oss_notebook, FALSE, FALSE, 0); oss_device_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (oss_device_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_device_page", oss_device_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_device_page); gtk_container_add (GTK_CONTAINER (output_oss_notebook), oss_device_page); gtk_container_set_border_width (GTK_CONTAINER (oss_device_page), 5); oss_adevice_frame = gtk_frame_new ("Audio device"); gtk_widget_ref (oss_adevice_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_adevice_frame", oss_adevice_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_adevice_frame); gtk_box_pack_start (GTK_BOX (oss_device_page), oss_adevice_frame, FALSE, FALSE, 0); oss_adevice_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (oss_adevice_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_adevice_vbox", oss_adevice_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_adevice_vbox); gtk_container_add (GTK_CONTAINER (oss_adevice_frame), oss_adevice_vbox); gtk_container_set_border_width (GTK_CONTAINER (oss_adevice_vbox), 5); oss_adevice_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (oss_adevice_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_adevice_hbox", oss_adevice_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_adevice_hbox); gtk_box_pack_start (GTK_BOX (oss_adevice_vbox), oss_adevice_hbox, TRUE, TRUE, 0); oss_adevice_optionmenu = gtk_option_menu_new (); gtk_widget_ref (oss_adevice_optionmenu); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_adevice_optionmenu", oss_adevice_optionmenu, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_adevice_optionmenu); gtk_box_pack_start (GTK_BOX (oss_adevice_hbox), oss_adevice_optionmenu, TRUE, TRUE, 0); oss_adevice_optionmenu_menu = gtk_menu_new (); glade_menuitem = gtk_menu_item_new_with_label ("dummy"); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (oss_adevice_optionmenu_menu), glade_menuitem); gtk_option_menu_set_menu (GTK_OPTION_MENU (oss_adevice_optionmenu), oss_adevice_optionmenu_menu); oss_adevice_alt_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (oss_adevice_alt_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_adevice_alt_hbox", oss_adevice_alt_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_adevice_alt_hbox); gtk_box_pack_start (GTK_BOX (oss_adevice_vbox), oss_adevice_alt_hbox, TRUE, TRUE, 0); oss_adevice_alt_check = gtk_check_button_new_with_label ("Use alternate device:"); gtk_widget_ref (oss_adevice_alt_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_adevice_alt_check", oss_adevice_alt_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_adevice_alt_check); gtk_box_pack_start (GTK_BOX (oss_adevice_alt_hbox), oss_adevice_alt_check, FALSE, FALSE, 0); oss_adevice_alt_entry = gtk_entry_new (); gtk_widget_ref (oss_adevice_alt_entry); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_adevice_alt_entry", oss_adevice_alt_entry, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_adevice_alt_entry); gtk_box_pack_start (GTK_BOX (oss_adevice_alt_hbox), oss_adevice_alt_entry, TRUE, TRUE, 0); oss_mdevice_frame = gtk_frame_new ("Mixer device"); gtk_widget_ref (oss_mdevice_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mdevice_frame", oss_mdevice_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mdevice_frame); gtk_box_pack_start (GTK_BOX (oss_device_page), oss_mdevice_frame, FALSE, FALSE, 0); oss_mdevice_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (oss_mdevice_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mdevice_vbox", oss_mdevice_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mdevice_vbox); gtk_container_add (GTK_CONTAINER (oss_mdevice_frame), oss_mdevice_vbox); gtk_container_set_border_width (GTK_CONTAINER (oss_mdevice_vbox), 5); oss_mdevice_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (oss_mdevice_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mdevice_hbox", oss_mdevice_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mdevice_hbox); gtk_box_pack_start (GTK_BOX (oss_mdevice_vbox), oss_mdevice_hbox, TRUE, TRUE, 0); oss_mdevice_optionmenu = gtk_option_menu_new (); gtk_widget_ref (oss_mdevice_optionmenu); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mdevice_optionmenu", oss_mdevice_optionmenu, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mdevice_optionmenu); gtk_box_pack_start (GTK_BOX (oss_mdevice_hbox), oss_mdevice_optionmenu, TRUE, TRUE, 0); oss_mdevice_optionmenu_menu = gtk_menu_new (); glade_menuitem = gtk_menu_item_new_with_label ("dummy"); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (oss_mdevice_optionmenu_menu), glade_menuitem); gtk_option_menu_set_menu (GTK_OPTION_MENU (oss_mdevice_optionmenu), oss_mdevice_optionmenu_menu); oss_mdevice_alt_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (oss_mdevice_alt_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mdevice_alt_hbox", oss_mdevice_alt_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mdevice_alt_hbox); gtk_box_pack_start (GTK_BOX (oss_mdevice_vbox), oss_mdevice_alt_hbox, FALSE, FALSE, 0); oss_mdevice_alt_check = gtk_check_button_new_with_label ("Use alternate device:"); gtk_widget_ref (oss_mdevice_alt_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mdevice_alt_check", oss_mdevice_alt_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mdevice_alt_check); gtk_box_pack_start (GTK_BOX (oss_mdevice_alt_hbox), oss_mdevice_alt_check, FALSE, FALSE, 0); oss_mdevice_alt_entry = gtk_entry_new (); gtk_widget_ref (oss_mdevice_alt_entry); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mdevice_alt_entry", oss_mdevice_alt_entry, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mdevice_alt_entry); gtk_box_pack_start (GTK_BOX (oss_mdevice_alt_hbox), oss_mdevice_alt_entry, TRUE, TRUE, 0); oss_device_label = gtk_label_new ("Device"); gtk_widget_ref (oss_device_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_device_label", oss_device_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_device_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (output_oss_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (output_oss_notebook), 0), oss_device_label); oss_buffer_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (oss_buffer_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_buffer_page", oss_buffer_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_buffer_page); gtk_container_add (GTK_CONTAINER (output_oss_notebook), oss_buffer_page); gtk_container_set_border_width (GTK_CONTAINER (oss_buffer_page), 5); oss_buffer_frame = gtk_frame_new ("Software buffer"); gtk_widget_ref (oss_buffer_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_buffer_frame", oss_buffer_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_buffer_frame); gtk_box_pack_start (GTK_BOX (oss_buffer_page), oss_buffer_frame, FALSE, FALSE, 0); oss_buffer_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (oss_buffer_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_buffer_vbox", oss_buffer_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_buffer_vbox); gtk_container_add (GTK_CONTAINER (oss_buffer_frame), oss_buffer_vbox); gtk_container_set_border_width (GTK_CONTAINER (oss_buffer_vbox), 5); ossbuf_buffer_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (ossbuf_buffer_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "ossbuf_buffer_hbox", ossbuf_buffer_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ossbuf_buffer_hbox); gtk_box_pack_start (GTK_BOX (oss_buffer_vbox), ossbuf_buffer_hbox, FALSE, FALSE, 0); ossbuf_buffer_label = gtk_label_new ("Buffer size (ms):"); gtk_widget_ref (ossbuf_buffer_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "ossbuf_buffer_label", ossbuf_buffer_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ossbuf_buffer_label); gtk_box_pack_start (GTK_BOX (ossbuf_buffer_hbox), ossbuf_buffer_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (ossbuf_buffer_label), GTK_JUSTIFY_LEFT); ossbuf_buffer_spin_adj = gtk_adjustment_new (0, 0, 60000, 10, 100, 10); ossbuf_buffer_spin = gtk_spin_button_new (GTK_ADJUSTMENT (ossbuf_buffer_spin_adj), 0, 0); gtk_widget_ref (ossbuf_buffer_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "ossbuf_buffer_spin", ossbuf_buffer_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ossbuf_buffer_spin); gtk_box_pack_start (GTK_BOX (ossbuf_buffer_hbox), ossbuf_buffer_spin, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (ossbuf_buffer_spin), TRUE); ossbuf_preload_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (ossbuf_preload_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "ossbuf_preload_hbox", ossbuf_preload_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ossbuf_preload_hbox); gtk_box_pack_start (GTK_BOX (oss_buffer_vbox), ossbuf_preload_hbox, TRUE, TRUE, 0); ossbuf_preload_label = gtk_label_new ("Preload size (ms):"); gtk_widget_ref (ossbuf_preload_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "ossbuf_preload_label", ossbuf_preload_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ossbuf_preload_label); gtk_box_pack_start (GTK_BOX (ossbuf_preload_hbox), ossbuf_preload_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (ossbuf_preload_label), GTK_JUSTIFY_LEFT); ossbuf_preload_spin_adj = gtk_adjustment_new (1500, 0, 60000, 10, 100, 10); ossbuf_preload_spin = gtk_spin_button_new (GTK_ADJUSTMENT (ossbuf_preload_spin_adj), 0, 0); gtk_widget_ref (ossbuf_preload_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "ossbuf_preload_spin", ossbuf_preload_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ossbuf_preload_spin); gtk_box_pack_start (GTK_BOX (ossbuf_preload_hbox), ossbuf_preload_spin, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (ossbuf_preload_spin), TRUE); oss_hwbuf_frame = gtk_frame_new ("Hardware device buffer"); gtk_widget_ref (oss_hwbuf_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_hwbuf_frame", oss_hwbuf_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_hwbuf_frame); gtk_box_pack_start (GTK_BOX (oss_buffer_page), oss_hwbuf_frame, TRUE, TRUE, 0); oss_hwbuf_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (oss_hwbuf_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_hwbuf_vbox", oss_hwbuf_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_hwbuf_vbox); gtk_container_add (GTK_CONTAINER (oss_hwbuf_frame), oss_hwbuf_vbox); gtk_container_set_border_width (GTK_CONTAINER (oss_hwbuf_vbox), 5); osshwb_maxbuf_check = gtk_check_button_new_with_label ("Maximum device buffer size"); gtk_widget_ref (osshwb_maxbuf_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "osshwb_maxbuf_check", osshwb_maxbuf_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (osshwb_maxbuf_check); gtk_box_pack_start (GTK_BOX (oss_hwbuf_vbox), osshwb_maxbuf_check, FALSE, FALSE, 0); osshwb_fragments_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (osshwb_fragments_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "osshwb_fragments_hbox", osshwb_fragments_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (osshwb_fragments_hbox); gtk_box_pack_start (GTK_BOX (oss_hwbuf_vbox), osshwb_fragments_hbox, FALSE, FALSE, 0); osshwb_fragments_label = gtk_label_new ("Number of Fragments:"); gtk_widget_ref (osshwb_fragments_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "osshwb_fragments_label", osshwb_fragments_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (osshwb_fragments_label); gtk_box_pack_start (GTK_BOX (osshwb_fragments_hbox), osshwb_fragments_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (osshwb_fragments_label), GTK_JUSTIFY_LEFT); osshwb_fragments_spin_adj = gtk_adjustment_new (50, 2, 65535, 1, 10, 10); osshwb_fragments_spin = gtk_spin_button_new (GTK_ADJUSTMENT (osshwb_fragments_spin_adj), 0, 0); gtk_widget_ref (osshwb_fragments_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "osshwb_fragments_spin", osshwb_fragments_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (osshwb_fragments_spin); gtk_box_pack_start (GTK_BOX (osshwb_fragments_hbox), osshwb_fragments_spin, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (osshwb_fragments_spin), TRUE); osshwb_fragsize_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (osshwb_fragsize_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "osshwb_fragsize_hbox", osshwb_fragsize_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (osshwb_fragsize_hbox); gtk_box_pack_start (GTK_BOX (oss_hwbuf_vbox), osshwb_fragsize_hbox, TRUE, TRUE, 0); osshwb_fragsize_label = gtk_label_new ("Fragment size (2^x bytes):"); gtk_widget_ref (osshwb_fragsize_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "osshwb_fragsize_label", osshwb_fragsize_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (osshwb_fragsize_label); gtk_box_pack_start (GTK_BOX (osshwb_fragsize_hbox), osshwb_fragsize_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (osshwb_fragsize_label), GTK_JUSTIFY_LEFT); osshwb_fragsize_spin_adj = gtk_adjustment_new (11, 4, 16, 1, 10, 10); osshwb_fragsize_spin = gtk_spin_button_new (GTK_ADJUSTMENT (osshwb_fragsize_spin_adj), 0, 0); gtk_widget_ref (osshwb_fragsize_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "osshwb_fragsize_spin", osshwb_fragsize_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (osshwb_fragsize_spin); gtk_box_pack_start (GTK_BOX (osshwb_fragsize_hbox), osshwb_fragsize_spin, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (osshwb_fragsize_spin), TRUE); oss_buffer_label = gtk_label_new ("Buffer"); gtk_widget_ref (oss_buffer_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_buffer_label", oss_buffer_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_buffer_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (output_oss_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (output_oss_notebook), 1), oss_buffer_label); oss_mixer_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (oss_mixer_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mixer_page", oss_mixer_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mixer_page); gtk_container_add (GTK_CONTAINER (output_oss_notebook), oss_mixer_page); gtk_container_set_border_width (GTK_CONTAINER (oss_mixer_page), 5); oss_mixer_frame = gtk_frame_new ("Mixer options"); gtk_widget_ref (oss_mixer_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mixer_frame", oss_mixer_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mixer_frame); gtk_box_pack_start (GTK_BOX (oss_mixer_page), oss_mixer_frame, FALSE, FALSE, 0); oss_mixer_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (oss_mixer_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mixer_vbox", oss_mixer_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mixer_vbox); gtk_container_add (GTK_CONTAINER (oss_mixer_frame), oss_mixer_vbox); gtk_container_set_border_width (GTK_CONTAINER (oss_mixer_vbox), 5); ossmixer_pcm_check = gtk_check_button_new_with_label ("Volume controls Master not PCM"); gtk_widget_ref (ossmixer_pcm_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "ossmixer_pcm_check", ossmixer_pcm_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ossmixer_pcm_check); gtk_box_pack_start (GTK_BOX (oss_mixer_vbox), ossmixer_pcm_check, FALSE, FALSE, 0); oss_mixer_label = gtk_label_new ("Mixer"); gtk_widget_ref (oss_mixer_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "oss_mixer_label", oss_mixer_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (oss_mixer_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (output_oss_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (output_oss_notebook), 2), oss_mixer_label); output_plugin_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (output_plugin_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_plugin_page", output_plugin_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_plugin_page); gtk_container_add (GTK_CONTAINER (output_notebook), output_plugin_page); op_plugin_frame = gtk_frame_new ("Output plugin"); gtk_widget_ref (op_plugin_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_plugin_frame", op_plugin_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_plugin_frame); gtk_box_pack_start (GTK_BOX (output_plugin_page), op_plugin_frame, FALSE, TRUE, 0); op_plugin_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (op_plugin_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_plugin_vbox", op_plugin_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_plugin_vbox); gtk_container_add (GTK_CONTAINER (op_plugin_frame), op_plugin_vbox); gtk_container_set_border_width (GTK_CONTAINER (op_plugin_vbox), 5); op_plugin_optionmenu = gtk_option_menu_new (); gtk_widget_ref (op_plugin_optionmenu); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_plugin_optionmenu", op_plugin_optionmenu, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_plugin_optionmenu); gtk_box_pack_start (GTK_BOX (op_plugin_vbox), op_plugin_optionmenu, FALSE, FALSE, 0); op_plugin_optionmenu_menu = gtk_menu_new (); glade_menuitem = gtk_menu_item_new_with_label ("dummy"); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (op_plugin_optionmenu_menu), glade_menuitem); gtk_option_menu_set_menu (GTK_OPTION_MENU (op_plugin_optionmenu), op_plugin_optionmenu_menu); op_plugin_buttonbox = gtk_hbutton_box_new (); gtk_widget_ref (op_plugin_buttonbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_plugin_buttonbox", op_plugin_buttonbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_plugin_buttonbox); gtk_box_pack_start (GTK_BOX (op_plugin_vbox), op_plugin_buttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (op_plugin_buttonbox), GTK_BUTTONBOX_START); gtk_button_box_set_spacing (GTK_BUTTON_BOX (op_plugin_buttonbox), 5); op_configure_button = gtk_button_new_with_label ("Configure"); gtk_widget_ref (op_configure_button); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_configure_button", op_configure_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_configure_button); gtk_container_add (GTK_CONTAINER (op_plugin_buttonbox), op_configure_button); GTK_WIDGET_SET_FLAGS (op_configure_button, GTK_CAN_DEFAULT); op_about_button = gtk_button_new_with_label ("About"); gtk_widget_ref (op_about_button); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_about_button", op_about_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_about_button); gtk_container_add (GTK_CONTAINER (op_plugin_buttonbox), op_about_button); GTK_WIDGET_SET_FLAGS (op_about_button, GTK_CAN_DEFAULT); op_options_frame = gtk_frame_new ("Plugin compatibility options"); gtk_widget_ref (op_options_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_options_frame", op_options_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_options_frame); gtk_box_pack_start (GTK_BOX (output_plugin_page), op_options_frame, FALSE, TRUE, 0); op_options_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (op_options_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_options_vbox", op_options_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_options_vbox); gtk_container_add (GTK_CONTAINER (op_options_frame), op_options_vbox); gtk_container_set_border_width (GTK_CONTAINER (op_options_vbox), 5); op_throttle_check = gtk_check_button_new_with_label ("Throttle Output"); gtk_widget_ref (op_throttle_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_throttle_check", op_throttle_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_throttle_check); gtk_box_pack_start (GTK_BOX (op_options_vbox), op_throttle_check, FALSE, FALSE, 0); op_maxblock_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (op_maxblock_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_maxblock_hbox", op_maxblock_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_maxblock_hbox); gtk_box_pack_start (GTK_BOX (op_options_vbox), op_maxblock_hbox, TRUE, TRUE, 0); op_maxblock_check = gtk_check_button_new_with_label ("Max block size (bytes):"); gtk_widget_ref (op_maxblock_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_maxblock_check", op_maxblock_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_maxblock_check); gtk_box_pack_start (GTK_BOX (op_maxblock_hbox), op_maxblock_check, FALSE, FALSE, 0); op_maxblock_spin_adj = gtk_adjustment_new (1024, 4, 1.04858e+06, 4, 16, 10); op_maxblock_spin = gtk_spin_button_new (GTK_ADJUSTMENT (op_maxblock_spin_adj), 10, 0); gtk_widget_ref (op_maxblock_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_maxblock_spin", op_maxblock_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_maxblock_spin); gtk_box_pack_start (GTK_BOX (op_maxblock_hbox), op_maxblock_spin, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (op_maxblock_spin), TRUE); gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (op_maxblock_spin), TRUE); op_forcereopen_check = gtk_check_button_new_with_label ("Force close/reopen on songchange"); gtk_widget_ref (op_forcereopen_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "op_forcereopen_check", op_forcereopen_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (op_forcereopen_check); gtk_box_pack_start (GTK_BOX (op_options_vbox), op_forcereopen_check, FALSE, FALSE, 0); empty_notebook_page = gtk_vbox_new (FALSE, 0); gtk_widget_show (empty_notebook_page); gtk_container_add (GTK_CONTAINER (output_notebook), empty_notebook_page); output_help_label = gtk_label_new ("When modifying the Output Options or the Mixing buffer size, you need to stop/restart playback for the settings to take effect."); gtk_widget_ref (output_help_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "output_help_label", output_help_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (output_help_label); gtk_box_pack_end (GTK_BOX (config_output_page), output_help_label, TRUE, TRUE, 0); gtk_label_set_justify (GTK_LABEL (output_help_label), GTK_JUSTIFY_LEFT); gtk_label_set_line_wrap (GTK_LABEL (output_help_label), TRUE); config_devices_label = gtk_label_new ("Output"); gtk_widget_ref (config_devices_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_devices_label", config_devices_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_devices_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (config_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (config_notebook), 0), config_devices_label); config_effects_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (config_effects_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_effects_page", config_effects_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_effects_page); gtk_container_add (GTK_CONTAINER (config_notebook), config_effects_page); gtk_container_set_border_width (GTK_CONTAINER (config_effects_page), 5); ep_plugin_frame = gtk_frame_new ("Pre-mixing effect plugin"); gtk_widget_ref (ep_plugin_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "ep_plugin_frame", ep_plugin_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ep_plugin_frame); gtk_box_pack_start (GTK_BOX (config_effects_page), ep_plugin_frame, FALSE, TRUE, 0); ep_plugin_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (ep_plugin_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "ep_plugin_vbox", ep_plugin_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ep_plugin_vbox); gtk_container_add (GTK_CONTAINER (ep_plugin_frame), ep_plugin_vbox); gtk_container_set_border_width (GTK_CONTAINER (ep_plugin_vbox), 5); ep_plugin_optionmenu = gtk_option_menu_new (); gtk_widget_ref (ep_plugin_optionmenu); gtk_object_set_data_full (GTK_OBJECT (config_win), "ep_plugin_optionmenu", ep_plugin_optionmenu, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ep_plugin_optionmenu); gtk_box_pack_start (GTK_BOX (ep_plugin_vbox), ep_plugin_optionmenu, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, ep_plugin_optionmenu, "Select an effect plugin. Take care not to use the same plugin as selected in XMMS' configuration dialog.", NULL); ep_plugin_optionmenu_menu = gtk_menu_new (); glade_menuitem = gtk_menu_item_new_with_label ("dummy"); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (ep_plugin_optionmenu_menu), glade_menuitem); gtk_option_menu_set_menu (GTK_OPTION_MENU (ep_plugin_optionmenu), ep_plugin_optionmenu_menu); ep_plugin_buttonbox = gtk_hbutton_box_new (); gtk_widget_ref (ep_plugin_buttonbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "ep_plugin_buttonbox", ep_plugin_buttonbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ep_plugin_buttonbox); gtk_box_pack_start (GTK_BOX (ep_plugin_vbox), ep_plugin_buttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (ep_plugin_buttonbox), GTK_BUTTONBOX_START); gtk_button_box_set_spacing (GTK_BUTTON_BOX (ep_plugin_buttonbox), 5); ep_configure_button = gtk_button_new_with_label ("Configure"); gtk_widget_ref (ep_configure_button); gtk_object_set_data_full (GTK_OBJECT (config_win), "ep_configure_button", ep_configure_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ep_configure_button); gtk_container_add (GTK_CONTAINER (ep_plugin_buttonbox), ep_configure_button); GTK_WIDGET_SET_FLAGS (ep_configure_button, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, ep_configure_button, "Open the configuration dialog of the plugin selected above.", NULL); ep_about_button = gtk_button_new_with_label ("About"); gtk_widget_ref (ep_about_button); gtk_object_set_data_full (GTK_OBJECT (config_win), "ep_about_button", ep_about_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ep_about_button); gtk_container_add (GTK_CONTAINER (ep_plugin_buttonbox), ep_about_button); GTK_WIDGET_SET_FLAGS (ep_about_button, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, ep_about_button, "Open the about dialog of the plugin selected above.", NULL); ep_enable_check = gtk_check_button_new_with_label ("Use plugin"); gtk_widget_ref (ep_enable_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "ep_enable_check", ep_enable_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (ep_enable_check); gtk_container_add (GTK_CONTAINER (ep_plugin_buttonbox), ep_enable_check); gtk_tooltips_set_tip (tooltips, ep_enable_check, "Enable the selected plugin. Note that after pressing 'Apply' it may take a while until you can hear the effect, since it is applied before the audio data goes into the buffer.", NULL); effects_volnorm_frame = gtk_frame_new ("Volume normalizer"); gtk_widget_ref (effects_volnorm_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "effects_volnorm_frame", effects_volnorm_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_box_pack_start (GTK_BOX (config_effects_page), effects_volnorm_frame, FALSE, FALSE, 0); effects_volnorm_table = gtk_table_new (4, 2, FALSE); gtk_widget_ref (effects_volnorm_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "effects_volnorm_table", effects_volnorm_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (effects_volnorm_table); gtk_container_add (GTK_CONTAINER (effects_volnorm_frame), effects_volnorm_table); gtk_container_set_border_width (GTK_CONTAINER (effects_volnorm_table), 5); gtk_table_set_row_spacings (GTK_TABLE (effects_volnorm_table), 2); gtk_table_set_col_spacings (GTK_TABLE (effects_volnorm_table), 5); volnorm_quantaudio_check = gtk_check_button_new_with_label ("Read Quantaudio comment field"); gtk_widget_ref (volnorm_quantaudio_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "volnorm_quantaudio_check", volnorm_quantaudio_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (volnorm_quantaudio_check); gtk_table_attach (GTK_TABLE (effects_volnorm_table), volnorm_quantaudio_check, 1, 2, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); volnorm_target_spin_adj = gtk_adjustment_new (8000, 0, 32768, 100, 1000, 10); volnorm_target_spin = gtk_spin_button_new (GTK_ADJUSTMENT (volnorm_target_spin_adj), 0, 0); gtk_widget_ref (volnorm_target_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "volnorm_target_spin", volnorm_target_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (volnorm_target_spin); gtk_table_attach (GTK_TABLE (effects_volnorm_table), volnorm_target_spin, 1, 2, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, volnorm_target_spin, "Set the maximum length for gaps at the end of a stream.\nDefault: 500", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (volnorm_target_spin), TRUE); volnorm_target_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (volnorm_target_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "volnorm_target_hbox", volnorm_target_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (volnorm_target_hbox); gtk_table_attach (GTK_TABLE (effects_volnorm_table), volnorm_target_hbox, 0, 1, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); volnorm_target_label = gtk_label_new ("Target RMS:"); gtk_widget_ref (volnorm_target_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "volnorm_target_label", volnorm_target_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (volnorm_target_label); gtk_box_pack_start (GTK_BOX (volnorm_target_hbox), volnorm_target_label, FALSE, FALSE, 0); volnorm_enable_check = gtk_check_button_new_with_label ("Enable"); gtk_widget_ref (volnorm_enable_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "volnorm_enable_check", volnorm_enable_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (volnorm_enable_check); gtk_table_attach (GTK_TABLE (effects_volnorm_table), volnorm_enable_check, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); volnorm_rva2_check = gtk_check_button_new_with_label ("Read ID3V2 RVA2 Tag"); gtk_widget_ref (volnorm_rva2_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "volnorm_rva2_check", volnorm_rva2_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (volnorm_rva2_check); gtk_table_attach (GTK_TABLE (effects_volnorm_table), volnorm_rva2_check, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); effects_help_label = gtk_label_new ("You do not need to press 'Apply' after making changes to the effect plugin settings. It may take a while though until you can hear the change, since the plugin is applied before the mixing buffer."); gtk_widget_ref (effects_help_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "effects_help_label", effects_help_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (effects_help_label); gtk_box_pack_start (GTK_BOX (config_effects_page), effects_help_label, TRUE, TRUE, 0); gtk_label_set_justify (GTK_LABEL (effects_help_label), GTK_JUSTIFY_LEFT); gtk_label_set_line_wrap (GTK_LABEL (effects_help_label), TRUE); config_effects_label = gtk_label_new ("Effects"); gtk_widget_ref (config_effects_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_effects_label", config_effects_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_effects_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (config_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (config_notebook), 1), config_effects_label); config_crossfader_page = gtk_vbox_new (FALSE, 2); gtk_widget_ref (config_crossfader_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_crossfader_page", config_crossfader_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_crossfader_page); gtk_container_add (GTK_CONTAINER (config_notebook), config_crossfader_page); gtk_container_set_border_width (GTK_CONTAINER (config_crossfader_page), 5); xf_bufsize_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (xf_bufsize_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_bufsize_hbox", xf_bufsize_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_bufsize_hbox); gtk_box_pack_start (GTK_BOX (config_crossfader_page), xf_bufsize_hbox, FALSE, FALSE, 0); xf_bufsize_label = gtk_label_new ("Mixing buffer size (ms):"); gtk_widget_ref (xf_bufsize_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_bufsize_label", xf_bufsize_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_bufsize_label); gtk_box_pack_start (GTK_BOX (xf_bufsize_hbox), xf_bufsize_label, FALSE, FALSE, 0); xf_buffer_spin_adj = gtk_adjustment_new (8500, 0, 60000, 100, 1000, 10); xf_buffer_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xf_buffer_spin_adj), 0, 0); gtk_widget_ref (xf_buffer_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_buffer_spin", xf_buffer_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_buffer_spin); gtk_box_pack_start (GTK_BOX (xf_bufsize_hbox), xf_buffer_spin, TRUE, TRUE, 0); gtk_tooltips_set_tip (tooltips, xf_buffer_spin, "Specify the size of the mixing buffer. Mixing buffer space is required for pauses, fade-outs, offsetting (i.e. interleaving the end and beginning of two songs) and killing trailing gaps. Fade-ins and killing leading gaps are done on-the-fly and do not depend on mixing buffer space.\nDefault: n/a - calculated automatically", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xf_buffer_spin), TRUE); xf_autobuf_check = gtk_check_button_new_with_label ("auto"); gtk_widget_ref (xf_autobuf_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_autobuf_check", xf_autobuf_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_autobuf_check); gtk_box_pack_start (GTK_BOX (xf_bufsize_hbox), xf_autobuf_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, xf_autobuf_check, "Automatically calculate an optimal buffer size.\nDefault: On", NULL); xf_config_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (xf_config_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_config_hbox", xf_config_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_config_hbox); gtk_box_pack_start (GTK_BOX (config_crossfader_page), xf_config_hbox, FALSE, FALSE, 0); xf_config_label = gtk_label_new ("Set parameters for:"); gtk_widget_ref (xf_config_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_config_label", xf_config_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_config_label); gtk_box_pack_start (GTK_BOX (xf_config_hbox), xf_config_label, FALSE, FALSE, 0); xf_config_optionmenu = gtk_option_menu_new (); gtk_widget_ref (xf_config_optionmenu); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_config_optionmenu", xf_config_optionmenu, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_config_optionmenu); gtk_box_pack_start (GTK_BOX (xf_config_hbox), xf_config_optionmenu, TRUE, TRUE, 0); gtk_tooltips_set_tip (tooltips, xf_config_optionmenu, "Select the type of songchange you want to configure:\n* Start of playback: When starting playback by pressing PLAY\n* Automatic songchange: When reaching the end of a song and the playlist advances to the next song\n* Manual songchange: When manually selecting another song, for example by pressing NEXT/PREV\n* Manual stop: When pressing the STOP button\n* End of playlist: After the last song in the playlist has been played\n* Seeking: When seeking within the current song", NULL); xf_config_optionmenu_menu = gtk_menu_new (); glade_menuitem = gtk_menu_item_new_with_label ("dummy"); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (xf_config_optionmenu_menu), glade_menuitem); gtk_option_menu_set_menu (GTK_OPTION_MENU (xf_config_optionmenu), xf_config_optionmenu_menu); xf_type_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (xf_type_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_type_hbox", xf_type_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_type_hbox); gtk_box_pack_start (GTK_BOX (config_crossfader_page), xf_type_hbox, FALSE, FALSE, 0); xf_type_label = gtk_label_new ("Crossfade/Transition type:"); gtk_widget_ref (xf_type_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_type_label", xf_type_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_type_label); gtk_box_pack_start (GTK_BOX (xf_type_hbox), xf_type_label, FALSE, FALSE, 0); xf_type_optionmenu = gtk_option_menu_new (); gtk_widget_ref (xf_type_optionmenu); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_type_optionmenu", xf_type_optionmenu, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_type_optionmenu); gtk_box_pack_start (GTK_BOX (xf_type_hbox), xf_type_optionmenu, TRUE, TRUE, 0); gtk_tooltips_set_tip (tooltips, xf_type_optionmenu, "Select the transition to be used for the songchange type selected above:\n* Fade-in: Fade-in at 'Start of playback'\n* Reopen output device: Force a close/open on the output plugin. This will most certainly re-introduce gaps and clicks, but might be usefull with some plugins.\n* Flush output device: Keeps the output plugin opened, but flushes its buffers. This will give you almost instant reaction when pressing NEXT/PREV.\n* None (gapless/off): Gapless mode. Keeps the device opened, but does not do any fading.\n* Simple crossfade: Does a simple crossfade between the previous and the next song.\n* Advanced crossfade: Allows you to configure the crossfade in more detail.\n* Fade-out: Fade-out at 'Manual stop' or 'End of playlist'.", NULL); xf_type_optionmenu_menu = gtk_menu_new (); glade_menuitem = gtk_menu_item_new_with_label ("dummy"); gtk_widget_show (glade_menuitem); gtk_menu_append (GTK_MENU (xf_type_optionmenu_menu), glade_menuitem); gtk_option_menu_set_menu (GTK_OPTION_MENU (xf_type_optionmenu), xf_type_optionmenu_menu); xf_type_notebook = gtk_notebook_new (); gtk_widget_ref (xf_type_notebook); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_type_notebook", xf_type_notebook, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_type_notebook); gtk_box_pack_start (GTK_BOX (config_crossfader_page), xf_type_notebook, FALSE, FALSE, 0); GTK_WIDGET_UNSET_FLAGS (xf_type_notebook, GTK_CAN_FOCUS); gtk_notebook_set_show_tabs (GTK_NOTEBOOK (xf_type_notebook), FALSE); gtk_notebook_set_show_border (GTK_NOTEBOOK (xf_type_notebook), FALSE); empty_notebook_page = gtk_vbox_new (FALSE, 0); gtk_widget_show (empty_notebook_page); gtk_container_add (GTK_CONTAINER (xf_type_notebook), empty_notebook_page); xft_reopen_label = gtk_label_new ("Reopen"); gtk_widget_ref (xft_reopen_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_reopen_label", xft_reopen_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_reopen_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (xf_type_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (xf_type_notebook), 0), xft_reopen_label); xft_flush_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (xft_flush_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_flush_page", xft_flush_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_flush_page); gtk_container_add (GTK_CONTAINER (xf_type_notebook), xft_flush_page); xftf_pause_frame = gtk_frame_new ("Pause"); gtk_widget_ref (xftf_pause_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftf_pause_frame", xftf_pause_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftf_pause_frame); gtk_box_pack_start (GTK_BOX (xft_flush_page), xftf_pause_frame, FALSE, FALSE, 0); xftf_pause_table = gtk_table_new (2, 2, FALSE); gtk_widget_ref (xftf_pause_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftf_pause_table", xftf_pause_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftf_pause_table); gtk_container_add (GTK_CONTAINER (xftf_pause_frame), xftf_pause_table); gtk_container_set_border_width (GTK_CONTAINER (xftf_pause_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xftf_pause_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xftf_pause_table), 5); xftfp_length_label = gtk_label_new ("Length (ms):"); gtk_widget_ref (xftfp_length_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfp_length_label", xftfp_length_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfp_length_label); gtk_table_attach (GTK_TABLE (xftf_pause_table), xftfp_length_label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_justify (GTK_LABEL (xftfp_length_label), GTK_JUSTIFY_LEFT); xftfp_length_spin_adj = gtk_adjustment_new (1000, 0, 60000, 100, 1000, 10); xftfp_length_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftfp_length_spin_adj), 0, 0); gtk_widget_ref (xftfp_length_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfp_length_spin", xftfp_length_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfp_length_spin); gtk_table_attach (GTK_TABLE (xftf_pause_table), xftfp_length_spin, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftfp_length_spin, "Specify the length of the silence to be inserted between the tracks.\nDefault: 2000", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftfp_length_spin), TRUE); xftfp_enable_check = gtk_check_button_new_with_label ("Enable"); gtk_widget_ref (xftfp_enable_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfp_enable_check", xftfp_enable_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfp_enable_check); gtk_table_attach (GTK_TABLE (xftf_pause_table), xftfp_enable_check, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); xftf_fadein_frame = gtk_frame_new ("Fade in"); gtk_widget_ref (xftf_fadein_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftf_fadein_frame", xftf_fadein_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftf_fadein_frame); gtk_box_pack_start (GTK_BOX (xft_flush_page), xftf_fadein_frame, FALSE, FALSE, 0); xftf_fadein_table = gtk_table_new (3, 2, FALSE); gtk_widget_ref (xftf_fadein_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftf_fadein_table", xftf_fadein_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftf_fadein_table); gtk_container_add (GTK_CONTAINER (xftf_fadein_frame), xftf_fadein_table); gtk_container_set_border_width (GTK_CONTAINER (xftf_fadein_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xftf_fadein_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xftf_fadein_table), 5); xftffi_length_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (xftffi_length_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftffi_length_hbox", xftffi_length_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftffi_length_hbox); gtk_table_attach (GTK_TABLE (xftf_fadein_table), xftffi_length_hbox, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); xftffi_length_label = gtk_label_new ("Length (ms):"); gtk_widget_ref (xftffi_length_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftffi_length_label", xftffi_length_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftffi_length_label); gtk_box_pack_start (GTK_BOX (xftffi_length_hbox), xftffi_length_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (xftffi_length_label), GTK_JUSTIFY_LEFT); xftffi_volume_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (xftffi_volume_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftffi_volume_hbox", xftffi_volume_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftffi_volume_hbox); gtk_table_attach (GTK_TABLE (xftf_fadein_table), xftffi_volume_hbox, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); xftffi_volume_label = gtk_label_new ("Start volume (%):"); gtk_widget_ref (xftffi_volume_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftffi_volume_label", xftffi_volume_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftffi_volume_label); gtk_box_pack_start (GTK_BOX (xftffi_volume_hbox), xftffi_volume_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (xftffi_volume_label), GTK_JUSTIFY_LEFT); xftffi_length_spin_adj = gtk_adjustment_new (1000, 0, 60000, 100, 1000, 10); xftffi_length_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftffi_length_spin_adj), 0, 0); gtk_widget_ref (xftffi_length_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftffi_length_spin", xftffi_length_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftffi_length_spin); gtk_table_attach (GTK_TABLE (xftf_fadein_table), xftffi_length_spin, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftffi_length_spin, "Set the duration for the fadein of the next song.", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftffi_length_spin), TRUE); xftffi_enable_check = gtk_check_button_new_with_label ("Enable"); gtk_widget_ref (xftffi_enable_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftffi_enable_check", xftffi_enable_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftffi_enable_check); gtk_table_attach (GTK_TABLE (xftf_fadein_table), xftffi_enable_check, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); xftffi_volume_spin_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10); xftffi_volume_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftffi_volume_spin_adj), 0, 0); gtk_widget_ref (xftffi_volume_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftffi_volume_spin", xftffi_volume_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftffi_volume_spin); gtk_table_attach (GTK_TABLE (xftf_fadein_table), xftffi_volume_spin, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftffi_volume_spin, "Set the start volume. XMMS-crossfade will fade from this volume to 100% during the time specified above.\nDefault: 0", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftffi_volume_spin), TRUE); xft_flush_label = gtk_label_new ("Flush"); gtk_widget_ref (xft_flush_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_flush_label", xft_flush_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_flush_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (xf_type_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (xf_type_notebook), 1), xft_flush_label); empty_notebook_page = gtk_vbox_new (FALSE, 0); gtk_widget_show (empty_notebook_page); gtk_container_add (GTK_CONTAINER (xf_type_notebook), empty_notebook_page); xft_none_label = gtk_label_new ("None"); gtk_widget_ref (xft_none_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_none_label", xft_none_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_none_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (xf_type_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (xf_type_notebook), 2), xft_none_label); xft_pause_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (xft_pause_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_pause_page", xft_pause_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_pause_page); gtk_container_add (GTK_CONTAINER (xf_type_notebook), xft_pause_page); xf_pause_frame = gtk_frame_new ("Pause"); gtk_widget_ref (xf_pause_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_pause_frame", xf_pause_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_pause_frame); gtk_box_pack_start (GTK_BOX (xft_pause_page), xf_pause_frame, FALSE, FALSE, 0); xf_pause_table = gtk_table_new (1, 2, FALSE); gtk_widget_ref (xf_pause_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_pause_table", xf_pause_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_pause_table); gtk_container_add (GTK_CONTAINER (xf_pause_frame), xf_pause_table); gtk_container_set_border_width (GTK_CONTAINER (xf_pause_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xf_pause_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xf_pause_table), 5); pause_length_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (pause_length_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "pause_length_hbox", pause_length_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (pause_length_hbox); gtk_table_attach (GTK_TABLE (xf_pause_table), pause_length_hbox, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); pause_length_label = gtk_label_new ("Length (ms):"); gtk_widget_ref (pause_length_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "pause_length_label", pause_length_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (pause_length_label); gtk_box_pack_start (GTK_BOX (pause_length_hbox), pause_length_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (pause_length_label), GTK_JUSTIFY_LEFT); pause_length_spin_adj = gtk_adjustment_new (1000, 0, 60000, 100, 1000, 10); pause_length_spin = gtk_spin_button_new (GTK_ADJUSTMENT (pause_length_spin_adj), 0, 0); gtk_widget_ref (pause_length_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "pause_length_spin", pause_length_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (pause_length_spin); gtk_table_attach (GTK_TABLE (xf_pause_table), pause_length_spin, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, pause_length_spin, "Specify the length of the silence to be inserted between the tracks.\nDefault: 2000", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (pause_length_spin), TRUE); xft_pause_label = gtk_label_new ("Pause"); gtk_widget_ref (xft_pause_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_pause_label", xft_pause_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_pause_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (xf_type_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (xf_type_notebook), 3), xft_pause_label); xft_simplexf_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (xft_simplexf_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_simplexf_page", xft_simplexf_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_simplexf_page); gtk_container_add (GTK_CONTAINER (xf_type_notebook), xft_simplexf_page); xf_simple_frame = gtk_frame_new ("Crossfade"); gtk_widget_ref (xf_simple_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_simple_frame", xf_simple_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_simple_frame); gtk_box_pack_start (GTK_BOX (xft_simplexf_page), xf_simple_frame, FALSE, FALSE, 0); xf_simple_table = gtk_table_new (1, 2, FALSE); gtk_widget_ref (xf_simple_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_simple_table", xf_simple_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_simple_table); gtk_container_add (GTK_CONTAINER (xf_simple_frame), xf_simple_table); gtk_container_set_border_width (GTK_CONTAINER (xf_simple_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xf_simple_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xf_simple_table), 5); simple_length_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (simple_length_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "simple_length_hbox", simple_length_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (simple_length_hbox); gtk_table_attach (GTK_TABLE (xf_simple_table), simple_length_hbox, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); simple_length_label = gtk_label_new ("Length (ms):"); gtk_widget_ref (simple_length_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "simple_length_label", simple_length_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (simple_length_label); gtk_box_pack_start (GTK_BOX (simple_length_hbox), simple_length_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (simple_length_label), GTK_JUSTIFY_LEFT); simple_length_spin_adj = gtk_adjustment_new (1500, 0, 60000, 100, 1000, 10); simple_length_spin = gtk_spin_button_new (GTK_ADJUSTMENT (simple_length_spin_adj), 0, 0); gtk_widget_ref (simple_length_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "simple_length_spin", simple_length_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (simple_length_spin); gtk_table_attach (GTK_TABLE (xf_simple_table), simple_length_spin, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, simple_length_spin, "Specify the length of the crosssfade.\nDefault: depends on songchange type", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (simple_length_spin), TRUE); xft_simplexf_label = gtk_label_new ("Simple XF"); gtk_widget_ref (xft_simplexf_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_simplexf_label", xft_simplexf_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_simplexf_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (xf_type_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (xf_type_notebook), 4), xft_simplexf_label); xft_advancedxf_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (xft_advancedxf_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_advancedxf_page", xft_advancedxf_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_advancedxf_page); gtk_container_add (GTK_CONTAINER (xf_type_notebook), xft_advancedxf_page); xf_fadeout_frame = gtk_frame_new ("Fade out"); gtk_widget_ref (xf_fadeout_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_fadeout_frame", xf_fadeout_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_fadeout_frame); gtk_box_pack_start (GTK_BOX (xft_advancedxf_page), xf_fadeout_frame, FALSE, FALSE, 0); xf_fadeout_table = gtk_table_new (3, 2, FALSE); gtk_widget_ref (xf_fadeout_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_fadeout_table", xf_fadeout_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_fadeout_table); gtk_container_add (GTK_CONTAINER (xf_fadeout_frame), xf_fadeout_table); gtk_container_set_border_width (GTK_CONTAINER (xf_fadeout_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xf_fadeout_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xf_fadeout_table), 5); fadeout_length_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (fadeout_length_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadeout_length_hbox", fadeout_length_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadeout_length_hbox); gtk_table_attach (GTK_TABLE (xf_fadeout_table), fadeout_length_hbox, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); fadeout_length_label = gtk_label_new ("Length (ms):"); gtk_widget_ref (fadeout_length_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadeout_length_label", fadeout_length_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadeout_length_label); gtk_box_pack_start (GTK_BOX (fadeout_length_hbox), fadeout_length_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (fadeout_length_label), GTK_JUSTIFY_LEFT); fadeout_length_spin_adj = gtk_adjustment_new (1000, 0, 60000, 100, 1000, 10); fadeout_length_spin = gtk_spin_button_new (GTK_ADJUSTMENT (fadeout_length_spin_adj), 0, 0); gtk_widget_ref (fadeout_length_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadeout_length_spin", fadeout_length_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadeout_length_spin); gtk_table_attach (GTK_TABLE (xf_fadeout_table), fadeout_length_spin, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, fadeout_length_spin, "Set the duration for the fadeout of the previous song.", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (fadeout_length_spin), TRUE); fadeout_volume_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (fadeout_volume_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadeout_volume_hbox", fadeout_volume_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadeout_volume_hbox); gtk_table_attach (GTK_TABLE (xf_fadeout_table), fadeout_volume_hbox, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); fadeout_volume_label = gtk_label_new ("End volume (%):"); gtk_widget_ref (fadeout_volume_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadeout_volume_label", fadeout_volume_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadeout_volume_label); gtk_box_pack_start (GTK_BOX (fadeout_volume_hbox), fadeout_volume_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (fadeout_volume_label), GTK_JUSTIFY_LEFT); fadeout_volume_spin_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10); fadeout_volume_spin = gtk_spin_button_new (GTK_ADJUSTMENT (fadeout_volume_spin_adj), 0, 0); gtk_widget_ref (fadeout_volume_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadeout_volume_spin", fadeout_volume_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadeout_volume_spin); gtk_table_attach (GTK_TABLE (xf_fadeout_table), fadeout_volume_spin, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, fadeout_volume_spin, "Set the end volume. XMMS-crossfade will fade from 100% to this volume during the time specified above.\nDefault: 0", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (fadeout_volume_spin), TRUE); fadeout_options_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (fadeout_options_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadeout_options_hbox", fadeout_options_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadeout_options_hbox); gtk_table_attach (GTK_TABLE (xf_fadeout_table), fadeout_options_hbox, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); fadeout_enable_check = gtk_check_button_new_with_label ("Enable"); gtk_widget_ref (fadeout_enable_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadeout_enable_check", fadeout_enable_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadeout_enable_check); gtk_box_pack_start (GTK_BOX (fadeout_options_hbox), fadeout_enable_check, FALSE, FALSE, 0); xf_offset_frame = gtk_frame_new ("Offset"); gtk_widget_ref (xf_offset_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_offset_frame", xf_offset_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_offset_frame); gtk_box_pack_start (GTK_BOX (xft_advancedxf_page), xf_offset_frame, FALSE, FALSE, 0); xf_offset_table = gtk_table_new (4, 1, FALSE); gtk_widget_ref (xf_offset_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_offset_table", xf_offset_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_offset_table); gtk_container_add (GTK_CONTAINER (xf_offset_frame), xf_offset_table); gtk_container_set_border_width (GTK_CONTAINER (xf_offset_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xf_offset_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xf_offset_table), 5); xfofs_custom_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (xfofs_custom_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xfofs_custom_hbox", xfofs_custom_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xfofs_custom_hbox); gtk_table_attach (GTK_TABLE (xf_offset_table), xfofs_custom_hbox, 0, 1, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); xfofs_custom_radiobutton = gtk_radio_button_new_with_label (offset_group_group, "Custom (ms):"); offset_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (xfofs_custom_radiobutton)); gtk_widget_ref (xfofs_custom_radiobutton); gtk_object_set_data_full (GTK_OBJECT (config_win), "xfofs_custom_radiobutton", xfofs_custom_radiobutton, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xfofs_custom_radiobutton); gtk_box_pack_start (GTK_BOX (xfofs_custom_hbox), xfofs_custom_radiobutton, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, xfofs_custom_radiobutton, "Set a custom offset.", NULL); xfofs_custom_spin_adj = gtk_adjustment_new (-2000, -60000, 60000, 100, 1000, 10); xfofs_custom_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xfofs_custom_spin_adj), 0, 0); gtk_widget_ref (xfofs_custom_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xfofs_custom_spin", xfofs_custom_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xfofs_custom_spin); gtk_box_pack_start (GTK_BOX (xfofs_custom_hbox), xfofs_custom_spin, TRUE, TRUE, 0); gtk_tooltips_set_tip (tooltips, xfofs_custom_spin, "Set how much the end of the previous and the beginning of the next song should overlap.\n* Negative values indicate that the next song should start before the previous has reached the end.\n* A value of 0 means that the songs are concatenated seamlessly.\n* Positive values will yield insert silence inbetween..", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xfofs_custom_spin), TRUE); xfofs_none_radiobutton = gtk_radio_button_new_with_label (offset_group_group, "None (0 ms)"); offset_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (xfofs_none_radiobutton)); gtk_widget_ref (xfofs_none_radiobutton); gtk_object_set_data_full (GTK_OBJECT (config_win), "xfofs_none_radiobutton", xfofs_none_radiobutton, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xfofs_none_radiobutton); gtk_table_attach (GTK_TABLE (xf_offset_table), xfofs_none_radiobutton, 0, 1, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xfofs_none_radiobutton, "Don't overlap the two songs. The next song will start immediatelly after the previous has ended.", NULL); xfofs_lockout_radiobutton = gtk_radio_button_new_with_label (offset_group_group, "Lock to fadeout length"); offset_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (xfofs_lockout_radiobutton)); gtk_widget_ref (xfofs_lockout_radiobutton); gtk_object_set_data_full (GTK_OBJECT (config_win), "xfofs_lockout_radiobutton", xfofs_lockout_radiobutton, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xfofs_lockout_radiobutton); gtk_table_attach (GTK_TABLE (xf_offset_table), xfofs_lockout_radiobutton, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xfofs_lockout_radiobutton, "Overlap by the fadeout duration specified above.", NULL); xfofs_lockin_radiobutton = gtk_radio_button_new_with_label (offset_group_group, "Lock to fadein length"); offset_group_group = gtk_radio_button_group (GTK_RADIO_BUTTON (xfofs_lockin_radiobutton)); gtk_widget_ref (xfofs_lockin_radiobutton); gtk_object_set_data_full (GTK_OBJECT (config_win), "xfofs_lockin_radiobutton", xfofs_lockin_radiobutton, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xfofs_lockin_radiobutton); gtk_table_attach (GTK_TABLE (xf_offset_table), xfofs_lockin_radiobutton, 0, 1, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xfofs_lockin_radiobutton, "Overlap by the fadein duration specified below..", NULL); xf_fadein_frame = gtk_frame_new ("Fade in"); gtk_widget_ref (xf_fadein_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_fadein_frame", xf_fadein_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_fadein_frame); gtk_box_pack_start (GTK_BOX (xft_advancedxf_page), xf_fadein_frame, FALSE, FALSE, 0); xf_fadein_table = gtk_table_new (3, 2, FALSE); gtk_widget_ref (xf_fadein_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xf_fadein_table", xf_fadein_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xf_fadein_table); gtk_container_add (GTK_CONTAINER (xf_fadein_frame), xf_fadein_table); gtk_container_set_border_width (GTK_CONTAINER (xf_fadein_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xf_fadein_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xf_fadein_table), 5); fadein_length_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (fadein_length_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadein_length_hbox", fadein_length_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadein_length_hbox); gtk_table_attach (GTK_TABLE (xf_fadein_table), fadein_length_hbox, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); fadein_length_label = gtk_label_new ("Length (ms):"); gtk_widget_ref (fadein_length_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadein_length_label", fadein_length_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadein_length_label); gtk_box_pack_start (GTK_BOX (fadein_length_hbox), fadein_length_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (fadein_length_label), GTK_JUSTIFY_LEFT); fadein_volume_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (fadein_volume_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadein_volume_hbox", fadein_volume_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadein_volume_hbox); gtk_table_attach (GTK_TABLE (xf_fadein_table), fadein_volume_hbox, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); fadein_volume_label = gtk_label_new ("Start volume (%):"); gtk_widget_ref (fadein_volume_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadein_volume_label", fadein_volume_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadein_volume_label); gtk_box_pack_start (GTK_BOX (fadein_volume_hbox), fadein_volume_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (fadein_volume_label), GTK_JUSTIFY_LEFT); fadein_length_spin_adj = gtk_adjustment_new (1000, 0, 60000, 100, 1000, 10); fadein_length_spin = gtk_spin_button_new (GTK_ADJUSTMENT (fadein_length_spin_adj), 0, 0); gtk_widget_ref (fadein_length_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadein_length_spin", fadein_length_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadein_length_spin); gtk_table_attach (GTK_TABLE (xf_fadein_table), fadein_length_spin, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, fadein_length_spin, "Set the duration for the fadein of the next song.", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (fadein_length_spin), TRUE); fadein_enable_check = gtk_check_button_new_with_label (" Enable"); gtk_widget_ref (fadein_enable_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadein_enable_check", fadein_enable_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadein_enable_check); gtk_table_attach (GTK_TABLE (xf_fadein_table), fadein_enable_check, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); fadein_lock_check = gtk_check_button_new_with_label ("Lock to Fade-out"); gtk_widget_ref (fadein_lock_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadein_lock_check", fadein_lock_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadein_lock_check); gtk_table_attach (GTK_TABLE (xf_fadein_table), fadein_lock_check, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, fadein_lock_check, "Use the same settings as fade-out.", NULL); fadein_volume_spin_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10); fadein_volume_spin = gtk_spin_button_new (GTK_ADJUSTMENT (fadein_volume_spin_adj), 0, 0); gtk_widget_ref (fadein_volume_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "fadein_volume_spin", fadein_volume_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (fadein_volume_spin); gtk_table_attach (GTK_TABLE (xf_fadein_table), fadein_volume_spin, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, fadein_volume_spin, "Set the start volume. XMMS-crossfade will fade from this volume to 100% during the time specified above.\nDefault: 0", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (fadein_volume_spin), TRUE); xft_advancedxf_label = gtk_label_new ("Advanced XF"); gtk_widget_ref (xft_advancedxf_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_advancedxf_label", xft_advancedxf_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_advancedxf_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (xf_type_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (xf_type_notebook), 5), xft_advancedxf_label); xft_fadein_page = gtk_vbox_new (FALSE, 0); gtk_widget_ref (xft_fadein_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_fadein_page", xft_fadein_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_fadein_page); gtk_container_add (GTK_CONTAINER (xf_type_notebook), xft_fadein_page); xftfi_fadein_frame = gtk_frame_new ("Fade in"); gtk_widget_ref (xftfi_fadein_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfi_fadein_frame", xftfi_fadein_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfi_fadein_frame); gtk_box_pack_start (GTK_BOX (xft_fadein_page), xftfi_fadein_frame, FALSE, FALSE, 0); xftfi_fadein_table = gtk_table_new (2, 2, FALSE); gtk_widget_ref (xftfi_fadein_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfi_fadein_table", xftfi_fadein_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfi_fadein_table); gtk_container_add (GTK_CONTAINER (xftfi_fadein_frame), xftfi_fadein_table); gtk_container_set_border_width (GTK_CONTAINER (xftfi_fadein_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xftfi_fadein_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xftfi_fadein_table), 5); xftfi_length_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (xftfi_length_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfi_length_hbox", xftfi_length_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfi_length_hbox); gtk_table_attach (GTK_TABLE (xftfi_fadein_table), xftfi_length_hbox, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); xftfi_length_label = gtk_label_new ("Length (ms):"); gtk_widget_ref (xftfi_length_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfi_length_label", xftfi_length_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfi_length_label); gtk_box_pack_start (GTK_BOX (xftfi_length_hbox), xftfi_length_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (xftfi_length_label), GTK_JUSTIFY_LEFT); xftfi_volume_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (xftfi_volume_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfi_volume_hbox", xftfi_volume_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfi_volume_hbox); gtk_table_attach (GTK_TABLE (xftfi_fadein_table), xftfi_volume_hbox, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); xftfi_volume_label = gtk_label_new ("Start volume (%):"); gtk_widget_ref (xftfi_volume_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfi_volume_label", xftfi_volume_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfi_volume_label); gtk_box_pack_start (GTK_BOX (xftfi_volume_hbox), xftfi_volume_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (xftfi_volume_label), GTK_JUSTIFY_LEFT); xftfi_length_spin_adj = gtk_adjustment_new (1000, 0, 60000, 10, 100, 10); xftfi_length_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftfi_length_spin_adj), 0, 0); gtk_widget_ref (xftfi_length_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfi_length_spin", xftfi_length_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfi_length_spin); gtk_table_attach (GTK_TABLE (xftfi_fadein_table), xftfi_length_spin, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftfi_length_spin, "Set the duration for the fadein when starting playback.", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftfi_length_spin), TRUE); xftfi_volume_spin_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10); xftfi_volume_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftfi_volume_spin_adj), 0, 0); gtk_widget_ref (xftfi_volume_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfi_volume_spin", xftfi_volume_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfi_volume_spin); gtk_table_attach (GTK_TABLE (xftfi_fadein_table), xftfi_volume_spin, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftfi_volume_spin, "Set the start volume. XMMS-crossfade will fade from this volume to 100% during the time specified above.\nDefault: 0", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftfi_volume_spin), TRUE); xft_fadein_label = gtk_label_new ("Fade in"); gtk_widget_ref (xft_fadein_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_fadein_label", xft_fadein_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_fadein_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (xf_type_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (xf_type_notebook), 6), xft_fadein_label); xft_fadeout_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (xft_fadeout_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_fadeout_page", xft_fadeout_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_fadeout_page); gtk_container_add (GTK_CONTAINER (xf_type_notebook), xft_fadeout_page); xftfo_fadeout_frame = gtk_frame_new ("Fade out"); gtk_widget_ref (xftfo_fadeout_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_fadeout_frame", xftfo_fadeout_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_fadeout_frame); gtk_box_pack_start (GTK_BOX (xft_fadeout_page), xftfo_fadeout_frame, FALSE, FALSE, 0); xftfo_fadeout_table = gtk_table_new (2, 2, FALSE); gtk_widget_ref (xftfo_fadeout_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_fadeout_table", xftfo_fadeout_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_fadeout_table); gtk_container_add (GTK_CONTAINER (xftfo_fadeout_frame), xftfo_fadeout_table); gtk_container_set_border_width (GTK_CONTAINER (xftfo_fadeout_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xftfo_fadeout_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xftfo_fadeout_table), 5); xftfo_length_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (xftfo_length_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_length_hbox", xftfo_length_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_length_hbox); gtk_table_attach (GTK_TABLE (xftfo_fadeout_table), xftfo_length_hbox, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); xftfo_length_label = gtk_label_new ("Length (ms):"); gtk_widget_ref (xftfo_length_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_length_label", xftfo_length_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_length_label); gtk_box_pack_start (GTK_BOX (xftfo_length_hbox), xftfo_length_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (xftfo_length_label), GTK_JUSTIFY_LEFT); xftfo_length_spin_adj = gtk_adjustment_new (500, 0, 60000, 10, 100, 10); xftfo_length_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftfo_length_spin_adj), 0, 0); gtk_widget_ref (xftfo_length_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_length_spin", xftfo_length_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_length_spin); gtk_table_attach (GTK_TABLE (xftfo_fadeout_table), xftfo_length_spin, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftfo_length_spin, "Set the duration for the fadeout of the last song.", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftfo_length_spin), TRUE); xftfo_volume_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (xftfo_volume_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_volume_hbox", xftfo_volume_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_volume_hbox); gtk_table_attach (GTK_TABLE (xftfo_fadeout_table), xftfo_volume_hbox, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); xftfo_volume_label = gtk_label_new ("End volume (%):"); gtk_widget_ref (xftfo_volume_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_volume_label", xftfo_volume_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_volume_label); gtk_box_pack_start (GTK_BOX (xftfo_volume_hbox), xftfo_volume_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (xftfo_volume_label), GTK_JUSTIFY_LEFT); xftfo_volume_spin_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10); xftfo_volume_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftfo_volume_spin_adj), 0, 0); gtk_widget_ref (xftfo_volume_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_volume_spin", xftfo_volume_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_volume_spin); gtk_table_attach (GTK_TABLE (xftfo_fadeout_table), xftfo_volume_spin, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftfo_volume_spin, "Set the end volume. XMMS-crossfade will fade from 100% to this volume during the time specified above.\nDefault: 0", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftfo_volume_spin), TRUE); xftfo_silence_frame = gtk_frame_new ("Additional silence"); gtk_widget_ref (xftfo_silence_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_silence_frame", xftfo_silence_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_silence_frame); gtk_box_pack_start (GTK_BOX (xft_fadeout_page), xftfo_silence_frame, FALSE, FALSE, 0); xftfo_silence_table = gtk_table_new (1, 2, FALSE); gtk_widget_ref (xftfo_silence_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_silence_table", xftfo_silence_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_silence_table); gtk_container_add (GTK_CONTAINER (xftfo_silence_frame), xftfo_silence_table); gtk_container_set_border_width (GTK_CONTAINER (xftfo_silence_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xftfo_silence_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xftfo_silence_table), 5); xftfo_silence_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (xftfo_silence_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_silence_hbox", xftfo_silence_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_silence_hbox); gtk_table_attach (GTK_TABLE (xftfo_silence_table), xftfo_silence_hbox, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); xftfo_silence_label = gtk_label_new ("Length (ms):"); gtk_widget_ref (xftfo_silence_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_silence_label", xftfo_silence_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_silence_label); gtk_box_pack_start (GTK_BOX (xftfo_silence_hbox), xftfo_silence_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (xftfo_silence_label), GTK_JUSTIFY_LEFT); xftfo_silence_spin_adj = gtk_adjustment_new (100, 0, 60000, 10, 100, 10); xftfo_silence_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftfo_silence_spin_adj), 0, 0); gtk_widget_ref (xftfo_silence_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfo_silence_spin", xftfo_silence_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfo_silence_spin); gtk_table_attach (GTK_TABLE (xftfo_silence_table), xftfo_silence_spin, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftfo_silence_spin, "Set how much additional silence should be played after the end of the last song. This way, you can avoid the clicks some soundcards produce when being shut down during playback.\nDefault: 500", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftfo_silence_spin), TRUE); xft_fadeout_label = gtk_label_new ("Fade out"); gtk_widget_ref (xft_fadeout_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_fadeout_label", xft_fadeout_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_fadeout_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (xf_type_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (xf_type_notebook), 7), xft_fadeout_label); empty_notebook_page = gtk_vbox_new (FALSE, 0); gtk_widget_show (empty_notebook_page); gtk_container_add (GTK_CONTAINER (xf_type_notebook), empty_notebook_page); xft_pause_none_label = gtk_label_new ("None"); gtk_widget_ref (xft_pause_none_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_pause_none_label", xft_pause_none_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_pause_none_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (xf_type_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (xf_type_notebook), 8), xft_pause_none_label); xft_pause_adv_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (xft_pause_adv_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_pause_adv_page", xft_pause_adv_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_pause_adv_page); gtk_container_add (GTK_CONTAINER (xf_type_notebook), xft_pause_adv_page); xft_fadeoutin_frame = gtk_frame_new ("Fade out / Fade in"); gtk_widget_ref (xft_fadeoutin_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_fadeoutin_frame", xft_fadeoutin_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_fadeoutin_frame); gtk_box_pack_start (GTK_BOX (xft_pause_adv_page), xft_fadeoutin_frame, FALSE, FALSE, 0); xft_fadeoutin_table = gtk_table_new (3, 2, FALSE); gtk_widget_ref (xft_fadeoutin_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_fadeoutin_table", xft_fadeoutin_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_fadeoutin_table); gtk_container_add (GTK_CONTAINER (xft_fadeoutin_frame), xft_fadeoutin_table); gtk_container_set_border_width (GTK_CONTAINER (xft_fadeoutin_table), 5); gtk_table_set_row_spacings (GTK_TABLE (xft_fadeoutin_table), 2); gtk_table_set_col_spacings (GTK_TABLE (xft_fadeoutin_table), 5); xftfoi_fadeout_spin_adj = gtk_adjustment_new (100, 0, 60000, 10, 100, 10); xftfoi_fadeout_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftfoi_fadeout_spin_adj), 0, 0); gtk_widget_ref (xftfoi_fadeout_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfoi_fadeout_spin", xftfoi_fadeout_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfoi_fadeout_spin); gtk_table_attach (GTK_TABLE (xft_fadeoutin_table), xftfoi_fadeout_spin, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftfoi_fadeout_spin, "Set the duration for the fadeout when pausing.\nDefault: 100\n", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftfoi_fadeout_spin), TRUE); xftfoi_silence_spin_adj = gtk_adjustment_new (100, 0, 60000, 10, 100, 10); xftfoi_silence_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftfoi_silence_spin_adj), 0, 0); gtk_widget_ref (xftfoi_silence_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfoi_silence_spin", xftfoi_silence_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfoi_silence_spin); gtk_table_attach (GTK_TABLE (xft_fadeoutin_table), xftfoi_silence_spin, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftfoi_silence_spin, "Set how much additional silence should be played after pausing. This way, you can avoid the clicks some soundcards produce when entering pause.\nDefault: 100", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftfoi_silence_spin), TRUE); xftfoi_fadein_spin_adj = gtk_adjustment_new (100, 0, 60000, 10, 100, 10); xftfoi_fadein_spin = gtk_spin_button_new (GTK_ADJUSTMENT (xftfoi_fadein_spin_adj), 0, 0); gtk_widget_ref (xftfoi_fadein_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfoi_fadein_spin", xftfoi_fadein_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfoi_fadein_spin); gtk_table_attach (GTK_TABLE (xft_fadeoutin_table), xftfoi_fadein_spin, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, xftfoi_fadein_spin, "Set the duration for the fadein when unpausing.\nDefault: 100", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (xftfoi_fadein_spin), TRUE); xftfoi_fadein_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (xftfoi_fadein_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfoi_fadein_hbox", xftfoi_fadein_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfoi_fadein_hbox); gtk_table_attach (GTK_TABLE (xft_fadeoutin_table), xftfoi_fadein_hbox, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); xftfoi_fadein_label = gtk_label_new ("Fade out (ms):"); gtk_widget_ref (xftfoi_fadein_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfoi_fadein_label", xftfoi_fadein_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfoi_fadein_label); gtk_box_pack_start (GTK_BOX (xftfoi_fadein_hbox), xftfoi_fadein_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (xftfoi_fadein_label), GTK_JUSTIFY_LEFT); xftfoi_silence_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (xftfoi_silence_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfoi_silence_hbox", xftfoi_silence_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfoi_silence_hbox); gtk_table_attach (GTK_TABLE (xft_fadeoutin_table), xftfoi_silence_hbox, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); xftfoi_silence_label = gtk_label_new ("Silence (ms):"); gtk_widget_ref (xftfoi_silence_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfoi_silence_label", xftfoi_silence_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfoi_silence_label); gtk_box_pack_start (GTK_BOX (xftfoi_silence_hbox), xftfoi_silence_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (xftfoi_silence_label), GTK_JUSTIFY_LEFT); xftfoi_fadeout_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (xftfoi_fadeout_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfoi_fadeout_hbox", xftfoi_fadeout_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfoi_fadeout_hbox); gtk_table_attach (GTK_TABLE (xft_fadeoutin_table), xftfoi_fadeout_hbox, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); xftfoi_fadeout_label = gtk_label_new ("Fade in (ms):"); gtk_widget_ref (xftfoi_fadeout_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xftfoi_fadeout_label", xftfoi_fadeout_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xftfoi_fadeout_label); gtk_box_pack_start (GTK_BOX (xftfoi_fadeout_hbox), xftfoi_fadeout_label, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (xftfoi_fadeout_label), GTK_JUSTIFY_LEFT); xft_pause_adv_label = gtk_label_new ("Fade out / Fade in"); gtk_widget_ref (xft_pause_adv_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "xft_pause_adv_label", xft_pause_adv_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (xft_pause_adv_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (xf_type_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (xf_type_notebook), 9), xft_pause_adv_label); config_crossfade_label = gtk_label_new ("Crossfader"); gtk_widget_ref (config_crossfade_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_crossfade_label", config_crossfade_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_crossfade_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (config_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (config_notebook), 2), config_crossfade_label); config_gapkiller_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (config_gapkiller_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_gapkiller_page", config_gapkiller_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_gapkiller_page); gtk_container_add (GTK_CONTAINER (config_notebook), config_gapkiller_page); gtk_container_set_border_width (GTK_CONTAINER (config_gapkiller_page), 5); gap_leading_frame = gtk_frame_new ("Leading gap killer"); gtk_widget_ref (gap_leading_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "gap_leading_frame", gap_leading_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (gap_leading_frame); gtk_box_pack_start (GTK_BOX (config_gapkiller_page), gap_leading_frame, FALSE, TRUE, 0); gap_leading_table = gtk_table_new (3, 2, FALSE); gtk_widget_ref (gap_leading_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "gap_leading_table", gap_leading_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (gap_leading_table); gtk_container_add (GTK_CONTAINER (gap_leading_frame), gap_leading_table); gtk_container_set_border_width (GTK_CONTAINER (gap_leading_table), 5); gtk_table_set_row_spacings (GTK_TABLE (gap_leading_table), 2); gtk_table_set_col_spacings (GTK_TABLE (gap_leading_table), 5); lgap_length_spin_adj = gtk_adjustment_new (500, 0, 60000, 10, 100, 10); lgap_length_spin = gtk_spin_button_new (GTK_ADJUSTMENT (lgap_length_spin_adj), 0, 0); gtk_widget_ref (lgap_length_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "lgap_length_spin", lgap_length_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (lgap_length_spin); gtk_table_attach (GTK_TABLE (gap_leading_table), lgap_length_spin, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, lgap_length_spin, "Set the maximum length for gaps at the beginning of a stream.\nDefault: 500", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (lgap_length_spin), TRUE); lgap_level_spin_adj = gtk_adjustment_new (512, 0, 32767, 16, 256, 10); lgap_level_spin = gtk_spin_button_new (GTK_ADJUSTMENT (lgap_level_spin_adj), 0, 0); gtk_widget_ref (lgap_level_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "lgap_level_spin", lgap_level_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (lgap_level_spin); gtk_table_attach (GTK_TABLE (gap_leading_table), lgap_level_spin, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, lgap_level_spin, "Set the maximum volume for gaps at the beginning of a stream. All samples below this value are considered as silent.\nDefault: 512", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (lgap_level_spin), TRUE); lgap_length_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (lgap_length_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "lgap_length_hbox", lgap_length_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (lgap_length_hbox); gtk_table_attach (GTK_TABLE (gap_leading_table), lgap_length_hbox, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); lgap_length_label = gtk_label_new ("Max. length (ms):"); gtk_widget_ref (lgap_length_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "lgap_length_label", lgap_length_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (lgap_length_label); gtk_box_pack_start (GTK_BOX (lgap_length_hbox), lgap_length_label, FALSE, FALSE, 0); lgap_level_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (lgap_level_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "lgap_level_hbox", lgap_level_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (lgap_level_hbox); gtk_table_attach (GTK_TABLE (gap_leading_table), lgap_level_hbox, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); lgap_level_label = gtk_label_new ("Max. level (16bit sample):"); gtk_widget_ref (lgap_level_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "lgap_level_label", lgap_level_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (lgap_level_label); gtk_box_pack_start (GTK_BOX (lgap_level_hbox), lgap_level_label, FALSE, FALSE, 0); lgap_enable_check = gtk_check_button_new_with_label ("Enable"); gtk_widget_ref (lgap_enable_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "lgap_enable_check", lgap_enable_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (lgap_enable_check); gtk_table_attach (GTK_TABLE (gap_leading_table), lgap_enable_check, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gap_trailing_frame = gtk_frame_new ("Trailing gap killer"); gtk_widget_ref (gap_trailing_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "gap_trailing_frame", gap_trailing_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (gap_trailing_frame); gtk_box_pack_start (GTK_BOX (config_gapkiller_page), gap_trailing_frame, FALSE, TRUE, 0); gap_trailing_table = gtk_table_new (3, 2, FALSE); gtk_widget_ref (gap_trailing_table); gtk_object_set_data_full (GTK_OBJECT (config_win), "gap_trailing_table", gap_trailing_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (gap_trailing_table); gtk_container_add (GTK_CONTAINER (gap_trailing_frame), gap_trailing_table); gtk_container_set_border_width (GTK_CONTAINER (gap_trailing_table), 5); gtk_table_set_row_spacings (GTK_TABLE (gap_trailing_table), 2); gtk_table_set_col_spacings (GTK_TABLE (gap_trailing_table), 5); tgap_length_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (tgap_length_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "tgap_length_hbox", tgap_length_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tgap_length_hbox); gtk_table_attach (GTK_TABLE (gap_trailing_table), tgap_length_hbox, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); tgap_length_label = gtk_label_new ("Max. length (ms):"); gtk_widget_ref (tgap_length_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "tgap_length_label", tgap_length_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tgap_length_label); gtk_box_pack_start (GTK_BOX (tgap_length_hbox), tgap_length_label, FALSE, FALSE, 0); tgap_level_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (tgap_level_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "tgap_level_hbox", tgap_level_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tgap_level_hbox); gtk_table_attach (GTK_TABLE (gap_trailing_table), tgap_level_hbox, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); tgap_level_label = gtk_label_new ("Max. level (16bit sample):"); gtk_widget_ref (tgap_level_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "tgap_level_label", tgap_level_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tgap_level_label); gtk_box_pack_start (GTK_BOX (tgap_level_hbox), tgap_level_label, FALSE, FALSE, 0); tgap_length_spin_adj = gtk_adjustment_new (500, 0, 60000, 10, 100, 10); tgap_length_spin = gtk_spin_button_new (GTK_ADJUSTMENT (tgap_length_spin_adj), 0, 0); gtk_widget_ref (tgap_length_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "tgap_length_spin", tgap_length_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tgap_length_spin); gtk_table_attach (GTK_TABLE (gap_trailing_table), tgap_length_spin, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, tgap_length_spin, "Set the maximum length for gaps at the end of a stream.\nDefault: 500", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (tgap_length_spin), TRUE); tgap_level_spin_adj = gtk_adjustment_new (512, 0, 32767, 1, 16, 10); tgap_level_spin = gtk_spin_button_new (GTK_ADJUSTMENT (tgap_level_spin_adj), 0, 0); gtk_widget_ref (tgap_level_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "tgap_level_spin", tgap_level_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tgap_level_spin); gtk_table_attach (GTK_TABLE (gap_trailing_table), tgap_level_spin, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, tgap_level_spin, "Set the maximum volume for gaps at the end of a stream. All samples below this value are considered as silent.\nDefault: 512", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (tgap_level_spin), TRUE); tgap_lock_check = gtk_check_button_new_with_label ("Lock to Leading"); gtk_widget_ref (tgap_lock_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "tgap_lock_check", tgap_lock_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tgap_lock_check); gtk_table_attach (GTK_TABLE (gap_trailing_table), tgap_lock_check, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, tgap_lock_check, "Use the same settings as above.", NULL); tgap_enable_check = gtk_check_button_new_with_label ("Enable"); gtk_widget_ref (tgap_enable_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "tgap_enable_check", tgap_enable_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (tgap_enable_check); gtk_table_attach (GTK_TABLE (gap_trailing_table), tgap_enable_check, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gap_advanced_frame = gtk_frame_new ("Advanced"); gtk_widget_ref (gap_advanced_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "gap_advanced_frame", gap_advanced_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (gap_advanced_frame); gtk_box_pack_start (GTK_BOX (config_gapkiller_page), gap_advanced_frame, FALSE, FALSE, 0); gap_advanced_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_ref (gap_advanced_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "gap_advanced_vbox", gap_advanced_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (gap_advanced_vbox); gtk_container_add (GTK_CONTAINER (gap_advanced_frame), gap_advanced_vbox); gtk_container_set_border_width (GTK_CONTAINER (gap_advanced_vbox), 5); gadv_crossing_check = gtk_check_button_new_with_label ("Skip to next zero crossing"); gtk_widget_ref (gadv_crossing_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "gadv_crossing_check", gadv_crossing_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (gadv_crossing_check); gtk_box_pack_start (GTK_BOX (gap_advanced_vbox), gadv_crossing_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, gadv_crossing_check, "If enabled, XMMS-crossfade will take additional care to avoid clicks with pre-faded (gapless) tracks. XMMS-crossfade will cut off the end of the previous song (the beginning of the next song) only at a zero-crossing of the sample values.\nDefault: On", NULL); config_gapkiller_label = gtk_label_new ("Gap Killer"); gtk_widget_ref (config_gapkiller_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_gapkiller_label", config_gapkiller_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_gapkiller_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (config_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (config_notebook), 3), config_gapkiller_label); config_misc_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (config_misc_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_misc_page", config_misc_page, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_misc_page); gtk_container_add (GTK_CONTAINER (config_notebook), config_misc_page); gtk_container_set_border_width (GTK_CONTAINER (config_misc_page), 5); misc_debug_frame = gtk_frame_new ("Debug options"); gtk_widget_ref (misc_debug_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "misc_debug_frame", misc_debug_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (misc_debug_frame); gtk_box_pack_start (GTK_BOX (config_misc_page), misc_debug_frame, FALSE, FALSE, 0); misc_debug_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (misc_debug_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "misc_debug_vbox", misc_debug_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (misc_debug_vbox); gtk_container_add (GTK_CONTAINER (misc_debug_frame), misc_debug_vbox); gtk_container_set_border_width (GTK_CONTAINER (misc_debug_vbox), 5); debug_stderr_check = gtk_check_button_new_with_label ("Write debug output to <stderr>"); gtk_widget_ref (debug_stderr_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "debug_stderr_check", debug_stderr_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (debug_stderr_check); gtk_box_pack_start (GTK_BOX (misc_debug_vbox), debug_stderr_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, debug_stderr_check, "Monitors what is going on in XMMS-crossfade. If you think you found a bug in XMMS-crossfade, please enable this option and send me the output.\nNote that you should disable debug output if you start XMMS from within Netscape. Netscape will spam you with dialogs containing the debug output captured from <stderr>.\nDefault: Off", NULL); debug_monitor_check = gtk_check_button_new_with_label ("Show Buffer Monitor"); gtk_widget_ref (debug_monitor_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "debug_monitor_check", debug_monitor_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (debug_monitor_check); gtk_box_pack_start (GTK_BOX (misc_debug_vbox), debug_monitor_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, debug_monitor_check, "Enables the Buffer Monitor. This is a small window which shows how much data is in the buffers. The top display belongs to the mixing buffer, the bottom shows how much data is being buffered by the output plugin.\nDefault: Off", NULL); misc_mixopt_frame = gtk_frame_new ("Volume control options"); gtk_widget_ref (misc_mixopt_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "misc_mixopt_frame", misc_mixopt_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (misc_mixopt_frame); gtk_box_pack_start (GTK_BOX (config_misc_page), misc_mixopt_frame, FALSE, FALSE, 0); misc_mixopt_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (misc_mixopt_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "misc_mixopt_vbox", misc_mixopt_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (misc_mixopt_vbox); gtk_container_add (GTK_CONTAINER (misc_mixopt_frame), misc_mixopt_vbox); gtk_container_set_border_width (GTK_CONTAINER (misc_mixopt_vbox), 5); mixopt_enable_check = gtk_check_button_new_with_label ("Enable volume control"); gtk_widget_ref (mixopt_enable_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "mixopt_enable_check", mixopt_enable_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (mixopt_enable_check); gtk_box_pack_start (GTK_BOX (misc_mixopt_vbox), mixopt_enable_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, mixopt_enable_check, "Enables/disables XMMS volume and balance controls.\nDefault: On", NULL); mixopt_reverse_check = gtk_check_button_new_with_label ("Reverse balance"); gtk_widget_ref (mixopt_reverse_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "mixopt_reverse_check", mixopt_reverse_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (mixopt_reverse_check); gtk_box_pack_start (GTK_BOX (misc_mixopt_vbox), mixopt_reverse_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, mixopt_reverse_check, "Reverses left and right with the balance control.\nDefault: Off", NULL); mixopt_software_check = gtk_check_button_new_with_label ("Software Mixer (delayed operation)"); gtk_widget_ref (mixopt_software_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "mixopt_software_check", mixopt_software_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (mixopt_software_check); gtk_box_pack_start (GTK_BOX (misc_mixopt_vbox), mixopt_software_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, mixopt_software_check, "Enable software mixer. Usefull for output plugins without mixer support.\nDefault: Off", NULL); misc_other_frame = gtk_frame_new ("Advanced options"); gtk_widget_ref (misc_other_frame); gtk_object_set_data_full (GTK_OBJECT (config_win), "misc_other_frame", misc_other_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (misc_other_frame); gtk_box_pack_start (GTK_BOX (config_misc_page), misc_other_frame, FALSE, TRUE, 0); misc_other_vbox = gtk_vbox_new (FALSE, 2); gtk_widget_ref (misc_other_vbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "misc_other_vbox", misc_other_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (misc_other_vbox); gtk_container_add (GTK_CONTAINER (misc_other_frame), misc_other_vbox); gtk_container_set_border_width (GTK_CONTAINER (misc_other_vbox), 5); moth_songchange_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (moth_songchange_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_songchange_hbox", moth_songchange_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_songchange_hbox); gtk_box_pack_start (GTK_BOX (misc_other_vbox), moth_songchange_hbox, TRUE, TRUE, 0); moth_songchange_label = gtk_label_new ("Songchange timeout (ms):"); gtk_widget_ref (moth_songchange_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_songchange_label", moth_songchange_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_songchange_label); gtk_box_pack_start (GTK_BOX (moth_songchange_hbox), moth_songchange_label, FALSE, FALSE, 0); gtk_widget_set_sensitive (moth_songchange_label, FALSE); moth_songchange_spin_adj = gtk_adjustment_new (500, 10, 10000, 10, 100, 10); moth_songchange_spin = gtk_spin_button_new (GTK_ADJUSTMENT (moth_songchange_spin_adj), 0, 0); gtk_widget_ref (moth_songchange_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_songchange_spin", moth_songchange_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_songchange_spin); gtk_box_pack_start (GTK_BOX (moth_songchange_hbox), moth_songchange_spin, TRUE, TRUE, 0); gtk_widget_set_sensitive (moth_songchange_spin, FALSE); gtk_tooltips_set_tip (tooltips, moth_songchange_spin, "The songchange timeout is the maximum time XMMS-crossfade waits for the next song. If this timeout is exceeded, the output plugin/device is closed.\nDefault: 500", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (moth_songchange_spin), TRUE); moth_preload_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (moth_preload_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_preload_hbox", moth_preload_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_preload_hbox); gtk_box_pack_start (GTK_BOX (misc_other_vbox), moth_preload_hbox, TRUE, TRUE, 0); moth_preload_label = gtk_label_new ("Mixing buffer preload (ms):"); gtk_widget_ref (moth_preload_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_preload_label", moth_preload_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_preload_label); gtk_box_pack_start (GTK_BOX (moth_preload_hbox), moth_preload_label, FALSE, FALSE, 0); moth_preload_spin_adj = gtk_adjustment_new (0, 0, 60000, 10, 100, 10); moth_preload_spin = gtk_spin_button_new (GTK_ADJUSTMENT (moth_preload_spin_adj), 0, 0); gtk_widget_ref (moth_preload_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_preload_spin", moth_preload_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_preload_spin); gtk_box_pack_start (GTK_BOX (moth_preload_hbox), moth_preload_spin, TRUE, TRUE, 0); gtk_tooltips_set_tip (tooltips, moth_preload_spin, "Tells XMMS-crossfade how much data it should buffer before it starts writing to the output plugin/device. Usually, this value can be set to 0, because the output plugin does preloading on its own.\nDefault: 0", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (moth_preload_spin), TRUE); moth_noxf_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (moth_noxf_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_noxf_hbox", moth_noxf_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_noxf_hbox); gtk_box_pack_start (GTK_BOX (misc_other_vbox), moth_noxf_hbox, FALSE, FALSE, 0); moth_noxf_label = gtk_label_new ("Don't crossfade"); gtk_widget_ref (moth_noxf_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_noxf_label", moth_noxf_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_noxf_label); gtk_box_pack_start (GTK_BOX (moth_noxf_hbox), moth_noxf_label, FALSE, FALSE, 0); noxf_album_check = gtk_check_button_new_with_label ("successive tracks"); gtk_widget_ref (noxf_album_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "noxf_album_check", noxf_album_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (noxf_album_check); gtk_box_pack_start (GTK_BOX (moth_noxf_hbox), noxf_album_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, noxf_album_check, "This option enables the automatic detection of pre-faded or gapless tracks, like the tracks on some compilations or on most live albums. If such tracks are detected, crossfading will be disabled and only the gapkiller (if enabled) will be used for the songchange.\nDefault: On", NULL); noxf_samefile_check = gtk_check_button_new_with_label ("same file"); gtk_widget_ref (noxf_samefile_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "noxf_samefile_check", noxf_samefile_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (noxf_samefile_check); gtk_box_pack_start (GTK_BOX (moth_noxf_hbox), noxf_samefile_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, noxf_samefile_check, "This option disables crossfading between the same file. This can happen if you have only one file in the playlist and 'repeat' turned on.\nDefault: Off", NULL); moth_httpworkaround_check = gtk_check_button_new_with_label ("Enable HTTP buffer underrun workaround"); gtk_widget_ref (moth_httpworkaround_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_httpworkaround_check", moth_httpworkaround_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_httpworkaround_check); gtk_box_pack_start (GTK_BOX (misc_other_vbox), moth_httpworkaround_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, moth_httpworkaround_check, "Enable this when you have problems playing internet HTTP audio streams. Unfortunatelly, it also breaks crossfading.\nDefault: Off", NULL); moth_opmaxused_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (moth_opmaxused_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_opmaxused_hbox", moth_opmaxused_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_opmaxused_hbox); gtk_box_pack_start (GTK_BOX (misc_other_vbox), moth_opmaxused_hbox, TRUE, TRUE, 0); moth_opmaxused_check = gtk_check_button_new_with_label ("Limit OP buffer usage (ms):"); gtk_widget_ref (moth_opmaxused_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_opmaxused_check", moth_opmaxused_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_opmaxused_check); gtk_box_pack_start (GTK_BOX (moth_opmaxused_hbox), moth_opmaxused_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, moth_opmaxused_check, "With this option enabled, XMMS-crossfade will limit the amount of data being buffered by the output plugin. This way, you can decrease the latency between pressing STOP/NEXT/PREV and the new song actually being played. \nDefault: Off", NULL); moth_opmaxused_spin_adj = gtk_adjustment_new (500, 10, 10000, 10, 100, 10); moth_opmaxused_spin = gtk_spin_button_new (GTK_ADJUSTMENT (moth_opmaxused_spin_adj), 0, 0); gtk_widget_ref (moth_opmaxused_spin); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_opmaxused_spin", moth_opmaxused_spin, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_opmaxused_spin); gtk_box_pack_start (GTK_BOX (moth_opmaxused_hbox), moth_opmaxused_spin, TRUE, TRUE, 0); gtk_tooltips_set_tip (tooltips, moth_opmaxused_spin, "Beware that setting this value too low also increases the chance of buffer underruns.\nDefault: 250", NULL); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (moth_opmaxused_spin), TRUE); moth_quantaudio_check = gtk_check_button_new_with_label ("Use Quantaudio timing comments"); gtk_widget_ref (moth_quantaudio_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_quantaudio_check", moth_quantaudio_check, (GtkDestroyNotify) gtk_widget_unref); gtk_box_pack_start (GTK_BOX (misc_other_vbox), moth_quantaudio_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, moth_quantaudio_check, "Enable this when you have problems playing internet HTTP audio streams. Unfortunatelly, it also breaks crossfading.\nDefault: Off", NULL); moth_outputkeepopened_check = gtk_check_button_new_with_label ("Keep output opened"); gtk_widget_ref (moth_outputkeepopened_check); gtk_object_set_data_full (GTK_OBJECT (config_win), "moth_outputkeepopened_check", moth_outputkeepopened_check, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (moth_outputkeepopened_check); gtk_box_pack_start (GTK_BOX (misc_other_vbox), moth_outputkeepopened_check, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, moth_outputkeepopened_check, "Keep the output device opened all the time, even if XMMS is stopped. This way, you can avoid clicks caused by the soundcard when the device is opened or closed\nDefault: Off", NULL); config_misc_label = gtk_label_new ("Advanced"); gtk_widget_ref (config_misc_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_misc_label", config_misc_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_misc_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (config_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (config_notebook), 4), config_misc_label); config_presets_page = gtk_vbox_new (FALSE, 5); gtk_widget_ref (config_presets_page); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_presets_page", config_presets_page, (GtkDestroyNotify) gtk_widget_unref); gtk_container_add (GTK_CONTAINER (config_notebook), config_presets_page); gtk_container_set_border_width (GTK_CONTAINER (config_presets_page), 5); presets_name_hbox = gtk_hbox_new (FALSE, 5); gtk_widget_ref (presets_name_hbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "presets_name_hbox", presets_name_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (presets_name_hbox); gtk_box_pack_start (GTK_BOX (config_presets_page), presets_name_hbox, FALSE, FALSE, 0); presets_name_entry = gtk_entry_new (); gtk_widget_ref (presets_name_entry); gtk_object_set_data_full (GTK_OBJECT (config_win), "presets_name_entry", presets_name_entry, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (presets_name_entry); gtk_box_pack_start (GTK_BOX (presets_name_hbox), presets_name_entry, TRUE, TRUE, 0); presets_delete_button = gtk_button_new_with_label ("Delete"); gtk_widget_ref (presets_delete_button); gtk_object_set_data_full (GTK_OBJECT (config_win), "presets_delete_button", presets_delete_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (presets_delete_button); gtk_box_pack_start (GTK_BOX (presets_name_hbox), presets_delete_button, FALSE, FALSE, 0); presets_new_button = gtk_button_new_with_label ("New"); gtk_widget_ref (presets_new_button); gtk_object_set_data_full (GTK_OBJECT (config_win), "presets_new_button", presets_new_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (presets_new_button); gtk_box_pack_start (GTK_BOX (presets_name_hbox), presets_new_button, FALSE, FALSE, 0); presets_list_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_ref (presets_list_scrolledwindow); gtk_object_set_data_full (GTK_OBJECT (config_win), "presets_list_scrolledwindow", presets_list_scrolledwindow, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (presets_list_scrolledwindow); gtk_box_pack_start (GTK_BOX (config_presets_page), presets_list_scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (presets_list_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); presets_list_list = gtk_clist_new (3); gtk_widget_ref (presets_list_list); gtk_object_set_data_full (GTK_OBJECT (config_win), "presets_list_list", presets_list_list, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (presets_list_list); gtk_container_add (GTK_CONTAINER (presets_list_scrolledwindow), presets_list_list); gtk_clist_set_column_width (GTK_CLIST (presets_list_list), 0, 101); gtk_clist_set_column_width (GTK_CLIST (presets_list_list), 1, 92); gtk_clist_set_column_width (GTK_CLIST (presets_list_list), 2, 80); gtk_clist_column_titles_show (GTK_CLIST (presets_list_list)); label6 = gtk_label_new ("Name"); gtk_widget_ref (label6); gtk_object_set_data_full (GTK_OBJECT (config_win), "label6", label6, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label6); gtk_clist_set_column_widget (GTK_CLIST (presets_list_list), 0, label6); label7 = gtk_label_new ("Output/Effects"); gtk_widget_ref (label7); gtk_object_set_data_full (GTK_OBJECT (config_win), "label7", label7, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label7); gtk_clist_set_column_widget (GTK_CLIST (presets_list_list), 1, label7); label8 = gtk_label_new ("XF"); gtk_widget_ref (label8); gtk_object_set_data_full (GTK_OBJECT (config_win), "label8", label8, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label8); gtk_clist_set_column_widget (GTK_CLIST (presets_list_list), 2, label8); presets_list_bbox = gtk_hbutton_box_new (); gtk_widget_ref (presets_list_bbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "presets_list_bbox", presets_list_bbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (presets_list_bbox); gtk_box_pack_start (GTK_BOX (config_presets_page), presets_list_bbox, FALSE, FALSE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (presets_list_bbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing (GTK_BUTTON_BOX (presets_list_bbox), 5); presets_load_button = gtk_button_new_with_label ("Load"); gtk_widget_ref (presets_load_button); gtk_object_set_data_full (GTK_OBJECT (config_win), "presets_load_button", presets_load_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (presets_load_button); gtk_container_add (GTK_CONTAINER (presets_list_bbox), presets_load_button); GTK_WIDGET_SET_FLAGS (presets_load_button, GTK_CAN_DEFAULT); presets_save_button = gtk_button_new_with_label ("Save"); gtk_widget_ref (presets_save_button); gtk_object_set_data_full (GTK_OBJECT (config_win), "presets_save_button", presets_save_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (presets_save_button); gtk_container_add (GTK_CONTAINER (presets_list_bbox), presets_save_button); GTK_WIDGET_SET_FLAGS (presets_save_button, GTK_CAN_DEFAULT); config_presets_label = gtk_label_new ("Presets"); gtk_widget_ref (config_presets_label); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_presets_label", config_presets_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_presets_label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (config_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (config_notebook), 5), config_presets_label); config_bbox = gtk_hbutton_box_new (); gtk_widget_ref (config_bbox); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_bbox", config_bbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_bbox); gtk_box_pack_start (GTK_BOX (config_vbox), config_bbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (config_bbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing (GTK_BUTTON_BOX (config_bbox), 5); gtk_button_box_set_child_ipadding (GTK_BUTTON_BOX (config_bbox), 0, 0); config_ok = gtk_button_new_with_label ("OK"); gtk_widget_ref (config_ok); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_ok", config_ok, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_ok); gtk_container_add (GTK_CONTAINER (config_bbox), config_ok); GTK_WIDGET_SET_FLAGS (config_ok, GTK_CAN_DEFAULT); config_cancel = gtk_button_new_with_label ("Cancel"); gtk_widget_ref (config_cancel); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_cancel", config_cancel, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_cancel); gtk_container_add (GTK_CONTAINER (config_bbox), config_cancel); GTK_WIDGET_SET_FLAGS (config_cancel, GTK_CAN_DEFAULT); config_apply = gtk_button_new_with_label ("Apply"); gtk_widget_ref (config_apply); gtk_object_set_data_full (GTK_OBJECT (config_win), "config_apply", config_apply, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (config_apply); gtk_container_add (GTK_CONTAINER (config_bbox), config_apply); GTK_WIDGET_SET_FLAGS (config_apply, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (output_oss_radio), "toggled", GTK_SIGNAL_FUNC (on_output_oss_radio_toggled), NULL); gtk_signal_connect (GTK_OBJECT (output_plugin_radio), "toggled", GTK_SIGNAL_FUNC (on_output_plugin_radio_toggled), NULL); gtk_signal_connect (GTK_OBJECT (output_none_radio), "toggled", GTK_SIGNAL_FUNC (on_output_none_radio_toggled), NULL); gtk_signal_connect (GTK_OBJECT (oss_adevice_alt_check), "toggled", GTK_SIGNAL_FUNC (on_config_adevice_alt_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (oss_mdevice_alt_check), "toggled", GTK_SIGNAL_FUNC (on_config_mdevice_alt_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (osshwb_maxbuf_check), "toggled", GTK_SIGNAL_FUNC (on_osshwb_maxbuf_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (op_configure_button), "clicked", GTK_SIGNAL_FUNC (on_output_plugin_configure_button_clicked), NULL); gtk_signal_connect (GTK_OBJECT (op_about_button), "clicked", GTK_SIGNAL_FUNC (on_output_plugin_about_button_clicked), NULL); gtk_signal_connect (GTK_OBJECT (op_throttle_check), "toggled", GTK_SIGNAL_FUNC (on_op_throttle_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (op_maxblock_check), "toggled", GTK_SIGNAL_FUNC (on_op_maxblock_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (op_maxblock_spin), "changed", GTK_SIGNAL_FUNC (on_op_maxblock_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (op_forcereopen_check), "toggled", GTK_SIGNAL_FUNC (on_op_forcereopen_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (ep_configure_button), "clicked", GTK_SIGNAL_FUNC (on_ep_configure_button_clicked), NULL); gtk_signal_connect (GTK_OBJECT (ep_about_button), "clicked", GTK_SIGNAL_FUNC (on_ep_about_button_clicked), NULL); gtk_signal_connect (GTK_OBJECT (ep_enable_check), "toggled", GTK_SIGNAL_FUNC (on_ep_enable_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (volnorm_enable_check), "toggled", GTK_SIGNAL_FUNC (on_volnorm_enable_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (xf_buffer_spin), "changed", GTK_SIGNAL_FUNC (on_xf_buffer_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xf_autobuf_check), "toggled", GTK_SIGNAL_FUNC (on_xf_autobuf_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (xftfp_length_spin), "changed", GTK_SIGNAL_FUNC (on_xftfp_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xftfp_enable_check), "toggled", GTK_SIGNAL_FUNC (on_xftfp_enable_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (xftffi_length_spin), "changed", GTK_SIGNAL_FUNC (on_xftffi_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xftffi_enable_check), "toggled", GTK_SIGNAL_FUNC (on_xftffi_enable_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (xftffi_volume_spin), "changed", GTK_SIGNAL_FUNC (on_xftffi_volume_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (pause_length_spin), "changed", GTK_SIGNAL_FUNC (on_pause_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (simple_length_spin), "changed", GTK_SIGNAL_FUNC (on_simple_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (fadeout_length_spin), "changed", GTK_SIGNAL_FUNC (on_fadeout_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (fadeout_volume_spin), "changed", GTK_SIGNAL_FUNC (on_fadeout_volume_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (fadeout_enable_check), "toggled", GTK_SIGNAL_FUNC (on_fadeout_enable_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (xfofs_custom_radiobutton), "toggled", GTK_SIGNAL_FUNC (on_xfofs_custom_radiobutton_toggled), NULL); gtk_signal_connect (GTK_OBJECT (xfofs_custom_radiobutton), "clicked", GTK_SIGNAL_FUNC (on_xfofs_custom_radiobutton_clicked), NULL); gtk_signal_connect (GTK_OBJECT (xfofs_custom_spin), "changed", GTK_SIGNAL_FUNC (on_xfofs_custom_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xfofs_none_radiobutton), "clicked", GTK_SIGNAL_FUNC (on_xfofs_none_radiobutton_clicked), NULL); gtk_signal_connect (GTK_OBJECT (xfofs_none_radiobutton), "toggled", GTK_SIGNAL_FUNC (on_xfofs_none_radiobutton_toggled), NULL); gtk_signal_connect (GTK_OBJECT (xfofs_lockout_radiobutton), "toggled", GTK_SIGNAL_FUNC (on_xfofs_lockout_radiobutton_toggled), NULL); gtk_signal_connect (GTK_OBJECT (xfofs_lockout_radiobutton), "clicked", GTK_SIGNAL_FUNC (on_xfofs_lockout_radiobutton_clicked), NULL); gtk_signal_connect (GTK_OBJECT (xfofs_lockin_radiobutton), "toggled", GTK_SIGNAL_FUNC (on_xfofs_lockin_radiobutton_toggled), NULL); gtk_signal_connect (GTK_OBJECT (xfofs_lockin_radiobutton), "clicked", GTK_SIGNAL_FUNC (on_xfofs_lockin_radiobutton_clicked), NULL); gtk_signal_connect (GTK_OBJECT (fadein_length_spin), "changed", GTK_SIGNAL_FUNC (on_fadein_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (fadein_enable_check), "toggled", GTK_SIGNAL_FUNC (on_fadein_enable_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (fadein_lock_check), "toggled", GTK_SIGNAL_FUNC (on_fadein_lock_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (fadein_volume_spin), "changed", GTK_SIGNAL_FUNC (on_fadein_volume_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xftfi_length_spin), "changed", GTK_SIGNAL_FUNC (on_fadein_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xftfi_volume_spin), "changed", GTK_SIGNAL_FUNC (on_fadein_volume_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xftfo_length_spin), "changed", GTK_SIGNAL_FUNC (on_fadeout_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xftfo_volume_spin), "changed", GTK_SIGNAL_FUNC (on_fadeout_volume_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xftfo_silence_spin), "changed", GTK_SIGNAL_FUNC (on_xfofs_custom_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xftfoi_fadeout_spin), "changed", GTK_SIGNAL_FUNC (on_fadeout_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xftfoi_silence_spin), "changed", GTK_SIGNAL_FUNC (on_xfofs_custom_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (xftfoi_fadein_spin), "changed", GTK_SIGNAL_FUNC (on_fadein_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (lgap_length_spin), "changed", GTK_SIGNAL_FUNC (on_lgap_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (lgap_level_spin), "changed", GTK_SIGNAL_FUNC (on_lgap_level_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (lgap_enable_check), "toggled", GTK_SIGNAL_FUNC (on_lgap_enable_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (tgap_length_spin), "changed", GTK_SIGNAL_FUNC (on_tgap_length_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (tgap_level_spin), "changed", GTK_SIGNAL_FUNC (on_tgap_level_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (tgap_lock_check), "toggled", GTK_SIGNAL_FUNC (on_tgap_lock_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (tgap_enable_check), "toggled", GTK_SIGNAL_FUNC (on_tgap_enable_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (mixopt_enable_check), "toggled", GTK_SIGNAL_FUNC (on_config_mixopt_enable_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (moth_songchange_spin), "changed", GTK_SIGNAL_FUNC (on_moth_songchange_spin_changed), NULL); gtk_signal_connect (GTK_OBJECT (moth_opmaxused_check), "toggled", GTK_SIGNAL_FUNC (on_moth_opmaxused_check_toggled), NULL); gtk_signal_connect (GTK_OBJECT (presets_list_list), "click_column", GTK_SIGNAL_FUNC (on_presets_list_click_column), NULL); gtk_signal_connect (GTK_OBJECT (config_ok), "clicked", GTK_SIGNAL_FUNC (on_config_ok_clicked), NULL); gtk_signal_connect_object (GTK_OBJECT (config_cancel), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (config_win)); gtk_signal_connect (GTK_OBJECT (config_apply), "clicked", GTK_SIGNAL_FUNC (on_config_apply_clicked), NULL); gtk_object_set_data (GTK_OBJECT (config_win), "tooltips", tooltips); return config_win; } GtkWidget* create_monitor_win (void) { GtkWidget *monitor_win; GtkWidget *monitor_table; GtkWidget *monitor_output_hbox; GtkWidget *monitor_output_progress; GtkWidget *monitor_output_label2; GtkWidget *monitor_displaylabel_hbox; GtkWidget *monitor_display_label; GtkWidget *monitor_position_hbox; GtkWidget *monpos_position_label; GtkWidget *monpos_label1; GtkWidget *monpos_total_label; GtkWidget *monpos_label2; GtkWidget *monpos_left_label; GtkWidget *monpos_label3; GtkWidget *monpos_written_time_label; GtkWidget *monpos_output_time_separator_label; GtkWidget *monpos_output_time_label; GtkWidget *monitor_outputlabel_hbox; GtkWidget *monitor_output_label; GtkWidget *monitor_positionlabel_hbox; GtkWidget *monitor_position_label; GtkWidget *monitor_display_frame; GtkWidget *monitor_display_drawingarea; monitor_win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_object_set_data (GTK_OBJECT (monitor_win), "monitor_win", monitor_win); gtk_window_set_title (GTK_WINDOW (monitor_win), "Crossfade Buffer Monitor"); gtk_window_set_default_size (GTK_WINDOW (monitor_win), 320, -1); gtk_window_set_wmclass (GTK_WINDOW (monitor_win), "XMMS-crossfade", "xmms"); monitor_table = gtk_table_new (3, 2, FALSE); gtk_widget_ref (monitor_table); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_table", monitor_table, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_table); gtk_container_add (GTK_CONTAINER (monitor_win), monitor_table); gtk_container_set_border_width (GTK_CONTAINER (monitor_table), 5); gtk_table_set_row_spacings (GTK_TABLE (monitor_table), 3); gtk_table_set_col_spacings (GTK_TABLE (monitor_table), 5); monitor_output_hbox = gtk_hbox_new (FALSE, 3); gtk_widget_ref (monitor_output_hbox); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_output_hbox", monitor_output_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_output_hbox); gtk_table_attach (GTK_TABLE (monitor_table), monitor_output_hbox, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); monitor_output_progress = gtk_progress_bar_new (); gtk_widget_ref (monitor_output_progress); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_output_progress", monitor_output_progress, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_output_progress); gtk_box_pack_start (GTK_BOX (monitor_output_hbox), monitor_output_progress, TRUE, TRUE, 0); gtk_progress_configure (GTK_PROGRESS (monitor_output_progress), 0, 0, 0); gtk_progress_set_show_text (GTK_PROGRESS (monitor_output_progress), TRUE); gtk_progress_set_format_string (GTK_PROGRESS (monitor_output_progress), "%v"); monitor_output_label2 = gtk_label_new ("ms"); gtk_widget_ref (monitor_output_label2); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_output_label2", monitor_output_label2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_output_label2); gtk_box_pack_start (GTK_BOX (monitor_output_hbox), monitor_output_label2, FALSE, FALSE, 0); monitor_displaylabel_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (monitor_displaylabel_hbox); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_displaylabel_hbox", monitor_displaylabel_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_displaylabel_hbox); gtk_table_attach (GTK_TABLE (monitor_table), monitor_displaylabel_hbox, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); monitor_display_label = gtk_label_new ("Mixing Buffer:"); gtk_widget_ref (monitor_display_label); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_display_label", monitor_display_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_display_label); gtk_box_pack_end (GTK_BOX (monitor_displaylabel_hbox), monitor_display_label, FALSE, FALSE, 0); monitor_position_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (monitor_position_hbox); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_position_hbox", monitor_position_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_position_hbox); gtk_table_attach (GTK_TABLE (monitor_table), monitor_position_hbox, 1, 2, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); monpos_position_label = gtk_label_new ("-:--.-"); gtk_widget_ref (monpos_position_label); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monpos_position_label", monpos_position_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monpos_position_label); gtk_box_pack_start (GTK_BOX (monitor_position_hbox), monpos_position_label, FALSE, FALSE, 0); monpos_label1 = gtk_label_new (" / "); gtk_widget_ref (monpos_label1); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monpos_label1", monpos_label1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monpos_label1); gtk_box_pack_start (GTK_BOX (monitor_position_hbox), monpos_label1, FALSE, FALSE, 0); monpos_total_label = gtk_label_new ("-:--"); gtk_widget_ref (monpos_total_label); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monpos_total_label", monpos_total_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monpos_total_label); gtk_box_pack_start (GTK_BOX (monitor_position_hbox), monpos_total_label, FALSE, FALSE, 0); monpos_label2 = gtk_label_new (" total, "); gtk_widget_ref (monpos_label2); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monpos_label2", monpos_label2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monpos_label2); gtk_box_pack_start (GTK_BOX (monitor_position_hbox), monpos_label2, FALSE, FALSE, 0); monpos_left_label = gtk_label_new ("-:--"); gtk_widget_ref (monpos_left_label); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monpos_left_label", monpos_left_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monpos_left_label); gtk_box_pack_start (GTK_BOX (monitor_position_hbox), monpos_left_label, FALSE, FALSE, 0); monpos_label3 = gtk_label_new (" left"); gtk_widget_ref (monpos_label3); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monpos_label3", monpos_label3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monpos_label3); gtk_box_pack_start (GTK_BOX (monitor_position_hbox), monpos_label3, FALSE, FALSE, 0); monpos_written_time_label = gtk_label_new ("-:--:--.-"); gtk_widget_ref (monpos_written_time_label); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monpos_written_time_label", monpos_written_time_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monpos_written_time_label); gtk_box_pack_end (GTK_BOX (monitor_position_hbox), monpos_written_time_label, FALSE, FALSE, 0); monpos_output_time_separator_label = gtk_label_new (" / "); gtk_widget_ref (monpos_output_time_separator_label); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monpos_output_time_separator_label", monpos_output_time_separator_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monpos_output_time_separator_label); gtk_box_pack_end (GTK_BOX (monitor_position_hbox), monpos_output_time_separator_label, FALSE, FALSE, 0); monpos_output_time_label = gtk_label_new ("-:--.---"); gtk_widget_ref (monpos_output_time_label); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monpos_output_time_label", monpos_output_time_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monpos_output_time_label); gtk_box_pack_end (GTK_BOX (monitor_position_hbox), monpos_output_time_label, FALSE, FALSE, 0); monitor_outputlabel_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (monitor_outputlabel_hbox); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_outputlabel_hbox", monitor_outputlabel_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_outputlabel_hbox); gtk_table_attach (GTK_TABLE (monitor_table), monitor_outputlabel_hbox, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); monitor_output_label = gtk_label_new ("Output Buffer:"); gtk_widget_ref (monitor_output_label); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_output_label", monitor_output_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_output_label); gtk_box_pack_end (GTK_BOX (monitor_outputlabel_hbox), monitor_output_label, FALSE, FALSE, 0); monitor_positionlabel_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_ref (monitor_positionlabel_hbox); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_positionlabel_hbox", monitor_positionlabel_hbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_positionlabel_hbox); gtk_table_attach (GTK_TABLE (monitor_table), monitor_positionlabel_hbox, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); monitor_position_label = gtk_label_new ("Position:"); gtk_widget_ref (monitor_position_label); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_position_label", monitor_position_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_position_label); gtk_box_pack_end (GTK_BOX (monitor_positionlabel_hbox), monitor_position_label, FALSE, FALSE, 0); monitor_display_frame = gtk_frame_new (NULL); gtk_widget_ref (monitor_display_frame); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_display_frame", monitor_display_frame, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_display_frame); gtk_table_attach (GTK_TABLE (monitor_table), monitor_display_frame, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); gtk_frame_set_shadow_type (GTK_FRAME (monitor_display_frame), GTK_SHADOW_ETCHED_OUT); monitor_display_drawingarea = gtk_drawing_area_new (); gtk_widget_ref (monitor_display_drawingarea); gtk_object_set_data_full (GTK_OBJECT (monitor_win), "monitor_display_drawingarea", monitor_display_drawingarea, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (monitor_display_drawingarea); gtk_container_add (GTK_CONTAINER (monitor_display_frame), monitor_display_drawingarea); gtk_widget_set_usize (monitor_display_drawingarea, -2, 20); gtk_signal_connect (GTK_OBJECT (monitor_win), "delete_event", GTK_SIGNAL_FUNC (on_monitor_win_delete_event), NULL); gtk_signal_connect (GTK_OBJECT (monitor_display_drawingarea), "expose_event", GTK_SIGNAL_FUNC (on_monitor_display_drawingarea_expose_event), NULL); return monitor_win; } GtkWidget* create_about_win (void) { GtkWidget *about_win; GtkWidget *about_vbox; GtkWidget *about_label; GtkWidget *about_actionarea; GtkWidget *about_ok; about_win = gtk_dialog_new (); gtk_object_set_data (GTK_OBJECT (about_win), "about_win", about_win); gtk_window_set_title (GTK_WINDOW (about_win), "About XMMS Crossfade Plugin"); gtk_window_set_policy (GTK_WINDOW (about_win), FALSE, FALSE, FALSE); about_vbox = GTK_DIALOG (about_win)->vbox; gtk_object_set_data (GTK_OBJECT (about_win), "about_vbox", about_vbox); gtk_widget_show (about_vbox); gtk_container_set_border_width (GTK_CONTAINER (about_vbox), 5); about_label = gtk_label_new ("dummy"); gtk_widget_ref (about_label); gtk_object_set_data_full (GTK_OBJECT (about_win), "about_label", about_label, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (about_label); gtk_box_pack_start (GTK_BOX (about_vbox), about_label, FALSE, FALSE, 0); about_actionarea = GTK_DIALOG (about_win)->action_area; gtk_object_set_data (GTK_OBJECT (about_win), "about_actionarea", about_actionarea); gtk_widget_show (about_actionarea); gtk_container_set_border_width (GTK_CONTAINER (about_actionarea), 10); about_ok = gtk_button_new_with_label ("OK"); gtk_widget_ref (about_ok); gtk_object_set_data_full (GTK_OBJECT (about_win), "about_ok", about_ok, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (about_ok); gtk_box_pack_start (GTK_BOX (about_actionarea), about_ok, FALSE, TRUE, 0); gtk_signal_connect_object (GTK_OBJECT (about_ok), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (about_win)); return about_win; } GtkWidget* create_help_win (void) { GtkWidget *help_win; GtkWidget *help_vbox; GtkWidget *help_scrolledwindow; GtkWidget *help_text; GtkWidget *help_buttonbox; GtkWidget *help_close_button; help_win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_object_set_data (GTK_OBJECT (help_win), "help_win", help_win); gtk_window_set_title (GTK_WINDOW (help_win), "Help"); help_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_ref (help_vbox); gtk_object_set_data_full (GTK_OBJECT (help_win), "help_vbox", help_vbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (help_vbox); gtk_container_add (GTK_CONTAINER (help_win), help_vbox); gtk_container_set_border_width (GTK_CONTAINER (help_vbox), 5); help_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_ref (help_scrolledwindow); gtk_object_set_data_full (GTK_OBJECT (help_win), "help_scrolledwindow", help_scrolledwindow, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (help_scrolledwindow); gtk_box_pack_start (GTK_BOX (help_vbox), help_scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (help_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); help_text = gtk_text_new (NULL, NULL); gtk_widget_ref (help_text); gtk_object_set_data_full (GTK_OBJECT (help_win), "help_text", help_text, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (help_text); gtk_container_add (GTK_CONTAINER (help_scrolledwindow), help_text); gtk_text_insert (GTK_TEXT (help_text), NULL, NULL, NULL, "<dummy>\n", -1); help_buttonbox = gtk_hbutton_box_new (); gtk_widget_ref (help_buttonbox); gtk_object_set_data_full (GTK_OBJECT (help_win), "help_buttonbox", help_buttonbox, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (help_buttonbox); gtk_box_pack_start (GTK_BOX (help_vbox), help_buttonbox, FALSE, FALSE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (help_buttonbox), GTK_BUTTONBOX_END); help_close_button = gtk_button_new_with_label ("Close"); gtk_widget_ref (help_close_button); gtk_object_set_data_full (GTK_OBJECT (help_win), "help_close_button", help_close_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (help_close_button); gtk_container_add (GTK_CONTAINER (help_buttonbox), help_close_button); GTK_WIDGET_SET_FLAGS (help_close_button, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (help_close_button), "clicked", GTK_SIGNAL_FUNC (on_help_close_button_clicked), NULL); return help_win; }