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"
|
||||
figure.
|
||||
.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.
|
||||
.PP
|
||||
You can start the search by pressing the OK button.
|
||||
|
@ -1500,9 +1500,14 @@ Midnight Commander создает дерево путем просмотра т
|
||||
дерева каталогов\&.
|
||||
.\"Directory Tree"
|
||||
.PP
|
||||
Опция \"Только целые слова\" устанавливает, что шаблон поиска
|
||||
соответствует только целым словам (например, если указано \"foo\",
|
||||
не будет найдено слово \"foobar\").
|
||||
Поле "Шаблон имени" содержит маску имени файла, по которой происходит поиск.
|
||||
В зависимости от опции "Метасимволы shell" маска интерпретируется либо по тем же
|
||||
правилам, что и в командной оболочке, либо как регулярное выражение. Пустое
|
||||
поле также допустимо и соответствует любому имени.
|
||||
.PP
|
||||
Опция "Только целые слова" устанавливает, что шаблон поиска
|
||||
соответствует только целым словам (например, если указано "foo",
|
||||
не будет найдено слово "foobar").
|
||||
.PP
|
||||
Для того, чтобы начать поиск, нажмите экранную кнопку <Дальше>.
|
||||
Во время поиска его можно приостановить кнопкой <Приостановить>
|
||||
@ -1521,7 +1526,7 @@ Midnight Commander создает дерево путем просмотра т
|
||||
.B C\-r
|
||||
для возврата к обычному списку файлов.
|
||||
.PP
|
||||
Опция \"Разрешить игнорирование каталогов\" совместно с расположенным ниже
|
||||
Опция "Разрешить игнорирование каталогов" совместно с расположенным ниже
|
||||
полем ввода позволяет задать список каталогов, которые нужно пропускать при
|
||||
поиске (например, вы знаете, что искомого файла нет на CDROM или не хотите
|
||||
искать в каталогах, подключенных через NFS по очень медленному каналу).
|
||||
|
@ -415,6 +415,20 @@ find_check_regexp (const char *r)
|
||||
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.
|
||||
@ -424,10 +438,21 @@ find_check_regexp (const char *r)
|
||||
static cb_ret_t
|
||||
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);
|
||||
|
||||
switch (msg)
|
||||
{
|
||||
case MSG_INIT:
|
||||
first_draw = TRUE;
|
||||
return MSG_HANDLED;
|
||||
|
||||
case MSG_ACTION:
|
||||
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;
|
||||
|
||||
|
||||
case MSG_VALIDATE:
|
||||
if (h->ret_value != B_ENTER)
|
||||
return MSG_HANDLED;
|
||||
@ -483,6 +507,18 @@ find_parm_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, voi
|
||||
|
||||
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:
|
||||
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')
|
||||
? g_strdup (in_with->buffer) : NULL;
|
||||
*start_dir = in_start->buffer[0] != '\0' ? in_start->buffer : (char *) ".";
|
||||
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 *) ".";
|
||||
if (in_start_dir != INPUT_LAST_TEXT)
|
||||
g_free (in_start_dir);
|
||||
in_start_dir = g_strdup (*start_dir);
|
||||
|
Loading…
Reference in New Issue
Block a user