From dbba22eae397efc8a74781404ba3a3f58e418e4e Mon Sep 17 00:00:00 2001 From: "Mikhail S. Pobolovets" Date: Sat, 21 Feb 2009 11:53:38 +0200 Subject: [PATCH 1/3] src/find.c: 'Skip .hidden files and dirs' has been introduced. An option to toggle on|off searching for|in hidden directories and files. (#132) Signed-off-by: Mikhail S. Pobolovets --- ChangeLog | 6 ++++++ src/find.c | 58 ++++++++++++++++++++++++++++++++---------------------- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 682661345..2fcb24bc8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ + +2009-02-20 Mikhail Pobolovets + * src/find.c: 'Skip .hidden files and dirs' has been introduced. + An option to toggle on|off searching for|in hidden directories + and files. (#132) + 2009-02-19 Andrew Borodin * src/screen.c: reimplemented displaying size of total marked files. If mini-status is on, total size is displayed on mini_info_separator. diff --git a/src/find.c b/src/find.c index cdd193b0e..b23b80f52 100644 --- a/src/find.c +++ b/src/find.c @@ -47,7 +47,7 @@ #include "key.h" /* Size of the find parameters window */ -#define FIND_Y 15 +#define FIND_Y 16 static int FIND_X = 50; /* Size of the find window */ @@ -142,6 +142,7 @@ static regex_t *r; /* Pointer to compiled content_pattern */ static int case_sensitive = 1; static gboolean find_regex_flag = TRUE; +static gboolean skip_hidden_flag = FALSE; static int find_recursively = 1; /* @@ -196,8 +197,10 @@ find_parameters (char **start_dir, char **pattern, char **content) char *temp_dir; static const char *case_label = N_("case &Sensitive"); static const char *recurs_label = N_("&Find recursively"); + static const char *skip_hidden_label = N_("Ski&p .hidden files and dirs"); WCheck *recursively_cbox; + WCheck *skip_hidden_cbox; static char *in_contents = NULL; static char *in_start_dir = NULL; @@ -258,15 +261,18 @@ find_parameters (char **start_dir, char **pattern, char **content) DLG_CENTER | DLG_REVERSE); add_widget (find_dlg, - button_new (12, b2, B_CANCEL, NORMAL_BUTTON, buts[2], 0)); + button_new (FIND_Y - 3, b2, B_CANCEL, NORMAL_BUTTON, buts[2], 0)); add_widget (find_dlg, - button_new (12, b1, B_TREE, NORMAL_BUTTON, buts[1], 0)); + button_new (FIND_Y - 3, b1, B_TREE, NORMAL_BUTTON, buts[1], 0)); add_widget (find_dlg, - button_new (12, b0, B_ENTER, DEFPUSH_BUTTON, buts[0], 0)); + button_new (FIND_Y - 3, b0, B_ENTER, DEFPUSH_BUTTON, buts[0], 0)); recursively_cbox = check_new (6, istart, find_recursively, recurs_label); - + + skip_hidden_cbox = check_new (11, istart, skip_hidden_flag, skip_hidden_label); + add_widget (find_dlg, skip_hidden_cbox); + find_regex_cbox = check_new (10, istart, find_regex_flag, _("&Regular expression")); add_widget (find_dlg, find_regex_cbox); @@ -303,7 +309,8 @@ find_parameters (char **start_dir, char **pattern, char **content) temp_dir = g_strdup (in_start->buffer); case_sensitive = case_sense->state & C_BOOL; find_regex_flag = find_regex_cbox->state & C_BOOL; - find_recursively = recursively_cbox->state & C_BOOL; + find_recursively = recursively_cbox->state & C_BOOL; + skip_hidden_flag = skip_hidden_cbox->state & C_BOOL; destroy_dlg (find_dlg); g_free (in_start_dir); if (strcmp (temp_dir, ".") == 0) { @@ -331,7 +338,8 @@ find_parameters (char **start_dir, char **pattern, char **content) case_sensitive = case_sense->state & C_BOOL; find_regex_flag = find_regex_cbox->state & C_BOOL; - find_recursively = recursively_cbox->state & C_BOOL; + find_recursively = recursively_cbox->state & C_BOOL; + skip_hidden_flag = skip_hidden_cbox->state & C_BOOL; return_value = 1; *start_dir = g_strdup (in_start->buffer); *pattern = g_strdup (in_name->buffer); @@ -690,25 +698,27 @@ do_search (struct Dlg_head *h) return 1; } - if (subdirs_left && find_recursively && directory) { /* Can directory be NULL ? */ - char *tmp_name = concat_dir_and_file (directory, dp->d_name); - if (!mc_lstat (tmp_name, &tmp_stat) - && S_ISDIR (tmp_stat.st_mode)) { - push_directory (tmp_name); - subdirs_left--; - } - g_free (tmp_name); + if (!(skip_hidden_flag && dp->d_name[0] == '.')) { + if (subdirs_left && find_recursively && directory) { /* Can directory be NULL ? */ + char *tmp_name = concat_dir_and_file (directory, dp->d_name); + if (!mc_lstat (tmp_name, &tmp_stat) + && S_ISDIR (tmp_stat.st_mode)) { + push_directory (tmp_name); + subdirs_left--; + } + g_free (tmp_name); + } + + if (regexp_match (find_pattern, dp->d_name, match_file)){ + if (content_pattern) { + if (search_content (h, directory, dp->d_name)) { + return 1; + } + } else + find_add_match (h, directory, dp->d_name); + } } - if (regexp_match (find_pattern, dp->d_name, match_file)){ - if (content_pattern) { - if (search_content (h, directory, dp->d_name)) { - return 1; - } - } else - find_add_match (h, directory, dp->d_name); - } - dp = mc_readdir (dirp); /* Displays the nice dot */ From 6e81dab573580ae60d8e4a3397706f939e4b2d44 Mon Sep 17 00:00:00 2001 From: "Mikhail S. Pobolovets" Date: Sat, 21 Feb 2009 16:48:00 +0200 Subject: [PATCH 2/3] src/find.c: 'Skip .hidden files and dirs' renamed to 'Skip hidden' Check box position has been changed. po/ru.po: translation update for 'Skip hidden'. Signed-off-by: Mikhail S. Pobolovets --- ChangeLog | 5 +++++ po/ru.po | 43 ++++++++++++++++++++++++++----------------- src/find.c | 27 ++++++++++----------------- 3 files changed, 41 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2fcb24bc8..0229ab577 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,9 @@ +2009-02-21 Mikhail Pobolovets + * src/find.c: 'Skip .hidden files and dirs' renamed to 'Skip hidden' + Check box position has been changed. (#132) + * po/ru.po: translation update for 'Skip hidden'. + 2009-02-20 Mikhail Pobolovets * src/find.c: 'Skip .hidden files and dirs' has been introduced. An option to toggle on|off searching for|in hidden directories diff --git a/po/ru.po b/po/ru.po index 5ee11d076..f6f321487 100644 --- a/po/ru.po +++ b/po/ru.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: ru\n" -"Report-Msgid-Bugs-To: mc-devel@gnome.org\n" -"POT-Creation-Date: 2009-01-06 13:46+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-21 16:44+0200\n" "PO-Revision-Date: 2005-09-09 14:37+0300\n" "Last-Translator: Anton S. Chumak \n" "Language-Team: Russian ru@li.org\n" @@ -66,9 +66,6 @@ msgstr " msgid "Macro recursion is too deep" msgstr "Слишком глубокая рекурсия макросов" -msgid " Enter file name: " -msgstr " Введите имя файла: " - msgid "Warning" msgstr "Предупреждение" @@ -114,6 +111,9 @@ msgstr " msgid " Save As " msgstr " Сохранить как " +msgid " Enter file name: " +msgstr " Введите имя файла: " + msgid " A file already exists with this name. " msgstr " Файл с таким именем уже существует. " @@ -794,6 +794,9 @@ msgstr " msgid "Sort order" msgstr "Порядок сортировки" +msgid "Executable first" +msgstr "" + #, fuzzy msgid " confirm di&Rectory hotlist delete " msgstr "Быстрый доступ к ката&логам C-\\" @@ -1766,6 +1769,9 @@ msgstr "& msgid "&Find recursively" msgstr "Найти ре&курсивно" +msgid "Ski&p hidden" +msgstr "Пропускать ск&рытые" + msgid "Start at:" msgstr "От каталога:" @@ -2003,6 +2009,9 @@ msgstr "& msgid "&Horizontal" msgstr "&Горизонтальное" +msgid "show free sp&Ace" +msgstr "" + msgid "&Xterm window title" msgstr "&Заголовок xterm" @@ -2487,6 +2496,9 @@ msgstr " msgid "&Verbose operation" msgstr "Детали операци&й" +msgid "Mkdir autoname" +msgstr "" + msgid "&Fast dir reload" msgstr "&Быстрая загрузка каталога" @@ -2629,6 +2641,9 @@ msgstr " msgid "Group" msgstr "Группа" +msgid "" +msgstr "<сбой чтения ссылки>" + #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -2643,9 +2658,6 @@ msgstr[0] "%s msgstr[1] "%s в %d файлах" msgstr[2] "%s в %d файлах" -msgid "" -msgstr "<сбой чтения ссылки>" - msgid "Unknown tag on display format: " msgstr "Неизвестный тег в формате отображения: " @@ -2716,12 +2728,6 @@ msgstr " msgid "Using system-installed S-Lang library" msgstr "С установленной в системе библиотекой S-Lang" -msgid "Using included S-Lang library" -msgstr "С включенной библиотекой S-Lang" - -msgid "with termcap database" -msgstr "с базой данных termcap" - msgid "with terminfo database" msgstr "с базой данных terminfo" @@ -2855,9 +2861,6 @@ msgstr "%b %e %H:%M" msgid "%b %e %Y" msgstr "%b %e %Y" -msgid "(invalid)" -msgstr "" - #, c-format msgid "%s is not a directory\n" msgstr "%s не является каталогом\n" @@ -3614,6 +3617,12 @@ msgstr " msgid "Changes to file lost" msgstr "Изменения для файла потеряны" +#~ msgid "Using included S-Lang library" +#~ msgstr "С включенной библиотекой S-Lang" + +#~ msgid "with termcap database" +#~ msgstr "с базой данных termcap" + #~ msgid "&Home" #~ msgstr "&Персональный" diff --git a/src/find.c b/src/find.c index b23b80f52..b403376fb 100644 --- a/src/find.c +++ b/src/find.c @@ -197,7 +197,8 @@ find_parameters (char **start_dir, char **pattern, char **content) char *temp_dir; static const char *case_label = N_("case &Sensitive"); static const char *recurs_label = N_("&Find recursively"); - static const char *skip_hidden_label = N_("Ski&p .hidden files and dirs"); + static const char *skip_hidden_label = N_("Ski&p hidden"); + static const char *regexp_label = N_("&Regular expression"); WCheck *recursively_cbox; WCheck *skip_hidden_cbox; @@ -267,29 +268,21 @@ find_parameters (char **start_dir, char **pattern, char **content) add_widget (find_dlg, button_new (FIND_Y - 3, b0, B_ENTER, DEFPUSH_BUTTON, buts[0], 0)); - recursively_cbox = - check_new (6, istart, find_recursively, recurs_label); + recursively_cbox = check_new (6, istart, find_recursively, recurs_label); + skip_hidden_cbox = check_new (7, istart, skip_hidden_flag, skip_hidden_label); + find_regex_cbox = check_new (11, istart, find_regex_flag, regexp_label); + case_sense = check_new (10, istart, case_sensitive, case_label); - skip_hidden_cbox = check_new (11, istart, skip_hidden_flag, skip_hidden_label); - add_widget (find_dlg, skip_hidden_cbox); + in_with = input_new (9, istart, INPUT_COLOR, ilen, in_contents, "content", INPUT_COMPLETE_DEFAULT); + in_name = input_new (5, istart, INPUT_COLOR, ilen, in_start_name, "name", INPUT_COMPLETE_DEFAULT); + in_start = input_new (3, istart, INPUT_COLOR, ilen, in_start_dir, "start", INPUT_COMPLETE_DEFAULT); - find_regex_cbox = check_new (10, istart, find_regex_flag, _("&Regular expression")); add_widget (find_dlg, find_regex_cbox); - - case_sense = check_new (9, istart, case_sensitive, case_label); add_widget (find_dlg, case_sense); - - in_with = - input_new (8, istart, INPUT_COLOR, ilen, in_contents, "content", INPUT_COMPLETE_DEFAULT); add_widget (find_dlg, in_with); - + add_widget (find_dlg, skip_hidden_cbox); add_widget (find_dlg, recursively_cbox); - in_name = - input_new (5, istart, INPUT_COLOR, ilen, in_start_name, "name", INPUT_COMPLETE_DEFAULT); add_widget (find_dlg, in_name); - - in_start = - input_new (3, istart, INPUT_COLOR, ilen, in_start_dir, "start", INPUT_COMPLETE_DEFAULT); add_widget (find_dlg, in_start); add_widget (find_dlg, label_new (8, 3, labs[2])); From bb8c0c281c4791c09f4c9c68b11358f1c124937e Mon Sep 17 00:00:00 2001 From: "Mikhail S. Pobolovets" Date: Sat, 21 Feb 2009 17:12:59 +0200 Subject: [PATCH 3/3] po/ru.po Fix for 'Skip hidden'-hotkey Signed-off-by: Mikhail S. Pobolovets --- po/ru.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/po/ru.po b/po/ru.po index f6f321487..3cbfaf5f9 100644 --- a/po/ru.po +++ b/po/ru.po @@ -1770,7 +1770,7 @@ msgid "&Find recursively" msgstr "Найти ре&курсивно" msgid "Ski&p hidden" -msgstr "Пропускать ск&рытые" +msgstr "Пропускать скр&ытые" msgid "Start at:" msgstr "От каталога:"