📄 configure.c
字号:
#include "config.h"#include <stdlib.h>#include <string.h>#include <glib.h>#include <gtk/gtk.h>#include <pthread.h>#include "vorbis.h"#include "libxmms/configfile.h"#include "libxmms/dirbrowser.h"#include "libxmms/titlestring.h"#include "xmms/i18n.h"#include "libxmms/util.h"#include "xmms/plugin.h"extern pthread_mutex_t vf_mutex;static GtkWidget *vorbis_configurewin = NULL;static GtkWidget *vbox, *notebook;static GtkWidget *streaming_proxy_use, *streaming_proxy_host_entry;static GtkWidget *streaming_proxy_port_entry, *streaming_save_entry;static GtkWidget *streaming_save_use, *streaming_size_spin, *streaming_pre_spin;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_proxy_hbox, *streaming_proxy_auth_hbox;static GtkWidget *streaming_save_dirbrowser, *streaming_save_hbox;static GtkWidget *title_tag_override, *title_tag_box, *title_tag_entry, *title_desc;static GtkWidget *rg_switch, *rg_clip_switch, *rg_booster_switch, *rg_track_gain;vorbis_config_t vorbis_cfg;static void vorbis_configurewin_ok(GtkWidget * widget, gpointer data){ ConfigFile *cfg; GtkToggleButton *tb; vorbis_cfg.http_buffer_size = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(streaming_size_spin)); vorbis_cfg.http_prebuffer = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(streaming_pre_spin)); vorbis_cfg.use_proxy = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_proxy_use)); g_free(vorbis_cfg.proxy_host); vorbis_cfg.proxy_host = g_strdup(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_host_entry))); vorbis_cfg.proxy_port = atoi(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_port_entry))); vorbis_cfg.proxy_use_auth = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_proxy_auth_use)); g_free(vorbis_cfg.proxy_user); vorbis_cfg.proxy_user = NULL; if(strlen(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_auth_user_entry))) > 0) vorbis_cfg.proxy_user = g_strdup(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_auth_user_entry))); g_free(vorbis_cfg.proxy_pass); vorbis_cfg.proxy_pass = NULL; if(strlen(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_auth_pass_entry))) > 0) vorbis_cfg.proxy_pass = g_strdup(gtk_entry_get_text(GTK_ENTRY(streaming_proxy_auth_pass_entry))); vorbis_cfg.save_http_stream = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(streaming_save_use)); g_free(vorbis_cfg.save_http_path); vorbis_cfg.save_http_path = g_strdup(gtk_entry_get_text(GTK_ENTRY(streaming_save_entry))); g_free(vorbis_cfg.tag_format); vorbis_cfg.tag_format = g_strdup(gtk_entry_get_text(GTK_ENTRY(title_tag_entry))); tb = GTK_TOGGLE_BUTTON(title_tag_override); vorbis_cfg.tag_override = gtk_toggle_button_get_active(tb); tb = GTK_TOGGLE_BUTTON(rg_switch); vorbis_cfg.use_replaygain = gtk_toggle_button_get_active(tb); tb = GTK_TOGGLE_BUTTON(rg_clip_switch); vorbis_cfg.use_anticlip = gtk_toggle_button_get_active(tb); tb = GTK_TOGGLE_BUTTON(rg_booster_switch); vorbis_cfg.use_booster = gtk_toggle_button_get_active(tb); tb = GTK_TOGGLE_BUTTON(rg_track_gain); if (gtk_toggle_button_get_active(tb)) vorbis_cfg.replaygain_mode = REPLAYGAIN_MODE_TRACK; else vorbis_cfg.replaygain_mode = REPLAYGAIN_MODE_ALBUM; cfg = xmms_cfg_open_default_file(); xmms_cfg_write_int(cfg, "vorbis", "http_buffer_size", vorbis_cfg.http_buffer_size); xmms_cfg_write_int(cfg, "vorbis", "http_prebuffer", vorbis_cfg.http_prebuffer); xmms_cfg_write_boolean(cfg, "vorbis", "use_proxy", vorbis_cfg.use_proxy); xmms_cfg_write_string(cfg, "vorbis", "proxy_host", vorbis_cfg.proxy_host); xmms_cfg_write_boolean(cfg, "vorbis", "save_http_stream", vorbis_cfg.save_http_stream); xmms_cfg_write_string(cfg, "vorbis", "save_http_path", vorbis_cfg.save_http_path); xmms_cfg_write_boolean(cfg, "vorbis", "tag_override", vorbis_cfg.tag_override); xmms_cfg_write_string(cfg, "vorbis", "tag_format", vorbis_cfg.tag_format); xmms_cfg_write_int(cfg, "vorbis", "proxy_port", vorbis_cfg.proxy_port); xmms_cfg_write_boolean(cfg, "vorbis", "proxy_use_auth", vorbis_cfg.proxy_use_auth); if (vorbis_cfg.proxy_user) xmms_cfg_write_string(cfg, "vorbis", "proxy_user", vorbis_cfg.proxy_user); else xmms_cfg_remove_key(cfg, "vorbis", "proxy_user"); if (vorbis_cfg.proxy_pass) xmms_cfg_write_string(cfg, "vorbis", "proxy_pass", vorbis_cfg.proxy_pass); else xmms_cfg_remove_key(cfg, "vorbis", "proxy_pass"); xmms_cfg_write_boolean(cfg, "vorbis", "use_anticlip", vorbis_cfg.use_anticlip); xmms_cfg_write_boolean(cfg, "vorbis", "use_replaygain", vorbis_cfg.use_replaygain); xmms_cfg_write_int(cfg, "vorbis", "replaygain_mode", vorbis_cfg.replaygain_mode); xmms_cfg_write_boolean(cfg, "vorbis", "use_booster", vorbis_cfg.use_booster); xmms_cfg_write_default_file(cfg); xmms_cfg_free(cfg); gtk_widget_destroy(vorbis_configurewin);}static 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) return; streaming_save_dirbrowser = xmms_create_dir_browser(_("Select the directory where you want " "to store the Ogg Vorbis streams:"), vorbis_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(vorbis_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 configure_destroy(GtkWidget * w, gpointer data){/* if (streaming_save_dirbrowser) *//* gtk_widget_destroy(streaming_save_dirbrowser); */}static void title_tag_override_cb(GtkWidget * w, gpointer data){ gboolean override; override = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(title_tag_override)); gtk_widget_set_sensitive(title_tag_box, override); gtk_widget_set_sensitive(title_desc, override);}static void rg_switch_cb(GtkWidget * w, gpointer data){ gtk_widget_set_sensitive(GTK_WIDGET(data), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)));}void vorbis_configure(void){ GtkWidget *streaming_vbox; GtkWidget *streaming_buf_frame, *streaming_buf_hbox; GtkWidget *streaming_size_box, *streaming_size_label; GtkWidget *streaming_pre_box, *streaming_pre_label; 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 *title_frame, *title_tag_vbox, *title_tag_label; GtkWidget *rg_frame, *rg_vbox; GtkWidget *bbox, *ok, *cancel; GtkWidget *rg_type_frame, *rg_type_vbox, *rg_album_gain; GtkObject *streaming_size_adj, *streaming_pre_adj; char *temp; if (vorbis_configurewin != NULL) { gdk_window_raise(vorbis_configurewin->window); return; } vorbis_configurewin = gtk_window_new(GTK_WINDOW_DIALOG); gtk_signal_connect(GTK_OBJECT(vorbis_configurewin), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &vorbis_configurewin); gtk_signal_connect(GTK_OBJECT(vorbis_configurewin), "destroy", GTK_SIGNAL_FUNC(configure_destroy), &vorbis_configurewin); gtk_window_set_title(GTK_WINDOW(vorbis_configurewin), _("Ogg Vorbis Configuration")); gtk_window_set_policy(GTK_WINDOW(vorbis_configurewin), FALSE, FALSE, FALSE); gtk_container_border_width(GTK_CONTAINER(vorbis_configurewin), 10); vbox = gtk_vbox_new(FALSE, 10); gtk_container_add(GTK_CONTAINER(vorbis_configurewin), vbox);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -