📄 prefswin.c
字号:
cfg.snap_distance = CLAMP(atoi(gtk_entry_get_text(GTK_ENTRY(prefswin_options_sd_entry))), 0, 1000); cfg.playlist_font = g_strdup(gtk_entry_get_text(GTK_ENTRY(prefswin_options_font_entry))); cfg.mainwin_font = g_strdup(gtk_entry_get_text(GTK_ENTRY(prefswin_mainwin_font_entry))); cfg.gentitle_format = g_strdup(gtk_entry_get_text(GTK_ENTRY(prefswin_title_entry))); cfg.pause_between_songs_time = CLAMP(atoi(gtk_entry_get_text(GTK_ENTRY(prefswin_options_pbs_entry))), 0, 1000); cfg.mouse_change = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(prefswin_options_mouse_spin)); set_current_output_plugin(selected_oplugin); equalizerwin_set_doublesize(cfg.doublesize && cfg.eq_doublesize_linked); if (cfg.dim_titlebar) { mainwin_menubtn->pb_allow_draw = mainwin_focus; mainwin_minimize->pb_allow_draw = mainwin_focus; mainwin_shade->pb_allow_draw = mainwin_focus; mainwin_close->pb_allow_draw = mainwin_focus; equalizerwin_close->pb_allow_draw = equalizerwin_focus; playlistwin_shade->pb_allow_draw = playlistwin_focus; playlistwin_close->pb_allow_draw = playlistwin_focus; } else { mainwin_menubtn->pb_allow_draw = TRUE; mainwin_minimize->pb_allow_draw = TRUE; mainwin_shade->pb_allow_draw = TRUE; mainwin_close->pb_allow_draw = TRUE; equalizerwin_close->pb_allow_draw = TRUE; playlistwin_shade->pb_allow_draw = TRUE; playlistwin_close->pb_allow_draw = TRUE; } if (cfg.get_info_on_load) playlist_start_get_info_scan(); if (mainwin_info->tb_timeout_tag) { textbox_set_scroll(mainwin_info, FALSE); textbox_set_scroll(mainwin_info, TRUE); } if (show_wm_old != cfg.show_wm_decorations) prefswin_toggle_wm_decorations(); textbox_set_xfont(mainwin_info, cfg.mainwin_use_xfont, cfg.mainwin_font); playlist_list_set_font(cfg.playlist_font); playlistwin_update_list(); mainwin_set_info_text(); draw_main_window(TRUE); draw_playlist_window(TRUE); draw_equalizer_window(TRUE); save_config();}void prefswin_ok_cb(GtkWidget * w, gpointer data){ prefswin_apply_changes(); gtk_widget_hide(prefswin);}void prefswin_cancel_cb(GtkWidget * w, gpointer data){ gtk_widget_hide(prefswin);}void prefswin_apply_cb(GtkWidget * w, gpointer data){ prefswin_apply_changes();}void prefswin_font_browse_ok(GtkWidget * w, gpointer data){ GtkFontSelectionDialog *fontsel = GTK_FONT_SELECTION_DIALOG(data); gchar *fontname; fontname = gtk_font_selection_dialog_get_font_name(fontsel); if (fontname) gtk_entry_set_text(GTK_ENTRY(prefswin_options_font_entry), fontname); gtk_widget_destroy(GTK_WIDGET(fontsel));}void prefswin_font_browse_cb(GtkWidget * w, gpointer data){ static GtkWidget *fontsel; if (fontsel != NULL) return; fontsel = gtk_font_selection_dialog_new(_("Select playlist font:")); gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(fontsel), gtk_entry_get_text(GTK_ENTRY(prefswin_options_font_entry))); gtk_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(fontsel)->ok_button), "clicked", GTK_SIGNAL_FUNC(prefswin_font_browse_ok), fontsel); gtk_signal_connect_object(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(fontsel)->cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(fontsel)); gtk_signal_connect(GTK_OBJECT(fontsel), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &fontsel); gtk_widget_show(fontsel);}void prefswin_mainwin_font_browse_ok(GtkWidget * w, gpointer data){ GtkFontSelectionDialog *fontsel = GTK_FONT_SELECTION_DIALOG(data); gchar *fontname; fontname = gtk_font_selection_dialog_get_font_name(fontsel); if (fontname) gtk_entry_set_text(GTK_ENTRY(prefswin_mainwin_font_entry), fontname); gtk_widget_destroy(GTK_WIDGET(fontsel));}void prefswin_mainwin_font_browse_cb(GtkWidget * w, gpointer data){ static GtkWidget *fontsel; if (!fontsel) { fontsel = gtk_font_selection_dialog_new(_("Select main window font:")); gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(fontsel), gtk_entry_get_text(GTK_ENTRY(prefswin_mainwin_font_entry))); gtk_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(fontsel)->ok_button), "clicked", GTK_SIGNAL_FUNC(prefswin_mainwin_font_browse_ok), fontsel); gtk_signal_connect_object(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(fontsel)->cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(fontsel)); gtk_signal_connect(GTK_OBJECT(fontsel), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &fontsel); gtk_widget_show(fontsel); }}void prefswin_gplugins_use_cb(GtkToggleButton * w, gpointer data){ gint sel; GtkAdjustment *adj; gfloat pos; GtkCList *clist = GTK_CLIST(data); if (!clist->selection || updating_glist) return; sel = GPOINTER_TO_INT(clist->selection->data); enable_general_plugin(sel, gtk_toggle_button_get_active(w)); adj = gtk_clist_get_vadjustment(clist); pos = adj->value; add_general_plugins(clist); gtk_adjustment_set_value(adj, pos); gtk_clist_set_vadjustment(clist, adj); gtk_clist_select_row(clist, sel, 0);}void prefswin_vplugins_rescan(void){ gint sel; GtkAdjustment *adj; gfloat pos; GtkCList *clist = GTK_CLIST(prefswin_vplugins_list); if (clist->selection) sel = GPOINTER_TO_INT(clist->selection->data); else sel = -1; adj = gtk_clist_get_vadjustment(clist); pos = adj->value; add_vis_plugins(clist); gtk_adjustment_set_value(adj, pos); gtk_clist_set_vadjustment(clist, adj); if(sel != -1) gtk_clist_select_row(clist, sel, 0);} void prefswin_vplugins_use_cb(GtkToggleButton * w, gpointer data){ gint sel; GtkCList *clist = GTK_CLIST(data); if (!clist->selection || updating_vlist) return; sel = GPOINTER_TO_INT(clist->selection->data); enable_vis_plugin(sel, gtk_toggle_button_get_active(w)); prefswin_vplugins_rescan();}void prefswin_eplugins_rescan(void){ gint sel; GtkAdjustment *adj; gfloat pos; GtkCList *clist = GTK_CLIST(prefswin_eplugins_list); if (clist->selection) sel = GPOINTER_TO_INT(clist->selection->data); else sel = -1; adj = gtk_clist_get_vadjustment(clist); pos = adj->value; add_effect_plugins(clist); gtk_adjustment_set_value(adj, pos); gtk_clist_set_vadjustment(clist, adj); if(sel != -1) gtk_clist_select_row(clist, sel, 0);} void prefswin_eplugins_use_cb(GtkToggleButton * w, gpointer data){ gint sel; GtkCList *clist = GTK_CLIST(data); if (!clist->selection || updating_elist) return; sel = GPOINTER_TO_INT(clist->selection->data); enable_effect_plugin(sel, gtk_toggle_button_get_active(w)); prefswin_eplugins_rescan();}void prefswin_ip_toggled(GtkToggleButton * w, gpointer data){ InputPlugin *selected; gint sel; GtkAdjustment *adj; gfloat pos; GtkCList *clist = GTK_CLIST(data); if (!clist->selection || updating_ilist) return; sel = GPOINTER_TO_INT(clist->selection->data); selected = (InputPlugin *) (g_list_nth(get_input_list(), sel)->data); if (!gtk_toggle_button_get_active(w)) disabled_iplugins = g_list_append(disabled_iplugins, selected); else if (g_list_find(disabled_iplugins, selected)) disabled_iplugins = g_list_remove(disabled_iplugins, selected); adj = gtk_clist_get_vadjustment(clist); pos = adj->value; add_input_plugins(clist); gtk_adjustment_set_value(adj, pos); gtk_clist_set_vadjustment(clist, adj); gtk_clist_select_row(clist, sel, 0);}static GtkWidget * prefswin_option_new(gboolean * cfg){ struct option_info *info; info = g_malloc(sizeof(struct option_info)); info->button = gtk_check_button_new(); info->cfg = cfg; option_list = g_list_prepend(option_list, info); return info->button;}static GtkWidget * prefswin_option_new_with_label(gboolean * cfg, char * label){ GtkWidget *buttonw, *labelw; buttonw = prefswin_option_new(cfg); labelw = gtk_label_new(label); gtk_misc_set_alignment(GTK_MISC(labelw), 0.0, 0.5); gtk_container_add(GTK_CONTAINER(buttonw), labelw); return buttonw;}static GtkWidget * prefswin_option_new_with_label_to_table(gboolean * cfg, char * label, GtkTable * table, int x, int y){ GtkWidget *buttonw; buttonw = prefswin_option_new_with_label(cfg, label); gtk_table_attach_defaults(table, buttonw, x, x + 1, y, y + 1); return buttonw;}static GtkWidget * prefswin_option_new_to_table(gboolean * cfg, GtkTable * table, int x, int y){ GtkWidget *buttonw; buttonw = prefswin_option_new(cfg); gtk_table_attach_defaults(table, buttonw, x, x + 1, y, y + 1); return buttonw;}static GtkWidget * prefswin_radio_new(gboolean *cfg, GtkRadioButton *group){ struct option_info *info; GtkWidget *button = gtk_radio_button_new_from_widget(group); if (cfg != NULL) { info = g_malloc(sizeof(struct option_info)); info->button = button; info->cfg = cfg; option_list = g_list_prepend(option_list, info); } return button;}static GtkWidget * prefswin_radio_new_with_label(gboolean *cfg, GtkRadioButton *group, char *label){ GtkWidget *buttonw, *labelw; buttonw = prefswin_radio_new(cfg, group); labelw = gtk_label_new(label); gtk_misc_set_alignment(GTK_MISC(labelw), 0.0, 0.5); gtk_container_add(GTK_CONTAINER(buttonw), labelw); return buttonw;}static void prefswin_options_read_data(void){ GList *node; for (node = option_list; node; node = g_list_next(node)) { struct option_info *info = node->data; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(info->button), *(info->cfg)); }}static void prefswin_options_write_data(void){ GList *node; for (node = option_list; node; node = g_list_next(node)) { struct option_info *info = node->data; *info->cfg = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(info->button)); }}void create_prefs_window(void){ GtkWidget *prefswin_audio_vbox; GtkWidget *prefswin_audio_ilist, *prefswin_audio_iframe, *prefswin_audio_ivbox; GtkWidget *prefswin_audio_ihbox, *prefswin_audio_ihbbox; GtkWidget *prefswin_audio_oframe, *prefswin_audio_ovbox, *prefswin_audio_olist; GtkWidget *prefswin_audio_ohbox, *prefswin_eplugins_vbox; GtkWidget *prefswin_eplugins_frame, *prefswin_eplugins_hbox; GtkWidget *prefswin_eplugins_hbbox, *prefswin_gplugins_hbbox; GtkWidget *prefswin_gplugins_frame, *prefswin_gplugins_vbox; GtkWidget *prefswin_gplugins_hbox, *prefswin_gplugins_list; GtkWidget *prefswin_vplugins_box, *prefswin_vplugins_vbox; GtkWidget *prefswin_vplugins_frame, *prefswin_vplugins_hbox; GtkWidget *prefswin_vplugins_hbbox;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -