static GtkWidget* programsettings(JamWin *jw) { GtkWidget *group; GtkWidget *button, *vbox, *hbox; SettingsWidget *sw; JamView *jv = jam_win_get_cur_view(jw); group = groupedbox_new_with_text(_("Programs")); groupedbox_pack(GROUPEDBOX(group), sw_make("web_spawn"), FALSE); vbox = sw_make("music_command"); groupedbox_pack(GROUPEDBOX(group), vbox, FALSE); sw = sw_lookup("music_command"); g_signal_connect_swapped(G_OBJECT(sw->widget), "changed", G_CALLBACK(jam_view_settings_changed), jv); button = sw_make("music_mpris"); groupedbox_pack(GROUPEDBOX(group), button, FALSE); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(mpris_update_cb), jdbus); toggle_tie_disable(button, vbox); g_signal_connect_swapped(G_OBJECT(button), "toggled", G_CALLBACK(jam_view_settings_changed), jv); button = gtk_button_new_with_mnemonic(_("_Diagnose")); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(music_diagnose), NULL); hbox = labelled_box_new_expand(_("Diagnose problems detecting music:"), button, FALSE); groupedbox_pack(GROUPEDBOX(group), hbox, FALSE); return group; }
static void pollmultidlg_init(PollMultiDlg *pmdlg, GtkWindow *parent) { GtkWidget *mainbox, *vbox, *paned; GtkWidget *menu, *label; pmdlg->dlg = gtk_dialog_new_with_buttons(_("Multi Poll Question"), parent, GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); jam_win_set_size(GTK_WINDOW(pmdlg->dlg), 500, -1); mainbox = gtk_vbox_new(FALSE, 12); menu = gtk_menu_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtk_menu_item_new_with_mnemonic(_("Choose best answer (_radio buttons)"))); gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtk_menu_item_new_with_mnemonic(_("Choose best answer (_drop-down menu)"))); gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtk_menu_item_new_with_mnemonic(_("Select _all that apply (checkboxes)"))); pmdlg->typemenu = gtk_option_menu_new(); gtk_option_menu_set_menu(GTK_OPTION_MENU(pmdlg->typemenu), menu); gtk_box_pack_start(GTK_BOX(mainbox), labelled_box_new_expand(_("Choice _Type:"), pmdlg->typemenu, TRUE), FALSE, FALSE, 0); paned = gtk_hpaned_new(); gtk_box_pack_start(GTK_BOX(mainbox), paned, TRUE, TRUE, 0); vbox = gtk_vbox_new(FALSE, 6); label = gtk_label_new_with_mnemonic(_("_Question:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); pmdlg->question = gtk_text_view_new(); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(pmdlg->question), GTK_WRAP_WORD); gtk_label_set_mnemonic_widget(GTK_LABEL(label), pmdlg->question); gtk_box_pack_start(GTK_BOX(vbox), scroll_wrap(pmdlg->question), TRUE, TRUE, 0); gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, FALSE); vbox = gtk_vbox_new(FALSE, 6); pollmulti_make_list(pmdlg); label = gtk_label_new_with_mnemonic(_("O_ptions:")); gtk_label_set_mnemonic_widget(GTK_LABEL(label), pmdlg->answers.view); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), pmdlg->answers.box, TRUE, TRUE, 0); gtk_paned_pack2(GTK_PANED(paned), vbox, TRUE, FALSE); jam_dialog_set_contents(GTK_DIALOG(pmdlg->dlg), mainbox); }
static GtkWidget* sw_make_sg(char *name, GtkSizeGroup *sg) { SettingsWidget *sw = sw_lookup(name); switch (sw->type) { case SW_TOGGLE: sw->widget = gtk_check_button_new_with_mnemonic(_(sw->caption)); toggle_tie(sw); return sw->widget; case SW_RADIO: sw->widget = gtk_radio_button_new_with_mnemonic(NULL, _(sw->caption)); radio_tie(sw); return sw->widget; case SW_TEXT: sw->widget = gtk_entry_new(); text_tie(sw); return labelled_box_new_sg(_(sw->caption), sw->widget, sg); case SW_INTEGER: sw->widget = gtk_entry_new(); gtk_entry_set_width_chars(GTK_ENTRY(sw->widget), 4); integer_tie(sw); return labelled_box_new(_(sw->caption), sw->widget); case SW_SPIN_INTEGER: { gdouble default_value = *(gint*)sw->conf; GtkObject *adj = gtk_adjustment_new(default_value, /* client code should override these */ G_MINDOUBLE, G_MAXDOUBLE, 1.0, 1.0, 0); sw->widget = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1, 1); } spin_integer_tie(sw); return labelled_box_new_expand(_(sw->caption), sw->widget, FALSE); case SW_COMBO: sw->widget = gtk_combo_new(); combo_tie(sw); return labelled_box_new(_(sw->caption), sw->widget); case SW_COMMAND: return command_make(sw); case SW_CUSTOM: if (sw->caption && sw->widget) return labelled_box_new(_(sw->caption), sw->widget); break; default: break; } return NULL; }
static GtkWidget* uisettings(JamWin *jw) { SettingsWidget *sw; GtkWidget *vbox, *hbox, *button; char *fontname = NULL; GtkWidget *post, *entry, *misc; vbox = gtk_vbox_new(FALSE, 18); gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); post = groupedbox_new_with_text(_("Posting")); gtk_box_pack_start(GTK_BOX(vbox), post, FALSE, FALSE, 0); groupedbox_pack(GROUPEDBOX(post), sw_make("ui_revertusejournal"), FALSE); sw = sw_lookup("ui_defaultsecurity"); sw->widget = secmgr_new(FALSE); secmgr_security_set(SECMGR(sw->widget), (LJSecurity*)sw->conf); g_signal_connect(G_OBJECT(sw->widget), "changed", G_CALLBACK(sec_changed_cb), sw); groupedbox_pack(GROUPEDBOX(post), sw_make("ui_defaultsecurity"), FALSE); #ifdef USE_DOCK groupedbox_pack(GROUPEDBOX(post), sw_make("ui_close_when_send"), FALSE); #endif /* USE_DOCK */ entry = groupedbox_new_with_text(_("Entries")); gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); groupedbox_pack(GROUPEDBOX(entry), sw_make("ui_autosave"), FALSE); groupedbox_pack(GROUPEDBOX(entry), sw_make("ui_keepsaveddrafts"), FALSE); #ifdef HAVE_GTKSPELL { GtkWidget *toggle = sw_make("ui_spellcheck"); GtkWidget *label, *box; hbox = sw_make("ui_spell_language"); label = gtk_label_new(" "); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); gtk_box_reorder_child(GTK_BOX(hbox), label, 0); sw = sw_lookup("ui_spell_language"); gtk_entry_set_width_chars(GTK_ENTRY(sw->widget), 5); box = gtk_vbox_new(FALSE, 3); gtk_box_pack_start(GTK_BOX(box), toggle, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); groupedbox_pack(GROUPEDBOX(entry), box, FALSE); toggle_tie_enable(toggle, hbox); } #endif groupedbox_pack(GROUPEDBOX(entry), sw_make("ui_showloginhistory"), TRUE); groupedbox_pack(GROUPEDBOX(entry), sw_make("ui_smartquotes"), FALSE); sw = sw_lookup("ui_font"); if (conf.uifont == NULL) { fontname = pango_font_description_to_string( pango_context_get_font_description( gtk_widget_get_pango_context(jw->view))); sw->widget = gtk_label_new(fontname ? fontname : _("[gtk default]")); if (fontname) jam_widget_set_font(sw->widget, fontname); g_free(fontname); } else { sw->widget = gtk_label_new(conf.uifont); jam_widget_set_font(sw->widget, conf.uifont); } button = gtk_button_new_from_stock(GTK_STOCK_SELECT_FONT); sw->data = jw->view; hbox = labelled_box_new_expand(_(sw->caption), button, FALSE); gtk_box_pack_start(GTK_BOX(hbox), sw->widget, TRUE, TRUE, 0); gtk_box_reorder_child(GTK_BOX(hbox), sw->widget, 1); groupedbox_pack(GROUPEDBOX(entry), hbox, FALSE); g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(run_fontsel_settings_dlg), sw); misc = groupedbox_new_with_text(_("Behavior")); gtk_box_pack_start(GTK_BOX(vbox), misc, FALSE, FALSE, 0); groupedbox_pack(GROUPEDBOX(misc), sw_make("ui_allowmultipleinstances"), FALSE); #ifdef USE_DOCK button = sw_make("ui_docklet"); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(docklet_change_cb), jw); groupedbox_pack(GROUPEDBOX(misc), button, FALSE); groupedbox_pack(GROUPEDBOX(misc), sw_make("ui_start_in_dock"), FALSE); #endif /* USE_DOCK */ return vbox; }