void confirm_box (void) { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ /* TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix */ QUICK_CHECKBOX (Q_("Confirmation|&Delete"), &confirm_delete, NULL), QUICK_CHECKBOX (Q_("Confirmation|O&verwrite"), &confirm_overwrite, NULL), QUICK_CHECKBOX (Q_("Confirmation|&Execute"), &confirm_execute, NULL), QUICK_CHECKBOX (Q_("Confirmation|E&xit"), &confirm_exit, NULL), QUICK_CHECKBOX (Q_("Confirmation|Di&rectory hotlist delete"), &confirm_directory_hotlist_delete, NULL), QUICK_CHECKBOX (Q_("Confirmation|&History cleanup"), &mc_global.widget.confirm_history_cleanup, NULL), QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 46, N_("Confirmation"), "[Confirmation]", quick_widgets, NULL, NULL }; (void) quick_dialog (&qdlg); }
void display_bits_box (void) { const char *cpname; new_display_codepage = mc_global.display_codepage; cpname = (new_display_codepage < 0) ? _("Other 8 bit") : ((codepage_desc *) g_ptr_array_index (codepages, new_display_codepage))->name; { int new_meta; quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_START_COLUMNS, QUICK_LABEL (N_("Input / display codepage:"), NULL), QUICK_NEXT_COLUMN, QUICK_BUTTON (cpname, B_USER, sel_charset_button, NULL), QUICK_STOP_COLUMNS, QUICK_SEPARATOR (TRUE), QUICK_CHECKBOX (N_("F&ull 8 bits input"), &new_meta, NULL), QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 46, N_("Display bits"), "[Display bits]", quick_widgets, NULL, NULL }; new_meta = !use_8th_bit_as_meta; application_keypad_mode (); if (quick_dialog (&qdlg) == B_ENTER) { char *errmsg; mc_global.display_codepage = new_display_codepage; errmsg = init_translation_table (mc_global.source_codepage, mc_global.display_codepage); if (errmsg != NULL) { message (D_ERROR, MSG_ERROR, "%s", errmsg); g_free (errmsg); } #ifdef HAVE_SLANG tty_display_8bit (mc_global.display_codepage != 0 && mc_global.display_codepage != 1); #else tty_display_8bit (mc_global.display_codepage != 0); #endif use_8th_bit_as_meta = !new_meta; repaint_screen (); } } }
void configure_vfs (void) { char buffer2[BUF_TINY]; #if defined(USE_NETCODE) char buffer3[BUF_TINY]; ret_use_netrc = use_netrc; ret_ftpfs_use_passive_connections = ftpfs_use_passive_connections; g_snprintf(buffer3, sizeof (buffer3), "%i", ftpfs_directory_timeout); confvfs_widgets[7].text = buffer3; confvfs_widgets[9].text = ftpfs_anonymous_passwd; confvfs_widgets[4].text = ftpfs_proxy_host; #endif g_snprintf (buffer2, sizeof (buffer2), "%i", vfs_timeout); confvfs_widgets [3 + VFS_WIDGETBASE].text = buffer2; if (quick_dialog (&confvfs_dlg) != B_CANCEL) { vfs_timeout = atoi (ret_timeout); g_free (ret_timeout); if (vfs_timeout < 0 || vfs_timeout > 10000) vfs_timeout = 10; #if defined(USE_NETCODE) g_free (ftpfs_anonymous_passwd); ftpfs_anonymous_passwd = ret_passwd; g_free (ftpfs_proxy_host); ftpfs_proxy_host = ret_ftp_proxy; ftpfs_directory_timeout = atoi(ret_directory_timeout); use_netrc = ret_use_netrc; ftpfs_use_passive_connections = ret_ftpfs_use_passive_connections; g_free (ret_directory_timeout); #endif } }
char * cd_dialog (void) { const char *label = N_("cd"); const int ylen = 5; const int xlen = 57; int len; #ifdef ENABLE_NLS label = _(label); #endif len = str_term_width1 (label); { char *my_str; QuickWidget quick_widgets[] = { /* 0 */ QUICK_INPUT (4 + len, xlen, 2, ylen, "", xlen - 7 - len, 2, "input", &my_str), /* 1 */ QUICK_LABEL (3, xlen, 2, ylen, label), QUICK_END }; QuickDialog Quick_input = { xlen, ylen, 2, LINES - 2 - ylen, _("Quick cd"), "[Quick cd]", quick_widgets, NULL, TRUE }; return (quick_dialog (&Quick_input) != B_CANCEL) ? my_str : NULL; } }
void symlink_dialog (const vfs_path_t * existing_vpath, const vfs_path_t * new_vpath, char **ret_existing, char **ret_new) { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_LABELED_INPUT (N_("Existing filename (filename symlink will point to):"), input_label_above, vfs_path_as_str (existing_vpath), "input-2", ret_existing, NULL, FALSE, FALSE, INPUT_COMPLETE_FILENAMES), QUICK_SEPARATOR (FALSE), QUICK_LABELED_INPUT (N_("Symbolic link filename:"), input_label_above, vfs_path_as_str (new_vpath), "input-1", ret_new, NULL, FALSE, FALSE, INPUT_COMPLETE_FILENAMES), QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 64, N_("Symbolic link"), "[File Menu]", quick_widgets, NULL, NULL }; if (quick_dialog (&qdlg) == B_CANCEL) { *ret_new = NULL; *ret_existing = NULL; } }
static void edit_about (void) { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_LABEL ("MCEdit " VERSION, NULL), QUICK_SEPARATOR (TRUE), QUICK_LABEL (N_("A user friendly text editor\n" "written for the Midnight Commander."), NULL), QUICK_SEPARATOR (FALSE), QUICK_LABEL (N_("Copyright (C) 1996-2019 the Free Software Foundation"), NULL), QUICK_START_BUTTONS (TRUE, TRUE), QUICK_BUTTON (N_("&OK"), B_ENTER, NULL, NULL), QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 40, N_("About"), "[Internal File Editor]", quick_widgets, NULL, NULL }; quick_widgets[0].pos_flags = WPOS_KEEP_TOP | WPOS_CENTER_HORZ; quick_widgets[2].pos_flags = WPOS_KEEP_TOP | WPOS_CENTER_HORZ; quick_widgets[4].pos_flags = WPOS_KEEP_TOP | WPOS_CENTER_HORZ; (void) quick_dialog (&qdlg); }
int editcmd_dialog_replace_prompt_show (WEdit * edit, char *from_text, char *to_text, int xpos, int ypos) { Widget *w = WIDGET (edit); /* dialog size */ int dlg_height = 10; int dlg_width; char tmp[BUF_MEDIUM]; char *repl_from, *repl_to; int retval; if (xpos == -1) xpos = w->x + option_line_state_width + 1; if (ypos == -1) ypos = w->y + w->lines / 2; /* Sometimes menu can hide replaced text. I don't like it */ if ((edit->curs_row >= ypos - 1) && (edit->curs_row <= ypos + dlg_height - 1)) ypos -= dlg_height; dlg_width = WIDGET (w->owner)->cols - xpos - 1; g_snprintf (tmp, sizeof (tmp), "\"%s\"", from_text); repl_from = g_strdup (str_trunc (tmp, dlg_width - 7)); g_snprintf (tmp, sizeof (tmp), "\"%s\"", to_text); repl_to = g_strdup (str_trunc (tmp, dlg_width - 7)); { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_LABEL (repl_from, NULL), QUICK_LABEL (N_("Replace with:"), NULL), QUICK_LABEL (repl_to, NULL), QUICK_START_BUTTONS (TRUE, TRUE), QUICK_BUTTON (N_("&Replace"), B_ENTER, NULL, NULL), QUICK_BUTTON (N_("A&ll"), B_REPLACE_ALL, NULL, NULL), QUICK_BUTTON (N_("&Skip"), B_SKIP_REPLACE, NULL, NULL), QUICK_BUTTON (N_("&Cancel"), B_CANCEL, NULL, NULL), QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { ypos, xpos, -1, N_("Confirm replace"), NULL, quick_widgets, NULL, NULL }; retval = quick_dialog (&qdlg); } g_free (repl_from); g_free (repl_to); return retval; }
struct smb_authinfo * vfs_smb_get_authinfo (const char *host, const char *share, const char *domain, const char *user) { char *label; struct smb_authinfo *return_value = NULL; if (domain == NULL) domain = ""; if (user == NULL) user = ""; label = g_strdup_printf (_("Password for \\\\%s\\%s"), host, share); { char *ret_domain, *ret_user, *ret_password; quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_LABEL (label, NULL), QUICK_SEPARATOR (TRUE), QUICK_START_COLUMNS, QUICK_LABEL (N_("Domain:"), NULL), QUICK_SEPARATOR (FALSE), QUICK_LABEL (N_("Username:"******"Password:"******"auth_domain", &ret_domain, NULL, FALSE, FALSE, INPUT_COMPLETE_HOSTNAMES), QUICK_SEPARATOR (FALSE), QUICK_INPUT (user, "auth_name", &ret_user, NULL, FALSE, FALSE, INPUT_COMPLETE_USERNAMES), QUICK_SEPARATOR (FALSE), QUICK_INPUT ("", "auth_password", &ret_password, NULL, TRUE, FALSE, INPUT_COMPLETE_NONE), QUICK_STOP_COLUMNS, QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 40, N_("SMB authentication"), "[Smb Authinfo]", quick_widgets, NULL, NULL }; if (quick_dialog (&qdlg) != B_CANCEL) { return_value = vfs_smb_authinfo_new (host, share, ret_domain, ret_user, ret_password); g_free (ret_domain); g_free (ret_user); g_free (ret_password); } } g_free (label); return return_value; }
void confirm_box (void) { #ifdef ENABLE_NLS static int i18n_flag = 0; if (!i18n_flag) { register int i = sizeof(conf_widgets)/sizeof(QuickWidget) - 1; int l1, maxlen = 0; while (i--) { conf_widgets [i].text = _(conf_widgets [i].text); l1 = strlen (conf_widgets [i].text) + 3; if (l1 > maxlen) maxlen = l1; } /* * If buttons start on 4/6, checkboxes (with some add'l space) * must take not more than it. */ confirmation.xlen = (maxlen + 5) * 6 / 4; /* * And this for the case when buttons with some space to the right * do not fit within 2/6 */ l1 = strlen (conf_widgets [0].text) + 3; i = strlen (conf_widgets [1].text) + 5; if (i > l1) l1 = i; i = (l1 + 3) * 6 / 2; if (i > confirmation.xlen) confirmation.xlen = i; confirmation.title = _(confirmation.title); i18n_flag = confirmation.i18n = 1; } #endif /* ENABLE_NLS */ my_delete = confirm_delete; my_overwrite = confirm_overwrite; my_execute = confirm_execute; my_exit = confirm_exit; if (quick_dialog (&confirmation) != B_CANCEL){ confirm_delete = my_delete; confirm_overwrite = my_overwrite; confirm_execute = my_execute; confirm_exit = my_exit; } }
void editcmd_dialog_replace_show (WEdit * edit, const char *search_default, const char *replace_default, /*@out@ */ char **search_text, /*@out@ */ char **replace_text) { size_t num_of_types; gchar **list_of_types; if ((search_default == NULL) || (*search_default == '\0')) search_default = INPUT_LAST_TEXT; list_of_types = mc_search_get_types_strings_array (&num_of_types); { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_LABELED_INPUT (N_("Enter search string:"), input_label_above, search_default, MC_HISTORY_SHARED_SEARCH, search_text, NULL, FALSE, FALSE, INPUT_COMPLETE_NONE), QUICK_LABELED_INPUT (N_("Enter replacement string:"), input_label_above, replace_default, "replace", replace_text, NULL, FALSE, FALSE, INPUT_COMPLETE_NONE), QUICK_SEPARATOR (TRUE), QUICK_START_COLUMNS, QUICK_RADIO (num_of_types, (const char **) list_of_types, (int *) &edit_search_options.type, NULL), QUICK_NEXT_COLUMN, QUICK_CHECKBOX (N_("Cas&e sensitive"), &edit_search_options.case_sens, NULL), QUICK_CHECKBOX (N_("&Backwards"), &edit_search_options.backwards, NULL), QUICK_CHECKBOX (N_("In se&lection"), &edit_search_options.only_in_selection, NULL), QUICK_CHECKBOX (N_("&Whole words"), &edit_search_options.whole_words, NULL), #ifdef HAVE_CHARSET QUICK_CHECKBOX (N_("&All charsets"), &edit_search_options.all_codepages, NULL), #endif QUICK_STOP_COLUMNS, QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 58, N_("Replace"), "[Input Line Keys]", quick_widgets, NULL, NULL }; if (quick_dialog (&qdlg) != B_CANCEL) edit->replace_mode = 0; else { *replace_text = NULL; *search_text = NULL; } } g_strfreev (list_of_types); }
void display_bits_box (void) { int new_meta; int current_mode; const char *display_bits_str[] = { N_("&UTF-8 output"), N_("&Full 8 bits output"), N_("&ISO 8859-1"), N_("7 &bits") }; quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_RADIO (4, display_bits_str, ¤t_mode, NULL), QUICK_SEPARATOR (TRUE), QUICK_CHECKBOX (N_("F&ull 8 bits input"), &new_meta, NULL), QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 46, _("Display bits"), "[Display bits]", quick_widgets, NULL, NULL }; if (mc_global.full_eight_bits) current_mode = 0; else if (mc_global.eight_bit_clean) current_mode = 1; else current_mode = 2; new_meta = !use_8th_bit_as_meta; if (quick_dialog (&qdlg) != B_CANCEL) { mc_global.eight_bit_clean = current_mode < 3; mc_global.full_eight_bits = current_mode < 2; #ifndef HAVE_SLANG meta (stdscr, mc_global.eight_bit_clean); #else SLsmg_Display_Eight_Bit = mc_global.full_eight_bits ? 128 : 160; #endif use_8th_bit_as_meta = !new_meta; } }
static void view_redo (WDiff *view) { int rv; if (quick_dialog(&diffopt) != B_CANCEL) { view_fini(view, 0); mc_setctl (view->file[0], VFS_SETCTL_STALE_DATA, NULL); mc_setctl (view->file[1], VFS_SETCTL_STALE_DATA, NULL); rv = redo_diff(view, REINIT_OPEN | REINIT_READ_LEFT | REINIT_READ_RIGHT); if (rv < 0) { view->view_quit = 1; } } }
const panel_field_t * sort_box (dir_sort_options_t * op, const panel_field_t * sort_field) { const char **sort_orders_names; gsize i; gsize sort_names_num = 0; int sort_idx = 0; const panel_field_t *result = NULL; sort_orders_names = panel_get_sortable_fields (&sort_names_num); for (i = 0; i < sort_names_num; i++) if (strcmp (sort_orders_names[i], _(sort_field->title_hotkey)) == 0) { sort_idx = i; break; } { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_START_COLUMNS, QUICK_RADIO (sort_names_num, sort_orders_names, &sort_idx, NULL), QUICK_NEXT_COLUMN, QUICK_CHECKBOX (N_("Executable &first"), &op->exec_first, NULL), QUICK_CHECKBOX (N_("Cas&e sensitive"), &op->case_sensitive, NULL), QUICK_CHECKBOX (N_("&Reverse"), &op->reverse, NULL), QUICK_STOP_COLUMNS, QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 40, N_("Sort order"), "[Sort Order...]", quick_widgets, NULL, NULL }; if (quick_dialog (&qdlg) != B_CANCEL) result = panel_get_field_by_title_hotkey (sort_orders_names[sort_idx]); if (result == NULL) result = sort_field; } g_strfreev ((gchar **) sort_orders_names); return result; }
void editcmd_dialog_replace_show (WEdit * edit, const char *search_default, const char *replace_default, /*@out@ */ char **search_text, /*@out@ */ char **replace_text) { if (*search_default == '\0') search_default = INPUT_LAST_TEXT; { size_t num_of_types; gchar **list_of_types = mc_search_get_types_strings_array (&num_of_types); int REPLACE_DLG_HEIGHT = REPLACE_DLG_MIN_HEIGHT + num_of_types - REPLACE_DLG_HEIGHT_SUPPLY; QuickWidget quick_widgets[] = { /* 0 */ QUICK_BUTTON (6, 10, 13, REPLACE_DLG_HEIGHT, N_("&Cancel"), B_CANCEL, NULL), /* 1 */ QUICK_BUTTON (2, 10, 13, REPLACE_DLG_HEIGHT, N_("&OK"), B_ENTER, NULL), #ifdef HAVE_CHARSET /* 2 */ QUICK_CHECKBOX (33, REPLACE_DLG_WIDTH, 11, REPLACE_DLG_HEIGHT, N_("All charsets"), &edit->all_codepages), #endif /* 3 */ QUICK_CHECKBOX (33, REPLACE_DLG_WIDTH, 10, REPLACE_DLG_HEIGHT, N_("&Whole words"), &edit->whole_words), /* 4 */ QUICK_CHECKBOX (33, REPLACE_DLG_WIDTH, 9, REPLACE_DLG_HEIGHT, N_("In se&lection"), &edit->only_in_selection), /* 5 */ QUICK_CHECKBOX (33, REPLACE_DLG_WIDTH, 8, REPLACE_DLG_HEIGHT, N_("&Backwards"), &edit->replace_backwards), /* 6 */ QUICK_CHECKBOX (33, REPLACE_DLG_WIDTH, 7, REPLACE_DLG_HEIGHT, N_("case &Sensitive"), &edit->replace_case), /* 7 */ QUICK_RADIO (3, REPLACE_DLG_WIDTH, 7, REPLACE_DLG_HEIGHT, num_of_types, (const char **) list_of_types, (int *) &edit->search_type), /* 8 */ QUICK_LABEL (2, REPLACE_DLG_WIDTH, 4, REPLACE_DLG_HEIGHT, N_(" Enter replacement string:")), /* 9 */ QUICK_INPUT (3, REPLACE_DLG_WIDTH, 5, REPLACE_DLG_HEIGHT, replace_default, REPLACE_DLG_WIDTH - 6, 0, "replace", replace_text), /* 10 */ QUICK_LABEL (2, REPLACE_DLG_WIDTH, 2, REPLACE_DLG_HEIGHT, N_(" Enter search string:")), /* 11 */ QUICK_INPUT (3, REPLACE_DLG_WIDTH, 3, REPLACE_DLG_HEIGHT, search_default, REPLACE_DLG_WIDTH - 6, 0, MC_HISTORY_SHARED_SEARCH, search_text), QUICK_END }; QuickDialog Quick_input = { REPLACE_DLG_WIDTH, REPLACE_DLG_HEIGHT, -1, -1, N_(" Replace "), "[Input Line Keys]", quick_widgets, FALSE }; if (quick_dialog (&Quick_input) != B_CANCEL) { edit->replace_mode = 0; } else { *replace_text = NULL; *search_text = NULL; } g_strfreev (list_of_types); } }
/** * Show dialog, not background safe. * * If the arguments "header" and "text" should be translated, * that MUST be done by the caller of fg_input_dialog_help(). * * The argument "history_name" holds the name of a section * in the history file. Data entered in the input field of * the dialog box will be stored there. * */ static char * fg_input_dialog_help (const char *header, const char *text, const char *help, const char *history_name, const char *def_text, gboolean strip_password, input_complete_t completion_flags) { char *p_text; char histname[64] = "inp|"; gboolean is_passwd = FALSE; char *my_str; int ret; /* label text */ p_text = g_strstrip (g_strdup (text)); /* input history */ if (history_name != NULL && *history_name != '\0') g_strlcpy (histname + 3, history_name, sizeof (histname) - 3); /* The special value of def_text is used to identify password boxes and hide characters with "*". Don't save passwords in history! */ if (def_text == INPUT_PASSWORD) { is_passwd = TRUE; histname[3] = '\0'; def_text = ""; } { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_LABELED_INPUT (p_text, input_label_above, def_text, histname, &my_str, NULL, is_passwd, strip_password, completion_flags), QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, COLS / 2, header, help, quick_widgets, NULL, NULL }; ret = quick_dialog (&qdlg); } g_free (p_text); return (ret != B_CANCEL) ? my_str : NULL; }
char * cd_dialog (void) { const Widget *w = WIDGET (current_panel); char *my_str; quick_widget_t quick_widgets[] = { QUICK_LABELED_INPUT (N_("cd"), input_label_left, "", "input", &my_str, NULL, FALSE, TRUE, INPUT_COMPLETE_FILENAMES | INPUT_COMPLETE_CD), QUICK_END }; quick_dialog_t qdlg = { w->y + w->lines - 6, w->x, w->cols, N_("Quick cd"), "[Quick cd]", quick_widgets, NULL, NULL }; return (quick_dialog (&qdlg) != B_CANCEL) ? my_str : NULL; }
char * cd_dialog (void) { QuickDialog Quick_input; QuickWidget quick_widgets [] = { { quick_input, 6, 57, 2, 0, "", 50, 0, 0, 0, "input" }, { quick_label, 3, 57, 2, 0, "", 0, 0, 0, 0, "label" }, NULL_QuickWidget }; char *my_str; int len; Quick_input.xlen = 57; Quick_input.title = _("Quick cd"); Quick_input.help = "[Quick cd]"; quick_widgets [0].value = 2; /* want cd like completion */ quick_widgets [1].text = _("cd"); quick_widgets [1].y_divisions = quick_widgets [0].y_divisions = Quick_input.ylen = 5; len = strlen (quick_widgets [1].text); quick_widgets [0].relative_x = quick_widgets [1].relative_x + len + 1; Quick_input.xlen = len + quick_widgets [0].hotkey_pos + 7; quick_widgets [0].x_divisions = quick_widgets [1].x_divisions = Quick_input.xlen; Quick_input.i18n = 1; Quick_input.xpos = 2; Quick_input.ypos = LINES - 2 - Quick_input.ylen; quick_widgets [0].str_result = &my_str; Quick_input.widgets = quick_widgets; if (quick_dialog (&Quick_input) != B_CANCEL){ return my_str; } else return 0; }
void appearance_box (void) { current_skin_name = g_strdup (mc_skin__default.name); skin_names = mc_skin_list (); { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_START_COLUMNS, QUICK_LABEL (N_("Skin:"), NULL), QUICK_NEXT_COLUMN, QUICK_BUTTON (str_fit_to_term (skin_name_to_label (current_skin_name), 20, J_LEFT_FIT), B_USER, sel_skin_button, NULL), QUICK_STOP_COLUMNS, QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 54, N_("Appearance"), "[Appearance]", quick_widgets, dlg_default_callback, NULL }; if (quick_dialog (&qdlg) == B_ENTER) mc_config_set_string (mc_main_config, CONFIG_APP_SECTION, "skin", current_skin_name); else skin_apply (NULL); } g_free (current_skin_name); g_ptr_array_foreach (skin_names, (GFunc) g_free, NULL); g_ptr_array_free (skin_names, TRUE); }
void panel_options_box (void) { int simple_swap; simple_swap = mc_config_get_bool (mc_main_config, CONFIG_PANELS_SECTION, "simple_swap", FALSE) ? 1 : 0; { const char *qsearch_options[] = { N_("Case &insensitive"), N_("Cas&e sensitive"), N_("Use panel sort mo&de") }; quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_START_COLUMNS, QUICK_START_GROUPBOX (N_("Main options")), QUICK_CHECKBOX (N_("Show mi&ni-status"), &panels_options.show_mini_info, NULL), QUICK_CHECKBOX (N_("Use SI si&ze units"), &panels_options.kilobyte_si, NULL), QUICK_CHECKBOX (N_("Mi&x all files"), &panels_options.mix_all_files, NULL), QUICK_CHECKBOX (N_("Show &backup files"), &panels_options.show_backups, NULL), QUICK_CHECKBOX (N_("Show &hidden files"), &panels_options.show_dot_files, NULL), QUICK_CHECKBOX (N_("&Fast dir reload"), &panels_options.fast_reload, NULL), QUICK_CHECKBOX (N_("Ma&rk moves down"), &panels_options.mark_moves_down, NULL), QUICK_CHECKBOX (N_("Re&verse files only"), &panels_options.reverse_files_only, NULL), QUICK_CHECKBOX (N_("Simple s&wap"), &simple_swap, NULL), QUICK_CHECKBOX (N_("A&uto save panels setup"), &panels_options.auto_save_setup, NULL), QUICK_SEPARATOR (FALSE), QUICK_SEPARATOR (FALSE), QUICK_STOP_GROUPBOX, QUICK_NEXT_COLUMN, QUICK_START_GROUPBOX (N_("Navigation")), QUICK_CHECKBOX (N_("L&ynx-like motion"), &panels_options.navigate_with_arrows, NULL), QUICK_CHECKBOX (N_("Pa&ge scrolling"), &panels_options.scroll_pages, NULL), QUICK_CHECKBOX (N_("&Mouse page scrolling"), &panels_options.mouse_move_pages, NULL), QUICK_STOP_GROUPBOX, QUICK_START_GROUPBOX (N_("File highlight")), QUICK_CHECKBOX (N_("File &types"), &panels_options.filetype_mode, NULL), QUICK_CHECKBOX (N_("&Permissions"), &panels_options.permission_mode, NULL), QUICK_STOP_GROUPBOX, QUICK_START_GROUPBOX (N_("Quick search")), QUICK_RADIO (QSEARCH_NUM, qsearch_options, (int *) &panels_options.qsearch_mode, NULL), QUICK_STOP_GROUPBOX, QUICK_STOP_COLUMNS, QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 60, N_("Panel options"), "[Panel options]", quick_widgets, NULL, NULL }; if (quick_dialog (&qdlg) != B_ENTER) return; } mc_config_set_bool (mc_main_config, CONFIG_PANELS_SECTION, "simple_swap", (gboolean) (simple_swap & C_BOOL)); if (!panels_options.fast_reload_msg_shown && panels_options.fast_reload) { message (D_NORMAL, _("Information"), _("Using the fast reload option may not reflect the exact\n" "directory contents. In this case you'll need to do a\n" "manual reload of the directory. See the man page for\n" "the details.")); panels_options.fast_reload_msg_shown = TRUE; } update_panels (UP_RELOAD, UP_KEEPSEL); }
void configure_vfs (void) { char buffer2[BUF_TINY]; #ifdef ENABLE_VFS_FTP char buffer3[BUF_TINY]; #endif QuickWidget confvfs_widgets[] = { /* 0 */ QUICK_BUTTON (30, VFSX, VFSY - 3, VFSY, N_("&Cancel"), B_CANCEL, NULL), /* 1 */ QUICK_BUTTON (12, VFSX, VFSY - 3, VFSY, N_("&OK"), B_ENTER, NULL), #ifdef ENABLE_VFS_FTP /* 2 */ QUICK_CHECKBOX (4, VFSX, 12, VFSY, N_("Use passive mode over pro&xy"), &ftpfs_use_passive_connections_over_proxy), /* 3 */ QUICK_CHECKBOX (4, VFSX, 11, VFSY, N_("Use &passive mode"), &ftpfs_use_passive_connections), /* 4 */ QUICK_CHECKBOX (4, VFSX, 10, VFSY, N_("&Use ~/.netrc"), &ftpfs_use_netrc), /* 5 */ QUICK_INPUT (4, VFSX, 9, VFSY, ftpfs_proxy_host, 48, 0, "input-ftp-proxy", &ret_ftp_proxy), /* 6 */ QUICK_CHECKBOX (4, VFSX, 8, VFSY, N_("&Always use ftp proxy"), &ftpfs_always_use_proxy), /* 7 */ QUICK_LABEL (49, VFSX, 7, VFSY, N_("sec")), /* 8 */ QUICK_INPUT (38, VFSX, 7, VFSY, buffer3, 10, 0, "input-timeout", &ret_directory_timeout), /* 9 */ QUICK_LABEL (4, VFSX, 7, VFSY, N_("ftpfs directory cache timeout:")), /* 10 */ QUICK_INPUT (4, VFSX, 6, VFSY, ftpfs_anonymous_passwd, 48, 0, "input-passwd", &ret_passwd), /* 11 */ QUICK_LABEL (4, VFSX, 5, VFSY, N_("ftp anonymous password:"******"sec")), /* 13 */ QUICK_INPUT (38, VFSX, 3, VFSY, buffer2, 10, 0, "input-timo-vfs", &ret_timeout), /* 14 */ QUICK_LABEL (4, VFSX, 3, VFSY, N_("Timeout for freeing VFSs:")), QUICK_END }; QuickDialog confvfs_dlg = { VFSX, VFSY, -1, -1, N_("Virtual File System Setting"), "[Virtual FS]", confvfs_widgets, #ifdef ENABLE_VFS_FTP confvfs_callback, #else NULL, #endif FALSE }; #ifdef ENABLE_VFS_FTP g_snprintf (buffer3, sizeof (buffer3), "%i", ftpfs_directory_timeout); if (!ftpfs_always_use_proxy) confvfs_widgets[5].options = W_DISABLED; #endif g_snprintf (buffer2, sizeof (buffer2), "%i", vfs_timeout); if (quick_dialog (&confvfs_dlg) != B_CANCEL) { vfs_timeout = atoi (ret_timeout); g_free (ret_timeout); if (vfs_timeout < 0 || vfs_timeout > 10000) vfs_timeout = 10; #ifdef ENABLE_VFS_FTP g_free (ftpfs_anonymous_passwd); ftpfs_anonymous_passwd = ret_passwd; g_free (ftpfs_proxy_host); ftpfs_proxy_host = ret_ftp_proxy; ftpfs_directory_timeout = atoi (ret_directory_timeout); g_free (ret_directory_timeout); #endif } #undef VFSX #undef VFSY }
void display_bits_box (void) /* AB:FIXME: test dialog */ { /* dialog sizes */ const int DISPY = 13; const int DISPX = 46; int new_meta = 0; int current_mode; const char *display_bits_str[] = { N_("UTF-8 output"), N_("Full 8 bits output"), N_("ISO 8859-1"), N_("7 bits") }; QuickWidget display_widgets[] = { /* 0 */ QUICK_BUTTON (15, DISPX, DISPY - 3, DISPY, N_("&Cancel"), B_CANCEL, NULL), /* 1 */ QUICK_BUTTON (29, DISPX, DISPY - 3, DISPY, N_("&OK"), B_ENTER, NULL), /* 2 */ QUICK_CHECKBOX (3, DISPX, 8, DISPY, N_("F&ull 8 bits input"), &new_meta), /* 3 */ QUICK_RADIO (3, DISPX, 3, DISPY, 4, display_bits_str, ¤t_mode), QUICK_END }; QuickDialog display_bits = { DISPX, DISPY, -1, -1, _("Display bits"), "[Display bits]", display_widgets, NULL, TRUE }; int i; int l1, maxlen = 0; int ok_len, cancel_len; #ifdef ENABLE_NLS static gboolean i18n_flag = FALSE; if (!i18n_flag) { for (i = 0; i < 3; i++) { display_bits_str[i] = _(display_bits_str[i]); } display_widgets[0].u.button.text = _(display_widgets[0].u.button.text); display_widgets[1].u.button.text = _(display_widgets[1].u.button.text); display_widgets[2].u.checkbox.text = _(display_widgets[2].u.checkbox.text); i18n_flag = TRUE; } #endif /* ENABLE_NLS */ /* radiobuttons */ for (i = 0; i < 3; i++) maxlen = max (maxlen, str_term_width1 (display_bits_str[i])); /* buttons */ cancel_len = str_term_width1 (display_widgets[0].u.button.text) + 2; ok_len = str_term_width1 (display_widgets[1].u.button.text) + 4; /* default button */ l1 = max (cancel_len, ok_len); display_bits.xlen = max (maxlen, l1) + 20; for (i = 0; i < 4; i++) display_widgets[i].x_divisions = display_bits.xlen; display_widgets[0].relative_x = display_bits.xlen * 2 / 3 - cancel_len / 2; display_widgets[1].relative_x = display_bits.xlen / 3 - ok_len / 2; if (full_eight_bits) current_mode = 0; else if (eight_bit_clean) current_mode = 1; else current_mode = 2; new_meta = !use_8th_bit_as_meta; if (quick_dialog (&display_bits) != B_CANCEL) { eight_bit_clean = current_mode < 3; full_eight_bits = current_mode < 2; #ifndef HAVE_SLANG meta (stdscr, eight_bit_clean); #else SLsmg_Display_Eight_Bit = full_eight_bits ? 128 : 160; #endif use_8th_bit_as_meta = !new_meta; } }
void confirm_box (void) { const char *title = _("Confirmation"); QuickWidget conf_widgets[] = { /* 0 */ QUICK_BUTTON (29, 46, 10, 13, N_("&Cancel"), B_CANCEL, NULL), /* 1 */ QUICK_BUTTON (12, 46, 10, 13, N_("&OK"), B_ENTER, NULL), /* TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix */ /* 2 */ QUICK_CHECKBOX (3, 46, 8, 13, N_("Confirmation|&History cleanup"), &confirm_history_cleanup), /* 3 */ QUICK_CHECKBOX (3, 46, 7, 13, N_("Confirmation|Di&rectory hotlist delete"), &confirm_directory_hotlist_delete), /* 4 */ QUICK_CHECKBOX (3, 46, 6, 13, N_("Confirmation|E&xit"), &confirm_exit), /* 5 */ QUICK_CHECKBOX (3, 46, 5, 13, N_("Confirmation|&Execute"), &confirm_execute), /* 6 */ QUICK_CHECKBOX (3, 46, 4, 13, N_("Confirmation|O&verwrite"), &confirm_overwrite), /* 7 */ QUICK_CHECKBOX (3, 46, 3, 13, N_("Confirmation|&Delete"), &confirm_delete), QUICK_END }; const size_t w_num = sizeof (conf_widgets) / sizeof (conf_widgets[0]) - 1; /* dialog sizes */ int dlg_width = 46; int dlg_height = w_num + 5; size_t i; int maxlen = 0; int cancel_len, ok_len, blen; #ifdef ENABLE_NLS title = _(title); for (i = 0; i < 2; i++) conf_widgets[i].u.button.text = _(conf_widgets[i].u.button.text); #endif /* ENABLE_NLS */ for (i = 2; i < w_num; i++) conf_widgets[i].u.checkbox.text = Q_ (conf_widgets[i].u.checkbox.text); /* maximum length of checkboxes */ for (i = 2; i < w_num; i++) maxlen = max (maxlen, str_term_width1 (conf_widgets[i].u.checkbox.text) + 4); /* length of buttons */ cancel_len = str_term_width1 (conf_widgets[0].u.button.text) + 3; ok_len = str_term_width1 (conf_widgets[1].u.button.text) + 5; /* default button */ blen = cancel_len + ok_len + 2; dlg_width = max (maxlen, blen) + 6; dlg_width = max (dlg_width, str_term_width1 (title) + 4); /* correct widget parameters */ for (i = 0; i < w_num; i++) { conf_widgets[i].x_divisions = dlg_width; conf_widgets[i].y_divisions = dlg_height; } conf_widgets[1].relative_x = dlg_width / 2 - blen / 2; conf_widgets[0].relative_x = conf_widgets[1].relative_x + ok_len + 2; { QuickDialog confirmation = { dlg_width, dlg_height, -1, -1, title, "[Confirmation]", conf_widgets, NULL, TRUE }; (void) quick_dialog (&confirmation); } }
const panel_field_t * sort_box (panel_sort_info_t *info) { int dlg_width = 40, dlg_height = 7; const char **sort_orders_names; gsize sort_names_num; int sort_idx = 0; const panel_field_t *result = info->sort_field; sort_orders_names = panel_get_sortable_fields (&sort_names_num); dlg_height += sort_names_num; { int max_radio = 0, max_check = 0; int ok_len, cancel_len; gsize i; QuickWidget quick_widgets[] = { /* 0 */ QUICK_BUTTON (0, dlg_width, dlg_height - 3, dlg_height, N_("&Cancel"), B_CANCEL, NULL), /* 1 */ QUICK_BUTTON (0, dlg_width, dlg_height - 3, dlg_height, N_("&OK"), B_ENTER, NULL), /* 2 */ QUICK_CHECKBOX (0, dlg_width, 5, dlg_height, N_("&Reverse"), &info->reverse), /* 3 */ QUICK_CHECKBOX (0, dlg_width, 4, dlg_height, N_("Case sensi&tive"), &info->case_sensitive), /* 4 */ QUICK_CHECKBOX (0, dlg_width, 3, dlg_height, N_("Executable &first"), &info->exec_first), /* 5 */ QUICK_RADIO (4, dlg_width, 3, dlg_height, 0, NULL, &sort_idx), QUICK_END }; QuickDialog quick_dlg = { dlg_width, dlg_height, -1, -1, N_("Sort order"), "[Sort Order...]", quick_widgets, NULL, TRUE }; quick_widgets[5].u.radio.items = sort_orders_names; quick_widgets[5].u.radio.count = sort_names_num; for (i = 0; i < sort_names_num; i++) if (strcmp (sort_orders_names[i], _(info->sort_field->title_hotkey)) == 0) { sort_idx = i; break; } #ifdef ENABLE_NLS quick_dlg.title = _(quick_dlg.title); /* buttons */ for (i = 0; i < 2; i++) quick_widgets[i].u.button.text = _(quick_widgets[i].u.button.text); /* checkboxes */ for (i = 2; i < 5; i++) quick_widgets[i].u.checkbox.text = _(quick_widgets[i].u.checkbox.text); #endif /* ENABLE_NlS */ /* buttons */ cancel_len = str_term_width1 (quick_widgets[0].u.button.text) + 4; ok_len = str_term_width1 (quick_widgets[1].u.button.text) + 6; /* checkboxes */ for (i = 2; i < 5; i++) max_check = max (max_check, str_term_width1 (quick_widgets[i].u.checkbox.text) + 4); /* radiobuttons */ for (i = 0; i < sort_names_num; i++) max_radio = max (max_radio, str_term_width1 (sort_orders_names[i]) + 4); /* dialog width */ dlg_width = max (dlg_width, str_term_width1 (quick_dlg.title) + 8); dlg_width = max (dlg_width, ok_len + cancel_len + 8); dlg_width = max (dlg_width, 2 * max (max_radio, max_check) + 8); /* fix widget and dialog parameters */ /* dialog */ quick_dlg.xlen = dlg_width; /* widgets */ for (i = 0; (size_t) i < sizeof (quick_widgets) / sizeof (quick_widgets[0]) - 1; i++) quick_widgets[i].x_divisions = dlg_width; /* buttons */ quick_widgets[0].relative_x = dlg_width * 2 / 3 - cancel_len / 2; quick_widgets[1].relative_x = dlg_width / 3 - ok_len / 2; /* checkboxes */ for (i = 2; i < 5; i++) quick_widgets[i].relative_x = dlg_width / 2 + 2; if (quick_dialog (&quick_dlg) != B_CANCEL) result = panel_get_field_by_title_hotkey (sort_orders_names[sort_idx]); if (result == NULL) result = info->sort_field; } g_strfreev ((gchar **) sort_orders_names); return result; }
/** * Show dialog, not background safe. * * If the arguments "header" and "text" should be translated, * that MUST be done by the caller of fg_input_dialog_help(). * * The argument "history_name" holds the name of a section * in the history file. Data entered in the input field of * the dialog box will be stored there. * */ static char * fg_input_dialog_help (const char *header, const char *text, const char *help, const char *history_name, const char *def_text, gboolean strip_password) { char *my_str; int flags = (strip_password) ? 4 : 0; QuickWidget quick_widgets[] = { /* 0 */ QUICK_BUTTON (6, 64, 1, 0, N_("&Cancel"), B_CANCEL, NULL), /* 1 */ QUICK_BUTTON (3, 64, 1, 0, N_("&OK"), B_ENTER, NULL), /* 2 */ QUICK_INPUT (3, 64, 0, 0, def_text, 58, flags, NULL, &my_str), /* 3 */ QUICK_LABEL (3, 64, 2, 0, ""), QUICK_END }; int b0_len, b1_len, b_len, gap; char histname[64] = "inp|"; int lines, cols; int len; int i; char *p_text; int ret; /* buttons */ #ifdef ENABLE_NLS quick_widgets[0].u.button.text = _(quick_widgets[0].u.button.text); quick_widgets[1].u.button.text = _(quick_widgets[1].u.button.text); #endif /* ENABLE_NLS */ b0_len = str_term_width1 (quick_widgets[0].u.button.text) + 3; b1_len = str_term_width1 (quick_widgets[1].u.button.text) + 5; /* default button */ b_len = b0_len + b1_len + 2; /* including gap */ /* input line */ if (history_name != NULL && *history_name != '\0') { g_strlcpy (histname + 3, history_name, sizeof (histname) - 3); quick_widgets[2].u.input.histname = histname; } /* The special value of def_text is used to identify password boxes and hide characters with "*". Don't save passwords in history! */ if (def_text == INPUT_PASSWORD) { quick_widgets[2].u.input.flags = 1; histname[3] = '\0'; quick_widgets[2].u.input.text = ""; } /* text */ p_text = g_strstrip (g_strdup (text)); str_msg_term_size (p_text, &lines, &cols); quick_widgets[3].u.label.text = p_text; /* dialog width */ len = str_term_width1 (header); len = max (max (len, cols) + 4, 64); len = min (max (len, b_len + 6), COLS); /* button locations */ gap = (len - 8 - b_len) / 3; quick_widgets[1].relative_x = 3 + gap; quick_widgets[0].relative_x = quick_widgets[1].relative_x + b1_len + gap + 2; { QuickDialog Quick_input = { len, lines + 6, -1, -1, header, help, quick_widgets, NULL, TRUE }; for (i = 0; i < 4; i++) { quick_widgets[i].x_divisions = Quick_input.xlen; quick_widgets[i].y_divisions = Quick_input.ylen; } for (i = 0; i < 3; i++) quick_widgets[i].relative_y += 2 + lines; /* input line length */ quick_widgets[2].u.input.len = Quick_input.xlen - 6; ret = quick_dialog (&Quick_input); } g_free (p_text); return (ret != B_CANCEL) ? my_str : NULL; }
gboolean editcmd_dialog_search_show (WEdit * edit) { char *search_text; size_t num_of_types; gchar **list_of_types; int dialog_result; list_of_types = mc_search_get_types_strings_array (&num_of_types); { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_LABELED_INPUT (N_("Enter search string:"), input_label_above, INPUT_LAST_TEXT, MC_HISTORY_SHARED_SEARCH, &search_text, NULL, FALSE, FALSE, INPUT_COMPLETE_NONE), QUICK_SEPARATOR (TRUE), QUICK_START_COLUMNS, QUICK_RADIO (num_of_types, (const char **) list_of_types, (int *) &edit_search_options.type, NULL), QUICK_NEXT_COLUMN, QUICK_CHECKBOX (N_("Cas&e sensitive"), &edit_search_options.case_sens, NULL), QUICK_CHECKBOX (N_("&Backwards"), &edit_search_options.backwards, NULL), QUICK_CHECKBOX (N_("In se&lection"), &edit_search_options.only_in_selection, NULL), QUICK_CHECKBOX (N_("&Whole words"), &edit_search_options.whole_words, NULL), #ifdef HAVE_CHARSET QUICK_CHECKBOX (N_("&All charsets"), &edit_search_options.all_codepages, NULL), #endif QUICK_STOP_COLUMNS, QUICK_START_BUTTONS (TRUE, TRUE), QUICK_BUTTON (N_("&OK"), B_ENTER, NULL, NULL), QUICK_BUTTON (N_("&Find all"), B_USER, NULL, NULL), QUICK_BUTTON (N_("&Cancel"), B_CANCEL, NULL, NULL), QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 58, N_("Search"), "[Input Line Keys]", quick_widgets, NULL, NULL }; dialog_result = quick_dialog (&qdlg); } g_strfreev (list_of_types); if ((dialog_result == B_CANCEL) || (search_text == NULL) || (search_text[0] == '\0')) { g_free (search_text); return FALSE; } if (dialog_result == B_USER) search_create_bookmark = TRUE; #ifdef HAVE_CHARSET { GString *tmp; tmp = str_convert_to_input (search_text); if (tmp != NULL) { g_free (search_text); search_text = g_string_free (tmp, FALSE); } } #endif g_free (edit->last_search_string); edit->last_search_string = search_text; mc_search_free (edit->search); #ifdef HAVE_CHARSET edit->search = mc_search_new (edit->last_search_string, cp_source); #else edit->search = mc_search_new (edit->last_search_string, NULL); #endif if (edit->search != NULL) { edit->search->search_type = edit_search_options.type; #ifdef HAVE_CHARSET edit->search->is_all_charsets = edit_search_options.all_codepages; #endif edit->search->is_case_sensitive = edit_search_options.case_sens; edit->search->whole_words = edit_search_options.whole_words; edit->search->search_fn = edit_search_cmd_callback; edit->search->update_fn = edit_search_update_callback; } return (edit->search != NULL); }
/* return list type */ int panel_listing_box (WPanel * panel, int num, char **userp, char **minip, int *use_msformat, int *brief_cols) { int result = -1; char *section = NULL; if (panel == NULL) { const char *p; size_t i; p = get_nth_panel_name (num); panel = g_new (WPanel, 1); panel->list_type = list_full; panel->user_format = g_strdup (DEFAULT_USER_FORMAT); panel->user_mini_status = 0; for (i = 0; i < LIST_TYPES; i++) panel->user_status_format[i] = g_strdup (DEFAULT_USER_FORMAT); section = g_strconcat ("Temporal:", p, (char *) NULL); if (!mc_config_has_group (mc_main_config, section)) { g_free (section); section = g_strdup (p); } panel_load_setup (panel, section); g_free (section); } { int mini_user_status; char panel_brief_cols_in[BUF_TINY]; char *panel_brief_cols_out = NULL; char *panel_user_format = NULL; char *mini_user_format = NULL; const char *cp; /* Controls whether the array strings have been translated */ const char *list_types[LIST_TYPES] = { N_("&Full file list"), N_("&Brief file list:"), N_("&Long file list"), N_("&User defined:") }; quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_START_COLUMNS, QUICK_RADIO (LIST_TYPES, list_types, &result, &panel_listing_types_id), QUICK_NEXT_COLUMN, QUICK_SEPARATOR (FALSE), QUICK_LABELED_INPUT (_ ("columns"), input_label_right, panel_brief_cols_in, "panel-brief-cols-input", &panel_brief_cols_out, &panel_brief_cols_id, FALSE, FALSE, INPUT_COMPLETE_NONE), QUICK_STOP_COLUMNS, QUICK_INPUT (panel->user_format, "user-fmt-input", &panel_user_format, &panel_user_format_id, FALSE, FALSE, INPUT_COMPLETE_NONE), QUICK_SEPARATOR (TRUE), QUICK_CHECKBOX (N_("User &mini status"), &mini_user_status, &mini_user_status_id), QUICK_INPUT (panel->user_status_format[panel->list_type], "mini_input", &mini_user_format, &mini_user_format_id, FALSE, FALSE, INPUT_COMPLETE_NONE), QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 48, N_("Listing mode"), "[Listing Mode...]", quick_widgets, panel_listing_callback, NULL }; /* get hotkey of user-defined format string */ cp = strchr (_(list_types[panel_listing_user_idx]), '&'); if (cp != NULL && *++cp != '\0') listing_user_hotkey = g_ascii_tolower (*cp); mini_user_status = panel->user_mini_status; result = panel->list_type; status_format = panel->user_status_format; g_snprintf (panel_brief_cols_in, sizeof (panel_brief_cols_in), "%d", panel->brief_cols); if ((int) panel->list_type != panel_listing_brief_idx) quick_widgets[4].options = W_DISABLED; if ((int) panel->list_type != panel_listing_user_idx) quick_widgets[6].options = W_DISABLED; if (!mini_user_status) quick_widgets[9].options = W_DISABLED; if (quick_dialog (&qdlg) == B_CANCEL) result = -1; else { int cols; char *error = NULL; *userp = panel_user_format; *minip = mini_user_format; *use_msformat = mini_user_status; cols = strtol (panel_brief_cols_out, &error, 10); if (*error == '\0') *brief_cols = cols; else *brief_cols = panel->brief_cols; g_free (panel_brief_cols_out); } } if (section != NULL) { int i; g_free (panel->user_format); for (i = 0; i < LIST_TYPES; i++) g_free (panel->user_status_format[i]); g_free (panel); } return result; }
gboolean mcview_dialog_goto (WView * view, off_t * offset) { typedef enum { MC_VIEW_GOTO_LINENUM = 0, MC_VIEW_GOTO_PERCENT = 1, MC_VIEW_GOTO_OFFSET_DEC = 2, MC_VIEW_GOTO_OFFSET_HEX = 3 } mcview_goto_type_t; const char *mc_view_goto_str[] = { N_("&Line number"), N_("Pe&rcents"), N_("&Decimal offset"), N_("He&xadecimal offset") }; static mcview_goto_type_t current_goto_type = MC_VIEW_GOTO_LINENUM; size_t num_of_types; char *exp = NULL; int qd_result; gboolean res; num_of_types = G_N_ELEMENTS (mc_view_goto_str); #ifdef ENABLE_NLS { size_t i; for (i = 0; i < num_of_types; i++) mc_view_goto_str[i] = _(mc_view_goto_str[i]); } #endif { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_INPUT (INPUT_LAST_TEXT, MC_HISTORY_VIEW_GOTO, &exp, NULL, FALSE, FALSE, INPUT_COMPLETE_NONE), QUICK_RADIO (num_of_types, (const char **) mc_view_goto_str, (int *) ¤t_goto_type, NULL), QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 40, N_("Goto"), "[Input Line Keys]", quick_widgets, NULL, NULL }; /* run dialog */ qd_result = quick_dialog (&qdlg); } *offset = -1; /* check input line value */ res = (qd_result != B_CANCEL && exp != NULL && exp[0] != '\0'); if (res) { int base = (current_goto_type == MC_VIEW_GOTO_OFFSET_HEX) ? 16 : 10; off_t addr; char *error; addr = (off_t) g_ascii_strtoll (exp, &error, base); if ((*error == '\0') && (addr >= 0)) { switch (current_goto_type) { case MC_VIEW_GOTO_LINENUM: /* Line number entered by user is 1-based. */ if (addr > 0) addr--; mcview_coord_to_offset (view, offset, addr, 0); *offset = mcview_bol (view, *offset, 0); break; case MC_VIEW_GOTO_PERCENT: if (addr > 100) addr = 100; /* read all data from pipe to get real size */ if (view->growbuf_in_use) mcview_growbuf_read_all_data (view); *offset = addr * mcview_get_filesize (view) / 100; if (!view->mode_flags.hex) *offset = mcview_bol (view, *offset, 0); break; case MC_VIEW_GOTO_OFFSET_DEC: case MC_VIEW_GOTO_OFFSET_HEX: if (!view->mode_flags.hex) { if (view->growbuf_in_use) mcview_growbuf_read_until (view, addr); *offset = mcview_bol (view, addr, 0); } else { /* read all data from pipe to get real size */ if (view->growbuf_in_use) mcview_growbuf_read_all_data (view); *offset = addr; addr = mcview_get_filesize (view); if (*offset > addr) *offset = addr; } break; default: *offset = 0; break; } } } g_free (exp); return res; }
gboolean mcview_dialog_search (mcview_t * view) { int SEARCH_DLG_MIN_HEIGHT = 12; int SEARCH_DLG_HEIGHT_SUPPLY = 3; int SEARCH_DLG_WIDTH = 58; char *exp = NULL; int qd_result; size_t num_of_types; gchar **list_of_types = mc_search_get_types_strings_array (&num_of_types); int SEARCH_DLG_HEIGHT = SEARCH_DLG_MIN_HEIGHT + num_of_types - SEARCH_DLG_HEIGHT_SUPPLY; QuickWidget quick_widgets[] = { QUICK_BUTTON (6, 10, SEARCH_DLG_HEIGHT - 3, SEARCH_DLG_HEIGHT, N_("&Cancel"), B_CANCEL, NULL), QUICK_BUTTON (2, 10, SEARCH_DLG_HEIGHT - 3, SEARCH_DLG_HEIGHT, N_("&OK"), B_ENTER, NULL), #ifdef HAVE_CHARSET QUICK_CHECKBOX (SEARCH_DLG_WIDTH / 2 + 3, SEARCH_DLG_WIDTH, 8, SEARCH_DLG_HEIGHT, N_("&All charsets"), &mcview_search_options.all_codepages), #endif QUICK_CHECKBOX (SEARCH_DLG_WIDTH / 2 + 3, SEARCH_DLG_WIDTH, 7, SEARCH_DLG_HEIGHT, N_("&Whole words"), &mcview_search_options.whole_words), QUICK_CHECKBOX (SEARCH_DLG_WIDTH / 2 + 3, SEARCH_DLG_WIDTH, 6, SEARCH_DLG_HEIGHT, N_("&Backwards"), &mcview_search_options.backwards), QUICK_CHECKBOX (SEARCH_DLG_WIDTH / 2 + 3, SEARCH_DLG_WIDTH, 5, SEARCH_DLG_HEIGHT, N_("Cas&e sensitive"), &mcview_search_options.case_sens), QUICK_RADIO (3, SEARCH_DLG_WIDTH, 5, SEARCH_DLG_HEIGHT, num_of_types, (const char **) list_of_types, (int *) &mcview_search_options.type), QUICK_INPUT (3, SEARCH_DLG_WIDTH, 3, SEARCH_DLG_HEIGHT, INPUT_LAST_TEXT, SEARCH_DLG_WIDTH - 6, 0, MC_HISTORY_SHARED_SEARCH, &exp), QUICK_LABEL (3, SEARCH_DLG_WIDTH, 2, SEARCH_DLG_HEIGHT, N_("Enter search string:")), QUICK_END }; QuickDialog Quick_input = { SEARCH_DLG_WIDTH, SEARCH_DLG_HEIGHT, -1, -1, N_("Search"), "[Input Line Keys]", quick_widgets, NULL, NULL, FALSE }; qd_result = quick_dialog (&Quick_input); g_strfreev (list_of_types); if ((qd_result == B_CANCEL) || (exp == NULL) || (exp[0] == '\0')) { g_free (exp); return FALSE; } #ifdef HAVE_CHARSET { GString *tmp = str_convert_to_input (exp); if (tmp) { g_free (exp); exp = g_string_free (tmp, FALSE); } } #endif g_free (view->last_search_string); view->last_search_string = exp; mcview_nroff_seq_free (&view->search_nroff_seq); mc_search_free (view->search); view->search = mc_search_new (view->last_search_string, -1); view->search_nroff_seq = mcview_nroff_seq_new (view); if (view->search != NULL) { view->search->search_type = mcview_search_options.type; view->search->is_all_charsets = mcview_search_options.all_codepages; view->search->is_case_sensitive = mcview_search_options.case_sens; view->search->whole_words = mcview_search_options.whole_words; view->search->search_fn = mcview_search_cmd_callback; view->search->update_fn = mcview_search_update_cmd_callback; } return (view->search != NULL); }
gboolean mcview_dialog_search (WView * view) { char *exp = NULL; int qd_result; size_t num_of_types = 0; gchar **list_of_types; list_of_types = mc_search_get_types_strings_array (&num_of_types); { quick_widget_t quick_widgets[] = { /* *INDENT-OFF* */ QUICK_LABELED_INPUT (N_("Enter search string:"), input_label_above, INPUT_LAST_TEXT, MC_HISTORY_SHARED_SEARCH, &exp, NULL, FALSE, FALSE, INPUT_COMPLETE_NONE), QUICK_SEPARATOR (TRUE), QUICK_START_COLUMNS, QUICK_RADIO (num_of_types, (const char **) list_of_types, (int *) &mcview_search_options.type, NULL), QUICK_NEXT_COLUMN, QUICK_CHECKBOX (N_("Cas&e sensitive"), &mcview_search_options.case_sens, NULL), QUICK_CHECKBOX (N_("&Backwards"), &mcview_search_options.backwards, NULL), QUICK_CHECKBOX (N_("&Whole words"), &mcview_search_options.whole_words, NULL), #ifdef HAVE_CHARSET QUICK_CHECKBOX (N_("&All charsets"), &mcview_search_options.all_codepages, NULL), #endif QUICK_STOP_COLUMNS, QUICK_BUTTONS_OK_CANCEL, QUICK_END /* *INDENT-ON* */ }; quick_dialog_t qdlg = { -1, -1, 58, N_("Search"), "[Input Line Keys]", quick_widgets, NULL, NULL }; qd_result = quick_dialog (&qdlg); } g_strfreev (list_of_types); if ((qd_result == B_CANCEL) || (exp == NULL) || (exp[0] == '\0')) { g_free (exp); return FALSE; } #ifdef HAVE_CHARSET { GString *tmp; tmp = str_convert_to_input (exp); g_free (exp); exp = g_string_free (tmp, FALSE); } #endif g_free (view->last_search_string); view->last_search_string = exp; mcview_nroff_seq_free (&view->search_nroff_seq); mc_search_free (view->search); #ifdef HAVE_CHARSET view->search = mc_search_new (view->last_search_string, cp_source); #else view->search = mc_search_new (view->last_search_string, NULL); #endif view->search_nroff_seq = mcview_nroff_seq_new (view); if (view->search != NULL) { view->search->search_type = mcview_search_options.type; #ifdef HAVE_CHARSET view->search->is_all_charsets = mcview_search_options.all_codepages; #endif view->search->is_case_sensitive = mcview_search_options.case_sens; view->search->whole_words = mcview_search_options.whole_words; view->search->search_fn = mcview_search_cmd_callback; view->search->update_fn = mcview_search_update_cmd_callback; } return (view->search != NULL); }
gboolean mcview_dialog_goto (mcview_t * view, off_t * offset) { typedef enum { MC_VIEW_GOTO_LINENUM = 0, MC_VIEW_GOTO_PERCENT = 1, MC_VIEW_GOTO_OFFSET_DEC = 2, MC_VIEW_GOTO_OFFSET_HEX = 3 } mcview_goto_type_t; const char *mc_view_goto_str[] = { N_("&Line number (decimal)"), N_("Pe&rcents"), N_("&Decimal offset"), N_("He&xadecimal offset") }; const int goto_dlg_height = 12; int goto_dlg_width = 40; static mcview_goto_type_t current_goto_type = MC_VIEW_GOTO_LINENUM; size_t i; size_t num_of_types = sizeof (mc_view_goto_str) / sizeof (mc_view_goto_str[0]); char *exp = NULL; int qd_result; gboolean res = FALSE; QuickWidget quick_widgets[] = { QUICK_BUTTON (6, 10, goto_dlg_height - 3, goto_dlg_height, N_("&Cancel"), B_CANCEL, NULL), QUICK_BUTTON (2, 10, goto_dlg_height - 3, goto_dlg_height, N_("&OK"), B_ENTER, NULL), QUICK_RADIO (3, goto_dlg_width, 4, goto_dlg_height, num_of_types, (const char **) mc_view_goto_str, (int *) ¤t_goto_type), QUICK_INPUT (3, goto_dlg_width, 2, goto_dlg_height, INPUT_LAST_TEXT, goto_dlg_width - 6, 0, MC_HISTORY_VIEW_GOTO, &exp), QUICK_END }; QuickDialog Quick_input = { goto_dlg_width, goto_dlg_height, -1, -1, N_("Goto"), "[Input Line Keys]", quick_widgets, NULL, NULL, FALSE }; #ifdef ENABLE_NLS for (i = 0; i < num_of_types; i++) mc_view_goto_str[i] = _(mc_view_goto_str[i]); quick_widgets[0].u.button.text = _(quick_widgets[0].u.button.text); quick_widgets[1].u.button.text = _(quick_widgets[1].u.button.text); #endif /* calculate widget coordinates */ { int b0_len, b1_len, len; const int button_gap = 2; /* preliminary dialog width */ goto_dlg_width = max (goto_dlg_width, str_term_width1 (Quick_input.title) + 4); /* length of radiobuttons */ for (i = 0; i < num_of_types; i++) goto_dlg_width = max (goto_dlg_width, str_term_width1 (mc_view_goto_str[i]) + 10); /* length of buttons */ b0_len = str_term_width1 (quick_widgets[0].u.button.text) + 3; b1_len = str_term_width1 (quick_widgets[1].u.button.text) + 5; /* default button */ len = b0_len + b1_len + button_gap * 2; /* dialog width */ Quick_input.xlen = max (goto_dlg_width, len + 6); /* correct widget coordinates */ for (i = sizeof (quick_widgets) / sizeof (quick_widgets[0]); i > 0; i--) quick_widgets[i - 1].x_divisions = Quick_input.xlen; /* input length */ quick_widgets[3].u.input.len = Quick_input.xlen - 6; /* button positions */ quick_widgets[1].relative_x = Quick_input.xlen / 2 - len / 2; quick_widgets[0].relative_x = quick_widgets[1].relative_x + b1_len + button_gap; } /* run dialog */ qd_result = quick_dialog (&Quick_input); *offset = -1; /* check input line value */ if ((qd_result != B_CANCEL) && (exp != NULL) && (exp[0] != '\0')) { int base = (current_goto_type == MC_VIEW_GOTO_OFFSET_HEX) ? 16 : 10; off_t addr; char *error; res = TRUE; addr = strtoll (exp, &error, base); if ((*error == '\0') && (addr >= 0)) { switch (current_goto_type) { case MC_VIEW_GOTO_LINENUM: mcview_coord_to_offset (view, offset, addr, 0); *offset = mcview_bol (view, *offset, 0); break; case MC_VIEW_GOTO_PERCENT: if (addr > 100) addr = 100; *offset = addr * mcview_get_filesize (view) / 100; if (!view->hex_mode) *offset = mcview_bol (view, *offset, 0); break; case MC_VIEW_GOTO_OFFSET_DEC: case MC_VIEW_GOTO_OFFSET_HEX: *offset = addr; if (!view->hex_mode) *offset = mcview_bol (view, *offset, 0); else { addr = mcview_get_filesize (view); if (*offset > addr) *offset = addr; } break; default: *offset = 0; break; } } } g_free (exp); return res; }