📄 prefs_dialog_plugins_prefs.c
字号:
} return vbox;}static intfile_dialog_hide(GtkWidget * filew, GtkWidget * nul){ gtk_widget_hide(filew); gtk_widget_destroy(filew); return 0;}static intfile_selected(GtkWidget * nul, GtkWidget * filew){ struct arglist *c; GtkWidget *entry; char *fname = (char *)gtk_file_selection_get_filename(GTK_FILE_SELECTION(filew)); gtk_widget_hide(filew); c = gtk_object_get_data(GTK_OBJECT(filew), "data"); entry = arg_get_value(c, "ENTRY"); gtk_entry_set_text(GTK_ENTRY(entry), fname); return 0;}static intselect_file(GtkWidget * b, struct arglist *ctrls){ GtkWidget *filew = gtk_file_selection_new(_("Select file")); gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(filew)->ok_button), "clicked", (GtkSignalFunc) file_selected, filew); gtk_signal_connect_object(GTK_OBJECT(GTK_FILE_SELECTION(filew)-> cancel_button), "clicked", GTK_SIGNAL_FUNC(file_dialog_hide), GTK_OBJECT(filew)); gtk_object_set_data(GTK_OBJECT(filew), "data", ctrls); gtk_widget_show(filew); return 0;}static voidpprefs_add_entry(pprefs, pref, value, vbox) struct arglist *pprefs; struct arglist *pref; char *value; GtkWidget *vbox;{ GtkWidget *entry, *text, *box; char *name = pref->name; char *fullname = arg_get_value(pref->value, "fullname"); if(pprefs) { int type; if((type = arg_get_type(pprefs, fullname)) >= 0) { value = arg_get_value(pprefs, fullname); if(type == ARG_INT) { if(value) value = strdup("yes"); else value = strdup("no"); } } } box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 5); gtk_widget_show(box); text = gtk_label_new(name); gtk_box_pack_start(GTK_BOX(box), text, TRUE, TRUE, 5); gtk_widget_show(text); entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(entry), value); gtk_box_pack_end(GTK_BOX(box), entry, TRUE, TRUE, 5); gtk_widget_show(entry); arg_add_value(pref->value, "ENTRY", ARG_PTR, -1, entry);}static voidpprefs_add_password(pprefs, pref, value, vbox) struct arglist *pprefs; struct arglist *pref; char *value; GtkWidget *vbox;{ GtkWidget *entry, *text, *box; char *name = pref->name; char *fullname = arg_get_value(pref->value, "fullname"); if(pprefs) { int type; if((type = arg_get_type(pprefs, fullname)) >= 0) { value = arg_get_value(pprefs, fullname); if(type == ARG_INT) { if(value) value = strdup("yes"); else value = strdup("no"); } } } box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 5); gtk_widget_show(box); text = gtk_label_new(name); gtk_box_pack_start(GTK_BOX(box), text, TRUE, TRUE, 5); gtk_widget_show(text); entry = gtk_entry_new(); gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); gtk_entry_set_text(GTK_ENTRY(entry), value); gtk_box_pack_end(GTK_BOX(box), entry, TRUE, TRUE, 5); gtk_widget_show(entry); arg_add_value(pref->value, "ENTRY", ARG_PTR, -1, entry);}static voidpprefs_add_file(pprefs, pref, value, vbox) struct arglist *pprefs; struct arglist *pref; char *value; GtkWidget *vbox;{ GtkWidget *entry, *text, *box; GtkWidget *hbox, *button; char *name = pref->name; char *fullname = arg_get_value(pref->value, "fullname"); if(pprefs) { int type; if((type = arg_get_type(pprefs, fullname)) >= 0) { value = arg_get_value(pprefs, fullname); if(type == ARG_INT) { if(value) value = strdup("yes"); else value = strdup("no"); } } } box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 5); gtk_widget_show(box); text = gtk_label_new(name); gtk_box_pack_start(GTK_BOX(box), text, TRUE, TRUE, 5); gtk_widget_show(text); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_end(GTK_BOX(box), hbox, TRUE, TRUE, 5); gtk_widget_show(hbox); entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(entry), value); gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 5); gtk_widget_show(entry); arg_add_value(pref->value, "ENTRY", ARG_PTR, -1, entry); button = gtk_button_new_with_label(_("Select...")); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 5); gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc) select_file, pref->value); gtk_widget_show(button);}static voidpprefs_add_radio(pprefs, pref, value, vbox) struct arglist *pprefs; struct arglist *pref; char *value; GtkWidget *vbox;{ GtkWidget *orig; GtkWidget *button, *first_button; GtkWidget *label; char *t; GSList *list = NULL; char *fullname = arg_get_value(pref->value, "fullname"); char *def = NULL; if(pprefs) { int type; if((type = arg_get_type(pprefs, fullname)) >= 0) { def = arg_get_value(pprefs, fullname); if(type == ARG_INT) { if(def) def = strdup("yes"); else def = strdup("no"); } } } label = gtk_label_new(pref->name); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5); gtk_widget_show(label); t = strchr(value, ';'); if(t) t[0] = '\0'; first_button = orig = gtk_radio_button_new_with_label(NULL, value); gtk_box_pack_start(GTK_BOX(vbox), orig, FALSE, FALSE, 5); gtk_object_set_data(GTK_OBJECT(orig), "name", value); gtk_widget_show(orig); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(orig), TRUE); value = t + sizeof(char); if(t) while(value) { if((t = strchr(value, ';'))) t[0] = '\0'; button = gtk_radio_button_new_with_label(gtk_radio_button_group (GTK_RADIO_BUTTON(orig)), value); gtk_object_set_data(GTK_OBJECT(button), "name", value); if(def && !strcmp(def, value)) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 5); gtk_widget_show(button); if(t) value = t + sizeof(char); else value = NULL; } list = gtk_radio_button_group(GTK_RADIO_BUTTON(orig)); arg_add_value(pref->value, "RADIOBUTTONS", ARG_PTR, -1, list);}static voidpprefs_add_checkbox(pprefs, pref, value, vbox) struct arglist *pprefs; struct arglist *pref; char *value; GtkWidget *vbox;{ GtkWidget *box; GtkWidget *button; char *name = pref->name; char *def = NULL; char *fullname = arg_get_value(pref->value, "fullname"); if(pprefs) { int type; if((type = arg_get_type(pprefs, fullname)) >= 0) { def = arg_get_value(pprefs, fullname); if(type == ARG_INT) { if(def) def = strdup("yes"); else def = strdup("no"); } } } box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 5); gtk_widget_show(box); button = gtk_check_button_new_with_label(estrdup(name)); gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 5); gtk_widget_show(button); if(def) { if(!strcmp(def, "yes")) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), TRUE); else gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), FALSE); } else gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), !strcmp(value, "yes")); arg_add_value(pref->value, "CHECKBOX", ARG_PTR, -1, button);}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -