⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configure.c

📁 xmms-1.2.10.tar.gz学习使用的就下吧
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "mpg123.h"#include "libxmms/configfile.h"#include "libxmms/dirbrowser.h"#include "libxmms/titlestring.h"static GtkWidget *mpg123_configurewin = NULL;static GtkWidget *vbox, *notebook;static GtkWidget *decode_vbox, *decode_hbox1;static GtkWidget *decode_res_frame, *decode_res_vbox, *decode_res_16, *decode_res_8;static GtkWidget *decode_ch_frame, *decode_ch_vbox, *decode_ch_stereo, *decode_ch_mono;static GtkWidget *decode_freq_frame, *decode_freq_vbox, *decode_freq_1to1,         *decode_freq_1to2, *decode_freq_1to4;static GtkWidget *option_frame, *option_vbox, *detect_by_content, *detect_by_extension, *detect_by_both;#ifdef USE_SIMDstatic GtkWidget *auto_select, *decoder_3dnow, *decoder_mmx, *decoder_fpu;static void auto_select_cb(GtkWidget * w, gpointer data);#endifstatic GtkObject *streaming_size_adj, *streaming_pre_adj;static GtkWidget *streaming_proxy_use, *streaming_proxy_host_entry;static GtkWidget *streaming_proxy_port_entry, *streaming_save_use, *streaming_save_entry;static GtkWidget *streaming_proxy_auth_use;static GtkWidget *streaming_proxy_auth_pass_entry, *streaming_proxy_auth_user_entry;static GtkWidget *streaming_proxy_auth_user_label, *streaming_proxy_auth_pass_label;static GtkWidget *streaming_cast_title, *streaming_udp_title;static GtkWidget *streaming_proxy_hbox, *streaming_proxy_auth_hbox, *streaming_save_dirbrowser;static GtkWidget *streaming_save_hbox, *title_id3_box, *title_tag_desc;static GtkWidget *title_override, *title_id3_entry, *title_id3v2_disable;MPG123Config mpg123_cfg;static void mpg123_configurewin_ok(GtkWidget * widget, gpointer data){	ConfigFile *cfg;	gchar *filename;	if (GTK_TOGGLE_BUTTON(decode_res_16)->active)		mpg123_cfg.resolution = 16;	else if (GTK_TOGGLE_BUTTON(decode_res_8)->active)		mpg123_cfg.resolution = 8;	if (GTK_TOGGLE_BUTTON(decode_ch_stereo)->active)		mpg123_cfg.channels = 2;	else if (GTK_TOGGLE_BUTTON(decode_ch_mono)->active)		mpg123_cfg.channels = 1;	if (GTK_TOGGLE_BUTTON(decode_freq_1to1)->active)		mpg123_cfg.downsample = 0;	else if (GTK_TOGGLE_BUTTON(decode_freq_1to2)->active)		mpg123_cfg.downsample = 1;	if (GTK_TOGGLE_BUTTON(decode_freq_1to4)->active)		mpg123_cfg.downsample = 2;	if (GTK_TOGGLE_BUTTON(detect_by_content)->active)		mpg123_cfg.detect_by = DETECT_CONTENT;	else if (GTK_TOGGLE_BUTTON(detect_by_extension)->active)		mpg123_cfg.detect_by = DETECT_EXTENSION;	else if (GTK_TOGGLE_BUTTON(detect_by_both)->active)		mpg123_cfg.detect_by = DETECT_BOTH;	else mpg123_cfg.detect_by = DETECT_EXTENSION;#ifdef USE_SIMD	if (GTK_TOGGLE_BUTTON(auto_select)->active)                mpg123_cfg.default_synth = SYNTH_AUTO;        else if (GTK_TOGGLE_BUTTON(decoder_fpu)->active)                mpg123_cfg.default_synth = SYNTH_FPU;        else if (GTK_TOGGLE_BUTTON(decoder_mmx)->active)                mpg123_cfg.default_synth = SYNTH_MMX;        else mpg123_cfg.default_synth = SYNTH_3DNOW;#endif	mpg123_cfg.http_buffer_size = (gint) GTK_ADJUSTMENT(streaming_size_adj)->value;	mpg123_cfg.http_prebuffer = (gint) GTK_ADJUSTMENT(streaming_pre_adj)->value;	mpg123_cfg.use_proxy = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_proxy_use));	g_free(mpg123_cfg.proxy_host);	mpg123_cfg.proxy_host = g_strdup(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_host_entry)));	mpg123_cfg.proxy_port = atoi(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_port_entry)));	mpg123_cfg.proxy_use_auth = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_proxy_auth_use));	if(mpg123_cfg.proxy_user)		g_free(mpg123_cfg.proxy_user);	mpg123_cfg.proxy_user = NULL;	if(strlen(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_auth_user_entry))) > 0)		mpg123_cfg.proxy_user = g_strdup(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_auth_user_entry)));	if(mpg123_cfg.proxy_pass)		g_free(mpg123_cfg.proxy_pass);	mpg123_cfg.proxy_pass = NULL;	if(strlen(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_auth_pass_entry))) > 0)		mpg123_cfg.proxy_pass = g_strdup(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_auth_pass_entry)));			mpg123_cfg.save_http_stream = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_save_use));	if (mpg123_cfg.save_http_path)		g_free(mpg123_cfg.save_http_path);	mpg123_cfg.save_http_path = g_strdup(gtk_entry_get_text(GTK_ENTRY(streaming_save_entry)));	mpg123_cfg.cast_title_streaming = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_cast_title));	mpg123_cfg.use_udp_channel = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_udp_title));		mpg123_cfg.title_override = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(title_override));	mpg123_cfg.disable_id3v2 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(title_id3v2_disable));	g_free(mpg123_cfg.id3_format);	mpg123_cfg.id3_format = g_strdup(gtk_entry_get_text(GTK_ENTRY(title_id3_entry)));	filename = g_strconcat(g_get_home_dir(), "/.xmms/config", NULL);	cfg = xmms_cfg_open_file(filename);	if (!cfg)		cfg = xmms_cfg_new();	xmms_cfg_write_int(cfg, "MPG123", "resolution", mpg123_cfg.resolution);	xmms_cfg_write_int(cfg, "MPG123", "channels", mpg123_cfg.channels);	xmms_cfg_write_int(cfg, "MPG123", "downsample", mpg123_cfg.downsample);	xmms_cfg_write_int(cfg, "MPG123", "http_buffer_size", mpg123_cfg.http_buffer_size);	xmms_cfg_write_int(cfg, "MPG123", "http_prebuffer", mpg123_cfg.http_prebuffer);	xmms_cfg_write_boolean(cfg, "MPG123", "use_proxy", mpg123_cfg.use_proxy);	xmms_cfg_write_string(cfg, "MPG123", "proxy_host", mpg123_cfg.proxy_host);	xmms_cfg_write_int(cfg, "MPG123", "proxy_port", mpg123_cfg.proxy_port);	xmms_cfg_write_boolean(cfg, "MPG123", "proxy_use_auth", mpg123_cfg.proxy_use_auth);	if(mpg123_cfg.proxy_user)		xmms_cfg_write_string(cfg, "MPG123", "proxy_user", mpg123_cfg.proxy_user);	else		xmms_cfg_remove_key(cfg, "MPG123", "proxy_user");	if(mpg123_cfg.proxy_pass)		xmms_cfg_write_string(cfg, "MPG123", "proxy_pass", mpg123_cfg.proxy_pass);	else		xmms_cfg_remove_key(cfg, "MPG123", "proxy_pass");	xmms_cfg_write_boolean(cfg, "MPG123", "save_http_stream", mpg123_cfg.save_http_stream);	xmms_cfg_write_string(cfg, "MPG123", "save_http_path", mpg123_cfg.save_http_path);	xmms_cfg_write_boolean(cfg, "MPG123", "cast_title_streaming", mpg123_cfg.cast_title_streaming);	xmms_cfg_write_boolean(cfg, "MPG123", "use_udp_channel", mpg123_cfg.use_udp_channel);	xmms_cfg_write_boolean(cfg, "MPG123", "title_override", mpg123_cfg.title_override);	xmms_cfg_write_boolean(cfg, "MPG123", "disable_id3v2", mpg123_cfg.disable_id3v2);	xmms_cfg_write_string(cfg, "MPG123", "id3_format", mpg123_cfg.id3_format);	xmms_cfg_write_int(cfg, "MPG123", "detect_by", mpg123_cfg.detect_by);#ifdef USE_SIMD	xmms_cfg_write_int(cfg, "MPG123", "default_synth", mpg123_cfg.default_synth);#endif	xmms_cfg_write_file(cfg, filename);	xmms_cfg_free(cfg);	g_free(filename);	gtk_widget_destroy(mpg123_configurewin);}#ifdef USE_SIMDstatic void auto_select_cb(GtkWidget * w, gpointer data){	gboolean autom = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));	gtk_widget_set_sensitive(decoder_fpu, !autom);	gtk_widget_set_sensitive(decoder_mmx, !autom);	gtk_widget_set_sensitive(decoder_3dnow, !autom);}#endifstatic void proxy_use_cb(GtkWidget * w, gpointer data){	gboolean use_proxy, use_proxy_auth;	use_proxy = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_proxy_use));	use_proxy_auth = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_proxy_auth_use));			gtk_widget_set_sensitive(streaming_proxy_hbox, use_proxy);	gtk_widget_set_sensitive(streaming_proxy_auth_use, use_proxy);	gtk_widget_set_sensitive(streaming_proxy_auth_hbox, use_proxy && use_proxy_auth);}static void proxy_auth_use_cb(GtkWidget *w, gpointer data){	gboolean use_proxy, use_proxy_auth;	use_proxy = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_proxy_use));	use_proxy_auth = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_proxy_auth_use));	gtk_widget_set_sensitive(streaming_proxy_auth_hbox, use_proxy && use_proxy_auth);}static void streaming_save_dirbrowser_cb(gchar * dir){	gtk_entry_set_text(GTK_ENTRY(streaming_save_entry), dir);}static void streaming_save_browse_cb(GtkWidget * w, gpointer data){	if (!streaming_save_dirbrowser)	{		streaming_save_dirbrowser = xmms_create_dir_browser(_("Select the directory where you want to store the MPEG streams:"),								    mpg123_cfg.save_http_path, GTK_SELECTION_SINGLE, streaming_save_dirbrowser_cb);		gtk_signal_connect(GTK_OBJECT(streaming_save_dirbrowser), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &streaming_save_dirbrowser);		gtk_window_set_transient_for(GTK_WINDOW(streaming_save_dirbrowser), GTK_WINDOW(mpg123_configurewin));		gtk_widget_show(streaming_save_dirbrowser);	}}static void streaming_save_use_cb(GtkWidget * w, gpointer data){	gboolean save_stream;	save_stream = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_save_use));	gtk_widget_set_sensitive(streaming_save_hbox, save_stream);}static void title_override_cb(GtkWidget * w, gpointer data){	gboolean override;	override = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(title_override));	gtk_widget_set_sensitive(title_id3_box, override);	gtk_widget_set_sensitive(title_tag_desc, override);}static void configure_destroy(GtkWidget * w, gpointer data){	if (streaming_save_dirbrowser)		gtk_widget_destroy(streaming_save_dirbrowser);}void mpg123_configure(void){	GtkWidget *streaming_vbox;	GtkWidget *streaming_buf_frame, *streaming_buf_hbox;	GtkWidget *streaming_size_box, *streaming_size_label, *streaming_size_spin;	GtkWidget *streaming_pre_box, *streaming_pre_label, *streaming_pre_spin;	GtkWidget *streaming_proxy_frame, *streaming_proxy_vbox;	GtkWidget *streaming_proxy_port_label, 	*streaming_proxy_host_label;	GtkWidget *streaming_save_frame, *streaming_save_vbox;	GtkWidget *streaming_save_label, *streaming_save_browse;	GtkWidget *streaming_cast_frame, *streaming_cast_vbox;	GtkWidget *title_frame, *title_id3_vbox, *title_id3_label;	GtkWidget *bbox, *ok, *cancel;	char *temp;	if (mpg123_configurewin != NULL)	{		gdk_window_raise(mpg123_configurewin->window);		return;	}	mpg123_configurewin = gtk_window_new(GTK_WINDOW_DIALOG);	gtk_signal_connect(GTK_OBJECT(mpg123_configurewin), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &mpg123_configurewin);	gtk_signal_connect(GTK_OBJECT(mpg123_configurewin), "destroy", GTK_SIGNAL_FUNC(configure_destroy), &mpg123_configurewin);	gtk_window_set_title(GTK_WINDOW(mpg123_configurewin), _("MPG123 Configuration"));	gtk_window_set_policy(GTK_WINDOW(mpg123_configurewin), FALSE, FALSE, FALSE);	/*  gtk_window_set_position(GTK_WINDOW(mpg123_configurewin), GTK_WIN_POS_MOUSE); */	gtk_container_border_width(GTK_CONTAINER(mpg123_configurewin), 10);	vbox = gtk_vbox_new(FALSE, 10);	gtk_container_add(GTK_CONTAINER(mpg123_configurewin), vbox);	notebook = gtk_notebook_new();	gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0);	decode_vbox = gtk_vbox_new(FALSE, 5);	gtk_container_set_border_width(GTK_CONTAINER(decode_vbox), 5);	decode_hbox1 = gtk_hbox_new(TRUE, 5);	gtk_box_pack_start(GTK_BOX(decode_vbox), decode_hbox1, FALSE, FALSE, 0);	decode_res_frame = gtk_frame_new(_("Resolution:"));	gtk_box_pack_start(GTK_BOX(decode_hbox1), decode_res_frame, TRUE, TRUE, 0);	decode_res_vbox = gtk_vbox_new(FALSE, 5);	gtk_container_set_border_width(GTK_CONTAINER(decode_res_vbox), 5);	gtk_container_add(GTK_CONTAINER(decode_res_frame), decode_res_vbox);	decode_res_16 = gtk_radio_button_new_with_label(NULL, _("16 bit"));	if (mpg123_cfg.resolution == 16)		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(decode_res_16), TRUE);	gtk_box_pack_start(GTK_BOX(decode_res_vbox), decode_res_16, FALSE, FALSE, 0);	decode_res_8 = gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(decode_res_16)), _("8 bit"));	if (mpg123_cfg.resolution == 8)		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(decode_res_8), TRUE);	gtk_box_pack_start(GTK_BOX(decode_res_vbox), decode_res_8, FALSE, FALSE, 0);	decode_ch_frame = gtk_frame_new(_("Channels:"));	gtk_box_pack_start(GTK_BOX(decode_hbox1), decode_ch_frame, TRUE, TRUE, 0);	decode_ch_vbox = gtk_vbox_new(FALSE, 5);	gtk_container_set_border_width(GTK_CONTAINER(decode_ch_vbox), 5);	gtk_container_add(GTK_CONTAINER(decode_ch_frame), decode_ch_vbox);	decode_ch_stereo = gtk_radio_button_new_with_label(NULL, _("Stereo (if available)"));	if (mpg123_cfg.channels == 2)		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(decode_ch_stereo), TRUE);	gtk_box_pack_start(GTK_BOX(decode_ch_vbox), decode_ch_stereo, FALSE, FALSE, 0);	decode_ch_mono = gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(decode_ch_stereo)), _("Mono"));	if (mpg123_cfg.channels == 1)		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(decode_ch_mono), TRUE);	gtk_box_pack_start(GTK_BOX(decode_ch_vbox), decode_ch_mono, FALSE, FALSE, 0);	decode_freq_frame = gtk_frame_new(_("Down sample:"));	gtk_box_pack_start(GTK_BOX(decode_vbox), decode_freq_frame, FALSE, FALSE, 0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -