/* sorry for complexity (cm->done_list), but need it to remove empty dirs */ void cache_maintain_home (CacheType type, gint clear) { CMData *cm; GList *dlist = NULL; gchar *base; const gchar *msg; if (type == CACHE_THUMBS) base = g_strconcat (home_dir (), "/", PORNVIEW_RC_DIR_THUMBS, NULL); else base = g_strconcat (home_dir (), "/", PORNVIEW_RC_DIR_COMMENTS, NULL); if (!path_list (base, NULL, &dlist)) { g_free (base); return; } dlist = g_list_append (dlist, base); cm = g_new0 (CMData, 1); cm->list = dlist; cm->done_list = NULL; cm->clear = clear; cm->type = type; if (clear) { if (type == CACHE_THUMBS) msg = _("Clearing thumbnails..."); else msg = _("Clearing comments..."); } else { if (type == CACHE_THUMBS) msg = _("Purging old thumbnails..."); else msg = _("Purging old comments..."); } if (type == CACHE_THUMBS) cm->gd = generic_dialog_new (_("Purge thumbnails"), msg, "PornView", "purge_thumbnails", TRUE, cb_cache_maintain_home_cancel, cm); else cm->gd = generic_dialog_new (_("Purge comments"), msg, "PornView", "purge_comments", TRUE, cb_cache_maintain_home_cancel, cm); gtk_window_set_position (GTK_WINDOW (cm->gd->dialog), GTK_WIN_POS_CENTER); gtk_widget_set_usize (cm->gd->dialog, PURGE_DIALOG_WIDTH, -1); cm->entry = gtk_entry_new (); gtk_widget_set_sensitive (cm->entry, FALSE); gtk_box_pack_start (GTK_BOX (cm->gd->vbox), cm->entry, FALSE, FALSE, 5); gtk_widget_show (cm->entry); gtk_widget_show (cm->gd->dialog); cm->idle_id = gtk_idle_add (cb_cache_maintain_home, cm); }
static void cache_manager_render_dialog(GtkWidget *widget, const gchar *path) { CleanData *cd; GtkWidget *hbox; GtkWidget *label; GtkWidget *button; cd = g_new0(CleanData, 1); cd->gd = generic_dialog_new(_("Create thumbnails"), "create_thumbnails", widget, FALSE, NULL, cd); gtk_window_set_default_size(GTK_WINDOW(cd->gd->dialog), PURGE_DIALOG_WIDTH, -1); cd->gd->cancel_cb = cache_manager_render_close_cb; cd->button_close = generic_dialog_add_button(cd->gd, GTK_STOCK_CLOSE, NULL, cache_manager_render_close_cb, FALSE); cd->button_start = generic_dialog_add_button(cd->gd, GTK_STOCK_OK, _("S_tart"), cache_manager_render_start_cb, FALSE); cd->button_stop = generic_dialog_add_button(cd->gd, GTK_STOCK_STOP, NULL, cache_manager_render_stop_cb, FALSE); gtk_widget_set_sensitive(cd->button_stop, FALSE); generic_dialog_add_message(cd->gd, NULL, _("Create thumbnails"), NULL); hbox = pref_box_new(cd->gd->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, 0); pref_spacer(hbox, PREF_PAD_INDENT); cd->group = pref_box_new(hbox, TRUE, GTK_ORIENTATION_VERTICAL, PREF_PAD_GAP); hbox = pref_box_new(cd->group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE); pref_label_new(hbox, _("Folder:")); label = tab_completion_new(&cd->entry, path, NULL, NULL); tab_completion_add_select_button(cd->entry,_("Select folder") , TRUE); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); gtk_widget_show(label); pref_checkbox_new_int(cd->group, _("Include subfolders"), FALSE, &cd->recurse); button = pref_checkbox_new_int(cd->group, _("Store thumbnails local to source images"), FALSE, &cd->local); gtk_widget_set_sensitive(button, options->thumbnails.spec_standard); pref_line(cd->gd->vbox, PREF_PAD_SPACE); hbox = pref_box_new(cd->gd->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE); cd->progress = gtk_entry_new(); GTK_WIDGET_UNSET_FLAGS(cd->progress, GTK_CAN_FOCUS); gtk_editable_set_editable(GTK_EDITABLE(cd->progress), FALSE); gtk_entry_set_text(GTK_ENTRY(cd->progress), _("click start to begin")); gtk_box_pack_start(GTK_BOX(hbox), cd->progress, TRUE, TRUE, 0); gtk_widget_show(cd->progress); cd->spinner = spinner_new(NULL, -1); gtk_box_pack_start(GTK_BOX(hbox), cd->spinner, FALSE, FALSE, 0); gtk_widget_show(cd->spinner); cd->list = NULL; gtk_widget_show(cd->gd->dialog); }
static void bar_pane_exif_conf_dialog(GtkWidget *widget) { ConfDialogData *cdd; GenericDialog *gd; GtkWidget *table; /* the widget can be either ExifEntry (for editing) or Pane (for new entry) we can decide it by the attached data */ ExifEntry *ee = g_object_get_data(G_OBJECT(widget), "entry_data"); cdd = g_new0(ConfDialogData, 1); cdd->widget = widget; cdd->if_set = ee ? ee->if_set : TRUE; cdd->editable = ee ? ee->editable : FALSE; cdd->gd = gd = generic_dialog_new(ee ? _("Configure entry") : _("Add entry"), "exif_entry_edit", widget, TRUE, bar_pane_exif_edit_cancel_cb, cdd); g_signal_connect(G_OBJECT(gd->dialog), "destroy", G_CALLBACK(bar_pane_exif_edit_destroy_cb), cdd); /* in case the entry is deleted during editing */ g_signal_connect(G_OBJECT(widget), "destroy", G_CALLBACK(bar_pane_exif_edit_close_cb), gd); generic_dialog_add_message(gd, NULL, ee ? _("Configure entry") : _("Add entry"), NULL, FALSE); generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, bar_pane_exif_edit_ok_cb, TRUE); table = pref_table_new(gd->vbox, 3, 2, FALSE, TRUE); pref_table_label(table, 0, 0, _("Key:"), 1.0); cdd->key_entry = gtk_entry_new(); gtk_widget_set_size_request(cdd->key_entry, 300, -1); if (ee) gtk_entry_set_text(GTK_ENTRY(cdd->key_entry), ee->key); gtk_table_attach_defaults(GTK_TABLE(table), cdd->key_entry, 1, 2, 0, 1); generic_dialog_attach_default(gd, cdd->key_entry); gtk_widget_show(cdd->key_entry); pref_table_label(table, 0, 1, _("Title:"), 1.0); cdd->title_entry = gtk_entry_new(); gtk_widget_set_size_request(cdd->title_entry, 300, -1); if (ee) gtk_entry_set_text(GTK_ENTRY(cdd->title_entry), ee->title); gtk_table_attach_defaults(GTK_TABLE(table), cdd->title_entry, 1, 2, 1, 2); generic_dialog_attach_default(gd, cdd->title_entry); gtk_widget_show(cdd->title_entry); pref_checkbox_new_int(gd->vbox, _("Show only if set"), cdd->if_set, &cdd->if_set); pref_checkbox_new_int(gd->vbox, _("Editable (supported only for XMP)"), cdd->editable, &cdd->editable); gtk_widget_show(gd->dialog); }
static void editor_default_cb(GtkWidget *widget, gpointer data) { GenericDialog *gd; gd = generic_dialog_new(_("Reset editors"), "GQview", "reset_filter", widget, TRUE, dummy_cancel_cb, NULL); generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION, _("Reset editors"), _("This will reset the edit commands to the defaults.\nContinue?")); generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, editor_default_ok_cb, TRUE); gtk_widget_show(gd->dialog); }
static void encoding_dialog(const gchar *path) { static gint warned_user = FALSE; GenericDialog *gd; GString *string; const gchar *lc; const gchar *bf; /* check that gtk is initialized (loop is level > 0) */ if (gtk_main_level() == 0) { /* gtk not initialized */ gtk_init_add(encoding_dialog_delay, g_strdup(path)); return; } if (warned_user) return; warned_user = TRUE; lc = getenv("LANG"); bf = getenv("G_BROKEN_FILENAMES"); warned_user = TRUE; string = g_string_new(""); g_string_append(string, "One or more filenames are not encoded with the preferred locale character set.\n"); g_string_append_printf(string, "Operations on, and display of these files with %s may not succeed.\n\n", PACKAGE); g_string_append(string, "If your filenames are not encoded in utf-8, try setting\n"); g_string_append(string, "the environment variable G_BROKEN_FILENAMES=1\n"); g_string_append_printf(string, "It appears G_BROKEN_FILENAMES is %s%s\n\n", (bf) ? "set to " : "not set.", (bf) ? bf : ""); g_string_append_printf(string, "The locale appears to be set to \"%s\"\n(set by the LANG environment variable)\n", (lc) ? lc : "undefined"); if (lc && (strstr(lc, "UTF-8") || strstr(lc, "utf-8"))) { gchar *name; name = g_convert(path, -1, "UTF-8", "ISO-8859-1", NULL, NULL, NULL); string = g_string_append(string, "\nPreferred encoding appears to be UTF-8, however the file:\n"); g_string_append_printf(string, "\"%s\"\n%s encoded in valid UTF-8.\n", (name) ? name : "[name not displayable]", (g_utf8_validate(path, -1, NULL)) ? "is": "is NOT"); g_free(name); } gd = generic_dialog_new("Filename encoding locale mismatch", PACKAGE, "locale warning", NULL, TRUE, NULL, NULL); generic_dialog_add_button(gd, GTK_STOCK_CLOSE, NULL, NULL, TRUE); generic_dialog_add_message(gd, GTK_STOCK_DIALOG_WARNING, "Filename encoding locale mismatch", string->str); gtk_widget_show(gd->dialog); g_string_free(string, TRUE); }
void cache_manager_main_clear_confirm(GtkWidget *parent) { GenericDialog *gd; gd = generic_dialog_new(_("Clear cache"), "clear_cache", parent, TRUE, dummy_cancel_cb, NULL); generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION, _("Clear cache"), _("This will remove all thumbnails that have\nbeen saved to disk, continue?")); generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, cache_manager_main_clear_ok_cb, TRUE); gtk_widget_show(gd->dialog); }
GenericDialog *warning_dialog(const gchar *heading, const gchar *text, const gchar *icon_stock_id, GtkWidget *parent) { GenericDialog *gd; gd = generic_dialog_new(heading, "warning", parent, TRUE, NULL, NULL); generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, warning_dialog_ok_cb, TRUE); generic_dialog_add_message(gd, icon_stock_id, heading, text); gtk_widget_show(gd->dialog); return gd; }
static void cache_manager_standard_process(GtkWidget *widget, gboolean clear) { CleanData *cd; const gchar *stock_id; const gchar *msg; cd = g_new0(CleanData, 1); cd->clear = clear; if (clear) { stock_id = GTK_STOCK_DELETE; msg = _("Clearing thumbnails..."); } else { stock_id = GTK_STOCK_CLEAR; msg = _("Removing old thumbnails..."); } cd->gd = generic_dialog_new(_("Maintenance"), "standard_maintenance", widget, FALSE, NULL, cd); cd->gd->cancel_cb = cache_manager_standard_clean_close_cb; cd->button_close = generic_dialog_add_button(cd->gd, GTK_STOCK_CLOSE, NULL, cache_manager_standard_clean_close_cb, FALSE); cd->button_start = generic_dialog_add_button(cd->gd, GTK_STOCK_OK, _("S_tart"), cache_manager_standard_clean_start_cb, FALSE); cd->button_stop = generic_dialog_add_button(cd->gd, GTK_STOCK_STOP, NULL, cache_manager_standard_clean_stop_cb, FALSE); gtk_widget_set_sensitive(cd->button_stop, FALSE); generic_dialog_add_message(cd->gd, stock_id, msg, NULL); cd->progress = gtk_progress_bar_new(); gtk_progress_bar_set_text(GTK_PROGRESS_BAR(cd->progress), _("click start to begin")); gtk_box_pack_start(GTK_BOX(cd->gd->vbox), cd->progress, FALSE, FALSE, 0); gtk_widget_show(cd->progress); cd->days = 30; cd->tl = NULL; cd->idle_id = 0; gtk_widget_show(cd->gd->dialog); }
GenericDialog * file_util_gen_dlg (const gchar * title, const gchar * message, const gchar * wmclass, const gchar * wmsubclass, gint auto_close, void (*cb_cancel) (GenericDialog *, gpointer), gpointer data) { GenericDialog *gd; gd = generic_dialog_new (title, message, wmclass, wmsubclass, auto_close, cb_cancel, data); if (place_dialogs_under_mouse) gtk_window_position (GTK_WINDOW (gd->dialog), GTK_WIN_POS_MOUSE); else if (place_dialogs_center) gtk_window_position (GTK_WINDOW (gd->dialog), GTK_WIN_POS_CENTER); return gd; }
static void safe_delete_clear_cb(GtkWidget* widget, gpointer data) { GenericDialog *gd; GtkWidget *entry; gd = generic_dialog_new(_("Clear trash"), "GQview", "clear_trash", widget, TRUE, dummy_cancel_cb, NULL); generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION, _("Clear trash"), _("This will remove the trash contents.")); generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, safe_delete_clear_ok_cb, TRUE); entry = gtk_entry_new(); GTK_WIDGET_UNSET_FLAGS(entry, GTK_CAN_FOCUS); gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE); if (safe_delete_path) gtk_entry_set_text(GTK_ENTRY(entry), safe_delete_path); gtk_box_pack_start(GTK_BOX(gd->vbox), entry, FALSE, FALSE, 0); gtk_widget_show(entry); gtk_widget_show(gd->dialog); }
static void editor_list_window_delete_cb(GtkWidget *widget, gpointer data) { EditorListWindow *ewl = data; GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(ewl->view)); GtkTreeIter iter; if (gtk_tree_selection_get_selected(sel, NULL, &iter)) { GtkTreeModel *store = gtk_tree_view_get_model(GTK_TREE_VIEW(ewl->view)); gchar *path; gchar *key; gchar *text; EditorWindowDel_Data *ewdl; gtk_tree_model_get(store, &iter, DESKTOP_FILE_COLUMN_PATH, &path, DESKTOP_FILE_COLUMN_KEY, &key, -1); ewdl = g_new(EditorWindowDel_Data, 1); ewdl->ewl = ewl; ewdl->path = path; if (ewl->gd) { GenericDialog *gd = ewl->gd; editor_list_window_delete_dlg_cancel(ewl->gd, ewl->gd->data); generic_dialog_close(gd); } ewl->gd = generic_dialog_new(_("Delete file"), "dlg_confirm", NULL, TRUE, editor_list_window_delete_dlg_cancel, ewdl); generic_dialog_add_button(ewl->gd, GTK_STOCK_DELETE, NULL, editor_list_window_delete_dlg_ok_cb, TRUE); text = g_strdup_printf(_("About to delete the file:\n %s"), path); generic_dialog_add_message(ewl->gd, GTK_STOCK_DIALOG_QUESTION, _("Delete file"), text); g_free(text); gtk_widget_show(ewl->gd->dialog); } }
static void collection_close_dlg_show(CollectWindow *cw) { GenericDialog *gd; if (cw->close_dialog) { gtk_window_present(GTK_WINDOW(cw->close_dialog)); return; } gd = generic_dialog_new(_("Close collection"), "close_collection", cw->window, FALSE, collection_close_cancel_cb, cw); generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION, _("Close collection"), _("Collection has been modified.\nSave first?")); generic_dialog_add_button(gd, GTK_STOCK_SAVE, NULL, collection_close_save_cb, TRUE); generic_dialog_add_button(gd, GTK_STOCK_DELETE, _("_Discard"), collection_close_close_cb, FALSE); cw->close_dialog = gd->dialog; gtk_widget_show(gd->dialog); }
/* sorry for complexity (cm->done_list), but need it to remove empty dirs */ void cache_maintain_home(gboolean metadata, gboolean clear, GtkWidget *parent) { CMData *cm; GList *dlist; FileData *dir_fd; const gchar *msg; const gchar *cache_folder; GtkWidget *hbox; if (metadata) { cache_folder = get_metadata_cache_dir(); } else { cache_folder = get_thumbnails_cache_dir(); } dir_fd = file_data_new_simple(cache_folder); if (!filelist_read(dir_fd, NULL, &dlist)) { file_data_unref(dir_fd); return; } dlist = g_list_append(dlist, dir_fd); cm = g_new0(CMData, 1); cm->list = dlist; cm->done_list = NULL; cm->clear = clear; cm->metadata = metadata; if (metadata) { msg = _("Removing old metadata..."); } else if (clear) { msg = _("Clearing cached thumbnails..."); } else { msg = _("Removing old thumbnails..."); } cm->gd = generic_dialog_new(_("Maintenance"), "main_maintenance", parent, FALSE, NULL, cm); cm->gd->cancel_cb = cache_maintain_home_close_cb; cm->button_close = generic_dialog_add_button(cm->gd, GTK_STOCK_CLOSE, NULL, cache_maintain_home_close_cb, FALSE); gtk_widget_set_sensitive(cm->button_close, FALSE); cm->button_stop = generic_dialog_add_button(cm->gd, GTK_STOCK_STOP, NULL, cache_maintain_home_stop_cb, FALSE); generic_dialog_add_message(cm->gd, NULL, msg, NULL); gtk_window_set_default_size(GTK_WINDOW(cm->gd->dialog), PURGE_DIALOG_WIDTH, -1); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(cm->gd->vbox), hbox, FALSE, FALSE, 5); gtk_widget_show(hbox); cm->entry = gtk_entry_new(); GTK_WIDGET_UNSET_FLAGS(cm->entry, GTK_CAN_FOCUS); gtk_editable_set_editable(GTK_EDITABLE(cm->entry), FALSE); gtk_box_pack_start(GTK_BOX(hbox), cm->entry, TRUE, TRUE, 0); gtk_widget_show(cm->entry); cm->spinner = spinner_new(NULL, SPINNER_SPEED); gtk_box_pack_start(GTK_BOX(hbox), cm->spinner, FALSE, FALSE, 0); gtk_widget_show(cm->spinner); gtk_widget_show(cm->gd->dialog); cm->idle_id = g_idle_add(cache_maintain_home_cb, cm); }
void cache_manager_show(void) { GenericDialog *gd; GtkWidget *group; GtkWidget *button; GtkWidget *table; GtkSizeGroup *sizegroup; if (cache_manager) { gtk_window_present(GTK_WINDOW(cache_manager->dialog->dialog)); return; } cache_manager = g_new0(CacheManager, 1); cache_manager->dialog = generic_dialog_new(_("Cache Maintenance"), "cache_manager", NULL, FALSE, NULL, cache_manager); gd = cache_manager->dialog; gd->cancel_cb = cache_manager_close_cb; generic_dialog_add_button(gd, GTK_STOCK_CLOSE, NULL, cache_manager_close_cb, FALSE); generic_dialog_add_message(gd, NULL, _("Cache and Data Maintenance"), NULL); sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); group = pref_group_new(gd->vbox, FALSE, _("Thumbnail cache"), GTK_ORIENTATION_VERTICAL); cache_manager_location_label(group, get_thumbnails_cache_dir()); table = pref_table_new(group, 2, 2, FALSE, FALSE); button = pref_table_button(table, 0, 0, GTK_STOCK_CLEAR, _("Clean up"), FALSE, G_CALLBACK(cache_manager_main_clean_cb), cache_manager); gtk_size_group_add_widget(sizegroup, button); pref_table_label(table, 1, 0, _("Remove orphaned or outdated thumbnails."), 0.0); button = pref_table_button(table, 0, 1, GTK_STOCK_DELETE, _("Clear cache"), FALSE, G_CALLBACK(cache_manager_main_clear_cb), cache_manager); gtk_size_group_add_widget(sizegroup, button); pref_table_label(table, 1, 1, _("Delete all cached thumbnails."), 0.0); group = pref_group_new(gd->vbox, FALSE, _("Shared thumbnail cache"), GTK_ORIENTATION_VERTICAL); cache_manager_location_label(group, THUMB_FOLDER_GLOBAL); table = pref_table_new(group, 2, 2, FALSE, FALSE); button = pref_table_button(table, 0, 0, GTK_STOCK_CLEAR, _("Clean up"), FALSE, G_CALLBACK(cache_manager_standard_clean_cb), cache_manager); gtk_size_group_add_widget(sizegroup, button); pref_table_label(table, 1, 0, _("Remove orphaned or outdated thumbnails."), 0.0); button = pref_table_button(table, 0, 1, GTK_STOCK_DELETE, _("Clear cache"), FALSE, G_CALLBACK(cache_manager_standard_clear_cb), cache_manager); gtk_size_group_add_widget(sizegroup, button); pref_table_label(table, 1, 1, _("Delete all cached thumbnails."), 0.0); group = pref_group_new(gd->vbox, FALSE, _("Create thumbnails"), GTK_ORIENTATION_VERTICAL); table = pref_table_new(group, 2, 1, FALSE, FALSE); button = pref_table_button(table, 0, 1, GTK_STOCK_EXECUTE, _("Render"), FALSE, G_CALLBACK(cache_manager_render_cb), cache_manager); gtk_size_group_add_widget(sizegroup, button); pref_table_label(table, 1, 1, _("Render thumbnails for a specific folder."), 0.0); group = pref_group_new(gd->vbox, FALSE, _("Metadata"), GTK_ORIENTATION_VERTICAL); cache_manager_location_label(group, get_metadata_cache_dir()); table = pref_table_new(group, 2, 1, FALSE, FALSE); button = pref_table_button(table, 0, 0, GTK_STOCK_CLEAR, _("Clean up"), FALSE, G_CALLBACK(cache_manager_metadata_clean_cb), cache_manager); gtk_size_group_add_widget(sizegroup, button); pref_table_label(table, 1, 0, _("Remove orphaned keywords and comments."), 0.0); gtk_widget_show(cache_manager->dialog->dialog); }
static void bar_pane_keywords_edit_dialog(PaneKeywordsData *pkd, gboolean edit_existing) { ConfDialogData *cdd; GenericDialog *gd; GtkWidget *table; GtkWidget *group; GtkWidget *button; gchar *name = NULL; gboolean is_keyword = TRUE; if (edit_existing && pkd->click_tpath) { GtkTreeModel *model; GtkTreeIter iter; model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview)); if (gtk_tree_model_get_iter(model, &iter, pkd->click_tpath)) { gtk_tree_model_get(model, &iter, FILTER_KEYWORD_COLUMN_NAME, &name, FILTER_KEYWORD_COLUMN_IS_KEYWORD, &is_keyword, -1); } else { return; } } if (edit_existing && !name) return; cdd = g_new0(ConfDialogData, 1); cdd->pkd =pkd; cdd->click_tpath = pkd->click_tpath; pkd->click_tpath = NULL; cdd->edit_existing = edit_existing; cdd->gd = gd = generic_dialog_new(name ? _("Edit keyword") : _("Add keywords"), "keyword_edit", pkd->widget, TRUE, bar_pane_keywords_edit_cancel_cb, cdd); g_signal_connect(G_OBJECT(gd->dialog), "destroy", G_CALLBACK(bar_pane_keywords_edit_destroy_cb), cdd); generic_dialog_add_message(gd, NULL, name ? _("Configure keyword") : _("Add keyword"), NULL); generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, bar_pane_keywords_edit_ok_cb, TRUE); table = pref_table_new(gd->vbox, 3, 1, FALSE, TRUE); pref_table_label(table, 0, 0, _("Keyword:"), 1.0); cdd->edit_widget = gtk_entry_new(); gtk_widget_set_size_request(cdd->edit_widget, 300, -1); if (name) gtk_entry_set_text(GTK_ENTRY(cdd->edit_widget), name); gtk_table_attach_defaults(GTK_TABLE(table), cdd->edit_widget, 1, 2, 0, 1); /* here could eventually be a text view instead of entry */ generic_dialog_attach_default(gd, cdd->edit_widget); gtk_widget_show(cdd->edit_widget); group = pref_group_new(gd->vbox, FALSE, _("Keyword type:"), GTK_ORIENTATION_VERTICAL); button = pref_radiobutton_new(group, NULL, _("Active keyword"), (is_keyword), G_CALLBACK(bar_pane_keywords_conf_set_kw), cdd); button = pref_radiobutton_new(group, button, _("Helper"), (!is_keyword), G_CALLBACK(bar_pane_keywords_conf_set_helper), cdd); cdd->is_keyword = is_keyword; g_free(name); gtk_widget_grab_focus(cdd->edit_widget); gtk_widget_show(gd->dialog); }