diff --git a/edit/editcmd.c b/edit/editcmd.c index 6638e66c1..92f8b30fc 100644 --- a/edit/editcmd.c +++ b/edit/editcmd.c @@ -58,9 +58,6 @@ #include "../src/charsets.h" #include "../src/selcodepage.h" -#define edit_get_load_file(f,h) input_expand_dialog (h, _(" Enter file name: "), f) -#define edit_get_save_file(f,h) input_expand_dialog (h, _(" Enter file name: "), f) - struct selection { unsigned char * text; int len; @@ -525,7 +522,8 @@ edit_save_as_cmd (WEdit *edit) int save_lock = 0; int different_filename = 0; - exp = edit_get_save_file (edit->filename, _(" Save As ")); + exp = input_expand_dialog (_(" Save As "), _(" Enter file name: "), + ":edit_save_as_cmd: Save As ", edit->filename); edit_push_action (edit, KEY_PRESS + edit->start_display); if (exp) { @@ -907,7 +905,8 @@ edit_load_cmd (WEdit *edit) } } - exp = edit_get_load_file (edit->filename, _(" Load ")); + exp = input_expand_dialog (_(" Load "), _(" Enter file name: "), + ":edit_load_cmd: Load ", edit->filename); if (exp) { if (*exp) @@ -2338,7 +2337,8 @@ edit_goto_cmd (WEdit *edit) char s[32]; g_snprintf (s, sizeof (s), "%ld", line); - f = input_dialog (_(" Goto line "), _(" Enter line: "), line ? s : ""); + f = input_dialog (_(" Goto line "), _(" Enter line: "), ":edit_goto_cmd: Goto line ", + line ? s : ""); if (!f) return; @@ -2372,8 +2372,9 @@ edit_save_block_cmd (WEdit *edit) if (eval_marks (edit, &start_mark, &end_mark)) return 1; exp = - edit_get_save_file (catstrs (home_dir, PATH_SEP_STR CLIP_FILE, (char *) NULL), - _(" Save Block ")); + input_expand_dialog (_(" Save Block "), _(" Enter file name: "), + ":edit_save_block_cmd: Save Block ", + catstrs (home_dir, PATH_SEP_STR CLIP_FILE, (char *) NULL)); edit_push_action (edit, KEY_PRESS + edit->start_display); if (exp) { if (!*exp) { @@ -2401,8 +2402,9 @@ edit_save_block_cmd (WEdit *edit) int edit_insert_file_cmd (WEdit *edit) { - char *exp = edit_get_load_file (catstrs (home_dir, PATH_SEP_STR CLIP_FILE, (char *) NULL), - _(" Insert File ")); + char *exp = input_expand_dialog (_(" Insert File "), _(" Enter file name: "), + ":edit_insert_file_cmd: Insert File ", + catstrs (home_dir, PATH_SEP_STR CLIP_FILE, (char *) NULL)); edit_push_action (edit, KEY_PRESS + edit->start_display); if (exp) { if (!*exp) { @@ -2441,7 +2443,7 @@ int edit_sort_cmd (WEdit * edit) exp = input_dialog (_(" Run Sort "), _(" Enter sort options (see manpage) separated by whitespace: "), - (old != NULL) ? old : ""); + ":edit_sort_cmd: Run Sort ", (old != NULL) ? old : ""); if (!exp) return 1; @@ -2482,7 +2484,8 @@ edit_ext_cmd (WEdit *edit) exp = input_dialog (_("Paste output of external command"), - _("Enter shell command(s):"), NULL); + _("Enter shell command(s):"), + ":edit_ext_cmd: Paste output of ext.cmd ", NULL); if (!exp) return 1; diff --git a/src/cmd.c b/src/cmd.c index fca281651..50069445e 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -229,7 +229,7 @@ view_file_cmd (void) filename = input_expand_dialog (_(" View file "), _(" Filename:"), - selection (current_panel)->fname); + ":view_file_cmd: View file ", selection (current_panel)->fname); if (!filename) return; @@ -252,6 +252,7 @@ filtered_view_cmd (void) command = input_dialog (_(" Filtered view "), _(" Filter command and arguments:"), + ":filtered_view_cmd: Filtered view ", selection (current_panel)->fname); if (!command) return; @@ -350,7 +351,8 @@ mkdir_cmd (void) dir = input_expand_dialog (_("Create a new Directory"), - _(" Enter directory name:"), ""); + _(" Enter directory name:"), + ":mkdir_cmd: Create a new Directory", ""); if (!dir) return; @@ -422,7 +424,7 @@ set_panel_filter (WPanel *p) reg_exp = input_dialog_help (_(" Filter "), _(" Set expression for filtering filenames"), - "[Filter...]", x); + "[Filter...]", ":set_panel_filter: Filter ", x); if (!reg_exp) return; set_panel_filter_to (p, reg_exp); @@ -468,14 +470,14 @@ void reverse_selection_cmd (void) } static void -select_unselect_cmd (const char *title, int cmd) +select_unselect_cmd (const char *title, const char *history_name, int cmd) { char *reg_exp, *reg_exp_t; int i; int c; int dirflag = 0; - reg_exp = input_dialog (title, "", easy_patterns ? "*" : "."); + reg_exp = input_dialog (title, "", history_name, easy_patterns ? "*" : "."); if (!reg_exp) return; if (!*reg_exp) { @@ -521,12 +523,12 @@ select_unselect_cmd (const char *title, int cmd) void select_cmd (void) { - select_unselect_cmd (_(" Select "), 1); + select_unselect_cmd (_(" Select "), ":select_cmd: Select ", 1); } void unselect_cmd (void) { - select_unselect_cmd (_(" Unselect "), 0); + select_unselect_cmd (_(" Unselect "), ":unselect_cmd: Unselect ", 0); } /* Check if the file exists */ @@ -903,7 +905,7 @@ do_link (int symbolic_link, const char *fname) if (!symbolic_link) { src = g_strdup_printf (_("Link %s to:"), name_trunc (fname, 46)); - dest = input_expand_dialog (_(" Link "), src, ""); + dest = input_expand_dialog (_(" Link "), src, ":do_link: Link ", ""); if (!dest || !*dest) goto cleanup; save_cwds_stat (); @@ -972,7 +974,7 @@ void edit_symlink_cmd (void) i = readlink (p, buffer, MC_MAXPATHLEN - 1); if (i > 0) { buffer [i] = 0; - dest = input_expand_dialog (_(" Edit symlink "), q, buffer); + dest = input_expand_dialog (_(" Edit symlink "), q, ":edit_symlink_cmd: Edit symlink ", buffer); if (dest) { if (*dest && strcmp (buffer, dest)) { save_cwds_stat (); @@ -1085,7 +1087,8 @@ get_random_hint (int force) #if defined(USE_NETCODE) || defined(USE_EXT2FSLIB) static void -nice_cd (const char *text, const char *xtext, const char *help, const char *prefix, int to_home) +nice_cd (const char *text, const char *xtext, const char *help, + const char *history_name, const char *prefix, int to_home) { char *machine; char *cd_path; @@ -1093,9 +1096,7 @@ nice_cd (const char *text, const char *xtext, const char *help, const char *pref if (!SELECTED_IS_PANEL) return; - machine = input_dialog_help (text, - xtext, - help, ""); + machine = input_dialog_help (text, xtext, help, history_name, ""); if (!machine) return; @@ -1125,27 +1126,30 @@ static const char *machine_str = N_(" Enter machine name (F1 for details): "); void netlink_cmd (void) { nice_cd (_(" Link to a remote machine "), _(machine_str), - "[Network File System]", "/#mc:", 1); + "[Network File System]", ":netlink_cmd: Link to a remote ", + "/#mc:", 1); } #endif /* WITH_MCFS */ void ftplink_cmd (void) { nice_cd (_(" FTP to machine "), _(machine_str), - "[FTP File System]", "/#ftp:", 1); + "[FTP File System]", ":ftplink_cmd: FTP to machine ", "/#ftp:", 1); } void fishlink_cmd (void) { nice_cd (_(" Shell link to machine "), _(machine_str), - "[FIle transfer over SHell filesystem]", "/#sh:", 1); + "[FIle transfer over SHell filesystem]", ":fishlink_cmd: Shell link to machine ", + "/#sh:", 1); } #ifdef WITH_SMBFS void smblink_cmd (void) { nice_cd (_(" SMB link to machine "), _(machine_str), - "[SMB File System]", "/#smb:", 0); + "[SMB File System]", ":smblink_cmd: SMB link to machine ", + "/#smb:", 0); } #endif /* WITH_SMBFS */ #endif /* USE_NETCODE */ @@ -1156,7 +1160,8 @@ void undelete_cmd (void) nice_cd (_(" Undelete files on an ext2 file system "), _(" Enter device (without /dev/) to undelete\n " " files on: (F1 for details)"), - "[Undelete File System]", "/#undel:", 0); + "[Undelete File System]", ":undelete_cmd: Undel on ext2 fs ", + "/#undel:", 0); } #endif /* USE_EXT2FSLIB */ diff --git a/src/ext.c b/src/ext.c index 8e64d2ce5..735856c77 100644 --- a/src/ext.c +++ b/src/ext.c @@ -114,7 +114,7 @@ exec_extension (const char *filename, const char *data, int *move_dir, if (*data == '}') { char *parameter; parameter_found = 0; - parameter = input_dialog (_(" Parameter "), prompt, ""); + parameter = input_dialog (_(" Parameter "), prompt, ":exec_extension: Parameter ", ""); if (!parameter) { /* User canceled */ fclose (cmd_file); diff --git a/src/hotlist.c b/src/hotlist.c index 24dd982b2..ff09a4202 100644 --- a/src/hotlist.c +++ b/src/hotlist.c @@ -1042,7 +1042,7 @@ void add2hotlist_cmd (void) strip_password (label_string, 1); prompt = g_strdup_printf (cp, path_trunc (current_panel->cwd, COLS-2*UX-(l+8))); - label = input_dialog (_(" Add to hotlist "), prompt, label_string); + label = input_dialog (_(" Add to hotlist "), prompt, ":add2hotlist_cmd: Add to hotlist ", label_string); g_free (prompt); if (!label || !*label) { diff --git a/src/panelize.c b/src/panelize.c index c2d212189..10b0abffd 100644 --- a/src/panelize.c +++ b/src/panelize.c @@ -226,6 +226,7 @@ add2panelize_cmd (void) if (pname->buffer && (*pname->buffer)) { label = input_dialog (_(" Add to external panelize "), _(" Enter command label: "), + ":add2panelize_cmd: Add to external panelize ", ""); if (!label) return; diff --git a/src/tree.c b/src/tree.c index 132d170cf..51a4ea347 100644 --- a/src/tree.c +++ b/src/tree.c @@ -598,7 +598,7 @@ static void tree_copy (WTree *tree, const char *default_dest) return; g_snprintf (cmd_buf, sizeof(cmd_buf), _("Copy \"%s\" directory to:"), name_trunc (tree->selected_ptr->name, 50)); - dest = input_expand_dialog (_(" Copy "), cmd_buf, default_dest); + dest = input_expand_dialog (_(" Copy "), cmd_buf, ":tree_copy: Copy ", default_dest); if (!dest) return; @@ -641,7 +641,7 @@ static void tree_move (WTree *tree, const char *default_dest) return; g_snprintf (cmd_buf, sizeof (cmd_buf), _("Move \"%s\" directory to:"), name_trunc (tree->selected_ptr->name, 50)); - dest = input_expand_dialog (_(" Move "), cmd_buf, default_dest); + dest = input_expand_dialog (_(" Move "), cmd_buf, ":tree_move: Move ", default_dest); if (!dest) return; if (!*dest){ diff --git a/src/user.c b/src/user.c index 01022aa97..cc94bf264 100644 --- a/src/user.c +++ b/src/user.c @@ -604,7 +604,7 @@ execute_menu_command (WEdit *edit_widget, const char *commands) if (*commands == '}'){ char *tmp; *parameter = 0; - parameter = input_dialog (_(" Parameter "), prompt, ""); + parameter = input_dialog (_(" Parameter "), prompt, ":execute_menu_command: Parameter ", ""); if (!parameter || !*parameter){ /* User canceled */ fclose (cmd_file); diff --git a/src/view.c b/src/view.c index ddb093d3a..a3555964f 100644 --- a/src/view.c +++ b/src/view.c @@ -2734,7 +2734,7 @@ view_moveto_line_cmd (WView *view) g_snprintf (prompt, sizeof (prompt), _(" The current line number is %d.\n" " Enter the new line number:"), (int) (line + 1)); - answer = input_dialog (_(" Goto line "), prompt, ""); + answer = input_dialog (_(" Goto line "), prompt, ":view_moveto_line_cmd: Goto line ", ""); if (answer != NULL && answer[0] != '\0') { errno = 0; line = strtoul (answer, &answer_end, 10); @@ -2755,7 +2755,7 @@ view_moveto_addr_cmd (WView *view) g_snprintf (prompt, sizeof (prompt), _(" The current address is 0x%lx.\n" " Enter the new address:"), view->hex_cursor); - line = input_dialog (_(" Goto Address "), prompt, ""); + line = input_dialog (_(" Goto Address "), prompt, ":view_moveto_addr_cmd: Goto Address ", ""); if (line != NULL) { if (*line != '\0') { addr = strtoul (line, &error, 0); @@ -2788,7 +2788,7 @@ regexp_search (WView *view, int direction) defval = (last_regexp != NULL ? last_regexp : ""); - regexp = input_dialog (_("Search"), _(" Enter regexp:"), defval); + regexp = input_dialog (_("Search"), _(" Enter regexp:"), ":regexp_search: Search", defval); if (regexp == NULL || regexp[0] == '\0') { g_free (regexp); return; diff --git a/src/wtools.c b/src/wtools.c index ac79993fd..97e142826 100644 --- a/src/wtools.c +++ b/src/wtools.c @@ -434,11 +434,15 @@ int quick_dialog (QuickDialog *qd) * * 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 *def_text) + const char *history_name, const char *def_text) { QuickDialog Quick_input; QuickWidget quick_widgets[] = { @@ -458,10 +462,10 @@ fg_input_dialog_help (const char *header, const char *text, const char *help, char histname[64] = "inp|"; char *p_text; - /* we need a unique name for histname because widget.c:history_tool() - needs a unique name for each dialog - using the header is ideal */ - g_strlcpy (histname + 3, header, 61); - quick_widgets[2].histname = histname; + if (history_name != NULL && *history_name != '\0') { + g_strlcpy (histname + 3, history_name, 61); + quick_widgets[2].histname = histname; + } msglen (text, &lines, &cols); len = max ((int) strlen (header), cols) + 4; @@ -525,32 +529,36 @@ fg_input_dialog_help (const char *header, const char *text, const char *help, * that MUST be done by the caller of these wrappers. */ char * -input_dialog_help (const char *header, const char *text, const char *help, const char *def_text) +input_dialog_help (const char *header, const char *text, const char *help, + const char *history_name, const char *def_text) { #ifdef WITH_BACKGROUND if (we_are_background) - return parent_call_string ((void *) fg_input_dialog_help, 4, + return parent_call_string ((void *) fg_input_dialog_help, 5, strlen (header), header, strlen (text), text, strlen (help), help, + strlen (history_name), history_name, strlen (def_text), def_text); else #endif /* WITH_BACKGROUND */ - return fg_input_dialog_help (header, text, help, def_text); + return fg_input_dialog_help (header, text, help, history_name, def_text); } /* Show input dialog with default help, background safe */ -char *input_dialog (const char *header, const char *text, const char *def_text) +char *input_dialog (const char *header, const char *text, + const char *history_name, const char *def_text) { - return input_dialog_help (header, text, "[Input Line Keys]", def_text); + return input_dialog_help (header, text, "[Input Line Keys]", history_name, def_text); } char * -input_expand_dialog (const char *header, const char *text, const char *def_text) +input_expand_dialog (const char *header, const char *text, + const char *history_name, const char *def_text) { char *result; char *expanded; - result = input_dialog (header, text, def_text); + result = input_dialog (header, text, history_name, def_text); if (result) { expanded = tilde_expand (result); g_free (result); diff --git a/src/wtools.h b/src/wtools.h index 7691f237e..e6e0e163e 100644 --- a/src/wtools.h +++ b/src/wtools.h @@ -57,9 +57,12 @@ int quick_dialog_skip (QuickDialog *qd, int nskip); /* Pass this as def_text to request a password */ #define INPUT_PASSWORD ((char *) -1) -char *input_dialog (const char *header, const char *text, const char *def_text); -char *input_dialog_help (const char *header, const char *text, const char *help, const char *def_text); -char *input_expand_dialog (const char *header, const char *text, const char *def_text); +char *input_dialog (const char *header, const char *text, + const char *history_name, const char *def_text); +char *input_dialog_help (const char *header, const char *text, const char *help, + const char *history_name, const char *def_text); +char *input_expand_dialog (const char *header, const char *text, + const char *history_name, const char *def_text); void query_set_sel (int new_sel); diff --git a/vfs/ftpfs.c b/vfs/ftpfs.c index 43d363c31..bb20cad90 100644 --- a/vfs/ftpfs.c +++ b/vfs/ftpfs.c @@ -499,7 +499,7 @@ ftpfs_login_server (struct vfs_class *me, struct vfs_s_super *super, p = g_strdup_printf (_ ("FTP: Account required for user %s"), SUP.user); - op = input_dialog (p, _("Account:"), ""); + op = input_dialog (p, _("Account:"), (char *) NULL, ""); g_free (p); if (op == NULL) ERRNOR (EPERM, 0); diff --git a/vfs/utilvfs.c b/vfs/utilvfs.c index 5f3b5a9fb..ecbe9f526 100644 --- a/vfs/utilvfs.c +++ b/vfs/utilvfs.c @@ -839,5 +839,5 @@ vfs_die (const char *m) char * vfs_get_password (const char *msg) { - return input_dialog (msg, _("Password:"), INPUT_PASSWORD); + return input_dialog (msg, _("Password:"), (char *) NULL, INPUT_PASSWORD); }