mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
Merge branch '3593_find_file_empty_name'
* 3593_find_file_empty_name: Disable some filename related checkboxes if filename is empty. Find file: describe "File name" input field. Ticket #3593: Find file: empty file name matches any file name.
This commit is contained in:
commit
89bd95c300
@ -1414,7 +1414,12 @@ directory tree
|
|||||||
.\"Directory Tree"
|
.\"Directory Tree"
|
||||||
figure.
|
figure.
|
||||||
.PP
|
.PP
|
||||||
Option \"Whole words\" allows select only those files containing matches that
|
The "File name" input field contains a filename pattern to be searched
|
||||||
|
for. It is interpeted as a shell pattern or as a regular expression
|
||||||
|
depending on the state of the "Using shell patterns" checkbox. An empty
|
||||||
|
value is valid and matches any file name.
|
||||||
|
.PP
|
||||||
|
Option "Whole words" allows select only those files containing matches that
|
||||||
form whole words. Like grep \-w.
|
form whole words. Like grep \-w.
|
||||||
.PP
|
.PP
|
||||||
You can start the search by pressing the OK button.
|
You can start the search by pressing the OK button.
|
||||||
|
@ -1500,9 +1500,14 @@ Midnight Commander создает дерево путем просмотра т
|
|||||||
дерева каталогов\&.
|
дерева каталогов\&.
|
||||||
.\"Directory Tree"
|
.\"Directory Tree"
|
||||||
.PP
|
.PP
|
||||||
Опция \"Только целые слова\" устанавливает, что шаблон поиска
|
Поле "Шаблон имени" содержит маску имени файла, по которой происходит поиск.
|
||||||
соответствует только целым словам (например, если указано \"foo\",
|
В зависимости от опции "Метасимволы shell" маска интерпретируется либо по тем же
|
||||||
не будет найдено слово \"foobar\").
|
правилам, что и в командной оболочке, либо как регулярное выражение. Пустое
|
||||||
|
поле также допустимо и соответствует любому имени.
|
||||||
|
.PP
|
||||||
|
Опция "Только целые слова" устанавливает, что шаблон поиска
|
||||||
|
соответствует только целым словам (например, если указано "foo",
|
||||||
|
не будет найдено слово "foobar").
|
||||||
.PP
|
.PP
|
||||||
Для того, чтобы начать поиск, нажмите экранную кнопку <Дальше>.
|
Для того, чтобы начать поиск, нажмите экранную кнопку <Дальше>.
|
||||||
Во время поиска его можно приостановить кнопкой <Приостановить>
|
Во время поиска его можно приостановить кнопкой <Приостановить>
|
||||||
@ -1521,7 +1526,7 @@ Midnight Commander создает дерево путем просмотра т
|
|||||||
.B C\-r
|
.B C\-r
|
||||||
для возврата к обычному списку файлов.
|
для возврата к обычному списку файлов.
|
||||||
.PP
|
.PP
|
||||||
Опция \"Разрешить игнорирование каталогов\" совместно с расположенным ниже
|
Опция "Разрешить игнорирование каталогов" совместно с расположенным ниже
|
||||||
полем ввода позволяет задать список каталогов, которые нужно пропускать при
|
полем ввода позволяет задать список каталогов, которые нужно пропускать при
|
||||||
поиске (например, вы знаете, что искомого файла нет на CDROM или не хотите
|
поиске (например, вы знаете, что искомого файла нет на CDROM или не хотите
|
||||||
искать в каталогах, подключенных через NFS по очень медленному каналу).
|
искать в каталогах, подключенных через NFS по очень медленному каналу).
|
||||||
|
@ -415,6 +415,20 @@ find_check_regexp (const char *r)
|
|||||||
return regexp_ok;
|
return regexp_ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
static void
|
||||||
|
find_toggle_enable_params (void)
|
||||||
|
{
|
||||||
|
gboolean disable = in_name->buffer[0] == '\0';
|
||||||
|
|
||||||
|
widget_disable (WIDGET (file_pattern_cbox), disable);
|
||||||
|
widget_disable (WIDGET (file_case_sens_cbox), disable);
|
||||||
|
#ifdef HAVE_CHARSET
|
||||||
|
widget_disable (WIDGET (file_all_charsets_cbox), disable);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
/**
|
/**
|
||||||
* Callback for the parameter dialog.
|
* Callback for the parameter dialog.
|
||||||
@ -424,10 +438,21 @@ find_check_regexp (const char *r)
|
|||||||
static cb_ret_t
|
static cb_ret_t
|
||||||
find_parm_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data)
|
find_parm_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data)
|
||||||
{
|
{
|
||||||
|
/* FIXME: HACK: use first draw of dialog to resolve widget state dependencies.
|
||||||
|
* Use this time moment to check input field content. We can't do that in MSG_INIT
|
||||||
|
* because history is not loaded yet.
|
||||||
|
* Probably, we want new MSG_ACTIVATE message as complement to MSG_VALIDATE one.
|
||||||
|
*/
|
||||||
|
static gboolean first_draw = TRUE;
|
||||||
|
|
||||||
WDialog *h = DIALOG (w);
|
WDialog *h = DIALOG (w);
|
||||||
|
|
||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
|
case MSG_INIT:
|
||||||
|
first_draw = TRUE;
|
||||||
|
return MSG_HANDLED;
|
||||||
|
|
||||||
case MSG_ACTION:
|
case MSG_ACTION:
|
||||||
if (sender == WIDGET (content_use_cbox))
|
if (sender == WIDGET (content_use_cbox))
|
||||||
{
|
{
|
||||||
@ -456,7 +481,6 @@ find_parm_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, voi
|
|||||||
|
|
||||||
return MSG_NOT_HANDLED;
|
return MSG_NOT_HANDLED;
|
||||||
|
|
||||||
|
|
||||||
case MSG_VALIDATE:
|
case MSG_VALIDATE:
|
||||||
if (h->ret_value != B_ENTER)
|
if (h->ret_value != B_ENTER)
|
||||||
return MSG_HANDLED;
|
return MSG_HANDLED;
|
||||||
@ -483,6 +507,18 @@ find_parm_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, voi
|
|||||||
|
|
||||||
return MSG_HANDLED;
|
return MSG_HANDLED;
|
||||||
|
|
||||||
|
case MSG_POST_KEY:
|
||||||
|
if (h->current->data == in_name)
|
||||||
|
find_toggle_enable_params ();
|
||||||
|
return MSG_HANDLED;
|
||||||
|
|
||||||
|
case MSG_DRAW:
|
||||||
|
if (first_draw)
|
||||||
|
find_toggle_enable_params ();
|
||||||
|
|
||||||
|
first_draw = FALSE;
|
||||||
|
/* fall through to call MSG_DRAW default handler */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return dlg_default_callback (w, sender, msg, parm, data);
|
return dlg_default_callback (w, sender, msg, parm, data);
|
||||||
}
|
}
|
||||||
@ -772,8 +808,11 @@ find_parameters (char **start_dir, ssize_t * start_dir_len,
|
|||||||
|
|
||||||
*content = (options.content_use && in_with->buffer[0] != '\0')
|
*content = (options.content_use && in_with->buffer[0] != '\0')
|
||||||
? g_strdup (in_with->buffer) : NULL;
|
? g_strdup (in_with->buffer) : NULL;
|
||||||
|
if (in_name->buffer[0] != '\0')
|
||||||
|
*pattern = g_strdup (in_name->buffer);
|
||||||
|
else
|
||||||
|
*pattern = g_strdup (options.file_pattern ? "*" : ".*");
|
||||||
*start_dir = in_start->buffer[0] != '\0' ? in_start->buffer : (char *) ".";
|
*start_dir = in_start->buffer[0] != '\0' ? in_start->buffer : (char *) ".";
|
||||||
*pattern = g_strdup (in_name->buffer);
|
|
||||||
if (in_start_dir != INPUT_LAST_TEXT)
|
if (in_start_dir != INPUT_LAST_TEXT)
|
||||||
g_free (in_start_dir);
|
g_free (in_start_dir);
|
||||||
in_start_dir = g_strdup (*start_dir);
|
in_start_dir = g_strdup (*start_dir);
|
||||||
|
Loading…
Reference in New Issue
Block a user