mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
+ upd: merging current grepWin dev -> grepWinNP3
This commit is contained in:
parent
7386b33445
commit
18cc667a79
@ -1,6 +1,6 @@
|
||||
// sktoolslib - common files for SK tools
|
||||
|
||||
// Copyright (C) 2012-2019 - Stefan Kueng
|
||||
// Copyright (C) 2012-2020 - Stefan Kueng
|
||||
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
@ -294,36 +294,98 @@ class CStringUtils
|
||||
{
|
||||
public:
|
||||
// trim from both ends
|
||||
static inline std::string &trim(std::string &s) {
|
||||
static inline std::string& trim(std::string& s)
|
||||
{
|
||||
return ltrim(rtrim(s));
|
||||
}
|
||||
static inline std::string& trim(std::string& s, const std::string& trimchars)
|
||||
{
|
||||
return ltrim(rtrim(s, trimchars), trimchars);
|
||||
}
|
||||
static inline std::string& trim(std::string& s, wint_t trimchar)
|
||||
{
|
||||
return ltrim(rtrim(s, trimchar), trimchar);
|
||||
}
|
||||
|
||||
// trim from start
|
||||
static inline std::string <rim(std::string &s) {
|
||||
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](wint_t c) {return !iswspace(c); }));
|
||||
static inline std::string& ltrim(std::string& s)
|
||||
{
|
||||
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](wint_t c) { return !iswspace(c); }));
|
||||
return s;
|
||||
}
|
||||
static inline std::string& ltrim(std::string& s, const std::string& trimchars)
|
||||
{
|
||||
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [&trimchars](wint_t c) { return trimchars.find((char)c) == std::string::npos; }));
|
||||
return s;
|
||||
}
|
||||
static inline std::string& ltrim(std::string& s, wint_t trimchar)
|
||||
{
|
||||
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [&trimchar](wint_t c) { return c != trimchar; }));
|
||||
return s;
|
||||
}
|
||||
|
||||
// trim from end
|
||||
static inline std::string &rtrim(std::string &s) {
|
||||
s.erase(std::find_if(s.rbegin(), s.rend(), [](wint_t c) {return !iswspace(c); }).base(), s.end());
|
||||
static inline std::string& rtrim(std::string& s)
|
||||
{
|
||||
s.erase(std::find_if(s.rbegin(), s.rend(), [](wint_t c) { return !iswspace(c); }).base(), s.end());
|
||||
return s;
|
||||
}
|
||||
static inline std::string& rtrim(std::string& s, const std::string& trimchars)
|
||||
{
|
||||
s.erase(std::find_if(s.rbegin(), s.rend(), [&trimchars](wint_t c) { return trimchars.find((char)c) == std::string::npos; }).base(), s.end());
|
||||
return s;
|
||||
}
|
||||
static inline std::string& rtrim(std::string& s, wint_t trimchar)
|
||||
{
|
||||
s.erase(std::find_if(s.rbegin(), s.rend(), [&trimchar](wint_t c) { return c != trimchar; }).base(), s.end());
|
||||
return s;
|
||||
}
|
||||
|
||||
// trim from both ends
|
||||
static inline std::wstring &trim(std::wstring &s) {
|
||||
static inline std::wstring& trim(std::wstring& s)
|
||||
{
|
||||
return ltrim(rtrim(s));
|
||||
}
|
||||
static inline std::wstring& trim(std::wstring& s, const std::wstring& trimchars)
|
||||
{
|
||||
return ltrim(rtrim(s, trimchars), trimchars);
|
||||
}
|
||||
static inline std::wstring& trim(std::wstring& s, wint_t trimchar)
|
||||
{
|
||||
return ltrim(rtrim(s, trimchar), trimchar);
|
||||
}
|
||||
|
||||
// trim from start
|
||||
static inline std::wstring <rim(std::wstring &s) {
|
||||
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](wint_t c) {return !iswspace(c); }));
|
||||
static inline std::wstring& ltrim(std::wstring& s)
|
||||
{
|
||||
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](wint_t c) { return !iswspace(c); }));
|
||||
return s;
|
||||
}
|
||||
static inline std::wstring& ltrim(std::wstring& s, const std::wstring& trimchars)
|
||||
{
|
||||
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [&trimchars](wint_t c) { return trimchars.find(c) == std::wstring::npos; }));
|
||||
return s;
|
||||
}
|
||||
static inline std::wstring& ltrim(std::wstring& s, wint_t trimchar)
|
||||
{
|
||||
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [&trimchar](wint_t c) { return c != trimchar; }));
|
||||
return s;
|
||||
}
|
||||
|
||||
// trim from end
|
||||
static inline std::wstring &rtrim(std::wstring &s) {
|
||||
s.erase(std::find_if(s.rbegin(), s.rend(), [](wint_t c) {return !iswspace(c); }).base(), s.end());
|
||||
static inline std::wstring& rtrim(std::wstring& s)
|
||||
{
|
||||
s.erase(std::find_if(s.rbegin(), s.rend(), [](wint_t c) { return !iswspace(c); }).base(), s.end());
|
||||
return s;
|
||||
}
|
||||
static inline std::wstring& rtrim(std::wstring& s, const std::wstring& trimchars)
|
||||
{
|
||||
s.erase(std::find_if(s.rbegin(), s.rend(), [&trimchars](wint_t c) { return trimchars.find(c) == std::wstring::npos; }).base(), s.end());
|
||||
return s;
|
||||
}
|
||||
static inline std::wstring& rtrim(std::wstring& s, wint_t trimchar)
|
||||
{
|
||||
s.erase(std::find_if(s.rbegin(), s.rend(), [&trimchar](wint_t c) { return c != trimchar; }).base(), s.end());
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
@ -131,21 +131,24 @@ void CBookmarks::RemoveBookmark(const std::wstring& name)
|
||||
Bookmark CBookmarks::GetBookmark( const std::wstring& name )
|
||||
{
|
||||
Bookmark bk;
|
||||
bk.Name = name;
|
||||
bk.Search = GetValue(name.c_str(), L"searchString", L"");
|
||||
bk.Replace = GetValue(name.c_str(), L"replaceString", L"");
|
||||
bk.UseRegex = wcscmp(GetValue(name.c_str(), L"useregex", L"false"), L"true") == 0;
|
||||
bk.CaseSensitive = wcscmp(GetValue(name.c_str(), L"casesensitive", L"false"), L"true") == 0;
|
||||
bk.DotMatchesNewline = wcscmp(GetValue(name.c_str(), L"dotmatchesnewline", L"false"), L"true") == 0;
|
||||
bk.Backup = wcscmp(GetValue(name.c_str(), L"backup", L"false"), L"true") == 0;
|
||||
bk.Utf8 = wcscmp(GetValue(name.c_str(), L"utf8", L"false"), L"true") == 0;
|
||||
bk.IncludeSystem = wcscmp(GetValue(name.c_str(), L"includesystem", L"false"), L"true") == 0;
|
||||
bk.IncludeFolder = wcscmp(GetValue(name.c_str(), L"includefolder", L"false"), L"true") == 0;
|
||||
bk.IncludeHidden = wcscmp(GetValue(name.c_str(), L"includehidden", L"false"), L"true") == 0;
|
||||
bk.IncludeBinary = wcscmp(GetValue(name.c_str(), L"includebinary", L"false"), L"true") == 0;
|
||||
bk.ExcludeDirs = GetValue(name.c_str(), L"excludedirs", L"");
|
||||
bk.FileMatch = GetValue(name.c_str(), L"filematch", L"");
|
||||
bk.FileMatchRegex = wcscmp(GetValue(name.c_str(), L"filematchregex", L"false"), L"true") == 0;
|
||||
if (GetSectionSize(name.c_str()) >= 0)
|
||||
{
|
||||
bk.Name = name;
|
||||
bk.Search = GetValue(name.c_str(), L"searchString", L"");
|
||||
bk.Replace = GetValue(name.c_str(), L"replaceString", L"");
|
||||
bk.UseRegex = wcscmp(GetValue(name.c_str(), L"useregex", L"false"), L"true") == 0;
|
||||
bk.CaseSensitive = wcscmp(GetValue(name.c_str(), L"casesensitive", L"false"), L"true") == 0;
|
||||
bk.DotMatchesNewline = wcscmp(GetValue(name.c_str(), L"dotmatchesnewline", L"false"), L"true") == 0;
|
||||
bk.Backup = wcscmp(GetValue(name.c_str(), L"backup", L"false"), L"true") == 0;
|
||||
bk.Utf8 = wcscmp(GetValue(name.c_str(), L"utf8", L"false"), L"true") == 0;
|
||||
bk.IncludeSystem = wcscmp(GetValue(name.c_str(), L"includesystem", L"false"), L"true") == 0;
|
||||
bk.IncludeFolder = wcscmp(GetValue(name.c_str(), L"includefolder", L"false"), L"true") == 0;
|
||||
bk.IncludeHidden = wcscmp(GetValue(name.c_str(), L"includehidden", L"false"), L"true") == 0;
|
||||
bk.IncludeBinary = wcscmp(GetValue(name.c_str(), L"includebinary", L"false"), L"true") == 0;
|
||||
bk.ExcludeDirs = GetValue(name.c_str(), L"excludedirs", L"");
|
||||
bk.FileMatch = GetValue(name.c_str(), L"filematch", L"");
|
||||
bk.FileMatchRegex = wcscmp(GetValue(name.c_str(), L"filematchregex", L"false"), L"true") == 0;
|
||||
}
|
||||
|
||||
return bk;
|
||||
}
|
||||
|
||||
@ -32,16 +32,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
// remains consistent on all systems.
|
||||
IDI_GREPWIN ICON "grepWinNP3.ico"
|
||||
|
||||
#endif // Neutral resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Neutral resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
#pragma code_page(1252)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@ -153,7 +143,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_ABOUT DIALOGEX 0, 0, 263, 86
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About grepWinNP3"
|
||||
FONT 9, "MS Shell Dlg 2", 400, 0, 0x1
|
||||
BEGIN
|
||||
@ -175,7 +165,7 @@ BEGIN
|
||||
CONTROL "",IDC_TEXTCONTENT,"RichEdit20W",WS_VSCROLL | WS_TABSTOP | 0x1084,7,7,303,96
|
||||
END
|
||||
|
||||
IDD_SETTINGS DIALOGEX 0, 0, 317, 189
|
||||
IDD_SETTINGS DIALOGEX 0, 0, 317, 209
|
||||
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
CAPTION "grepWinNP3 Settings"
|
||||
FONT 9, "MS Shell Dlg 2", 400, 0, 0x1
|
||||
@ -189,17 +179,19 @@ BEGIN
|
||||
LTEXT "This adds a new entry to the context menu named 'Open with Editor'",IDC_STATIC3,13,66,288,16
|
||||
LTEXT "Language:",IDC_STATIC4,16,92,119,8
|
||||
COMBOBOX IDC_LANGUAGE,151,90,159,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Escape key closes grepWinNP3",IDC_ESCKEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,106,183,10
|
||||
CONTROL "Escape key closes grepWinNP3",IDC_ESCKEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,106,252,10
|
||||
CONTROL "Create backup files in a separate folder",IDC_BACKUPINFOLDER,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,119,148,10
|
||||
DEFPUSHBUTTON "OK",IDOK,204,168,50,13
|
||||
PUSHBUTTON "Cancel",IDCANCEL,260,168,50,13
|
||||
CONTROL "Only one instance",IDC_ONLYONE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,131,138,10
|
||||
CONTROL "Dark mode",IDC_DARKMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,143,150,10
|
||||
LTEXT "",IDC_DARKMODEINFO,17,154,179,23,WS_DISABLED
|
||||
RTEXT "Max # of concurrent worker",IDC_TEXT_NUMOFWORKER,147,144,119,9,0,WS_EX_RIGHT
|
||||
EDITTEXT IDC_MAXNUMWORKER,270,142,31,13,ES_RIGHT | ES_NUMBER | WS_GROUP,WS_EX_RIGHT
|
||||
CONTROL "",IDC_SPIN_MAXWORKER,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNLEFT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP,271,142,10,13
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,119,249,10
|
||||
CONTROL "Don't warn when replacing without creating backups",IDC_NOWARNINGIFNOBACKUP,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,131,250,10
|
||||
DEFPUSHBUTTON "OK",IDOK,204,180,50,13
|
||||
PUSHBUTTON "Cancel",IDCANCEL,260,180,50,13
|
||||
CONTROL "Only one instance",IDC_ONLYONE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,143,150,10
|
||||
CONTROL "Dark mode",IDC_DARKMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,155,157,10
|
||||
LTEXT "",IDC_DARKMODEINFO,17,170,180,23,WS_DISABLED
|
||||
RTEXT "Max # of concurrent worker",IDC_TEXT_NUMOFWORKER,156,156,107,9,0,WS_EX_RIGHT
|
||||
EDITTEXT IDC_MAXNUMWORKER,271,154,31,13,ES_RIGHT | ES_NUMBER | WS_GROUP,WS_EX_RIGHT
|
||||
CONTROL "",IDC_SPIN_MAXWORKER,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNLEFT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_GROUP,271,154,10,13
|
||||
END
|
||||
|
||||
|
||||
@ -278,7 +270,7 @@ BEGIN
|
||||
VERTGUIDE, 13
|
||||
VERTGUIDE, 301
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 181
|
||||
BOTTOMMARGIN, 201
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
@ -318,6 +310,36 @@ END
|
||||
IDR_INFODLG HTML "infodlg.htm"
|
||||
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"..\\resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
|
||||
"#include ""windows.h""\r\n"
|
||||
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
|
||||
"#ifndef APSTUDIO_INVOKED\r\n"
|
||||
"#include ""grepWin.rc2""\r\n"
|
||||
"#endif\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
@ -401,46 +423,6 @@ BEGIN
|
||||
IDS_ERR_PATHNOTEXIST "Path does not exist or is not accessible!"
|
||||
END
|
||||
|
||||
#endif // Neutral resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Neutral resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
#pragma code_page(1252)
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"..\\resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
|
||||
"#include ""windows.h""\r\n"
|
||||
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
|
||||
"#ifndef APSTUDIO_INVOKED\r\n"
|
||||
"#include ""grepWin.rc2""\r\n"
|
||||
"#endif\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // Neutral resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@ -191,6 +191,19 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
SHAutoComplete(GetDlgItem(*this, IDC_SEARCHPATH), SHACF_FILESYSTEM|SHACF_AUTOSUGGEST_FORCE_ON);
|
||||
|
||||
m_AutoCompleteFilePatterns.Load(_T("Software\\grepWinNP3\\History"), _T("FilePattern"));
|
||||
m_AutoCompleteFilePatterns.Init(GetDlgItem(hwndDlg, IDC_PATTERN));
|
||||
m_AutoCompleteExcludeDirsPatterns.Load(_T("Software\\grepWinNP3\\History"), _T("ExcludeDirsPattern"));
|
||||
m_AutoCompleteExcludeDirsPatterns.Init(GetDlgItem(hwndDlg, IDC_EXCLUDEDIRSPATTERN));
|
||||
m_AutoCompleteSearchPatterns.Load(_T("Software\\grepWinNP3\\History"), _T("SearchPattern"));
|
||||
m_AutoCompleteSearchPatterns.Init(GetDlgItem(hwndDlg, IDC_SEARCHTEXT));
|
||||
m_AutoCompleteReplacePatterns.Load(_T("Software\\grepWinNP3\\History"), _T("ReplacePattern"));
|
||||
m_AutoCompleteReplacePatterns.Init(GetDlgItem(hwndDlg, IDC_REPLACETEXT));
|
||||
m_AutoCompleteSearchPaths.Load(_T("Software\\grepWinNP3\\History"), _T("SearchPaths"));
|
||||
m_AutoCompleteSearchPaths.Init(GetDlgItem(hwndDlg, IDC_SEARCHPATH));
|
||||
|
||||
m_themeCallbackId = CTheme::Instance().RegisterThemeChangeCallback(
|
||||
[this]() {
|
||||
auto bDark = CTheme::Instance().IsDarkTheme();
|
||||
@ -277,18 +290,6 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||
m_pDropTarget->AddSuportedFormat(ftetc);
|
||||
ftetc.cfFormat=CF_HDROP;
|
||||
m_pDropTarget->AddSuportedFormat(ftetc);
|
||||
SHAutoComplete(GetDlgItem(*this, IDC_SEARCHPATH), SHACF_FILESYSTEM|SHACF_AUTOSUGGEST_FORCE_ON);
|
||||
|
||||
m_AutoCompleteFilePatterns.Load(_T("Software\\grepWinNP3\\History"), _T("FilePattern"));
|
||||
m_AutoCompleteFilePatterns.Init(GetDlgItem(hwndDlg, IDC_PATTERN));
|
||||
m_AutoCompleteExcludeDirsPatterns.Load(_T("Software\\grepWinNP3\\History"), _T("ExcludeDirsPattern"));
|
||||
m_AutoCompleteExcludeDirsPatterns.Init(GetDlgItem(hwndDlg, IDC_EXCLUDEDIRSPATTERN));
|
||||
m_AutoCompleteSearchPatterns.Load(_T("Software\\grepWinNP3\\History"), _T("SearchPattern"));
|
||||
m_AutoCompleteSearchPatterns.Init(GetDlgItem(hwndDlg, IDC_SEARCHTEXT));
|
||||
m_AutoCompleteReplacePatterns.Load(_T("Software\\grepWinNP3\\History"), _T("ReplacePattern"));
|
||||
m_AutoCompleteReplacePatterns.Init(GetDlgItem(hwndDlg, IDC_REPLACETEXT));
|
||||
m_AutoCompleteSearchPaths.Load(_T("Software\\grepWinNP3\\History"), _T("SearchPaths"));
|
||||
m_AutoCompleteSearchPaths.Init(GetDlgItem(hwndDlg, IDC_SEARCHPATH));
|
||||
|
||||
m_editFilePatterns.Subclass(hwndDlg, IDC_PATTERN);
|
||||
m_editExcludeDirsPatterns.Subclass(hwndDlg, IDC_EXCLUDEDIRSPATTERN);
|
||||
@ -392,7 +393,7 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||
{
|
||||
if (bPortable)
|
||||
{
|
||||
m_showContent = wcscmp(g_iniFile.GetValue(L"global", L"showcontent", L"0"), L"0") == 0;
|
||||
m_showContent = g_iniFile.GetBoolValue(L"global", L"showcontent", false);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -799,6 +800,8 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
|
||||
if (!SaveSettings())
|
||||
break;
|
||||
|
||||
CStringUtils::rtrim(m_searchpath, L"\\/");
|
||||
|
||||
if (PathIsRelative(m_searchpath.c_str()))
|
||||
{
|
||||
ShowEditBalloon(IDC_SEARCHPATH, TranslatedString(hResource, IDS_ERR_INVALID_PATH).c_str(), TranslatedString(hResource, IDS_ERR_RELATIVEPATH).c_str());
|
||||
@ -844,19 +847,23 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
|
||||
|
||||
if (m_bReplace && (!m_bCreateBackup || m_replaceString.empty()) && m_bConfirmationOnReplace)
|
||||
{
|
||||
auto msgtext = CStringUtils::Format((LPCWSTR)TranslatedString(hResource, IDS_REPLACECONFIRM).c_str(),
|
||||
m_searchString.c_str(),
|
||||
m_replaceString.empty() ? (LPCWSTR)TranslatedString(hResource, IDS_ANEMPTYSTRING).c_str() : m_replaceString.c_str());
|
||||
if (::MessageBox(*this, msgtext.c_str(), _T("grepWinNP3"), MB_ICONQUESTION | MB_YESNO) != IDYES)
|
||||
auto nowarnifnobackup = bPortable ? g_iniFile.GetBoolValue(L"settings", L"nowarnifnobackup", false) : DWORD(CRegStdDWORD(L"Software\\grepWinNP3\\nowarnifnobackup", FALSE));
|
||||
if (!nowarnifnobackup)
|
||||
{
|
||||
break;
|
||||
auto msgtext = CStringUtils::Format((LPCWSTR)TranslatedString(hResource, IDS_REPLACECONFIRM).c_str(),
|
||||
m_searchString.c_str(),
|
||||
m_replaceString.empty() ? (LPCWSTR)TranslatedString(hResource, IDS_ANEMPTYSTRING).c_str() : m_replaceString.c_str());
|
||||
if (::MessageBox(*this, msgtext.c_str(), _T("grepWinNP3"), MB_ICONQUESTION | MB_YESNO) != IDYES)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
m_bConfirmationOnReplace = true;
|
||||
InterlockedExchange(&s_Cancelled, FALSE);
|
||||
InterlockedExchange(&s_NOTSearch, ((GetKeyState(VK_SHIFT) & 0x8000) != 0) ? TRUE : FALSE);
|
||||
ShowWindow(GetDlgItem(*this, IDC_PROGRESS), SW_SHOW);
|
||||
EnableWindow(GetDlgItem(*this, IDC_SETTINGSBUTTON), FALSE);
|
||||
EnableWindow(GetDlgItem(*this, IDC_SETTINGSBUTTON), FALSE);
|
||||
|
||||
// now start the thread which does the searching
|
||||
InterlockedExchange(&s_SearchThreadRunning, TRUE);
|
||||
@ -1780,15 +1787,29 @@ void CSearchDlg::DoListNotify(LPNMITEMACTIVATE lpNMItemActivate)
|
||||
swprintf_s(pItem->pszText, pItem->cchTextMax, L"%lld", pInfo->matchcount);
|
||||
break;
|
||||
case 3: // path
|
||||
wcsncpy_s(pItem->pszText, pItem->cchTextMax, pInfo->filepath.substr(0, pInfo->filepath.size() - pInfo->filepath.substr(pInfo->filepath.find_last_of('\\') + 1).size() - 1).c_str(), pItem->cchTextMax - 1);
|
||||
if (m_searchpath.find('|') != std::wstring::npos)
|
||||
wcsncpy_s(pItem->pszText, pItem->cchTextMax, pInfo->filepath.substr(0, pInfo->filepath.size() - pInfo->filepath.substr(pInfo->filepath.find_last_of('\\')).size()).c_str(), pItem->cchTextMax - 1);
|
||||
else
|
||||
{
|
||||
auto filepart = pInfo->filepath.substr(pInfo->filepath.find_last_of('\\'));
|
||||
auto len = pInfo->filepath.size() - m_searchpath.size() - filepart.size();
|
||||
if (len > 0)
|
||||
--len;
|
||||
wcsncpy_s(pItem->pszText, pItem->cchTextMax, pInfo->filepath.substr(m_searchpath.size() + 1, len).c_str(), pItem->cchTextMax - 1);
|
||||
}
|
||||
break;
|
||||
case 4: // extension of the file
|
||||
{
|
||||
auto dotpos = pInfo->filepath.find_last_of('.');
|
||||
if (dotpos != std::wstring::npos)
|
||||
wcsncpy_s(pItem->pszText, pItem->cchTextMax, pInfo->filepath.substr(dotpos + 1).c_str(), pItem->cchTextMax - 1);
|
||||
else
|
||||
pItem->pszText[0] = L'\0';
|
||||
pItem->pszText[0] = 0;
|
||||
if (!pInfo->folder)
|
||||
{
|
||||
auto dotpos = pInfo->filepath.find_last_of('.');
|
||||
if (dotpos != std::wstring::npos)
|
||||
{
|
||||
if (pInfo->filepath.find('\\', dotpos) == std::wstring::npos)
|
||||
wcsncpy_s(pItem->pszText, pItem->cchTextMax, pInfo->filepath.substr(dotpos + 1).c_str(), pItem->cchTextMax - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5: // encoding
|
||||
@ -2481,7 +2502,7 @@ DWORD CSearchDlg::SearchThread()
|
||||
|
||||
DWORD const nMaxNumOfWorker = std::thread::hardware_concurrency() << 2;
|
||||
DWORD const nOfWorker = max(min(bPortable ? g_iniFile.GetLongValue(L"global", L"MaxNumOfWorker", nMaxNumOfWorker >> 1) :
|
||||
DWORD(CRegStdDWORD(L"Software\\grepWinNP3\\MaxNumOfWorker", nMaxNumOfWorker >> 1)), nMaxNumOfWorker), 1);
|
||||
DWORD(CRegStdDWORD(L"Software\\grepWinNP3\\MaxNumOfWorker", nMaxNumOfWorker >> 1)), nMaxNumOfWorker), 1);
|
||||
|
||||
s_SearchThreadMap.clear();
|
||||
s_SearchThreadMap.set_max_worker(nOfWorker);
|
||||
@ -2507,6 +2528,7 @@ DWORD CSearchDlg::SearchThread()
|
||||
}
|
||||
found = s.find_first_of('\\', found + 1);
|
||||
}
|
||||
CStringUtils::rtrim(s, L"\\/");
|
||||
pathvector.push_back(s);
|
||||
}
|
||||
pBufSearchPath += pos;
|
||||
@ -2657,11 +2679,11 @@ DWORD CSearchDlg::SearchThread()
|
||||
m_bCreateBackup,
|
||||
(DWORD(m_regBackupInFolder) != 0),
|
||||
m_bReplace
|
||||
};
|
||||
};
|
||||
|
||||
if (nOfWorker > 1)
|
||||
{
|
||||
if ((bSearch && bPattern) || bAlwaysSearch)
|
||||
if ((bSearch && bPattern) || bAlwaysSearch)
|
||||
{
|
||||
if (m_searchString.empty())
|
||||
{
|
||||
@ -2675,10 +2697,10 @@ DWORD CSearchDlg::SearchThread()
|
||||
s_SearchThreadMap.insert_future(sInfoPtr, foundFuture);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
s_SearchThreadMap.insert_ready(sInfoPtr, -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
s_SearchThreadMap.insert_ready(sInfoPtr, -1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2745,19 +2767,19 @@ DWORD CSearchDlg::SearchThread()
|
||||
} // empty searchpath
|
||||
} // pathvector
|
||||
|
||||
if (nOfWorker <= 1)
|
||||
if (nOfWorker <= 1)
|
||||
{
|
||||
SendMessage(*this, SEARCH_END, 0, 0);
|
||||
|
||||
// refresh cursor
|
||||
// refresh cursor
|
||||
POINT pt;
|
||||
GetCursorPos(&pt);
|
||||
SetCursorPos(pt.x, pt.y);
|
||||
|
||||
PostMessage(m_hwnd, WM_GREPWIN_THREADEND, 0, 0);
|
||||
}
|
||||
PostMessage(m_hwnd, WM_GREPWIN_THREADEND, 0, 0);
|
||||
}
|
||||
|
||||
InterlockedExchange(&s_SearchThreadRunning, FALSE);
|
||||
InterlockedExchange(&s_SearchThreadRunning, FALSE);
|
||||
return 0L;
|
||||
}
|
||||
|
||||
@ -2805,7 +2827,56 @@ DWORD WINAPI EvaluationThreadEntry(LPVOID lpParam)
|
||||
return 0L;
|
||||
}
|
||||
|
||||
void CSearchDlg::SetPreset(const std::wstring& preset)
|
||||
{
|
||||
CBookmarks bookmarks;
|
||||
bookmarks.Load();
|
||||
auto bk = bookmarks.GetBookmark(preset);
|
||||
if (bk.Name == preset)
|
||||
{
|
||||
auto RemoveQuotes = [](std::wstring& str) {
|
||||
if (!str.empty())
|
||||
{
|
||||
if (str[0] == '"')
|
||||
str = str.substr(1);
|
||||
if (!str.empty())
|
||||
{
|
||||
if (str[str.size() - 1] == '"')
|
||||
str = str.substr(0, str.size() - 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
m_searchString = bk.Search;
|
||||
m_replaceString = bk.Replace;
|
||||
m_bUseRegex = bk.UseRegex;
|
||||
m_bCaseSensitive = bk.CaseSensitive;
|
||||
m_bDotMatchesNewline = bk.DotMatchesNewline;
|
||||
m_bCreateBackup = bk.Backup;
|
||||
m_bUTF8 = bk.Utf8;
|
||||
m_bIncludeSystem = bk.IncludeSystem;
|
||||
m_bIncludeSubfolders = bk.IncludeFolder;
|
||||
m_bIncludeHidden = bk.IncludeHidden;
|
||||
m_bIncludeBinary = bk.IncludeBinary;
|
||||
m_excludedirspatternregex = bk.ExcludeDirs;
|
||||
m_patternregex = bk.FileMatch;
|
||||
m_bUseRegexForPaths = bk.FileMatchRegex;
|
||||
|
||||
m_bIncludeSystemC = true;
|
||||
m_bIncludeHiddenC = true;
|
||||
m_bIncludeSubfoldersC = true;
|
||||
m_bIncludeBinaryC = true;
|
||||
m_bCreateBackupC = true;
|
||||
m_bCreateBackupInFoldersC = true;
|
||||
m_bUTF8C = true;
|
||||
m_bCaseSensitiveC = true;
|
||||
m_bDotMatchesNewlineC = true;
|
||||
|
||||
RemoveQuotes(m_searchString);
|
||||
RemoveQuotes(m_replaceString);
|
||||
RemoveQuotes(m_excludedirspatternregex);
|
||||
RemoveQuotes(m_patternregex);
|
||||
}
|
||||
}
|
||||
|
||||
bool CSearchDlg::MatchPath(LPCTSTR pathbuf)
|
||||
{
|
||||
|
||||
@ -76,9 +76,10 @@ public:
|
||||
void SetSearchPath(const std::wstring& path) {m_searchpath = path; SearchReplace(m_searchpath, L"/", L"\\"); }
|
||||
void SetSearchString(const std::wstring& search) {m_searchString = search;}
|
||||
void SetFileMask(const std::wstring& mask, bool reg) {m_patternregex = mask; m_bUseRegexForPaths = reg;}
|
||||
void SetExcludeFileMask(const std::wstring& mask) {m_excludedirspatternregex = mask;}
|
||||
void SetDirExcludeRegexMask(const std::wstring& mask) {m_excludedirspatternregex = mask;}
|
||||
void SetReplaceWith(const std::wstring& replace) { m_replaceString = replace; }
|
||||
void SetUseRegex(bool reg) { m_bUseRegex = reg; }
|
||||
void SetPreset(const std::wstring& preset);
|
||||
|
||||
void SetCaseSensitive(bool bSet) {m_bCaseSensitiveC = true; m_bCaseSensitive = bSet;}
|
||||
void SetMatchesNewline(bool bSet) {m_bDotMatchesNewlineC = true; m_bDotMatchesNewline = bSet;}
|
||||
|
||||
@ -182,6 +182,7 @@ LRESULT CSettingsDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
||||
SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_SETCURSEL, langIndex, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ESCKEY, BM_SETCHECK, bPortable ? g_iniFile.GetBoolValue(L"settings", L"escclose", false) : !!DWORD(CRegStdDWORD(L"Software\\grepWinNP3\\escclose", FALSE)) ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_BACKUPINFOLDER, BM_SETCHECK, bPortable ? g_iniFile.GetBoolValue(L"settings", L"backupinfolder", false) : !!DWORD(CRegStdDWORD(L"Software\\grepWinNP3\\backupinfolder", FALSE)) ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_NOWARNINGIFNOBACKUP, BM_SETCHECK, bPortable ? g_iniFile.GetBoolValue(L"settings", L"nowarnifnobackup", false) : !!DWORD(CRegStdDWORD(L"Software\\grepWin\\nowarnifnobackup", FALSE)) ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_ONLYONE, BM_SETCHECK, bPortable ? g_iniFile.GetBoolValue(L"global", L"onlyone", false) : !!DWORD(CRegStdDWORD(L"Software\\grepWinNP3\\onlyone", FALSE)) ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_DARKMODE, BM_SETCHECK, CTheme::Instance().IsDarkTheme() ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||
EnableWindow(GetDlgItem(*this, IDC_DARKMODE), CTheme::Instance().IsDarkModeAllowed());
|
||||
@ -209,6 +210,7 @@ LRESULT CSettingsDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
||||
m_resizer.AddControl(hwndDlg, IDC_LANGUAGE, RESIZER_TOPRIGHT);
|
||||
m_resizer.AddControl(hwndDlg, IDC_ESCKEY, RESIZER_TOPLEFTRIGHT);
|
||||
m_resizer.AddControl(hwndDlg, IDC_BACKUPINFOLDER, RESIZER_TOPLEFTRIGHT);
|
||||
m_resizer.AddControl(hwndDlg, IDC_NOWARNINGIFNOBACKUP, RESIZER_TOPLEFTRIGHT);
|
||||
m_resizer.AddControl(hwndDlg, IDC_ONLYONE, RESIZER_TOPLEFTRIGHT);
|
||||
m_resizer.AddControl(hwndDlg, IDC_DARKMODE, RESIZER_TOPLEFT);
|
||||
m_resizer.AddControl(hwndDlg, IDC_DARKMODEINFO, RESIZER_TOPLEFTRIGHT);
|
||||
@ -298,6 +300,7 @@ LRESULT CSettingsDlg::DoCommand(int id, int /*msg*/)
|
||||
{
|
||||
g_iniFile.SetBoolValue(L"settings", L"escclose", (IsDlgButtonChecked(*this, IDC_ESCKEY) == BST_CHECKED));
|
||||
g_iniFile.SetBoolValue(L"settings", L"backupinfolder", (IsDlgButtonChecked(*this, IDC_BACKUPINFOLDER) == BST_CHECKED));
|
||||
g_iniFile.SetBoolValue(L"settings", L"nowarnifnobackup", (IsDlgButtonChecked(*this, IDC_NOWARNINGIFNOBACKUP) == BST_CHECKED));
|
||||
g_iniFile.SetBoolValue(L"global", L"onlyone", (IsDlgButtonChecked(*this, IDC_ONLYONE) == BST_CHECKED));
|
||||
g_iniFile.SetLongValue(L"global", L"MaxNumOfWorker", nWorker);
|
||||
}
|
||||
@ -307,6 +310,8 @@ LRESULT CSettingsDlg::DoCommand(int id, int /*msg*/)
|
||||
esc = (IsDlgButtonChecked(*this, IDC_ESCKEY) == BST_CHECKED);
|
||||
CRegStdDWORD backup(L"Software\\grepWinNP3\\backupinfolder", FALSE);
|
||||
backup = (IsDlgButtonChecked(*this, IDC_BACKUPINFOLDER) == BST_CHECKED);
|
||||
CRegStdDWORD nowarn(L"Software\\grepWinNP3\\nowarnifnobackup", FALSE);
|
||||
nowarn = (IsDlgButtonChecked(*this, IDC_NOWARNINGIFNOBACKUP) == BST_CHECKED);
|
||||
CRegStdDWORD regOnlyOne(L"Software\\grepWinNP3\\onlyone", FALSE);
|
||||
regOnlyOne = (IsDlgButtonChecked(*this, IDC_ONLYONE) == BST_CHECKED);
|
||||
CRegStdDWORD nwrk(L"Software\\grepWinNP3\\MaxNumOfWorker", 1);
|
||||
|
||||
@ -149,6 +149,7 @@ bool CTheme::SetThemeForDialog(HWND hWnd, bool bDark)
|
||||
RemoveWindowSubclass(hWnd, MainSubclassProc, SubclassID);
|
||||
}
|
||||
EnumChildWindows(hWnd, AdjustThemeForChildrenProc, bDark ? TRUE : FALSE);
|
||||
EnumThreadWindows(GetCurrentThreadId(), AdjustThemeForChildrenProc, bDark ? TRUE : FALSE);
|
||||
::RedrawWindow(hWnd, nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE | RDW_ERASE | RDW_INTERNALPAINT | RDW_ALLCHILDREN | RDW_UPDATENOW);
|
||||
}
|
||||
return true;
|
||||
@ -219,11 +220,11 @@ BOOL CTheme::AdjustThemeForChildrenProc(HWND hwnd, LPARAM lParam)
|
||||
else if ((wcscmp(szWndClassName, WC_COMBOBOXEX) == 0) ||
|
||||
(wcscmp(szWndClassName, WC_COMBOBOX) == 0))
|
||||
{
|
||||
SetWindowTheme(hwnd, L"DarkMode_Explorer", nullptr);
|
||||
SetWindowTheme(hwnd, L"Explorer", nullptr);
|
||||
HWND hCombo = hwnd;
|
||||
if (wcscmp(szWndClassName, WC_COMBOBOXEX) == 0)
|
||||
{
|
||||
SendMessage(hwnd, CBEM_SETWINDOWTHEME, 0, (LPARAM)L"DarkMode_Explorer");
|
||||
SendMessage(hwnd, CBEM_SETWINDOWTHEME, 0, (LPARAM)L"Explorer");
|
||||
hCombo = (HWND)SendMessage(hwnd, CBEM_GETCOMBOCONTROL, 0, 0);
|
||||
}
|
||||
if (hCombo)
|
||||
@ -237,9 +238,9 @@ BOOL CTheme::AdjustThemeForChildrenProc(HWND hwnd, LPARAM lParam)
|
||||
DarkModeHelper::Instance().AllowDarkModeForWindow(info.hwndItem, (BOOL)lParam);
|
||||
DarkModeHelper::Instance().AllowDarkModeForWindow(info.hwndCombo, (BOOL)lParam);
|
||||
|
||||
SetWindowTheme(info.hwndList, L"DarkMode_Explorer", nullptr);
|
||||
SetWindowTheme(info.hwndItem, L"DarkMode_Explorer", nullptr);
|
||||
SetWindowTheme(info.hwndCombo, L"DarkMode_Explorer", nullptr);
|
||||
SetWindowTheme(info.hwndList, L"Explorer", nullptr);
|
||||
SetWindowTheme(info.hwndItem, L"Explorer", nullptr);
|
||||
SetWindowTheme(info.hwndCombo, L"Explorer", nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -272,7 +273,19 @@ BOOL CTheme::AdjustThemeForChildrenProc(HWND hwnd, LPARAM lParam)
|
||||
SendMessage(hwnd, PBM_SETBKCOLOR, 0, (LPARAM)darkBkColor);
|
||||
SendMessage(hwnd, PBM_SETBARCOLOR, 0, (LPARAM)RGB(100,100,0));
|
||||
}
|
||||
else if (FAILED(SetWindowTheme(hwnd, L"DarkMode_Explorer", nullptr)))
|
||||
else if (wcscmp(szWndClassName, L"Auto-Suggest Dropdown") == 0)
|
||||
{
|
||||
SetWindowTheme(hwnd, L"Explorer", nullptr);
|
||||
// note: since the list control used to show the suggest dropdown has
|
||||
// the style LVS_OWNERDRAWFIXED setting the theme has no effect.
|
||||
// that's why we don't enumerate over the children of the "Auto-Suggest Dropdown"
|
||||
//EnumChildWindows(hwnd, AdjustThemeForChildrenProc, lParam);
|
||||
}
|
||||
else if (wcscmp(szWndClassName, TOOLTIPS_CLASSW) == 0)
|
||||
{
|
||||
SetWindowTheme(hwnd, L"Explorer", nullptr);
|
||||
}
|
||||
else
|
||||
SetWindowTheme(hwnd, L"Explorer", nullptr);
|
||||
}
|
||||
else
|
||||
|
||||
@ -283,10 +283,14 @@ int APIENTRY _tWinMain(HINSTANCE hInstance,
|
||||
searchDlg.SetFileMask(parser.GetVal(_T("filemaskregex")), true);
|
||||
if (parser.HasVal(_T("filemask")))
|
||||
searchDlg.SetFileMask(parser.GetVal(_T("filemask")), false);
|
||||
if (parser.HasVal(_T("filemaskexclude")))
|
||||
searchDlg.SetExcludeFileMask(parser.GetVal(_T("filemaskexclude")));
|
||||
if (parser.HasVal(_T("direxcluderegex")))
|
||||
searchDlg.SetDirExcludeRegexMask(parser.GetVal(_T("direxcluderegex")));
|
||||
else if (parser.HasVal(_T("filemaskexclude")))
|
||||
searchDlg.SetDirExcludeRegexMask(parser.GetVal(_T("filemaskexclude")));
|
||||
if (parser.HasVal(_T("replacewith")))
|
||||
searchDlg.SetReplaceWith(parser.GetVal(_T("replacewith")));
|
||||
if (parser.HasVal(_T("preset")))
|
||||
searchDlg.SetPreset(parser.GetVal(_T("preset")));
|
||||
|
||||
if (parser.HasVal(_T("i")))
|
||||
searchDlg.SetCaseSensitive(_tcsicmp(parser.GetVal(_T("i")), _T("yes"))!=0);
|
||||
|
||||
@ -6,13 +6,13 @@
|
||||
|
||||
//#pragma message(__LOC__"Run the NAnt script to get proper version info")
|
||||
|
||||
#define FILEVER 2, 1, 0, 9
|
||||
#define PRODUCTVER 2, 1, 0, 9
|
||||
#define STRFILEVER "2.1.0.9\0"
|
||||
#define STRPRODUCTVER "2.1.0.9\0"
|
||||
#define FILEVER 2, 1, 0, 10
|
||||
#define PRODUCTVER 2, 1, 0, 10
|
||||
#define STRFILEVER "2.1.0.10\0"
|
||||
#define STRPRODUCTVER "2.1.0.10\0"
|
||||
|
||||
#define GREPWIN_VERMAJOR 2
|
||||
#define GREPWIN_VERMINOR 1
|
||||
#define GREPWIN_VERMICRO 0
|
||||
#define GREPWIN_VERBUILD 9
|
||||
#define GREPWIN_VERDATE "2020-05-05"
|
||||
#define GREPWIN_VERBUILD 10
|
||||
#define GREPWIN_VERDATE "2020-05-17"
|
||||
|
||||
@ -156,6 +156,8 @@
|
||||
#define IDC_SPIN_MAXWORKER 1086
|
||||
#define IDC_MAXNUMWORKER 1087
|
||||
#define IDC_TEXT_NUMOFWORKER 1088
|
||||
#define IDC_BACKUPINFOLDER2 1089
|
||||
#define IDC_NOWARNINGIFNOBACKUP 1090
|
||||
#define ID_REMOVEBOOKMARK 32771
|
||||
#define ID_DUMMY_RENAMEPRESET 32774
|
||||
#define ID_RENAMEBOOKMARK 32775
|
||||
@ -168,7 +170,7 @@
|
||||
#define _APS_NO_MFC 1
|
||||
#define _APS_NEXT_RESOURCE_VALUE 161
|
||||
#define _APS_NEXT_COMMAND_VALUE 32776
|
||||
#define _APS_NEXT_CONTROL_VALUE 1089
|
||||
#define _APS_NEXT_CONTROL_VALUE 1091
|
||||
#define _APS_NEXT_SYMED_VALUE 110
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -271,6 +271,10 @@ msgstr "OK"
|
||||
msgid "Older than"
|
||||
msgstr "Älter als"
|
||||
|
||||
#. Resource IDs: (1090)
|
||||
msgid "Don't warn when replacing without creating backups"
|
||||
msgstr "Keine Warnung bei Textersetzung ohne Backup"
|
||||
|
||||
#. Resource IDs: (1063)
|
||||
msgid "Only one instance"
|
||||
msgstr "Nur eine Instanz"
|
||||
|
||||
@ -271,6 +271,10 @@ msgstr ""
|
||||
msgid "Older than"
|
||||
msgstr ""
|
||||
|
||||
#. Resource IDs: (1090)
|
||||
msgid "Don't warn when replacing without creating backups"
|
||||
msgstr ""
|
||||
|
||||
#. Resource IDs: (1063)
|
||||
msgid "Only one instance"
|
||||
msgstr ""
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
#
|
||||
# encoding: UTF-8
|
||||
# Language: English (United States) resources
|
||||
# Last-Translator: (en-US) English translation by RaiKoHoff
|
||||
# Last-Translator: (en-US) English translation by Stefan Kueng
|
||||
#
|
||||
|
||||
#, fuzzy
|
||||
@ -271,6 +271,10 @@ msgstr ""
|
||||
msgid "Older than"
|
||||
msgstr ""
|
||||
|
||||
#. Resource IDs: (1090)
|
||||
msgid "Don't warn when replacing without creating backups"
|
||||
msgstr ""
|
||||
|
||||
#. Resource IDs: (1063)
|
||||
msgid "Only one instance"
|
||||
msgstr ""
|
||||
|
||||
Loading…
Reference in New Issue
Block a user