mirror of
https://github.com/MidnightCommander/mc
synced 2025-01-03 10:04:32 +03:00
Ticket #1705: fix show of Copy/Move dialog.
Inital step: minor refactoring of src/file.c file. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
db11ade9d8
commit
998001a22e
69
src/file.c
69
src/file.c
@ -1632,8 +1632,13 @@ panel_compute_totals (WPanel *panel, const void *ui,
|
|||||||
* (I don't use spaces around the words, because someday they could be
|
* (I don't use spaces around the words, because someday they could be
|
||||||
* dropped, when widgets get smarter)
|
* dropped, when widgets get smarter)
|
||||||
*/
|
*/
|
||||||
static const char *op_names1[] = { N_("1Copy"), N_("1Move"), N_("1Delete") };
|
static const char *op_names1[] = {
|
||||||
#define FMD_XLEN 64
|
N_("1Copy"),
|
||||||
|
N_("1Move"),
|
||||||
|
N_("1Delete")
|
||||||
|
};
|
||||||
|
|
||||||
|
#define FMD_XLEN 64
|
||||||
|
|
||||||
int fmd_xlen = FMD_XLEN;
|
int fmd_xlen = FMD_XLEN;
|
||||||
|
|
||||||
@ -1645,14 +1650,20 @@ int fmd_xlen = FMD_XLEN;
|
|||||||
* %s - source name (truncated)
|
* %s - source name (truncated)
|
||||||
* %d - number of marked files
|
* %d - number of marked files
|
||||||
* %e - "to:" or question mark for delete
|
* %e - "to:" or question mark for delete
|
||||||
*
|
*
|
||||||
* xgettext:no-c-format */
|
* xgettext:no-c-format */
|
||||||
static const char *one_format = N_("%o %f \"%s\"%m");
|
static const char *one_format = N_("%o %f \"%s\"%m");
|
||||||
/* xgettext:no-c-format */
|
/* xgettext:no-c-format */
|
||||||
static const char *many_format = N_("%o %d %f%m");
|
static const char *many_format = N_("%o %d %f%m");
|
||||||
|
|
||||||
static const char *prompt_parts[] = {
|
static const char *prompt_parts[] = {
|
||||||
N_("file"), N_("files"), N_("directory"), N_("directories"),
|
N_("file"),
|
||||||
N_("files/directories"), N_(" with source mask:"), N_(" to:")
|
N_("files"),
|
||||||
|
N_("directory"),
|
||||||
|
N_("directories"),
|
||||||
|
N_("files/directories"),
|
||||||
|
N_(" with source mask:"),
|
||||||
|
N_(" to:")
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1666,8 +1677,8 @@ panel_operate_generate_prompt (const WPanel *panel, const int operation,
|
|||||||
const char *single_source,
|
const char *single_source,
|
||||||
const struct stat *src_stat)
|
const struct stat *src_stat)
|
||||||
{
|
{
|
||||||
register const char *sp, *cp;
|
const char *sp, *cp;
|
||||||
register int i;
|
int i;
|
||||||
char format_string[BUF_MEDIUM];
|
char format_string[BUF_MEDIUM];
|
||||||
char *dp = format_string;
|
char *dp = format_string;
|
||||||
|
|
||||||
@ -1785,11 +1796,13 @@ panel_operate (void *source_panel, FileOperation operation,
|
|||||||
free_linklist (&linklist);
|
free_linklist (&linklist);
|
||||||
free_linklist (&dest_dirs);
|
free_linklist (&dest_dirs);
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* Update panel contents to avoid actions on deleted files */
|
/* Update panel contents to avoid actions on deleted files */
|
||||||
if (!panel->is_panelized) {
|
if (!panel->is_panelized) {
|
||||||
update_panels (UP_RELOAD, UP_KEEPSEL);
|
update_panels (UP_RELOAD, UP_KEEPSEL);
|
||||||
repaint_screen ();
|
repaint_screen ();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (single_entry) {
|
if (single_entry) {
|
||||||
if (force_single) {
|
if (force_single) {
|
||||||
@ -1811,18 +1824,7 @@ panel_operate (void *source_panel, FileOperation operation,
|
|||||||
ctx = file_op_context_new (operation);
|
ctx = file_op_context_new (operation);
|
||||||
|
|
||||||
/* Show confirmation dialog */
|
/* Show confirmation dialog */
|
||||||
if (operation == OP_DELETE && confirm_delete) {
|
if (operation != OP_DELETE) {
|
||||||
if (safe_delete)
|
|
||||||
query_set_sel (1);
|
|
||||||
|
|
||||||
i = query_dialog (_(op_names[operation]), cmd_buf, D_ERROR, 2,
|
|
||||||
_("&Yes"), _("&No"));
|
|
||||||
|
|
||||||
if (i != 0) {
|
|
||||||
file_op_context_destroy (ctx);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
} else if (operation != OP_DELETE) {
|
|
||||||
char *dest_dir;
|
char *dest_dir;
|
||||||
char *dest_dir_;
|
char *dest_dir_;
|
||||||
|
|
||||||
@ -1839,30 +1841,41 @@ panel_operate (void *source_panel, FileOperation operation,
|
|||||||
* dir is deleted)
|
* dir is deleted)
|
||||||
*/
|
*/
|
||||||
if (!force_single
|
if (!force_single
|
||||||
&& dest_dir[0]
|
&& dest_dir[0] != '\0'
|
||||||
&& dest_dir[strlen(dest_dir)-1] != PATH_SEP) {
|
&& dest_dir[strlen (dest_dir) - 1] != PATH_SEP) {
|
||||||
/* add trailing separator */
|
/* add trailing separator */
|
||||||
dest_dir_ = g_strconcat (dest_dir, PATH_SEP_STR, (char*)0);
|
dest_dir_ = g_strconcat (dest_dir, PATH_SEP_STR, (char *) NULL);
|
||||||
} else {
|
} else {
|
||||||
/* just copy */
|
/* just copy */
|
||||||
dest_dir_ = g_strdup (dest_dir);
|
dest_dir_ = g_strdup (dest_dir);
|
||||||
}
|
}
|
||||||
if (!dest_dir_) {
|
if (dest_dir_ == NULL) {
|
||||||
file_op_context_destroy (ctx);
|
file_op_context_destroy (ctx);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
dest =
|
dest = file_mask_dialog (ctx, operation, cmd_buf, dest_dir_,
|
||||||
file_mask_dialog (ctx, operation, cmd_buf, dest_dir_,
|
single_entry, &do_bg);
|
||||||
single_entry, &do_bg);
|
g_free (dest_dir_);
|
||||||
g_free(dest_dir_);
|
|
||||||
|
|
||||||
if (!dest || !dest[0]) {
|
if (dest == NULL || dest[0] == '\0') {
|
||||||
file_op_context_destroy (ctx);
|
file_op_context_destroy (ctx);
|
||||||
g_free (dest);
|
g_free (dest);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
} else if (confirm_delete) {
|
||||||
|
if (safe_delete)
|
||||||
|
query_set_sel (1);
|
||||||
|
|
||||||
|
i = query_dialog (_(op_names[operation]), cmd_buf, D_ERROR, 2,
|
||||||
|
_("&Yes"), _("&No"));
|
||||||
|
|
||||||
|
if (i != 0) {
|
||||||
|
file_op_context_destroy (ctx);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_BACKGROUND
|
#ifdef WITH_BACKGROUND
|
||||||
/* Did the user select to do a background operation? */
|
/* Did the user select to do a background operation? */
|
||||||
if (do_bg) {
|
if (do_bg) {
|
||||||
|
Loading…
Reference in New Issue
Block a user