diff --git a/src/Resources/grepWin.rc b/src/Resources/grepWin.rc index cab48128..90fd7af7 100644 --- a/src/Resources/grepWin.rc +++ b/src/Resources/grepWin.rc @@ -74,7 +74,7 @@ BEGIN PUSHBUTTON "/",IDC_EDITMULTILINE2,553,81,13,12 CONTROL "Search case-sensitive",IDC_CASE_SENSITIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,98,89,10 CONTROL "Dot matches newline",IDC_DOTMATCHNEWLINE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,98,125,10 - CONTROL "Create backup files",IDC_CREATEBACKUP,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,238,98,91,10 + CONTROL "Create backup files",IDC_CREATEBACKUP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,238,98,91,10 CONTROL "Treat files as UTF8",IDC_UTF8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,335,98,93,10 PUSHBUTTON "Test regex",IDC_TESTREGEX,14,109,77,14 PUSHBUTTON "Add to Presets",IDC_ADDTOBOOKMARKS,108,109,76,14 @@ -91,7 +91,7 @@ BEGIN CONTROL "Include system items",IDC_INCLUDESYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,166,90,10 CONTROL "Include hidden items",IDC_INCLUDEHIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,166,85,10 CONTROL "Include subfolders",IDC_INCLUDESUBFOLDERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,178,89,10 - CONTROL "Include binary files",IDC_INCLUDEBINARY,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,108,178,86,10 + CONTROL "Include binary files",IDC_INCLUDEBINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,178,86,10 CONTROL "Include symbolic links",IDC_INCLUDESYMLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,190,115,10 CONTROL "All dates",IDC_RADIO_DATE_ALL,"Button",BS_AUTORADIOBUTTON,198,139,106,10 CONTROL "Newer than",IDC_RADIO_DATE_NEWER,"Button",BS_AUTORADIOBUTTON,198,152,58,10 @@ -349,8 +349,8 @@ END STRINGTABLE BEGIN - IDS_PATTERN_TT "only files that match this pattern are searched.\r\nUse ""|"" as the delimiter.\r\nExample: *.cpp|*.h" - IDS_EXCLUDEDIR_TT "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." + IDS_PATTERN_TT "only files that match this pattern are searched.\r\nText match extended. Use ""|"" as the delimiter.\r\nExample: *.cpp|*.h" + IDS_EXCLUDEDIR_TT "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." IDS_SEARCHPATH_TT "the path(s) which is searched recursively.\r\nSeparate paths with the | symbol.\r\nExample: c:\\temp|d:\\logs" IDS_DOTMATCHNEWLINE_TT "Newline is matched by '.'" IDS_SEARCHTEXT_TT "a regular expression used for searching. Press F1 for more info." diff --git a/src/SearchDlg.cpp b/src/SearchDlg.cpp index 898135a6..7dc31ba6 100644 --- a/src/SearchDlg.cpp +++ b/src/SearchDlg.cpp @@ -95,11 +95,31 @@ void drawRedEditBox(HWND hWnd, WPARAM wParam) RECT rc = {0}; GetWindowRect(hWnd, &rc); MapWindowPoints(nullptr, hWnd, reinterpret_cast(&rc), 2); - ::SetBkColor(hdc, RGB(255, 0, 0)); + ::SetBkColor(hdc, RGB(236, 93, 93)); ::ExtTextOut(hdc, 0, 0, ETO_OPAQUE, &rc, nullptr, 0, nullptr); ReleaseDC(hWnd, hdc); } +LRESULT CALLBACK SearchPathWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR /*uIdSubclass*/, DWORD_PTR dwRefData) +{ + switch (uMsg) + { + case WM_NCPAINT: + { + auto searchDlg = reinterpret_cast(dwRefData); + if (!searchDlg->isSearchPathValid()) + { + drawRedEditBox(hWnd, wParam); + return 0; + } + } + default: + break; + } + + return DefSubclassProc(hWnd, uMsg, wParam, lParam); +} + LRESULT CALLBACK SearchEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR /*uIdSubclass*/, DWORD_PTR dwRefData) { switch (uMsg) @@ -160,6 +180,14 @@ LRESULT CALLBACK FileNameMatchEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, L return DefSubclassProc(hWnd, uMsg, wParam, lParam); } +static void removeMineExtVariables(std::wstring& str) +{ + for (const auto& s : {L"${filepath}", L"${filename}", L"${fileext}"}) + { + SearchReplace(str, s, L""); + } +} + CSearchDlg::CSearchDlg(HWND hParent) : m_hParent(hParent) , m_dwThreadRunning(FALSE) @@ -218,7 +246,10 @@ CSearchDlg::CSearchDlg(HWND hParent) , m_totalMatches(0) , m_selectedItems(0) , m_bAscending(true) - , m_isRegexValid(true) + , m_hasSearchDir(false) + , m_isSearchPathValid(false) + , m_SearchValidLength(0) + , m_ReplaceValidLength(0) , m_isExcludeDirsRegexValid(true) , m_isFileNameMatchingRegexValid(true) , m_themeCallbackId(0) @@ -269,9 +300,15 @@ CSearchDlg::~CSearchDlg() delete m_pDropTarget; } +bool CSearchDlg::isSearchPathValid() const +{ + return m_isSearchPathValid; +} + bool CSearchDlg::isRegexValid() const { - return m_isRegexValid; + // 0 is allowed to count files + return m_SearchValidLength >= 0; } bool CSearchDlg::isExcludeDirsRegexValid() const @@ -349,56 +386,12 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara AddToolTip(IDC_PATTERNMRU, TranslatedString(hResource, IDS_OPEN_MRU).c_str()); AddToolTip(IDC_REPLACETEXT, LPSTR_TEXTCALLBACK); + SetWindowSubclass(GetDlgItem(*this, IDC_SEARCHPATH), SearchPathWndProc, SearchEditSubclassID, reinterpret_cast(this)); SetWindowSubclass(GetDlgItem(*this, IDC_SEARCHTEXT), SearchEditWndProc, SearchEditSubclassID, reinterpret_cast(this)); SetWindowSubclass(GetDlgItem(*this, IDC_EXCLUDEDIRSPATTERN), ExcludeDirEditWndProc, SearchEditSubclassID, reinterpret_cast(this)); SetWindowSubclass(GetDlgItem(*this, IDC_PATTERN), FileNameMatchEditWndProc, SearchEditSubclassID, reinterpret_cast(this)); - if (m_searchPath.empty()) - { - if (bPortable) - m_searchPath = g_iniFile.GetValue(L"global", L"searchpath", L""); - else - m_searchPath = std::wstring(m_regSearchPath); - } - else - { - // expand a possible 'short' path - DWORD ret = 0; - ret = ::GetLongPathName(m_searchPath.c_str(), nullptr, 0); - if (ret) - { - auto pathBuf = std::make_unique(ret + 2LL); - ret = ::GetLongPathName(m_searchPath.c_str(), pathBuf.get(), ret + 1); - m_searchPath = std::wstring(pathBuf.get(), ret); - } - } - - if (m_patternRegex.empty() && !m_patternRegexC) - { - if (bPortable) - { - m_patternRegex = g_iniFile.GetValue(L"global", L"pattern", L""); - m_bUseRegexForPaths = !!_wtoi(g_iniFile.GetValue(L"global", L"UseFileMatchRegex", L"")); - } - else - { - m_patternRegex = std::wstring(m_regPattern); - m_bUseRegexForPaths = !!static_cast(m_regUseRegexForPaths); - } - } - if (m_excludeDirsPatternRegex.empty() && !m_excludeDirsPatternRegexC) - { - if (bPortable) - m_excludeDirsPatternRegex = g_iniFile.GetValue(L"global", L"ExcludeDirsPattern", L""); - else - m_excludeDirsPatternRegex = std::wstring(m_regExcludeDirsPattern); - } // initialize the controls - SetDlgItemText(hwndDlg, IDC_SEARCHPATH, m_searchPath.c_str()); - SetDlgItemText(hwndDlg, IDC_SEARCHTEXT, m_searchString.c_str()); - SetDlgItemText(hwndDlg, IDC_EXCLUDEDIRSPATTERN, m_excludeDirsPatternRegex.c_str()); - SetDlgItemText(hwndDlg, IDC_PATTERN, m_patternRegex.c_str()); - SetDlgItemText(hwndDlg, IDC_REPLACETEXT, m_replaceString.c_str()); // the path edit control should work as a drop target for files and folders HWND hSearchPath = GetDlgItem(hwndDlg, IDC_SEARCHPATH); @@ -525,15 +518,12 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara CheckRadioButton(hwndDlg, IDC_REGEXRADIO, IDC_TEXTRADIO, (bPortable ? _wtoi(g_iniFile.GetValue(L"global", L"UseRegex", L"0")) : static_cast(m_regUseRegex)) ? IDC_REGEXRADIO : IDC_TEXTRADIO); CheckRadioButton(hwndDlg, IDC_ALLSIZERADIO, IDC_SIZERADIO, m_bAllSize ? IDC_ALLSIZERADIO : IDC_SIZERADIO); - CheckRadioButton(hwndDlg, IDC_FILEPATTERNREGEX, IDC_FILEPATTERNTEXT, m_bUseRegexForPaths ? IDC_FILEPATTERNREGEX : IDC_FILEPATTERNTEXT); SendDlgItemMessage(hwndDlg, IDC_WHOLEWORDS, BM_SETCHECK, m_bWholeWords ? BST_CHECKED : BST_UNCHECKED, 0); DialogEnableWindow(IDC_WHOLEWORDS, IsDlgButtonChecked(hwndDlg, IDC_TEXTRADIO)); if (!m_searchString.empty() || m_bUseRegexC) CheckRadioButton(*this, IDC_REGEXRADIO, IDC_TEXTRADIO, m_bUseRegex ? IDC_REGEXRADIO : IDC_TEXTRADIO); DialogEnableWindow(IDC_TESTREGEX, !IsDlgButtonChecked(*this, IDC_TEXTRADIO)); - DialogEnableWindow(IDC_ADDTOBOOKMARKS, FALSE); - DialogEnableWindow(IDC_EXCLUDEDIRSPATTERN, !!m_bIncludeSubfolders); ::SetDlgItemText(*this, IDOK, TranslatedString(hResource, IDS_SEARCH).c_str()); if (!m_showContentSet) @@ -560,6 +550,54 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara ShowWindow(GetDlgItem(*this, IDC_DATEPICK2), (m_dateLimit == IDC_RADIO_DATE_BETWEEN - IDC_RADIO_DATE_ALL) ? SW_SHOW : SW_HIDE); ShowWindow(GetDlgItem(*this, IDC_DATEPICK1), (m_dateLimit != 0) ? SW_SHOW : SW_HIDE); + // Set search path at last to trigger testing properties of others that it controls + if (m_patternRegex.empty() && !m_patternRegexC) + { + if (bPortable) + { + m_patternRegex = g_iniFile.GetValue(L"global", L"pattern", L""); + m_bUseRegexForPaths = !!_wtoi(g_iniFile.GetValue(L"global", L"UseFileMatchRegex", L"")); + } + else + { + m_patternRegex = std::wstring(m_regPattern); + m_bUseRegexForPaths = !!static_cast(m_regUseRegexForPaths); + } + } + if (m_excludeDirsPatternRegex.empty() && !m_excludeDirsPatternRegexC) + { + if (bPortable) + m_excludeDirsPatternRegex = g_iniFile.GetValue(L"global", L"ExcludeDirsPattern", L""); + else + m_excludeDirsPatternRegex = std::wstring(m_regExcludeDirsPattern); + } + if (m_searchPath.empty()) + { + if (bPortable) + m_searchPath = g_iniFile.GetValue(L"global", L"searchpath", L""); + else + m_searchPath = std::wstring(m_regSearchPath); + } + else + { + // expand a possible 'short' path + DWORD ret = 0; + ret = ::GetLongPathName(m_searchPath.c_str(), nullptr, 0); + if (ret) + { + auto pathBuf = std::make_unique(ret + 2LL); + ret = ::GetLongPathName(m_searchPath.c_str(), pathBuf.get(), ret + 1); + m_searchPath = std::wstring(pathBuf.get(), ret); + } + } + SetDlgItemText(hwndDlg, IDC_PATTERN, m_patternRegex.c_str()); + SetDlgItemText(hwndDlg, IDC_EXCLUDEDIRSPATTERN, m_excludeDirsPatternRegex.c_str()); + CheckRadioButton(hwndDlg, IDC_FILEPATTERNREGEX, IDC_FILEPATTERNTEXT, m_bUseRegexForPaths ? IDC_FILEPATTERNREGEX : IDC_FILEPATTERNTEXT); + SetDlgItemText(hwndDlg, IDC_SEARCHTEXT, m_searchString.c_str()); + SetDlgItemText(hwndDlg, IDC_SEARCHPATH, m_searchPath.c_str()); + // trigger setting replace button state + SetDlgItemText(hwndDlg, IDC_REPLACETEXT, m_replaceString.c_str()); + SetFocus(GetDlgItem(hwndDlg, IDC_SEARCHTEXT)); AdjustControlSize(IDC_BINARY); @@ -793,8 +831,8 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara if (pDropDown->hdr.hwndFrom == GetDlgItem(*this, IDOK)) { auto buf = GetDlgItemText(IDC_SEARCHPATH); - bool bIsDir = !!PathIsDirectory(buf.get()); - if ((!bIsDir) && wcschr(buf.get(), '|')) + bool bIsDir = PathIsDirectory(buf.get()); + if ((!bIsDir) && wcschr(buf.get(), L'|')) bIsDir = true; // assume directories in case of multiple paths auto sInverseSearch = TranslatedString(hResource, IDS_INVERSESEARCH); @@ -1109,7 +1147,6 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara SetDlgItemText(*this, IDC_EXCLUDEDIRSPATTERN, m_excludeDirsPatternRegex.c_str()); SetDlgItemText(*this, IDC_PATTERN, m_patternRegex.c_str()); DialogEnableWindow(IDC_WHOLEWORDS, IsDlgButtonChecked(hwndDlg, IDC_TEXTRADIO)); - CheckRegex(); } } break; @@ -1394,63 +1431,160 @@ LRESULT CSearchDlg::DoCommand(int id, int msg) } } break; + // validation_group { // initialize them in bottom up order for this control case IDC_SEARCHPATH: { if (msg == EN_CHANGE) { if (m_autoCompleteSearchPaths.GetOptions() & ACO_NOPREFIXFILTERING) m_autoCompleteSearchPaths.SetOptions(ACO_UPDOWNKEYDROPSLIST | ACO_AUTOSUGGEST); - int len = GetDlgItemTextLength(IDC_SEARCHTEXT); - auto buf = GetDlgItemText(IDC_SEARCHPATH); - bool bIsDir = !!PathIsDirectory(buf.get()); - if ((!bIsDir) && wcschr(buf.get(), '|')) - bIsDir = true; // assume directories in case of multiple paths - bool bIncludeSubfolders = (IsDlgButtonChecked(*this, IDC_INCLUDESUBFOLDERS) == BST_CHECKED); - DialogEnableWindow(IDC_ALLSIZERADIO, bIsDir); - DialogEnableWindow(IDC_SIZERADIO, bIsDir); - DialogEnableWindow(IDC_SIZECOMBO, bIsDir); - DialogEnableWindow(IDC_SIZEEDIT, bIsDir); - DialogEnableWindow(IDC_INCLUDESYSTEM, bIsDir); - DialogEnableWindow(IDC_INCLUDEHIDDEN, bIsDir); - DialogEnableWindow(IDC_INCLUDESUBFOLDERS, bIsDir); - DialogEnableWindow(IDC_INCLUDESYMLINK, bIsDir); - DialogEnableWindow(IDC_INCLUDEBINARY, bIsDir && len > 0); - DialogEnableWindow(IDC_PATTERN, bIsDir); - DialogEnableWindow(IDC_EXCLUDEDIRSPATTERN, bIsDir || bIncludeSubfolders); - DialogEnableWindow(IDC_FILEPATTERNREGEX, bIsDir); - DialogEnableWindow(IDC_FILEPATTERNTEXT, bIsDir); + auto buf = GetDlgItemText(IDC_SEARCHPATH); + wchar_t* path = buf.get(); + wchar_t* p = wcschr(path, L'|'); + if (p != NULL) + { + *p = L'\x00'; + } + // dir + bool bValid = PathIsDirectory(path); + m_hasSearchDir = bValid; // only the 1st of multiple + DialogEnableWindow(IDC_ALLSIZERADIO, bValid); + DialogEnableWindow(IDC_SIZERADIO, bValid); + DialogEnableWindow(IDC_SIZECOMBO, bValid); + DialogEnableWindow(IDC_SIZEEDIT, bValid); + // + DialogEnableWindow(IDC_INCLUDESYSTEM, bValid); + DialogEnableWindow(IDC_INCLUDEHIDDEN, bValid); + DialogEnableWindow(IDC_INCLUDESUBFOLDERS, bValid); + DialogEnableWindow(IDC_INCLUDEBINARY, bValid); + DialogEnableWindow(IDC_INCLUDESYMLINK, bValid); + // + DialogEnableWindow(IDC_RADIO_DATE_ALL, bValid); + DialogEnableWindow(IDC_RADIO_DATE_NEWER, bValid); + DialogEnableWindow(IDC_RADIO_DATE_OLDER, bValid); + DialogEnableWindow(IDC_RADIO_DATE_BETWEEN, bValid); + // + bool bIncludeSubfolders = bValid && (IsDlgButtonChecked(*this, IDC_INCLUDESUBFOLDERS) == BST_CHECKED); + DialogEnableWindow(IDC_EXCLUDEDIRSPATTERN, bIncludeSubfolders); + DialogEnableWindow(IDC_EXCLUDEDIRMRU, bIncludeSubfolders); + DialogEnableWindow(IDC_PATTERN, bValid); + DialogEnableWindow(IDC_PATTERNMRU, bValid); + // + DialogEnableWindow(IDC_FILEPATTERNREGEX, bValid); + DialogEnableWindow(IDC_FILEPATTERNTEXT, bValid); + if (!bValid) + { + // or file + bValid = PathFileExists(path); + } + m_isSearchPathValid = bValid; + RedrawWindow(GetDlgItem(*this, IDC_SEARCHPATH), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE); // change the dialog title to "grepWin : search/path" - wchar_t compactPath[100] = {0}; - PathCompactPathEx(compactPath, buf.get(), 40, 0); - wchar_t titleBuf[MAX_PATH] = {0}; + wchar_t compactPath[100] = {0}; + PathCompactPathEx(compactPath, path, 40, 0); + wchar_t titleBuf[MAX_PATH] = {0}; swprintf_s(titleBuf, _countof(titleBuf), L"grepWin : %s", compactPath); SetWindowText(*this, titleBuf); } } - break; - case IDC_INCLUDESUBFOLDERS: + case IDC_REGEXRADIO: + case IDC_TEXTRADIO: { - if (msg == BN_CLICKED) + if (id != IDC_SEARCHPATH) { - auto buf = GetDlgItemText(IDC_SEARCHPATH); - bool bIncludeSubfolders = (IsDlgButtonChecked(*this, IDC_INCLUDESUBFOLDERS) == BST_CHECKED); - bool bIsDir = !!PathIsDirectory(buf.get()); - if ((!bIsDir) && wcschr(buf.get(), '|')) - bIsDir = true; // assume directories in case of multiple paths - DialogEnableWindow(IDC_EXCLUDEDIRSPATTERN, bIsDir || bIncludeSubfolders); + DialogEnableWindow(IDC_TESTREGEX, !IsDlgButtonChecked(*this, IDC_TEXTRADIO)); + DialogEnableWindow(IDC_WHOLEWORDS, IsDlgButtonChecked(*this, IDC_TEXTRADIO)); } } - break; case IDC_SEARCHTEXT: { - if (msg == EN_CHANGE) + if (id == IDC_REGEXRADIO || id == IDC_TEXTRADIO || (msg == EN_CHANGE && id == IDC_SEARCHTEXT)) { if (m_autoCompleteSearchPatterns.GetOptions() & ACO_NOPREFIXFILTERING) m_autoCompleteSearchPatterns.SetOptions(ACO_UPDOWNKEYDROPSLIST | ACO_AUTOSUGGEST); - int len = CheckRegex(); - DialogEnableWindow(IDC_ADDTOBOOKMARKS, len > 0); - DialogEnableWindow(IDC_INCLUDEBINARY, len > 0); + std::wstring search = GetDlgItemText(IDC_SEARCHTEXT).get(); + m_SearchValidLength = static_cast(search.length()); + if (IsDlgButtonChecked(*this, IDC_REGEXRADIO) == BST_CHECKED) + { + removeMineExtVariables(search); + if (m_SearchValidLength > 0 && !CheckRegex(search)) + { + m_SearchValidLength = -1; + } + } + DialogEnableWindow(IDC_ADDTOBOOKMARKS, m_SearchValidLength > 0); + RedrawWindow(GetDlgItem(*this, IDC_SEARCHTEXT), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE); + } + } + case IDC_REPLACETEXT: + { + if (id == IDC_REGEXRADIO || id == IDC_TEXTRADIO || (msg == EN_CHANGE && id == IDC_REPLACETEXT)) + { + if (m_autoCompleteReplacePatterns.GetOptions() & ACO_NOPREFIXFILTERING) + m_autoCompleteReplacePatterns.SetOptions(ACO_UPDOWNKEYDROPSLIST | ACO_AUTOSUGGEST); + std::wstring replace = GetDlgItemText(IDC_REPLACETEXT).get(); + m_ReplaceValidLength = static_cast(replace.length()); + } + } + case IDC_FILEPATTERNREGEX: + case IDC_FILEPATTERNTEXT: + case IDC_EXCLUDEDIRSPATTERN: + { + if (id == IDC_FILEPATTERNREGEX || id == IDC_FILEPATTERNTEXT || (msg == EN_CHANGE && id == IDC_EXCLUDEDIRSPATTERN)) + { + if (m_autoCompleteExcludeDirsPatterns.GetOptions() & ACO_NOPREFIXFILTERING) + m_autoCompleteExcludeDirsPatterns.SetOptions(ACO_UPDOWNKEYDROPSLIST | ACO_AUTOSUGGEST); + if (IsDlgButtonChecked(*this, IDC_FILEPATTERNREGEX) == BST_CHECKED) + { + auto buf = GetDlgItemText(IDC_EXCLUDEDIRSPATTERN); + wchar_t* str = buf.get(); + m_isExcludeDirsRegexValid = (wcslen(str) == 0 || CheckRegex(str)); + } + else + { + m_isExcludeDirsRegexValid = TRUE; + } + RedrawWindow(GetDlgItem(*this, IDC_EXCLUDEDIRSPATTERN), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE); + } + } + case IDC_PATTERN: + { + if (id == IDC_FILEPATTERNREGEX || id == IDC_FILEPATTERNTEXT || (msg == EN_CHANGE && id == IDC_PATTERN)) + { + if (m_autoCompleteFilePatterns.GetOptions() & ACO_NOPREFIXFILTERING) + m_autoCompleteFilePatterns.SetOptions(ACO_UPDOWNKEYDROPSLIST | ACO_AUTOSUGGEST); + if (IsDlgButtonChecked(*this, IDC_FILEPATTERNREGEX) == BST_CHECKED) + { + auto buf = GetDlgItemText(IDC_PATTERN); + wchar_t* str = buf.get(); + m_isFileNameMatchingRegexValid = (wcslen(str) == 0 || CheckRegex(str)); + } + else + { + m_isFileNameMatchingRegexValid = TRUE; + } + RedrawWindow(GetDlgItem(*this, IDC_PATTERN), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE); + } + + // all grouped conditions + bool bValid = m_isSearchPathValid; + if (bValid && m_hasSearchDir) + { + bValid = m_isExcludeDirsRegexValid && m_isFileNameMatchingRegexValid; + } + DialogEnableWindow(IDOK, bValid && (m_SearchValidLength >= 0)); + DialogEnableWindow(IDC_REPLACE, bValid && (m_SearchValidLength > 0)); + } + break; + // } validation_group + case IDC_INCLUDESUBFOLDERS: + { + if (msg == BN_CLICKED) + { + bool bIncludeSubfolders = (IsDlgButtonChecked(*this, IDC_INCLUDESUBFOLDERS) == BST_CHECKED); + DialogEnableWindow(IDC_EXCLUDEDIRSPATTERN, bIncludeSubfolders); + DialogEnableWindow(IDC_EXCLUDEDIRMRU, bIncludeSubfolders); } } break; @@ -1477,16 +1611,6 @@ LRESULT CSearchDlg::DoCommand(int id, int msg) } } break; - case IDC_REGEXRADIO: - case IDC_TEXTRADIO: - case IDC_FILEPATTERNREGEX: - case IDC_FILEPATTERNTEXT: - { - CheckRegex(); - DialogEnableWindow(IDC_TESTREGEX, !IsDlgButtonChecked(*this, IDC_TEXTRADIO)); - DialogEnableWindow(IDC_WHOLEWORDS, IsDlgButtonChecked(*this, IDC_TEXTRADIO)); - } - break; case IDC_ADDTOBOOKMARKS: { auto buf = GetDlgItemText(IDC_SEARCHTEXT); @@ -1619,35 +1743,6 @@ LRESULT CSearchDlg::DoCommand(int id, int msg) SendDlgItemMessage(*this, IDC_PATTERN, WM_KEYDOWN, VK_DOWN, 0); } break; - case IDC_PATTERN: - { - if (msg == EN_CHANGE) - { - if (m_autoCompleteFilePatterns.GetOptions() & ACO_NOPREFIXFILTERING) - m_autoCompleteFilePatterns.SetOptions(ACO_UPDOWNKEYDROPSLIST | ACO_AUTOSUGGEST); - CheckRegex(); - } - } - break; - case IDC_EXCLUDEDIRSPATTERN: - { - if (msg == EN_CHANGE) - { - if (m_autoCompleteExcludeDirsPatterns.GetOptions() & ACO_NOPREFIXFILTERING) - m_autoCompleteExcludeDirsPatterns.SetOptions(ACO_UPDOWNKEYDROPSLIST | ACO_AUTOSUGGEST); - CheckRegex(); - } - } - break; - case IDC_REPLACETEXT: - { - if (msg == EN_CHANGE) - { - if (m_autoCompleteReplacePatterns.GetOptions() & ACO_NOPREFIXFILTERING) - m_autoCompleteReplacePatterns.SetOptions(ACO_UPDOWNKEYDROPSLIST | ACO_AUTOSUGGEST); - } - } - break; case IDC_EXPORT: { PreserveChdir keepCwd; @@ -4179,109 +4274,17 @@ void CSearchDlg::formatDate(wchar_t dateNative[], const FILETIME& fileTime, bool wcsncat_s(dateNative, GREPWIN_DATEBUFFER, timeBuf, GREPWIN_DATEBUFFER); } -int CSearchDlg::CheckRegex() +bool CSearchDlg::CheckRegex(const std::wstring& patternString) { - m_isRegexValid = true; - m_isExcludeDirsRegexValid = true; - m_isFileNameMatchingRegexValid = true; - - auto buf = GetDlgItemText(IDC_SEARCHTEXT); - int len = static_cast(wcslen(buf.get())); - if (IsDlgButtonChecked(*this, IDC_REGEXRADIO) == BST_CHECKED) - { - // check if the regex is valid - bool bValid = true; - if (len) - { - try - { - std::wstring localSearchString = buf.get(); - SearchReplace(localSearchString, L"${filepath}", L""); - SearchReplace(localSearchString, L"${filepath}", L""); - SearchReplace(localSearchString, L"${fileext}", L""); - - boost::wregex expression = boost::wregex(localSearchString); - } - catch (const std::exception&) - { - bValid = false; - m_isRegexValid = false; - } - } - if (len) - { - if (bValid) - { - SetDlgItemText(*this, IDC_REGEXOKLABEL, TranslatedString(hResource, IDS_REGEXOK).c_str()); - DialogEnableWindow(IDOK, true); - DialogEnableWindow(IDC_REPLACE, true); - DialogEnableWindow(IDC_CREATEBACKUP, true); - RedrawWindow(GetDlgItem(*this, IDC_SEARCHTEXT), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE); - } - else - { - SetDlgItemText(*this, IDC_REGEXOKLABEL, TranslatedString(hResource, IDS_REGEXINVALID).c_str()); - DialogEnableWindow(IDOK, false); - DialogEnableWindow(IDC_REPLACE, false); - DialogEnableWindow(IDC_CREATEBACKUP, false); - RedrawWindow(GetDlgItem(*this, IDC_SEARCHTEXT), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE); - } - } - else - { - SetDlgItemText(*this, IDC_REGEXOKLABEL, L""); - DialogEnableWindow(IDOK, true); - DialogEnableWindow(IDC_REPLACE, false); - DialogEnableWindow(IDC_CREATEBACKUP, false); - RedrawWindow(GetDlgItem(*this, IDC_SEARCHTEXT), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE); - } - } - else - { - SetDlgItemText(*this, IDC_REGEXOKLABEL, L""); - DialogEnableWindow(IDOK, true); - DialogEnableWindow(IDC_REPLACE, len > 0); - DialogEnableWindow(IDC_CREATEBACKUP, len > 0); - RedrawWindow(GetDlgItem(*this, IDC_SEARCHTEXT), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE); - } - + try { - buf = GetDlgItemText(IDC_EXCLUDEDIRSPATTERN); - len = static_cast(wcslen(buf.get())); - if (len) - { - try - { - std::wstring sRegex = buf.get(); - boost::wregex expression = boost::wregex(sRegex); - } - catch (const std::exception&) - { - m_isExcludeDirsRegexValid = false; - } - } - RedrawWindow(GetDlgItem(*this, IDC_EXCLUDEDIRSPATTERN), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE); + boost::wregex expression = boost::wregex(patternString); + return true; } - if (IsDlgButtonChecked(*this, IDC_FILEPATTERNREGEX) == BST_CHECKED) + catch (const std::exception&) { - buf = GetDlgItemText(IDC_PATTERN); - len = static_cast(wcslen(buf.get())); - if (len) - { - try - { - std::wstring sRegex = buf.get(); - boost::wregex expression = boost::wregex(sRegex); - } - catch (const std::exception&) - { - m_isFileNameMatchingRegexValid = false; - } - } + return false; } - RedrawWindow(GetDlgItem(*this, IDC_PATTERN), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE); - - return len; } void CSearchDlg::AutoSizeAllColumns() diff --git a/src/SearchDlg.h b/src/SearchDlg.h index 524fb343..2a0f0d6a 100644 --- a/src/SearchDlg.h +++ b/src/SearchDlg.h @@ -93,6 +93,7 @@ class CSearchDlg : public CDialog m_showContent = true; m_showContentSet = true; } + bool isSearchPathValid() const; bool isRegexValid() const; bool isExcludeDirsRegexValid() const; bool isFileNameMatchRegexValid() const; @@ -114,7 +115,7 @@ class CSearchDlg : public CDialog bool SaveSettings(); void SaveWndPosition(); void formatDate(wchar_t dateNative[], const FILETIME& fileTime, bool forceShortFmt) const; - int CheckRegex(); + bool CheckRegex(const std::wstring& patternString); bool MatchPath(LPCTSTR pathBuf) const; void AutoSizeAllColumns(); int GetSelectedListIndex(int index); @@ -199,7 +200,11 @@ class CSearchDlg : public CDialog std::wstring m_resultString; std::wstring m_toolTipReplaceString; std::unique_ptr m_rtfDialog; - bool m_isRegexValid; + + bool m_hasSearchDir; + bool m_isSearchPathValid; + int m_SearchValidLength; + int m_ReplaceValidLength; bool m_isExcludeDirsRegexValid; bool m_isFileNameMatchingRegexValid; diff --git a/translations/Afrikaans.lang b/translations/Afrikaans.lang index 82f9a6cf..5feba979 100644 --- a/translations/Afrikaans.lang +++ b/translations/Afrikaans.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "Aantal NULL-bytes per MB wat toegelaat word dat 'n lêer steeds as teks in plaas van binêre beskou kan word" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "slegs lêers wat by hierdie patroon ooreenstem, word deursoek\nGebruik '|' as die afbakening.\nVoorbeeld: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "die pad(e) wat rekursief gesoek word.\nAfsonder paaie met die '|' simbool.\nVoorbeeld: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "jy kan directories uitsluit, bv. CVS en beelde.\nVoorbeeld: ^(CVS|images)$\nOpmerking: '.svn' gidse is 'versteek' op Windows, dus word dit meestal nie geskandeer nie" #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Belarusian.lang b/translations/Belarusian.lang index 6477cbf0..db973db0 100644 --- a/translations/Belarusian.lang +++ b/translations/Belarusian.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "" #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Chinese Simplified.lang b/translations/Chinese Simplified.lang index 4a4e5948..8836bf4c 100644 --- a/translations/Chinese Simplified.lang +++ b/translations/Chinese Simplified.lang @@ -604,8 +604,8 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "允许将文件仍视为文本而不是二进制文件的每 MB 空字节数" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" -msgstr "仅匹配此样式的文件被搜索.\r\n 使用 \"|\" 作为分隔符.\r\n 例如: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgstr "仅匹配此样式的文件被搜索.\r\n文本匹配已扩展. 使用 \"|\" 作为分隔符.\r\n例如: *.cpp|*.h" #. Resource IDs: (176) msgid "open list with recent entries" @@ -641,8 +641,8 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "将被递归搜索的路径.\r\n 使用 \"|\" 符号来分隔路径.\r\n 比如: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." -msgstr "你可以排除目录, 比如: CVS 和 images.\r\n 例如: ^(CVS|images)$\r\n 注意, \".svn\" 目录在 Windows 中是隐藏的, 所以通常不扫描它们." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgstr "你可以排除目录, 比如: CVS 和 images.\r\n文本匹配已扩展. 例如: ^(CVS|images)$\r\n注意, \".svn\" 目录在 Windows 中是隐藏的, 所以通常不扫描它们." #. Resource IDs: (1064, 1066, 1067) msgid "|" diff --git a/translations/Chinese Traditional.lang b/translations/Chinese Traditional.lang index 247765ad..0553a120 100644 --- a/translations/Chinese Traditional.lang +++ b/translations/Chinese Traditional.lang @@ -604,8 +604,8 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "每 MB 允許的 NULL 位元數,以便將檔案仍視為文字而不是二進位檔案" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" -msgstr "僅搜尋與此模式匹配的檔案。\r\n使用 \"|\" 作為分隔符。\r\n例如: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgstr "僅搜尋與此模式匹配的檔案。\r\n文字匹配已擴充。使用 \"|\" 作為分隔符。\r\n例如: *.cpp|*.h" #. Resource IDs: (176) msgid "open list with recent entries" @@ -641,8 +641,8 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "遞迴搜尋的路徑。\r\n使用 \"|\" 符號分隔路徑。\r\n例如: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." -msgstr "您可以排除目錄,例如 CVS 和 images。\r\n例如: ^(CVS|images)$\r\n注意,'.svn' 資料夾在 Windows 上是 '隱藏' 的,因此通常不會被掃描。" +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgstr "您可以排除目錄,例如 CVS 和 images。\r\n文字匹配已擴充。例如: ^(CVS|images)$\r\n注意,'.svn' 資料夾在 Windows 上是 '隱藏' 的,因此通常不會被掃描。" #. Resource IDs: (1064, 1066, 1067) msgid "|" diff --git a/translations/Dutch.lang b/translations/Dutch.lang index bb20c98e..2b6b13a3 100644 --- a/translations/Dutch.lang +++ b/translations/Dutch.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "Aantal NULL-bytes per MB waarmee een bestand nog steeds wordt beschouwd als tekst in plaats van binair" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "alleen bestanden die overeenkomen met dit patroon, worden doorzocht.\r\nGebruik \"|\" als scheidingsteken.\r\nVoorbeeld: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "het pad wordt recursief doorzocht.\r\nScheidt de paden met het | symbool.\r\nVoorbeeld: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "Je kunt mappen uitsluiten, bijv. CVS en afbeeldingen.\r\nVoorbeeld: ^(CVS|images)$\r\nOpmerking: '.svn' mappen zijn in Windows normaal verborgen en worden daarom normaal niet doorzocht." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/English.lang b/translations/English.lang index 75fabb9d..d5b051be 100644 --- a/translations/English.lang +++ b/translations/English.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "" #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/French.lang b/translations/French.lang index 7ab3a03e..60f40ce7 100644 --- a/translations/French.lang +++ b/translations/French.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "La recherche ne sera manée que dans les fichiers qui correspondent à ce motif.\nUtiliser '|' comme séparateur\nExemple : *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "Chemin(s) de recherche récursive.\n'|' pour ajouter un chemin.\nExemple : c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "Il est possible d'exclure des dossiers. Exemple : ^(CVS|images)$ pour exclure CVS\\ et images\\.\nLes dossiers .svn sont 'cachés' sous Windows et ne sont normalment pas parcourus." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/German.lang b/translations/German.lang index 40877a66..36edadd6 100644 --- a/translations/German.lang +++ b/translations/German.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "Anzahl erlaubte NULL Bytes pro MB damit eine Datei als Text statt binär erkannt wird" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "Nur Dateien, die diesem Muster entsprechen, werden gesucht.\r\nVerwenden Sie \"|\" als Trennzeichen.\r\nBeispiel: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "Der Pfad bzw. die Pfade, der bzw. die rekursiv gesucht wird bzw. werden.\r\nSeparieren Sie Pfade mit dem | Symbol.\r\nBeispiel: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "Sie können Verzeichnisse ausschließen, z.B. CVS und Images.\r\nBeispiel: ^(CVS|images)$\r\nHinweis´, '.svn'-Ordner sind in Windows 'versteckt', so werden diese üblicherweise nicht gescannt." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Greek.lang b/translations/Greek.lang index 91bf3354..d8e789f9 100644 --- a/translations/Greek.lang +++ b/translations/Greek.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "αναζητούνται μόνο αρχεία που ταιριάζουν με αυτό το μοτίβο.\nΧρήση του \"|\" ως διαχωριστικό.\r\nΠαράδειγμα: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "διαδρομές που αναζητούνται διαδοχικά. \r\nΧρήση του \"|\" ως διαχωριστικό.\r\nΠαράδειγμα: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "μπορείτε να εξαιρέσετε καταλόγους, π.χ. CVS και εικόνες.\r\nΠαράδειγμα: ^(CVS|images)$\r\nΣημείωση, οι φάκελοι '.svn' είναι 'κρυφοί' στα Windows, επομένως συνήθως δεν σαρώνονται." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Hindi.lang b/translations/Hindi.lang index 15361610..dbfebf7d 100644 --- a/translations/Hindi.lang +++ b/translations/Hindi.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "फ़ाइल को binary के बजाए टेक्स्ट मानने के लिए NULL bytes per MB की यह संख्या मान्य है" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "मात्र वही फ़ाइल खोजी जाएंगी जो इस स्वरूप से मिलान खाती हैं.\ndelimiter के रूप में '|' प्रयोग करें.\nउदाहरण: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "जो पथ recursively खोजे जा रहे हैं.\n'|' चिन्ह से पथ अलग करें.\nउदाहरण: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "आप निदेशिका बाहर रख सकते हैं, उदाहरण CVS and चित्र .\nउदाहरण: ^(CVS|चित्र)$\nकृपया ध्यान दें, 'Windows में .svn' फ़ोल्डर 'छिपे' हुए हैं, अतः वो प्रायः स्कैन नहीं किए जाते" #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Hungarian.lang b/translations/Hungarian.lang index d34f26c4..90772c0d 100644 --- a/translations/Hungarian.lang +++ b/translations/Hungarian.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "a NULL bájtok MB-onként megengedett száma, hogy egy fájl még mindig szövegnek és nem binárisnak minősüljön" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "csak a mintának megfelelő fájlokat keresi a rendszer.\r\n\"|\" jelet használja elválasztójelként.\r\nPélda: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "a rekurzívan keresett elérési útvonal(ak).\r\nElkülöníti az elérési utakat a | szimbólummal.\r\nPélda: c:\\\temp|d:\\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "kizárhat könyvtárakat, például a CVS-t és a képeket.\r\Példa: ^(CVS|images)$\r\nMegjegyzés: Az '.svn' mappák Windowson 'rejtett' mappák, ezért általában nem kerülnek átvizsgálásra." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Italian.lang b/translations/Italian.lang index c5e251f7..5ec3949a 100644 --- a/translations/Italian.lang +++ b/translations/Italian.lang @@ -606,7 +606,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "numero consentito di byte NULL per MB in un file per essere ancora considerato testo anziché binario" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "vengono cercati solo i file che corrispondono a questo modello.\nUsa \"|\" come delimitatore.\nEsempio: *.cpp|*.h" #. Resource IDs: (176) @@ -643,7 +643,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "il percorso(i) che viene cercato in modo ricorsivo.\nSeparare i percorsi con il simbolo \"|\".\nEsempio: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "puoi escludere le cartelle, ad es. CVS e immagini.\nEsempio: ^(CVS|immagini)$\nNota, le cartelle '.svn' sono 'nascoste' su Windows, quindi di solito non vengono scansionate." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Japanese.lang b/translations/Japanese.lang index 636ce240..b906b040 100644 --- a/translations/Japanese.lang +++ b/translations/Japanese.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "ファイルをバイナリでなくテキストと認識するための MB あたりの NULL バイトの数" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "このパターンに一致するファイルから検索されます。\r\n区切りに「|」が使えます。\r\n指定例: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "パスは再帰的に検索されます。\r\nパスを「|」で区切ることができます。\r\n指定例: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "フォルダを除外できます。CVS と images を除外する例です。\r\n指定例: ^(CVS|images)$\r\n注: Windows では「.svn」フォルダは隠されているため、通常はスキャンされません。" #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Korean.lang b/translations/Korean.lang index 094d2684..677ab23b 100644 --- a/translations/Korean.lang +++ b/translations/Korean.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "파일이 바이너리 대신 텍스트로 간주되도록 허용되는 MB 당 NULL 바이트 수" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "이 패턴과 일치하는 파일들만 검색됩니다.\n구분 기호로 '|'를 사용합니다.\n예제: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "재귀적으로 검색되는 경로입니다.\n'|' 기호로 경로를 구분합니다.\n예제: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "디렉터리를 제외할 수 있고, 예를 들어 CVS 및 이미지입니다.\n예제: ^(CVS|images)$\n참고: '.svn'폴더는 Windows에서 '숨겨져' 있으므로 일반적으로 검색되지 않습니다." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Polish.lang b/translations/Polish.lang index 9db0f349..93627809 100644 --- a/translations/Polish.lang +++ b/translations/Polish.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "ilość znakó/bajtów NULL na każdy MB pozwalający nadal uznać plik jako tekstowy, zamiast binarny" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "Wyszukiwane są tylko pliki odpowiadające temu wzorcowi.\r\nJako separatora użyj \"|\" \r\nPrzykład: *.cpp|*." #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "Ścieżka(-i), która(-e) jest(są) przeszukiwana(-e) regularnie.\r\nOddziel ścieżki za pomocą symbolu (pipe): | \r\nPrzykład: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "Można wykluczyć katalogi, np. CVS i obrazy.\r\nPrzykład: ^(CVS|obrazy)$\r\nUwaga, foldery '.svn' są ukryte w Windows, więc zwykle nie są one skanowane." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Portuguese Brazilian.lang b/translations/Portuguese Brazilian.lang index 48d0a52e..b1eb4c5b 100644 --- a/translations/Portuguese Brazilian.lang +++ b/translations/Portuguese Brazilian.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "número de bytes NULOS por MB permitido para um arquivo ainda ser considerado texto em vez de binário" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "Somente os arquivos correspondentes a esse padrão serão pesquisados.\r\nUse \"|\" como delimitador.\r\nExemplo: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "Os caminhos serão pesquisados recursivamente.\r\nSepare os caminhos com o símbolo |.\r\nExemplo: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "Você pode excluir diretórios, ex. CVS e imagens.\r\nExemplo: ^(CVS|imagens)$\r\nNote, as pastas '.svn' estão 'ocultas' no Windows, geralmente não são verificadas." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Portuguese.lang b/translations/Portuguese.lang index 1731472e..fd82fbdb 100644 --- a/translations/Portuguese.lang +++ b/translations/Portuguese.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "" #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Russian.lang b/translations/Russian.lang index f696cfb5..da5831a9 100644 --- a/translations/Russian.lang +++ b/translations/Russian.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "NULL-байт на МБ для файла, чтобы считать его текстовым, а не двоичным" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "Поиск только файлов соответствующих шаблону.\r\nИспользуйте '|' как разделитель.\r\nПример: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "Рекурсивный поиск путей.\r\nРазделяйте пути знаком '|'.\r\nПример: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "Вы можете исключать папки.\r\nПример: ^(CVS|images)$\r\nВнимание: папки '.svn', как правило, скрыты в Windows,\r\nпоэтому они обычно не сканируются." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Slovak.lang b/translations/Slovak.lang index 013ef7cf..11a00d2e 100644 --- a/translations/Slovak.lang +++ b/translations/Slovak.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "" #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Spanish Mexican.lang b/translations/Spanish Mexican.lang index a2acdb51..20fc14a8 100644 --- a/translations/Spanish Mexican.lang +++ b/translations/Spanish Mexican.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "Número de bytes NULL por MB permitidos para que un archivo se considere como texto en lugar de binario" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "solo archivos que coincidan con este patrón son buscados.\nUse '|' como el delimitador.\nEjemplo: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "la(s) ruta(s) en las que se busca(n) recursivamente.\nSepare las rutas con el símbolo |.\nEjemplo: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "puede excluir directorios, ej. CVS e imágenes.\nEjemplo: ^(CVS|imágenes)$\nNota, las carpetas '.svn' están 'ocultas' en Windows, por lo que usualmente no son escaneadas." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Spanish.lang b/translations/Spanish.lang index 147d018b..66682565 100644 --- a/translations/Spanish.lang +++ b/translations/Spanish.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "solo archivos que coincidan con el patron son utilizados.\r\nUse \"|\" como delimitador.\r\nEjemplo: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "la(s) ruta(s) que se busca(n) recursivamente.\r\nSepare rutas con el simbolo |.\r\nEjemplo: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "puede excluir directorios,ej. CVS e imagenes.\r\nEjemplo: ^(CVS|imagenes)$\r\nNota, carpetas '.svn' estan 'ocultas' en Windows, por lo que usualmente no son analizadas." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Swedish.lang b/translations/Swedish.lang index 9f0f641b..e598514d 100644 --- a/translations/Swedish.lang +++ b/translations/Swedish.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "söker bara efter filer som matchar detta mönster.\r\nAnvänd \"|\" som avgränsare.\r\nExempelvis: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "sökväg(arna) söks rekursivt.\r\nSeparera sökvägar med | symbolen.\r\nExempelvis: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "du kan exkludera mappar, exempelvis CVS och bilder.\r\nExempelvis: ^(CVS|bilder)$\r\nMärk, '.svn'-mappar are är dolda i Windows, så de är vanligtvis inte sökta i." #. Resource IDs: (1064, 1066, 1067) diff --git a/translations/Turkish.lang b/translations/Turkish.lang index 2f749328..84a8eae4 100644 --- a/translations/Turkish.lang +++ b/translations/Turkish.lang @@ -604,7 +604,7 @@ msgid "number of NULL bytes per MB allowed for a file to still be considered tex msgstr "" #. Resource IDs: (112) -msgid "only files that match this pattern are searched.\r\nUse \"|\" as the delimiter.\r\nExample: *.cpp|*.h" +msgid "only files that match this pattern are searched.\r\nText match extended. Use\"|\" as the delimiter.\r\nExample: *.cpp|*.h" msgstr "yalnızca bu şablonla eşleşen dosyalar aranır.\r\nSınırlayıcı olarak \"|\" kullanın.\r\nÖrnek: *.cpp|*.h" #. Resource IDs: (176) @@ -641,7 +641,7 @@ msgid "the path(s) which is searched recursively.\r\nSeparate paths with the | s msgstr "özyinelemede aranan yollar.\r\n| sembolü ile ayrı yollar.\r\nÖrnek: c:\\temp|d:\\logs" #. Resource IDs: (113) -msgid "you can exclude directories, e.g. CVS and images.\r\nExample: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." +msgid "you can exclude directories, e.g. CVS and images.\r\nText match extended. Example: ^(CVS|images)$\r\nNote, '.svn' folders are 'hidden' on Windows, so they usually are not scanned." msgstr "dizinleri hariç tutabilirsiniz, ör. CVS ve Resimler.\r\nÖrnek: ^(CVS|images)$\r\nNot: klasörlerinin Windows\'ta 'gizli' olduğuna dikkat edin, bu nedenle genellikle taranmazlar." #. Resource IDs: (1064, 1066, 1067)