📄 conf.c
字号:
GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(color_win)->colorsel), &ua_color); gtk_window_set_modal(GTK_WINDOW(color_win), TRUE); gtk_window_set_transient_for(GTK_WINDOW(color_win), GTK_WINDOW(conf_win)); g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_win)->ok_button), "clicked", G_CALLBACK(set_color), (gpointer)option); g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_win)->cancel_button), "clicked", G_CALLBACK(set_color), NULL); g_signal_connect(G_OBJECT(color_win), "destroy", G_CALLBACK(gtk_widget_destroy), (gpointer)color_win); gtk_widget_show_all(color_win); g_free(title);}void apply_font(GtkWidget *widget, gpointer option){ strcpy(lyrics_font, gtk_font_selection_dialog_get_font_name( GTK_FONT_SELECTION_DIALOG(font_win))); is_config_update = TRUE;}void set_font(GtkWidget *widget, gpointer option){ if((gchar*)option != NULL) { apply_font(NULL, NULL); } gtk_widget_destroy(font_win);}void sel_font(GtkWidget *widget, GdkEvent *event, gpointer option){ font_win = gtk_font_selection_dialog_new(_("Change the font")); gtk_window_set_modal(GTK_WINDOW(font_win), TRUE); gtk_window_set_transient_for(GTK_WINDOW(font_win), GTK_WINDOW(conf_win)); gtk_font_selection_set_font_name( GTK_FONT_SELECTION(GTK_FONT_SELECTION_DIALOG(font_win)->fontsel), lyrics_font); g_signal_connect(G_OBJECT(GTK_FONT_SELECTION_DIALOG(font_win)->ok_button), "clicked", G_CALLBACK(set_font), (gpointer)1); g_signal_connect(G_OBJECT(GTK_FONT_SELECTION_DIALOG(font_win)->apply_button), "clicked", G_CALLBACK(apply_font), NULL); g_signal_connect(G_OBJECT(GTK_FONT_SELECTION_DIALOG(font_win)->cancel_button), "clicked", G_CALLBACK(set_font), NULL); g_signal_connect(G_OBJECT(font_win), "destroy", G_CALLBACK(gtk_widget_destroy), font_win); gtk_widget_show_all(font_win);}/*void set_file(GtkWidget *widget, gpointer data) { const gchar *file; file = gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_win)); if(g_file_test(file, G_FILE_TEST_IS_DIR)) return; g_strlcpy(plugin_name, file, 255); is_config_update = TRUE; if(data != NULL && file != NULL) gtk_entry_set_text(GTK_ENTRY(data), (gchar*)locale2utf8(file)); gtk_widget_destroy(file_win);}void sel_file(GtkWidget *widget, gpointer data) { file_win = gtk_file_selection_new ("Please select a file."); gtk_window_set_modal(GTK_WINDOW(file_win), TRUE); gtk_window_set_transient_for(GTK_WINDOW(file_win), GTK_WINDOW(conf_win)); g_signal_connect (GTK_FILE_SELECTION (file_win)->ok_button, "clicked", G_CALLBACK (set_file), data); g_signal_connect_swapped (GTK_FILE_SELECTION (file_win)->cancel_button, "clicked", G_CALLBACK (gtk_widget_destroy), file_win); gtk_widget_show_all (file_win);} */void set_dir(GtkWidget *widget, gpointer data) { const gchar *file, *utf8; file = gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_win)); if(!g_file_test(file, G_FILE_TEST_IS_DIR)) return; g_strlcpy(lyrics_dir, file, 255); is_config_update = TRUE; if(data != NULL && file != NULL){ utf8 = locale2utf8(file); gtk_entry_set_text(GTK_ENTRY(data), utf8); g_free(utf8); } gtk_widget_destroy(file_win);}void sel_dir(GtkWidget *widget, gpointer data) { file_win = gtk_file_selection_new (_("Please select a dir.")); gtk_window_set_modal(GTK_WINDOW(file_win), TRUE); gtk_window_set_transient_for(GTK_WINDOW(file_win), GTK_WINDOW(conf_win)); g_signal_connect (GTK_FILE_SELECTION (file_win)->ok_button, "clicked", G_CALLBACK (set_dir), data); g_signal_connect_swapped (GTK_FILE_SELECTION (file_win)->cancel_button, "clicked", G_CALLBACK (gtk_widget_destroy), file_win); gtk_widget_show_all (file_win);} void selected_plugin(GtkComboBox *combo_box, gpointer data){ g_strlcpy(plugin_name, gtk_entry_get_text (GTK_ENTRY (GTK_BIN (combo_box)->child)), 255); is_config_update = TRUE;}GtkWidget* create_combo_box(void){ GtkWidget *combo_box; DIR *dir; struct dirent *dirents; combo_box = gtk_combo_box_entry_new_text(); gtk_entry_set_editable(GTK_ENTRY(GTK_BIN(combo_box)->child), FALSE); gtk_entry_set_text(GTK_ENTRY(GTK_BIN(combo_box)->child), plugin_name); g_signal_connect(G_OBJECT(combo_box), "changed", G_CALLBACK(selected_plugin), NULL); dir = opendir(PACKAGE_LIB_DIR); if(dir) { while(dirents = readdir(dir)) { if(strstr(dirents->d_name, ".so")) gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), dirents->d_name); } closedir(dir); } gtk_widget_show_all(combo_box); return combo_box;}void update_checkbox(GtkWidget *widget, gpointer data){ if(GTK_TOGGLE_BUTTON(widget)->active) *(gint *)data = 1; else *(gint *)data = 0; is_config_update = TRUE;}void set_opacity(GtkAdjustment *adj, gpointer data){ opacity = gtk_adjustment_get_value(adj); is_config_update = TRUE;}GtkWidget* interface(void){ GtkWidget *vbox; GtkWidget *hbox; GtkWidget *label; GtkWidget *entry; GtkWidget *checkbox; GtkObject *adj; GtkWidget *scale; vbox = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); hbox = gtk_hbox_new(FALSE, 5); label = gtk_label_new(_("Background Color:")); bg_entry = gtk_entry_new(); gtk_entry_set_editable(GTK_ENTRY(bg_entry), FALSE); gtk_widget_modify_base(bg_entry, GTK_STATE_NORMAL, &bg_color); gtk_widget_set_size_request(bg_entry, 50, -1); gtk_widget_set_events(bg_entry, GDK_BUTTON_PRESS_MASK); g_signal_connect(G_OBJECT(bg_entry), "button-press-event", G_CALLBACK(sel_color), (gpointer)"bg"); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(hbox), bg_entry, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); hbox = gtk_hbox_new(FALSE, 5); label = gtk_label_new(_("Activated Font Color:")); ac_entry = gtk_entry_new(); gtk_entry_set_editable(GTK_ENTRY(ac_entry), FALSE); gtk_widget_modify_base(ac_entry, GTK_STATE_NORMAL, &ac_color); gtk_widget_set_size_request(ac_entry, 50, -1); gtk_widget_set_events(ac_entry, GDK_BUTTON_PRESS_MASK); g_signal_connect(G_OBJECT(ac_entry), "button-press-event", G_CALLBACK(sel_color), (gpointer)"ac"); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(hbox), ac_entry, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); hbox = gtk_hbox_new(FALSE, 5); label = gtk_label_new(_("Unactivated Font Color:")); ua_entry = gtk_entry_new(); gtk_entry_set_editable(GTK_ENTRY(ua_entry), FALSE); gtk_widget_modify_base(ua_entry, GTK_STATE_NORMAL, &ua_color); gtk_widget_set_size_request(ua_entry, 50, -1); gtk_widget_set_events(ua_entry, GDK_BUTTON_PRESS_MASK); g_signal_connect(G_OBJECT(ua_entry), "button-press-event", G_CALLBACK(sel_color), (gpointer)"ua"); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(hbox), ua_entry, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); hbox = gtk_hbox_new(FALSE, 5); label = gtk_label_new(_("Main Font:")); entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(entry), "aA"); gtk_entry_set_editable(GTK_ENTRY(entry), FALSE); gtk_widget_set_size_request(entry, 50, -1); gtk_widget_set_events(entry, GDK_BUTTON_PRESS_MASK); g_signal_connect(G_OBJECT(entry), "button-press-event", G_CALLBACK(sel_font), NULL); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); hbox = gtk_hbox_new(FALSE, 5); label = gtk_label_new(_("Opacity:")); adj = gtk_adjustment_new(opacity, 0, 4294967295.0, 10, 100, 100); scale = gtk_hscale_new(GTK_ADJUSTMENT(adj)); gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE); g_signal_connect(G_OBJECT(adj), "value-changed", G_CALLBACK(set_opacity), NULL); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(hbox), scale, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); gtk_widget_show_all(vbox); return vbox;}GtkWidget* common(void){ GtkWidget *vbox; GtkWidget *hbox; GtkWidget *label; GtkWidget *button; GtkWidget *entry; GtkWidget *checkbox; GtkWidget *combo_box; gchar *utf8; vbox = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); label = gtk_label_new(_("Set plugin file(need restart):")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); combo_box = create_combo_box(); gtk_box_pack_start(GTK_BOX(vbox), label , TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), combo_box, FALSE, FALSE, 0); hbox = gtk_hbox_new(FALSE, 5); label = gtk_label_new(_("Set lyrics directory:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); entry = gtk_entry_new(); gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE); utf8 = locale2utf8(lyrics_dir); gtk_entry_set_text(GTK_ENTRY(entry), utf8); g_free(utf8); button = gtk_button_new(); gtk_container_add(GTK_CONTAINER(button), gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON)); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(sel_dir), entry); gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), label , TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); checkbox = gtk_check_button_new_with_label(_("Look for lyrics in mp3 directory")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), look_in_mp3dir_mode); g_signal_connect(G_OBJECT(checkbox), "toggled", G_CALLBACK(update_checkbox), (gpointer)&look_in_mp3dir_mode); gtk_box_pack_start(GTK_BOX(vbox), checkbox, FALSE, FALSE, 0); checkbox = gtk_check_button_new_with_label(_("hide widow if lyrics was't found")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox), hide_not_found); g_signal_connect(G_OBJECT(checkbox), "toggled", G_CALLBACK(update_checkbox), (gpointer)&hide_not_found); gtk_box_pack_start(GTK_BOX(vbox), checkbox, FALSE, FALSE, 0); gtk_widget_show_all(vbox); return vbox;}void save_and_quit(GtkWidget *widget, gpointer data){ update_config("xlyrics"); gtk_main_quit();}void config(GtkWidget *widget, gpointer layer){ GtkWidget *notebook; GtkWidget *tabs; GtkWidget *frame; conf_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_resizable(GTK_WINDOW(conf_win), FALSE); gtk_window_set_position(GTK_WINDOW(conf_win), GTK_WIN_POS_CENTER); if((gint)layer == -1) /*first run*/ g_signal_connect(G_OBJECT(conf_win), "delete_event", G_CALLBACK(save_and_quit), (gpointer)conf_win); else g_signal_connect(G_OBJECT(conf_win), "delete_event", G_CALLBACK(gtk_widget_destroy), (gpointer)conf_win); if(window) { gtk_window_set_modal(GTK_WINDOW(conf_win), TRUE); gtk_window_set_transient_for(GTK_WINDOW(conf_win), GTK_WINDOW(window)); } notebook = gtk_notebook_new(); gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_LEFT); gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), TRUE); tabs = gtk_label_new(_("Interface")); frame = gtk_frame_new(_("Interface")); gtk_widget_show(tabs); gtk_widget_show(frame); gtk_container_add(GTK_CONTAINER(frame), interface()); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, tabs); tabs = gtk_label_new(_("Common")); frame = gtk_frame_new(_("Common")); gtk_widget_show(tabs); gtk_widget_show(frame); gtk_container_add(GTK_CONTAINER(frame), common()); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, tabs); tabs = gtk_label_new(_("About")); frame = gtk_frame_new(_("About")); gtk_widget_show(tabs); gtk_widget_show(frame); gtk_container_add(GTK_CONTAINER(frame), about()); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, tabs); gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), (gint)layer); gtk_container_add(GTK_CONTAINER(conf_win), notebook); gtk_widget_show_all(conf_win);};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -