void log_show_debug_messages_dialog(void) { GtkWidget *dialog, *textview, *vbox, *swin; dialog = gtk_dialog_new_with_buttons(_("Debug Messages"), GTK_WINDOW(main_widgets.window), GTK_DIALOG_DESTROY_WITH_PARENT, _("Cl_ear"), DIALOG_RESPONSE_CLEAR, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog)); gtk_box_set_spacing(GTK_BOX(vbox), 6); gtk_widget_set_name(dialog, "GeanyDialog"); gtk_window_set_default_size(GTK_WINDOW(dialog), 550, 300); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE); textview = gtk_text_view_new(); dialog_textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); g_object_set_data(G_OBJECT(dialog_textbuffer), "textview", textview); gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), FALSE); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(textview), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview), GTK_WRAP_WORD_CHAR); swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(swin), textview); gtk_box_pack_start(GTK_BOX(vbox), swin, TRUE, TRUE, 0); g_signal_connect(dialog, "response", G_CALLBACK(on_dialog_response), textview); gtk_widget_show_all(dialog); update_dialog(); /* set text after showing the window, to not scroll an unrealized textview */ }
/* multiple plugin configure dialog * current_plugin can be NULL */ static void configure_plugins(Plugin *current_plugin) { GtkWidget *dialog, *vbox, *nb; GList *node; gint cur_page = -1; dialog = gtk_dialog_new_with_buttons(_("Configure Plugins"), GTK_WINDOW(main_widgets.window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_APPLY, GTK_RESPONSE_APPLY, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_widget_set_name(dialog, "GeanyDialog"); vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog)); nb = gtk_notebook_new(); gtk_notebook_set_scrollable(GTK_NOTEBOOK(nb), TRUE); gtk_container_add(GTK_CONTAINER(vbox), nb); foreach_list(node, active_plugin_list) { Plugin *p = node->data; GtkWidget *page = create_pref_page(p, dialog); if (page) { GtkWidget *label = gtk_label_new(p->info.name); gint n = gtk_notebook_append_page(GTK_NOTEBOOK(nb), page, label); if (p == current_plugin) cur_page = n; } }
/* --------------------------------------------------------------------- * Create the dialog, return the entry * --------------------------------------------------------------------- */ static GtkWidget* create_dialog(GtkWidget **dialog, GtkTreeModel *completion_model) { GtkWidget *entry; GtkWidget *label; GtkWidget *vbox; GtkEntryCompletion *completion; *dialog = gtk_dialog_new_with_buttons("Go to File...", GTK_WINDOW(geany->main_widgets->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_set_default_response(GTK_DIALOG(*dialog), GTK_RESPONSE_ACCEPT); gtk_widget_set_name(*dialog, "GotoFile"); vbox = ui_dialog_vbox_new(GTK_DIALOG(*dialog)); label = gtk_label_new(_("Enter the file you want to open:")); gtk_container_add(GTK_CONTAINER(vbox), label); /* Entry definition */ entry = gtk_entry_new(); gtk_container_add(GTK_CONTAINER(vbox), entry); gtk_entry_set_text(GTK_ENTRY(entry), ""); gtk_entry_set_max_length(GTK_ENTRY(entry), MAX_FILENAME_LENGTH); gtk_entry_set_width_chars(GTK_ENTRY(entry), 40); gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); /* 'enter' key */ /* Completion definition */ completion = gtk_entry_completion_new(); gtk_entry_set_completion(GTK_ENTRY(entry), completion); gtk_entry_completion_set_model (completion, completion_model); /* Completion options */ gtk_entry_completion_set_inline_completion(completion, 1); gtk_entry_completion_set_text_column (completion, 0); /* Signals */ g_signal_connect_after(GTK_ENTRY(entry), "changed", G_CALLBACK(directory_check), completion); gtk_widget_show_all(*dialog); return entry; }
static void on_insert_numbers_activate(G_GNUC_UNUSED GtkMenuItem *menuitem, G_GNUC_UNUSED gpointer gdata) { InsertNumbersDialog d; GtkWidget *vbox, *label, *upper, *space, *button; GtkGrid *grid; GtkComboBoxText *combo; const char *case_tip = _("For base 11 and above"); gchar *base_text; gint result; d.dialog = gtk_dialog_new_with_buttons(_("Insert Numbers"), GTK_WINDOW(geany->main_widgets->window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); vbox = ui_dialog_vbox_new(GTK_DIALOG(d.dialog)); gtk_box_set_spacing(GTK_BOX(vbox), 9); #if GTK_CHECK_VERSION(3, 0, 0) grid = GTK_GRID(gtk_grid_new()); #else grid = GTK_TABLE(gtk_table_new(3, 6, FALSE)); #endif gtk_grid_set_row_spacing(grid, 6); gtk_grid_set_column_spacing(grid, 6); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(grid), TRUE, TRUE, 0); label = gtk_label_new_with_mnemonic(_("_Start:")); gtk_grid_attach(grid, label, 0, 0, 1, 1); d.start = gtk_spin_button_new_with_range(RANGE_MIN, RANGE_MAX, 1); set_entry(d.start, RANGE_LEN, label, RANGE_TOOLTIP); gtk_grid_attach(grid, d.start, 1, 0, 2, 1); label = gtk_label_new_with_mnemonic(_("S_tep:")); gtk_grid_attach(grid, label, 3, 0, 1, 1); d.step = gtk_spin_button_new_with_range(RANGE_MIN, RANGE_MAX, 1); set_entry(d.step, RANGE_LEN, label, RANGE_TOOLTIP); gtk_grid_attach(grid, d.step, 4, 0, 2, 1); label = gtk_label_new_with_mnemonic(_("_Base:")); gtk_grid_attach(grid, label, 0, 1, 1, 1), combo = GTK_COMBO_BOX_TEXT(gtk_combo_box_text_new_with_entry()); d.base = gtk_bin_get_child(GTK_BIN(combo)); set_entry(d.base, 2, label, "2..36"); g_signal_connect(d.base, "insert-text", G_CALLBACK(on_base_insert_text), NULL); gtk_combo_box_text_append_text(combo, "2"); gtk_combo_box_text_append_text(combo, "8"); gtk_combo_box_text_append_text(combo, "10"); gtk_combo_box_text_append_text(combo, "16"); #if GTK_CHECK_VERSION(3, 0, 0) gtk_grid_attach(grid, GTK_WIDGET(combo), 1, 1, 2, 1); gtk_widget_set_hexpand(GTK_WIDGET(combo), TRUE); #else gtk_table_attach(grid, GTK_WIDGET(combo), 1, 3, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); #endif label = gtk_label_new(_("Letters:")); gtk_widget_set_tooltip_text(label, case_tip); gtk_grid_attach(grid, label, 3, 1, 1, 1); upper = gtk_radio_button_new_with_mnemonic(NULL, _("_Upper")); gtk_widget_set_tooltip_text(upper, case_tip); gtk_grid_attach(grid, upper, 4, 1, 1, 1); d.lower = gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(upper)); gtk_widget_set_tooltip_text(label, case_tip); label = gtk_label_new_with_mnemonic(_("_Lower")); gtk_widget_set_tooltip_text(label, case_tip); gtk_container_add(GTK_CONTAINER(d.lower), label); gtk_grid_attach(grid, d.lower, 5, 1, 1, 1); d.prefix = gtk_check_button_new_with_mnemonic(_("Base _prefix")); gtk_widget_set_tooltip_text(d.prefix, _("0 for octal, 0x for hex, + for positive decimal")); gtk_grid_attach(grid, d.prefix, 1, 2, 2, 1); label = gtk_label_new(_("Padding:")); gtk_grid_attach(grid, label, 3, 2, 1, 1); space = gtk_radio_button_new_with_mnemonic(NULL, _("Sp_ace")); gtk_grid_attach(grid, space, 4, 2, 1, 1); d.zero = gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(space)); label = gtk_label_new_with_mnemonic(_("_Zero")); gtk_container_add(GTK_CONTAINER(d.zero), label); gtk_grid_attach(grid, d.zero, 5, 2, 1, 1); button = gtk_button_new_from_stock(GTK_STOCK_OK); g_signal_connect(button, "clicked", G_CALLBACK(on_insert_numbers_ok_clicked), &d); gtk_box_pack_end(GTK_BOX(gtk_dialog_get_action_area(GTK_DIALOG(d.dialog))), button, TRUE, TRUE, 0); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button, TRUE); #else GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); #endif gtk_widget_grab_default(button); gtk_spin_button_set_value(GTK_SPIN_BUTTON(d.start), start_value); gtk_spin_button_set_value(GTK_SPIN_BUTTON(d.step), step_value); base_text = g_strdup_printf("%d", base_value); gtk_entry_set_text(GTK_ENTRY(d.base), base_text); g_free(base_text); gtk_button_clicked(GTK_BUTTON(lower_case ? d.lower : upper)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(d.prefix), base_prefix); gtk_button_clicked(GTK_BUTTON(pad_zeros ? d.zero : space)); gtk_widget_show_all(d.dialog); result = gtk_dialog_run(GTK_DIALOG(d.dialog)); if (result == GTK_RESPONSE_ACCEPT) { if (can_insert_numbers()) { if (end_line - start_line < 1000) { /* quick version */ gtk_widget_hide(d.dialog); insert_numbers(NULL); } else { gboolean cancel = FALSE; gtk_widget_set_sensitive(GTK_WIDGET(grid), FALSE); gtk_widget_set_sensitive(button, FALSE); update_display(); g_signal_connect(d.dialog, "response", G_CALLBACK(on_insert_numbers_response), &cancel); insert_numbers(&cancel); } } else plugin_beep(); /* reloaded or something */ } gtk_widget_destroy(d.dialog); }
/* TODO: this should be ported to Glade like the project preferences dialog, * then we can get rid of the PropertyDialogElements struct altogether as * widgets pointers can be accessed through ui_lookup_widget(). */ void project_new(void) { GtkWidget *vbox; GtkWidget *table; GtkWidget *image; GtkWidget *button; GtkWidget *bbox; GtkWidget *label; PropertyDialogElements *e; if (! project_ask_close()) return; g_return_if_fail(app->project == NULL); e = g_new0(PropertyDialogElements, 1); e->dialog = gtk_dialog_new_with_buttons(_("New Project"), GTK_WINDOW(main_widgets.window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); gtk_widget_set_name(e->dialog, "GeanyDialogProject"); bbox = gtk_hbox_new(FALSE, 0); button = gtk_button_new(); image = gtk_image_new_from_stock(GTK_STOCK_NEW, GTK_ICON_SIZE_BUTTON); label = gtk_label_new_with_mnemonic(_("C_reate")); gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 3); gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 3); gtk_container_add(GTK_CONTAINER(button), bbox); gtk_dialog_add_action_widget(GTK_DIALOG(e->dialog), button, GTK_RESPONSE_OK); vbox = ui_dialog_vbox_new(GTK_DIALOG(e->dialog)); entries_modified = FALSE; table = gtk_table_new(3, 2, FALSE); gtk_table_set_row_spacings(GTK_TABLE(table), 5); gtk_table_set_col_spacings(GTK_TABLE(table), 10); label = gtk_label_new(_("Name:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0); e->name = gtk_entry_new(); ui_entry_add_clear_icon(GTK_ENTRY(e->name)); gtk_entry_set_max_length(GTK_ENTRY(e->name), MAX_NAME_LEN); ui_table_add_row(GTK_TABLE(table), 0, label, e->name, NULL); label = gtk_label_new(_("Filename:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0); e->file_name = gtk_entry_new(); ui_entry_add_clear_icon(GTK_ENTRY(e->file_name)); gtk_entry_set_width_chars(GTK_ENTRY(e->file_name), 30); button = gtk_button_new(); g_signal_connect(button, "clicked", G_CALLBACK(on_file_save_button_clicked), e); image = gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON); gtk_container_add(GTK_CONTAINER(button), image); bbox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start_defaults(GTK_BOX(bbox), e->file_name); gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); ui_table_add_row(GTK_TABLE(table), 1, label, bbox, NULL); label = gtk_label_new(_("Base path:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0); e->base_path = gtk_entry_new(); ui_entry_add_clear_icon(GTK_ENTRY(e->base_path)); gtk_widget_set_tooltip_text(e->base_path, _("Base directory of all files that make up the project. " "This can be a new path, or an existing directory tree. " "You can use paths relative to the project filename.")); bbox = ui_path_box_new(_("Choose Project Base Path"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, GTK_ENTRY(e->base_path)); ui_table_add_row(GTK_TABLE(table), 2, label, bbox, NULL); gtk_container_add(GTK_CONTAINER(vbox), table); /* signals */ g_signal_connect(e->name, "changed", G_CALLBACK(on_name_entry_changed), e); /* run the callback manually to initialise the base_path and file_name fields */ on_name_entry_changed(GTK_EDITABLE(e->name), e); g_signal_connect(e->file_name, "changed", G_CALLBACK(on_entries_changed), e); g_signal_connect(e->base_path, "changed", G_CALLBACK(on_entries_changed), e); gtk_widget_show_all(e->dialog); while (gtk_dialog_run(GTK_DIALOG(e->dialog)) == GTK_RESPONSE_OK) { if (update_config(e, TRUE)) { if (!write_config(TRUE)) SHOW_ERR(_("Project file could not be written")); else { ui_set_statusbar(TRUE, _("Project \"%s\" created."), app->project->name); ui_add_recent_project_file(app->project->file_name); break; } } } gtk_widget_destroy(e->dialog); g_free(e); }
void glatex_insert_environment_dialog(G_GNUC_UNUSED GtkMenuItem *menuitem, G_GNUC_UNUSED gpointer gdata) { GtkWidget *dialog = NULL; GtkWidget *vbox = NULL; GtkWidget *label_env = NULL; GtkWidget *textbox_env = NULL; GtkWidget *table = NULL; GtkWidget *tmp_entry = NULL; GtkTreeModel *model = NULL; gint i, max; dialog = gtk_dialog_new_with_buttons(_("Insert Environment"), GTK_WINDOW(geany->main_widgets->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); vbox = ui_dialog_vbox_new(GTK_DIALOG(dialog)); gtk_widget_set_name(dialog, "GeanyDialog"); gtk_box_set_spacing(GTK_BOX(vbox), 10); table = gtk_table_new(1, 2, FALSE); gtk_table_set_col_spacings(GTK_TABLE(table), 6); gtk_table_set_row_spacings(GTK_TABLE(table), 6); label_env = gtk_label_new(_("Environment:")); textbox_env = gtk_combo_box_entry_new_text(); max = glatex_count_menu_entries(glatex_environment_array, -1); for (i = 0; i < max; i++) { gtk_combo_box_append_text(GTK_COMBO_BOX(textbox_env), glatex_environment_array[i].label); } model = gtk_combo_box_get_model(GTK_COMBO_BOX(textbox_env)); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), 0, GTK_SORT_ASCENDING); gtk_misc_set_alignment(GTK_MISC(label_env), 0, 0.5); gtk_table_attach_defaults(GTK_TABLE(table), label_env, 0, 1, 0, 1); gtk_table_attach_defaults(GTK_TABLE(table), textbox_env, 1, 2, 0, 1); gtk_container_add(GTK_CONTAINER(vbox), table); tmp_entry = gtk_bin_get_child(GTK_BIN(textbox_env)); g_signal_connect(G_OBJECT(tmp_entry), "activate", G_CALLBACK(glatex_enter_key_pressed_in_entry), dialog); gtk_widget_show_all(vbox); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { gchar *env_string = NULL; env_string = g_strdup(gtk_combo_box_get_active_text( GTK_COMBO_BOX(textbox_env))); if (env_string != NULL) { glatex_insert_environment(env_string, -1); g_free(env_string); } } gtk_widget_destroy(dialog); }
static void create_dialog_find_tag(void) { GtkWidget *label, *vbox, *ebox, *entry; GtkSizeGroup *size_group; if (s_ft_dialog.widget) return; s_ft_dialog.widget = gtk_dialog_new_with_buttons( _("Find Tag"), GTK_WINDOW(geany->main_widgets->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); gtk_dialog_add_button(GTK_DIALOG(s_ft_dialog.widget), "gtk-find", GTK_RESPONSE_ACCEPT); gtk_dialog_set_default_response(GTK_DIALOG(s_ft_dialog.widget), GTK_RESPONSE_ACCEPT); vbox = ui_dialog_vbox_new(GTK_DIALOG(s_ft_dialog.widget)); gtk_box_set_spacing(GTK_BOX(vbox), 9); size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); label = gtk_label_new(_("Search for:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_size_group_add_widget(size_group, label); s_ft_dialog.combo = gtk_combo_box_text_new_with_entry(); entry = gtk_bin_get_child(GTK_BIN(s_ft_dialog.combo)); ui_entry_add_clear_icon(GTK_ENTRY(entry)); gtk_entry_set_width_chars(GTK_ENTRY(entry), 40); gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); ui_entry_add_clear_icon(GTK_ENTRY(entry)); gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); ebox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(ebox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(ebox), s_ft_dialog.combo, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), ebox, TRUE, FALSE, 0); label = gtk_label_new(_("Match type:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_size_group_add_widget(size_group, label); s_ft_dialog.combo_match = gtk_combo_box_text_new(); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(s_ft_dialog.combo_match), "exact"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(s_ft_dialog.combo_match), "prefix"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(s_ft_dialog.combo_match), "pattern"); gtk_combo_box_set_active(GTK_COMBO_BOX(s_ft_dialog.combo_match), 1); gtk_label_set_mnemonic_widget(GTK_LABEL(label), s_ft_dialog.combo_match); ebox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(ebox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(ebox), s_ft_dialog.combo_match, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), ebox, TRUE, FALSE, 0); label = gtk_label_new(_("Search inside:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_size_group_add_widget(size_group, label); s_ft_dialog.dir_label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(s_ft_dialog.dir_label), 0, 0.5); ebox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(ebox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(ebox), s_ft_dialog.dir_label, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), ebox, TRUE, FALSE, 0); s_ft_dialog.case_sensitive = gtk_check_button_new_with_mnemonic(_("C_ase sensitive")); gtk_button_set_focus_on_click(GTK_BUTTON(s_ft_dialog.case_sensitive), FALSE); s_ft_dialog.declaration = gtk_check_button_new_with_mnemonic(_("_Declaration")); gtk_button_set_focus_on_click(GTK_BUTTON(s_ft_dialog.declaration), FALSE); g_object_unref(G_OBJECT(size_group)); /* auto destroy the size group */ gtk_container_add(GTK_CONTAINER(vbox), s_ft_dialog.case_sensitive); gtk_container_add(GTK_CONTAINER(vbox), s_ft_dialog.declaration); gtk_widget_show_all(vbox); }
static gint show_dialog_find_file(gchar *path, gchar **pattern, gboolean *case_sensitive, gboolean *full_path) { gint res; GtkWidget *entry; gchar *selection; GtkSizeGroup *size_group; if (!s_fif_dialog.widget) { GtkWidget *label, *vbox, *ebox; s_fif_dialog.widget = gtk_dialog_new_with_buttons( _("Find File"), GTK_WINDOW(geany->main_widgets->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); gtk_dialog_add_button(GTK_DIALOG(s_fif_dialog.widget), "gtk-find", GTK_RESPONSE_ACCEPT); gtk_dialog_set_default_response(GTK_DIALOG(s_fif_dialog.widget), GTK_RESPONSE_ACCEPT); vbox = ui_dialog_vbox_new(GTK_DIALOG(s_fif_dialog.widget)); gtk_box_set_spacing(GTK_BOX(vbox), 6); size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); label = gtk_label_new(_("Search for:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_size_group_add_widget(size_group, label); s_fif_dialog.combo = gtk_combo_box_text_new_with_entry(); entry = gtk_bin_get_child(GTK_BIN(s_fif_dialog.combo)); gtk_entry_set_width_chars(GTK_ENTRY(entry), 40); gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); ui_entry_add_clear_icon(GTK_ENTRY(entry)); gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); ebox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(ebox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(ebox), s_fif_dialog.combo, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), ebox, TRUE, FALSE, 0); label = gtk_label_new(_("Search inside:")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_size_group_add_widget(size_group, label); s_fif_dialog.dir_label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(s_fif_dialog.dir_label), 0, 0.5); ebox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(ebox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(ebox), s_fif_dialog.dir_label, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), ebox, TRUE, FALSE, 0); s_fif_dialog.case_sensitive = gtk_check_button_new_with_mnemonic(_("C_ase sensitive")); gtk_button_set_focus_on_click(GTK_BUTTON(s_fif_dialog.case_sensitive), FALSE); s_fif_dialog.full_path = gtk_check_button_new_with_mnemonic(_("Search in full path")); gtk_button_set_focus_on_click(GTK_BUTTON(s_fif_dialog.full_path), FALSE); gtk_box_pack_start(GTK_BOX(vbox), s_fif_dialog.case_sensitive, TRUE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), s_fif_dialog.full_path, TRUE, FALSE, 0); gtk_widget_show_all(vbox); } if (path) gtk_label_set_text(GTK_LABEL(s_fif_dialog.dir_label), path); else gtk_label_set_text(GTK_LABEL(s_fif_dialog.dir_label), _("project or external directory")); entry = gtk_bin_get_child(GTK_BIN(s_fif_dialog.combo)); selection = get_selection(); if (selection) gtk_entry_set_text(GTK_ENTRY(entry), selection); g_free(selection); gtk_widget_grab_focus(entry); res = gtk_dialog_run(GTK_DIALOG(s_fif_dialog.widget)); if (res == GTK_RESPONSE_ACCEPT) { const gchar *str; str = gtk_entry_get_text(GTK_ENTRY(entry)); *pattern = g_strconcat("*", str, "*", NULL); *case_sensitive = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(s_fif_dialog.case_sensitive)); *full_path = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(s_fif_dialog.full_path)); ui_combo_box_add_to_history(GTK_COMBO_BOX_TEXT(s_fif_dialog.combo), str, 0); } gtk_widget_hide(s_fif_dialog.widget); return res; }
void ao_enclose_words_config (GtkButton *button, GtkWidget *config_window) { GtkWidget *dialog; GtkWidget *vbox; GtkTreeIter chars_iter; GtkCellRenderer *renderer; GtkTreeViewColumn *label_column, *char_one_column, *char_two_column; GtkTreeView *chars_tree_view; gchar insert_chars [2] = {0, 0}; gint i; dialog = gtk_dialog_new_with_buttons(_("Plugins"), GTK_WINDOW(config_window), GTK_DIALOG_DESTROY_WITH_PARENT, "Accept", GTK_RESPONSE_ACCEPT, "Cancel", GTK_RESPONSE_CANCEL, "OK", GTK_RESPONSE_OK, NULL); vbox = ui_dialog_vbox_new (GTK_DIALOG (dialog)); chars_list = gtk_list_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); renderer = gtk_cell_renderer_text_new (); chars_tree_view = (GtkTreeView *) gtk_tree_view_new (); for (i = 0; i < 8; i++) { gchar *title = g_strdup_printf (_("Enclose combo %d"), i + 1); gtk_list_store_append (chars_list, &chars_iter); gtk_list_store_set (chars_list, &chars_iter, COLUMN_TITLE, title, -1); insert_chars [0] = *enclose_chars [i]; gtk_list_store_set (chars_list, &chars_iter, COLUMN_PRIOR_CHAR, insert_chars, -1); insert_chars [0] = *(enclose_chars [i] + 1); gtk_list_store_set (chars_list, &chars_iter, COLUMN_END_CHAR, insert_chars, -1); g_free(title); } label_column = gtk_tree_view_column_new_with_attributes ("", renderer, "text", 0, NULL); renderer = gtk_cell_renderer_text_new (); g_object_set (renderer, "editable", TRUE, NULL); char_one_column = gtk_tree_view_column_new_with_attributes (_("Opening Character"), renderer, "text", COLUMN_PRIOR_CHAR, NULL); g_signal_connect (renderer, "edited", G_CALLBACK (enclose_chars_changed), GINT_TO_POINTER (COLUMN_PRIOR_CHAR)); renderer = gtk_cell_renderer_text_new (); g_object_set (renderer, "editable", TRUE, NULL); char_two_column = gtk_tree_view_column_new_with_attributes (_("Closing Character"), renderer, "text", COLUMN_END_CHAR, NULL); g_signal_connect (renderer, "edited", G_CALLBACK (enclose_chars_changed), GINT_TO_POINTER (COLUMN_END_CHAR)); gtk_tree_view_append_column (chars_tree_view, label_column); gtk_tree_view_append_column (chars_tree_view, char_one_column); gtk_tree_view_append_column (chars_tree_view, char_two_column); gtk_tree_view_set_model (chars_tree_view, GTK_TREE_MODEL (chars_list)); gtk_box_pack_start(GTK_BOX(vbox), (GtkWidget *) chars_tree_view, FALSE, FALSE, 3); gtk_widget_show_all (vbox); g_signal_connect (dialog, "response", G_CALLBACK (configure_response), NULL); while (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT); gtk_widget_destroy (GTK_WIDGET (dialog)); }