diff --git a/Installer/InnoSetup/WinMergeARM64.is6.iss b/Installer/InnoSetup/WinMergeARM64.is6.iss index f7fd7f9b64a..1920a6d01f4 100644 --- a/Installer/InnoSetup/WinMergeARM64.is6.iss +++ b/Installer/InnoSetup/WinMergeARM64.is6.iss @@ -960,6 +960,18 @@ begin end; end; +procedure RegisterUserTasks(); +var + params: string; + UserTasksFlags: DWORD; + ResultCode: Integer; +Begin + UserTasksFlags := 4097; { 4096(Clipboard Compare)+1(New Text Compare) } + RegQueryDWORDValue(HKCU, 'Software\Thingamahoochie\WinMerge', 'UserTasksFlags', UserTasksFlags); + params := '/s- /minimize /noninteractive /set-usertasks-to-jumplist ' + IntToStr(UserTasksFlags); + Exec(ExpandConstant('{app}\WinMergeU.exe'), params, '', SW_HIDE, ewWaitUntilTerminated, ResultCode); +end; + {This event procedure is queed each time the user changes pages within the installer} Procedure CurPageChanged(CurPage: integer); Begin @@ -967,8 +979,10 @@ Begin If CurPage = wpInstalling Then {Delete the previous start menu group if the location has changed since the last install} DeletePreviousStartMenu; - If CurPage = wpFinished Then + If CurPage = wpFinished Then Begin DeleteRenamedFiles; + RegisterUserTasks; + End; End; // Checks if context menu is already enabled for shell extension diff --git a/Installer/InnoSetup/WinMergeX64.is6.iss b/Installer/InnoSetup/WinMergeX64.is6.iss index 10c814498d4..cf345a42880 100644 --- a/Installer/InnoSetup/WinMergeX64.is6.iss +++ b/Installer/InnoSetup/WinMergeX64.is6.iss @@ -959,6 +959,18 @@ begin end; end; +procedure RegisterUserTasks(); +var + params: string; + UserTasksFlags: DWORD; + ResultCode: Integer; +Begin + UserTasksFlags := 4097; { 4096(Clipboard Compare)+1(New Text Compare) } + RegQueryDWORDValue(HKCU, 'Software\Thingamahoochie\WinMerge', 'UserTasksFlags', UserTasksFlags); + params := '/s- /minimize /noninteractive /set-usertasks-to-jumplist ' + IntToStr(UserTasksFlags); + Exec(ExpandConstant('{app}\WinMergeU.exe'), params, '', SW_HIDE, ewWaitUntilTerminated, ResultCode); +end; + {This event procedure is queed each time the user changes pages within the installer} Procedure CurPageChanged(CurPage: integer); Begin @@ -966,8 +978,10 @@ Begin If CurPage = wpInstalling Then {Delete the previous start menu group if the location has changed since the last install} DeletePreviousStartMenu; - If CurPage = wpFinished Then + If CurPage = wpFinished Then Begin DeleteRenamedFiles; + RegisterUserTasks; + End; End; // Checks if context menu is already enabled for shell extension diff --git a/Installer/InnoSetup/WinMergeX64.iss b/Installer/InnoSetup/WinMergeX64.iss index c48d413d48c..ba401b3c89c 100644 --- a/Installer/InnoSetup/WinMergeX64.iss +++ b/Installer/InnoSetup/WinMergeX64.iss @@ -940,6 +940,18 @@ begin end; end; +procedure RegisterUserTasks(); +var + params: string; + UserTasksFlags: DWORD; + ResultCode: Integer; +Begin + UserTasksFlags := 4097; { 4096(Clipboard Compare)+1(New Text Compare) } + RegQueryDWORDValue(HKCU, 'Software\Thingamahoochie\WinMerge', 'UserTasksFlags', UserTasksFlags); + params := '/s- /minimize /noninteractive /set-usertasks-to-jumplist ' + IntToStr(UserTasksFlags); + Exec(ExpandConstant('{app}\WinMergeU.exe'), params, '', SW_HIDE, ewWaitUntilTerminated, ResultCode); +end; + {This event procedure is queed each time the user changes pages within the installer} Procedure CurPageChanged(CurPage: integer); Begin @@ -947,8 +959,10 @@ Begin If CurPage = wpInstalling Then {Delete the previous start menu group if the location has changed since the last install} DeletePreviousStartMenu; - If CurPage = wpFinished Then + If CurPage = wpFinished Then Begin DeleteRenamedFiles; + RegisterUserTasks; + End; End; // Checks if context menu is already enabled for shell extension diff --git a/Installer/InnoSetup/WinMergeX64NonAdmin.iss b/Installer/InnoSetup/WinMergeX64NonAdmin.iss index f33a470d654..432ce3ce604 100644 --- a/Installer/InnoSetup/WinMergeX64NonAdmin.iss +++ b/Installer/InnoSetup/WinMergeX64NonAdmin.iss @@ -938,6 +938,18 @@ begin end; end; +procedure RegisterUserTasks(); +var + params: string; + UserTasksFlags: DWORD; + ResultCode: Integer; +Begin + UserTasksFlags := 4097; { 4096(Clipboard Compare)+1(New Text Compare) } + RegQueryDWORDValue(HKCU, 'Software\Thingamahoochie\WinMerge', 'UserTasksFlags', UserTasksFlags); + params := '/s- /minimize /noninteractive /set-usertasks-to-jumplist ' + IntToStr(UserTasksFlags); + Exec(ExpandConstant('{app}\WinMergeU.exe'), params, '', SW_HIDE, ewWaitUntilTerminated, ResultCode); +end; + {This event procedure is queed each time the user changes pages within the installer} Procedure CurPageChanged(CurPage: integer); Begin @@ -945,8 +957,10 @@ Begin If CurPage = wpInstalling Then {Delete the previous start menu group if the location has changed since the last install} DeletePreviousStartMenu; - If CurPage = wpFinished Then + If CurPage = wpFinished Then Begin DeleteRenamedFiles; + RegisterUserTasks; + End; End; // Checks if context menu is already enabled for shell extension diff --git a/Installer/InnoSetup/WinMergeX86.iss b/Installer/InnoSetup/WinMergeX86.iss index 3287da291b3..db73eaac754 100755 --- a/Installer/InnoSetup/WinMergeX86.iss +++ b/Installer/InnoSetup/WinMergeX86.iss @@ -960,6 +960,18 @@ begin end; end; +procedure RegisterUserTasks(); +var + params: string; + UserTasksFlags: DWORD; + ResultCode: Integer; +Begin + UserTasksFlags := 4097; { 4096(Clipboard Compare)+1(New Text Compare) } + RegQueryDWORDValue(HKCU, 'Software\Thingamahoochie\WinMerge', 'UserTasksFlags', UserTasksFlags); + params := '/s- /minimize /noninteractive /set-usertasks-to-jumplist ' + IntToStr(UserTasksFlags); + Exec(ExpandConstant('{app}\WinMergeU.exe'), params, '', SW_HIDE, ewWaitUntilTerminated, ResultCode); +end; + {This event procedure is queed each time the user changes pages within the installer} Procedure CurPageChanged(CurPage: integer); Begin @@ -967,8 +979,10 @@ Begin If CurPage = wpInstalling Then {Delete the previous start menu group if the location has changed since the last install} DeletePreviousStartMenu; - If CurPage = wpFinished Then + If CurPage = wpFinished Then Begin DeleteRenamedFiles; + RegisterUserTasks; + End; End; // Checks if context menu is already enabled for shell extension diff --git a/Src/JumpList.cpp b/Src/JumpList.cpp index b090f1cfedd..d35a05b2a7d 100644 --- a/Src/JumpList.cpp +++ b/Src/JumpList.cpp @@ -21,7 +21,7 @@ namespace std::wstring g_appid; wchar_t g_exe_path[260]; -IShellLinkW *CreateShellLink(const std::wstring& app_path, const std::wstring& params, const std::wstring& title, const std::wstring& desc, int icon_index) +IShellLinkW *CreateShellLink(const std::wstring& app_path, const std::wstring& params, const std::wstring& title, const std::wstring& desc, const std::wstring& icon_path, int icon_index) { IShellLinkW *pShellLink = nullptr; if (FAILED(CoCreateInstance(CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER, @@ -35,8 +35,15 @@ IShellLinkW *CreateShellLink(const std::wstring& app_path, const std::wstring& p GetModuleFileNameW(nullptr, g_exe_path, sizeof(g_exe_path)/sizeof(g_exe_path[0])); app_path2 = g_exe_path; } + std::wstring icon_path2(icon_path); + if (icon_path.empty()) + { + if (g_exe_path[0] == '\0') + GetModuleFileNameW(nullptr, g_exe_path, sizeof(g_exe_path)/sizeof(g_exe_path[0])); + icon_path2 = g_exe_path; + } pShellLink->SetPath(app_path2.c_str()); - pShellLink->SetIconLocation(app_path2.c_str(), icon_index); + pShellLink->SetIconLocation(icon_path2.c_str(), icon_index); pShellLink->SetArguments(params.c_str()); pShellLink->SetDescription(desc.c_str()); @@ -56,6 +63,91 @@ IShellLinkW *CreateShellLink(const std::wstring& app_path, const std::wstring& p return pShellLink; } +static std::vector GetList(IObjectArray *pObjectArray) +{ + std::vector list; + UINT nObjects; + if (SUCCEEDED(pObjectArray->GetCount(&nObjects))) + { + for (UINT i = 0; i < nObjects; ++i) + { + IShellLinkW *pShellLink; + if (SUCCEEDED(pObjectArray->GetAt(i, IID_IShellLinkW, (void **)&pShellLink))) + { + wchar_t szPath[MAX_PATH]; + wchar_t szPathIcon[MAX_PATH]; + wchar_t szDescription[MAX_PATH]; + wchar_t szArguments[MAX_PATH * 6]; + int icon_index = 0; + pShellLink->GetPath(szPath, sizeof(szPath) / sizeof(szPath[0]), nullptr, SLGP_RAWPATH); + pShellLink->GetDescription(szDescription, sizeof(szDescription) / sizeof(szDescription[0])); + pShellLink->GetArguments(szArguments, sizeof(szArguments) / sizeof(szArguments[0])); + pShellLink->GetIconLocation(szPathIcon, sizeof(szPathIcon) / sizeof(szPathIcon[0]), &icon_index); + IPropertyStore *pPS = nullptr; + if (SUCCEEDED(pShellLink->QueryInterface(IID_IPropertyStore, (void **)&pPS))) + { + PROPVARIANT pv; + PropVariantInit(&pv); + if (SUCCEEDED(pPS->GetValue(PKEY_Title, &pv))) + { + if (pv.vt == VT_LPWSTR && pv.bstrVal) + list.push_back(JumpList::Item(ucr::toTString(szPath), ucr::toTString(szArguments), ucr::toTString(pv.bstrVal), ucr::toTString(szDescription), ucr::toTString(szPathIcon), icon_index)); + PropVariantClear(&pv); + } + pPS->Release(); + } + pShellLink->Release(); + } + } + } + return list; +} + +static HRESULT CreateApplicationDocumentLists(IApplicationDocumentLists** ppDocumentLists) +{ + HRESULT hr = CoCreateInstance(CLSID_ApplicationDocumentLists, nullptr, CLSCTX_INPROC_SERVER, + IID_IApplicationDocumentLists, (void**)ppDocumentLists); + if (FAILED(hr)) + return hr; + hr = (*ppDocumentLists)->SetAppID(g_appid.c_str()); + if (FAILED(hr)) + { + (*ppDocumentLists)->Release(); + return hr; + } + return hr; +} + +static HRESULT CreateApplicationDestinations(IApplicationDestinations** ppApplicationDestinations) +{ + HRESULT hr = CoCreateInstance(CLSID_ApplicationDestinations, nullptr, CLSCTX_INPROC_SERVER, + IID_IApplicationDestinations, (void**)ppApplicationDestinations); + if (FAILED(hr)) + return hr; + hr = (*ppApplicationDestinations)->SetAppID(g_appid.c_str()); + if (FAILED(hr)) + { + (*ppApplicationDestinations)->Release(); + return hr; + } + return hr; +} + +static HRESULT CreateCustomDestinationList(ICustomDestinationList** ppCustomDestinationList) +{ + HRESULT hr = CoCreateInstance(CLSID_DestinationList, nullptr, CLSCTX_INPROC_SERVER, + IID_ICustomDestinationList, (void**)ppCustomDestinationList); + if (FAILED(hr)) + return hr; + hr = (*ppCustomDestinationList)->SetAppID(g_appid.c_str()); + if (FAILED(hr)) + { + (*ppCustomDestinationList)->Release(); + return hr; + } + return hr; +} + } namespace JumpList @@ -78,11 +170,11 @@ bool SetCurrentProcessExplicitAppUserModelID(const std::wstring& appid) #endif } -bool AddToRecentDocs(const String& app_path, const String& params, const String& title, const String& desc, int icon_index) +bool AddToRecentDocs(const String& app_path, const String& params, const String& title, const String& desc, const String& icon_path, int icon_index) { SHARDAPPIDINFOLINK saiil; saiil.pszAppID = g_appid.c_str(); - saiil.psl = CreateShellLink(app_path, params, title, desc, icon_index); + saiil.psl = CreateShellLink(app_path, params, title, desc, icon_path, icon_index); if (saiil.psl == nullptr) return false; SHAddToRecentDocs(SHARD_APPIDINFOLINK, &saiil); @@ -94,49 +186,75 @@ std::vector GetRecentDocs(size_t nMaxItems) { std::vector list; IApplicationDocumentLists *pDocumentLists = nullptr; - if (FAILED(CoCreateInstance(CLSID_ApplicationDocumentLists, nullptr, CLSCTX_INPROC_SERVER, - IID_IApplicationDocumentLists, (void **)&pDocumentLists))) + if (FAILED(CreateApplicationDocumentLists(&pDocumentLists))) return list; - pDocumentLists->SetAppID(g_appid.c_str()); IObjectArray *pObjectArray; if (SUCCEEDED(pDocumentLists->GetList(ADLT_RECENT, static_cast(nMaxItems), IID_IObjectArray, (void **)&pObjectArray))) { - UINT nObjects; - if (SUCCEEDED(pObjectArray->GetCount(&nObjects))) + list = GetList(pObjectArray); + pObjectArray->Release(); + } + pDocumentLists->Release(); + return list; +} + +bool RemoveRecentDocs() +{ + IApplicationDestinations* pDestinations = nullptr; + if (FAILED(CreateApplicationDestinations(&pDestinations))) + return false; + HRESULT hr = pDestinations->RemoveAllDestinations(); + pDestinations->Release(); + return SUCCEEDED(hr); +} + +bool AddUserTasks(const std::vector& tasks) +{ + ICustomDestinationList* pDestList = nullptr; + HRESULT hr = CreateCustomDestinationList(&pDestList); + if (FAILED(hr)) + return false; + if (tasks.empty()) + { + hr = pDestList->DeleteList(nullptr); + pDestList->Release(); + return SUCCEEDED(hr); + } + IObjectCollection* pObjectCollection = nullptr; + hr = CoCreateInstance(CLSID_EnumerableObjectCollection, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pObjectCollection)); + if (SUCCEEDED(hr)) + { + for (const auto& task : tasks) { - for (UINT i = 0; i < nObjects; ++i) + IShellLinkW* pShellLink = CreateShellLink(task.path, task.params, task.title, task.desc, task.icon_path, task.icon_index); + if (pShellLink) { - IShellLinkW *pShellLink; - if (SUCCEEDED(pObjectArray->GetAt(i, IID_IShellLinkW, (void **)&pShellLink))) - { - wchar_t szPath[MAX_PATH]; - wchar_t szDescription[MAX_PATH]; - wchar_t szArguments[MAX_PATH * 6]; - pShellLink->GetPath(szPath, sizeof(szPath) / sizeof(szPath[0]), nullptr, SLGP_RAWPATH); - pShellLink->GetDescription(szDescription, sizeof(szDescription) / sizeof(szDescription[0])); - pShellLink->GetArguments(szArguments, sizeof(szArguments) / sizeof(szArguments[0])); - IPropertyStore *pPS = nullptr; - if (SUCCEEDED(pShellLink->QueryInterface(IID_IPropertyStore, (void **)&pPS))) - { - PROPVARIANT pv; - PropVariantInit(&pv); - if (SUCCEEDED(pPS->GetValue(PKEY_Title, &pv))) - { - if (pv.vt == VT_LPWSTR && pv.bstrVal) - list.push_back(Item(ucr::toTString(szPath), ucr::toTString(szArguments), ucr::toTString(pv.bstrVal), ucr::toTString(szDescription))); - PropVariantClear(&pv); - } - pPS->Release(); - } - pShellLink->Release(); - } + pObjectCollection->AddObject(pShellLink); + pShellLink->Release(); } } - pObjectArray->Release(); + + IObjectArray* pObjectArray = nullptr; + hr = pObjectCollection->QueryInterface(IID_PPV_ARGS(&pObjectArray)); + if (SUCCEEDED(hr)) + { + IObjectArray* pRemovedItems = nullptr; + UINT minSlots; + hr = pDestList->BeginList(&minSlots, IID_PPV_ARGS(&pRemovedItems)); + if (SUCCEEDED(hr)) + { + pRemovedItems->Release(); + hr = pDestList->AddUserTasks(pObjectArray); + if (SUCCEEDED(hr)) + hr = pDestList->CommitList(); + } + pObjectArray->Release(); + } + pObjectCollection->Release(); } - pDocumentLists->Release(); - return list; + pDestList->Release(); + return SUCCEEDED(hr); } } diff --git a/Src/JumpList.h b/Src/JumpList.h index 57889ae9544..49b43142841 100644 --- a/Src/JumpList.h +++ b/Src/JumpList.h @@ -13,13 +13,17 @@ namespace JumpList { struct Item { - Item(const String& path, const String& params, const String& title, const String& desc): path(path), params(params), title(title), desc(desc) {} + Item(const String& path, const String& params, const String& title, const String& desc, const String& icon_path, int icon_index): path(path), params(params), title(title), desc(desc), icon_path(icon_path), icon_index(icon_index) {} String path; String params; String desc; String title; + String icon_path; + int icon_index; }; bool SetCurrentProcessExplicitAppUserModelID(const std::wstring& appid); - bool AddToRecentDocs(const String& app_path = _T(""), const String& params = _T(""), const String& title = _T(""), const String& desc = _T(""), int icon_index = 0); + bool AddToRecentDocs(const String& app_path = _T(""), const String& params = _T(""), const String& title = _T(""), const String& desc = _T(""), const String& icon_path = _T(""), int icon_index = 0); std::vector GetRecentDocs(size_t nMaxItems); + bool RemoveRecentDocs(); + bool AddUserTasks(const std::vector& tasks); } diff --git a/Src/MainFrm.cpp b/Src/MainFrm.cpp index dcb0204c3bf..492c58b83e8 100644 --- a/Src/MainFrm.cpp +++ b/Src/MainFrm.cpp @@ -1253,12 +1253,13 @@ static bool AddToRecentDocs(const PathContext& paths, Concurrent::CreateTask([params, title](){ CoInitialize(nullptr); - JumpList::AddToRecentDocs(_T(""), params, title, params, 0); + JumpList::AddToRecentDocs(_T(""), params, title, params, _T(""), 0); CoUninitialize(); return 0; }); return true; } + /** * @brief Begin a diff: open dirdoc if it is directories, else open a mergedoc for editing. * @param [in] pszLeft Left-side path. diff --git a/Src/Merge.cpp b/Src/Merge.cpp index 4ea9711621f..6713c85c0d1 100644 --- a/Src/Merge.cpp +++ b/Src/Merge.cpp @@ -61,6 +61,7 @@ #include "charsets.h" // For shutdown cleanup #include "OptionsProject.h" #include "MergeAppCOMClass.h" +#include "RegKey.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -185,6 +186,26 @@ static int ConvertLastCompareResultToExitCode(int nLastCompareResult) return 2; } +std::vector CMergeApp::CreateUserTasks(MergeCmdLineInfo::usertasksflags_t flags) +{ + std::vector items; + if (flags & MergeCmdLineInfo::NEW_TEXT_COMPARE) + items.emplace_back(_(""), _T("/new /t text"), _("New Text Compare"), _T(""), _T(""), 0); + if (flags & MergeCmdLineInfo::NEW_TABLE_COMPARE) + items.emplace_back(_(""), _T("/new /t table"), _("New Table Compare"), _T(""), _T(""), 0); + if (flags & MergeCmdLineInfo::NEW_BINARY_COMPARE) + items.emplace_back(_(""), _T("/new /t binary"), _("New Binary Compare"), _T(""), _T(""), 0); + if (flags & MergeCmdLineInfo::NEW_IMAGE_COMPARE) + items.emplace_back(_(""), _T("/new /t image"), _("New Image Compare"), _T(""), _T(""), 0); + if (flags & MergeCmdLineInfo::NEW_WEBPAGE_COMPARE) + items.emplace_back(_(""), _T("/new /t webpage"), _("New Webpage Compare"), _T(""), _T(""), 0); + if (flags & MergeCmdLineInfo::CLIPBOARD_COMPARE) + items.emplace_back(_(""), _T("/clipboard-compare"), _("Clipboard Compare"), _T(""), _T(""), 0); + if (flags & MergeCmdLineInfo::SHOW_OPTIONS_DIALOG) + items.emplace_back(_(""), _T("/show-dialog options"), _("Options"), _T(""), _T(""), 0); + return items; +} + CMergeApp::~CMergeApp() { strdiff::Close(); @@ -793,6 +814,14 @@ bool CMergeApp::ParseArgsAndDoOpen(MergeCmdLineInfo& cmdInfo, CMainFrame* pMainF return false; } + if (cmdInfo.m_dwUserTasksFlags.has_value()) + { + JumpList::AddUserTasks(CreateUserTasks(*cmdInfo.m_dwUserTasksFlags)); + CRegKeyEx reg; + if (ERROR_SUCCESS == reg.Open(HKEY_CURRENT_USER, RegDir)) + reg.WriteDword(_T("UserTasksFlags"), *cmdInfo.m_dwUserTasksFlags); + } + // Set the global file filter. if (!cmdInfo.m_sFileFilter.empty()) { diff --git a/Src/Merge.h b/Src/Merge.h index c4ab7e888d9..6363e370d62 100644 --- a/Src/Merge.h +++ b/Src/Merge.h @@ -40,6 +40,7 @@ class SyntaxColors; class CCrystalTextMarkers; class PackingInfo; class MergeAppCOMClass; +namespace JumpList { struct Item; } ///////////////////////////////////////////////////////////////////////////// // CMergeApp: @@ -95,6 +96,7 @@ class CMergeApp : public CWinApp static bool CreateBackup(bool bFolder, const String& pszPath); static int HandleReadonlySave(String& strSavePath, bool bMultiFile, bool &bApplyToAll); static String GetPackingErrorMessage(int pane, int paneCount, const String& path, const PackingInfo& plugin); + static std::vector CreateUserTasks(MergeCmdLineInfo::usertasksflags_t flags); bool GetMergingMode() const; void SetMergingMode(bool bMergingMode); static void SetupTempPath(); diff --git a/Src/Merge.rc b/Src/Merge.rc index 31765448279..bb7cd0335cb 100644 --- a/Src/Merge.rc +++ b/Src/Merge.rc @@ -2170,6 +2170,9 @@ BEGIN PUSHBUTTON "Unregister shell extension for current user on&ly",IDC_UNREGISTER_SHELLEXTENSION_PERUSER,17,108,250,14 PUSHBUTTON "Register shell extension for &Windows 11 or later",IDC_REGISTER_WINMERGECONTEXTMENU,17,124,250,14 PUSHBUTTON "Unregister shell extension for W&indows 11 or later",IDC_UNREGISTER_WINMERGECONTEXTMENU,17,140,250,14 + GROUPBOX "Jump List",IDC_STATIC,7,164,270,78 + CONTROL "",IDC_JUMP_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,17,176,250,40 + PUSHBUTTON "Clear all recent items",IDC_CLEAR_ALL_RECENT_ITEMS,17,220,250,14 END IDD_PROPPAGE_COMPARE_FOLDER DIALOGEX 0, 0, 285, 242 @@ -2979,7 +2982,10 @@ BEGIN 0, 0, 100, 0, 0, 0, 100, 0, 0, 0, 100, 0, - 0, 0, 100, 0 + 0, 0, 100, 0, + 0, 0, 100, 100, + 0, 0, 100, 100, + 0, 100, 100, 0 END IDD_FILTERS_FILEFILTERS AFX_DIALOG_LAYOUT @@ -4157,6 +4163,15 @@ BEGIN IDS_WEBVIEW2_RUNTIME_NOT_INSTALLED "WebView2 runtime is not installed. Do you want to download it?" END +STRINGTABLE +BEGIN + IDS_JUMPLIST_NEW_TEXT_COMPARE "New Text Compare" + IDS_JUMPLIST_NEW_TABLE_COMPARE "New Table Compare" + IDS_JUMPLIST_NEW_BINARY_COMPARE "New Binary Compare" + IDS_JUMPLIST_NEW_IMAGE_COMPARE "New Image Compare" + IDS_JUMPLIST_NEW_WEBPAGE_COMPARE "New Webpage Compare" + IDS_JUMPLIST_CLIPBOARD_COMPARE "Clipboard Compare" +END #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Src/MergeCmdLineInfo.cpp b/Src/MergeCmdLineInfo.cpp index 88b37747368..6f7482ff048 100644 --- a/Src/MergeCmdLineInfo.cpp +++ b/Src/MergeCmdLineInfo.cpp @@ -271,6 +271,11 @@ void MergeCmdLineInfo::ParseWinMergeCmdLine(const tchar_t *q) { m_bShowCompareAsMenu = true; } + else if (param == _T("set-usertasks-to-jumplist")) + { + q = EatParam(q, param); + m_dwUserTasksFlags = tc::ttoi(param.c_str()); + } else if (param == _T("m")) { // -m "method" - compare method diff --git a/Src/MergeCmdLineInfo.h b/Src/MergeCmdLineInfo.h index eda827e1a0b..f0e0a5bfc75 100644 --- a/Src/MergeCmdLineInfo.h +++ b/Src/MergeCmdLineInfo.h @@ -70,6 +70,19 @@ class MergeCmdLineInfo ABOUT_DIALOG, }; + using usertasksflags_t = uint32_t; + enum UserTaskFlags : usertasksflags_t + { + NONE = 0x0000, + NEW_TEXT_COMPARE = 0x0001, + NEW_TABLE_COMPARE = 0x0002, + NEW_BINARY_COMPARE = 0x0004, + NEW_IMAGE_COMPARE = 0x0008, + NEW_WEBPAGE_COMPARE = 0x0010, + CLIPBOARD_COMPARE = 0x1000, + SHOW_OPTIONS_DIALOG = 0x8000, + }; + ShowWindowType m_nCmdShow; /**< Initial state of the application's window. */ WindowType m_nWindowType; /**< The type of window that displays the files to compare. */ DialogType m_nDialogType; /**< The type of dialog window to display */ @@ -111,6 +124,8 @@ class MergeCmdLineInfo String m_sIniFilepath; + std::optional m_dwUserTasksFlags; + PathContext m_Files; /**< Files (or directories) to compare. */ std::map m_Options; diff --git a/Src/PropShell.cpp b/Src/PropShell.cpp index afe1b40c63d..7f14fd05362 100644 --- a/Src/PropShell.cpp +++ b/Src/PropShell.cpp @@ -14,6 +14,9 @@ #include "Environment.h" #include "paths.h" #include "Win_VersionHelper.h" +#include "MergeCmdLineInfo.h" +#include "JumpList.h" +#include "Merge.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -30,6 +33,7 @@ enum // registry values static const tchar_t* f_RegValueEnabled = _T("ContextMenuEnabled"); static const tchar_t* f_RegValuePath = _T("Executable"); +static const tchar_t* f_RegValueUserTasksFlags = _T("UserTasksFlags"); static bool IsShellExtensionRegistered(bool peruser) { @@ -139,6 +143,49 @@ static bool RegisterWinMergeContextMenu(bool unregister) return true; } +static void LoadListView(CListCtrl& list) +{ + CRect rc; + list.DeleteAllItems(); + list.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT); + list.GetClientRect(&rc); + list.InsertColumn(0, _T(""), LVCFMT_LEFT, rc.Width() - GetSystemMetrics(SM_CXVSCROLL)); + CRegKeyEx reg; + reg.Open(HKEY_CURRENT_USER, RegDir); + DWORD dwFlags = reg.ReadDword(f_RegValueUserTasksFlags, 0); + int i = 0; + for (auto [mask, text] : std::vector>( + { + { MergeCmdLineInfo::NEW_TEXT_COMPARE, _("New Text Compare") }, + { MergeCmdLineInfo::NEW_TABLE_COMPARE, _("New Table Compare") }, + { MergeCmdLineInfo::NEW_BINARY_COMPARE, _("New Binary Compare") }, + { MergeCmdLineInfo::NEW_IMAGE_COMPARE, _("New Image Compare") }, + { MergeCmdLineInfo::NEW_WEBPAGE_COMPARE, _("New Webpage Compare") }, + { MergeCmdLineInfo::CLIPBOARD_COMPARE, _("Clipboard Compare") }, + { MergeCmdLineInfo::SHOW_OPTIONS_DIALOG, _("Options") }, + })) + { + list.InsertItem(LVIF_TEXT | LVIF_PARAM, i, text.c_str(), 0, 0, 0, mask); + list.SetCheck(i, dwFlags & mask); + ++i; + } +} + +static void SaveListView(CListCtrl& list) +{ + CRegKeyEx reg; + MergeCmdLineInfo::usertasksflags_t dwFlags = 0; + reg.Open(HKEY_CURRENT_USER, RegDir); + int itemCount = list.GetItemCount(); + for (int i = 0; i < itemCount; ++i) + dwFlags |= list.GetCheck(i) ? list.GetItemData(i) : 0; + if (dwFlags != reg.ReadDword(f_RegValueUserTasksFlags, 0)) + { + reg.WriteDword(f_RegValueUserTasksFlags, dwFlags); + JumpList::AddUserTasks(CMergeApp::CreateUserTasks(dwFlags)); + } +} + PropShell::PropShell(COptionsMgr *optionsMgr) : OptionsPanel(optionsMgr, PropShell::IDD) , m_bContextAdded(false) @@ -158,6 +205,8 @@ BOOL PropShell::OnInitDialog() SendDlgItemMessage(IDC_REGISTER_SHELLEXTENSION, BCM_SETSHIELD, 0, TRUE); SendDlgItemMessage(IDC_UNREGISTER_SHELLEXTENSION, BCM_SETSHIELD, 0, TRUE); + LoadListView(m_list); + // Update shell extension checkboxes UpdateButtons(); GetContextRegValues(); @@ -176,6 +225,7 @@ void PropShell::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_EXPLORER_CONTEXT, m_bContextAdded); DDX_Check(pDX, IDC_EXPLORER_ADVANCED, m_bContextAdvanced); DDX_Check(pDX, IDC_EXPLORER_COMPARE_AS, m_bContextCompareAs); + DDX_Control(pDX, IDC_JUMP_LIST, m_list); //}}AFX_DATA_MAP } @@ -189,6 +239,7 @@ BEGIN_MESSAGE_MAP(PropShell, OptionsPanel) ON_BN_CLICKED(IDC_UNREGISTER_SHELLEXTENSION_PERUSER, OnUnregisterShellExtensionPerUser) ON_BN_CLICKED(IDC_REGISTER_WINMERGECONTEXTMENU, OnRegisterWinMergeContextMenu) ON_BN_CLICKED(IDC_UNREGISTER_WINMERGECONTEXTMENU, OnUnregisterWinMergeContextMenu) + ON_BN_CLICKED(IDC_CLEAR_ALL_RECENT_ITEMS, OnClearAllRecentItems) ON_WM_TIMER() //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -211,6 +262,7 @@ void PropShell::WriteOptions() bool registeredWinMergeContextMenu = IsWinMergeContextMenuRegistered(); if (registered || registeredPerUser || registeredWinMergeContextMenu) SaveMergePath(); // saves context menu settings as well + SaveListView(m_list); } /// Get registry values for ShellExtension @@ -331,6 +383,7 @@ void PropShell::UpdateButtons() bool registeredPerUser = IsShellExtensionRegistered(true); bool registerdWinMergeContextMenu = IsWinMergeContextMenuRegistered(); bool win11 = IsWin11_OrGreater(); + bool win7 = IsWin7_OrGreater(); EnableDlgItem(IDC_EXPLORER_CONTEXT, registered || registeredPerUser || registerdWinMergeContextMenu); EnableDlgItem(IDC_REGISTER_SHELLEXTENSION, !registered); EnableDlgItem(IDC_UNREGISTER_SHELLEXTENSION, registered); @@ -342,6 +395,8 @@ void PropShell::UpdateButtons() (registered || registeredPerUser || registerdWinMergeContextMenu) && IsDlgButtonChecked(IDC_EXPLORER_CONTEXT)); EnableDlgItem(IDC_EXPLORER_COMPARE_AS, (registered || registeredPerUser || registerdWinMergeContextMenu) && IsDlgButtonChecked(IDC_EXPLORER_ADVANCED)); + EnableDlgItem(IDC_JUMP_LIST, win7); + EnableDlgItem(IDC_CLEAR_ALL_RECENT_ITEMS, win7); } void PropShell::OnRegisterShellExtension() @@ -374,6 +429,11 @@ void PropShell::OnUnregisterWinMergeContextMenu() RegisterWinMergeContextMenu(true); } +void PropShell::OnClearAllRecentItems() +{ + JumpList::RemoveRecentDocs(); +} + void PropShell::OnTimer(UINT_PTR nIDEvent) { UpdateButtons(); diff --git a/Src/PropShell.h b/Src/PropShell.h index 9b952774fad..ff48fc20bcc 100644 --- a/Src/PropShell.h +++ b/Src/PropShell.h @@ -26,6 +26,7 @@ class PropShell : public OptionsPanel bool m_bContextAdded; bool m_bContextAdvanced; bool m_bContextCompareAs; + CListCtrl m_list; // Overrides protected: @@ -42,6 +43,7 @@ class PropShell : public OptionsPanel afx_msg void OnUnregisterShellExtensionPerUser(); afx_msg void OnRegisterWinMergeContextMenu(); afx_msg void OnUnregisterWinMergeContextMenu(); + afx_msg void OnClearAllRecentItems(); afx_msg void OnTimer(UINT_PTR nIDEvent); void GetContextRegValues(); diff --git a/Src/resource.h b/Src/resource.h index 2f426b2f3a4..cfe1a5500f7 100644 --- a/Src/resource.h +++ b/Src/resource.h @@ -589,6 +589,8 @@ #define IDC_COMPAREWEBPAGE_USERDATAFOLDER_TYPE 1426 #define IDC_COMPAREWEBPAGE_URLPATTERNTOINCLUDE 1427 #define IDC_COMPAREWEBPAGE_URLPATTERNTOEXCLUDE 1428 +#define IDC_JUMP_LIST 1429 +#define IDC_CLEAR_ALL_RECENT_ITEMS 1430 #define IDC_EXPAND_SUBDIRS 1600 #define IDC_FILEENCODING 1601 #define IDC_PLUGIN 1602 @@ -1619,6 +1621,12 @@ #define IDS_WEBVIEW2_RUNTIME_NOT_INSTALLED 44514 #define IDS_PROJECT_ITEM_HIDDEN_ITEMS 44515 #define IDS_CONFIRM_COPY_ALL_DIFFS 44516 +#define IDS_JUMPLIST_NEW_TEXT_COMPARE 44520 +#define IDS_JUMPLIST_NEW_TABLE_COMPARE 44521 +#define IDS_JUMPLIST_NEW_BINARY_COMPARE 44522 +#define IDS_JUMPLIST_NEW_IMAGE_COMPARE 44523 +#define IDS_JUMPLIST_NEW_WEBPAGE_COMPARE 44524 +#define IDS_JUMPLIST_CLIPBOARD_COMPARE 44525 // Next default values for new objects // diff --git a/Translations/WinMerge/Arabic.po b/Translations/WinMerge/Arabic.po index c0779818594..a1270c9eeaf 100644 --- a/Translations/WinMerge/Arabic.po +++ b/Translations/WinMerge/Arabic.po @@ -1959,6 +1959,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "المجلد" @@ -3946,6 +3952,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Basque.po b/Translations/WinMerge/Basque.po index 84265512555..ad5d05de236 100644 --- a/Translations/WinMerge/Basque.po +++ b/Translations/WinMerge/Basque.po @@ -2416,6 +2416,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Agiritegia" @@ -4553,6 +4559,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Brazilian.po b/Translations/WinMerge/Brazilian.po index 93af9895e4b..de0e57a85ba 100644 --- a/Translations/WinMerge/Brazilian.po +++ b/Translations/WinMerge/Brazilian.po @@ -1950,6 +1950,12 @@ msgstr "Registrar a extensão do shell para o &Windows 11 ou superior" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Remover o registro da extensão do shell para o &Windows 11 ou superior" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Pasta" @@ -3628,6 +3634,24 @@ msgstr "A versão 32-bits do WinMerge não suporta Comparação de Área de tran msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "O runtime do WebView2 não está instalado. Deseja baixá-lo?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Embelezamento" diff --git a/Translations/WinMerge/Bulgarian.po b/Translations/WinMerge/Bulgarian.po index 61dc7a7ac1e..a88b50c3286 100644 --- a/Translations/WinMerge/Bulgarian.po +++ b/Translations/WinMerge/Bulgarian.po @@ -1961,6 +1961,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Папки" @@ -4030,6 +4036,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Catalan.po b/Translations/WinMerge/Catalan.po index 2ce8983e5d7..ce2864c5343 100644 --- a/Translations/WinMerge/Catalan.po +++ b/Translations/WinMerge/Catalan.po @@ -2420,6 +2420,12 @@ msgstr "Registra la extensió del sistema per a Windows 11 o posterior" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Desinstal·la la extensió del sistema per a Windows 11 o posterior" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Directori" @@ -4712,6 +4718,24 @@ msgstr "La versió de 32 bits del WinMerge no suporta comparar via porta-retalls msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Embellir" diff --git a/Translations/WinMerge/ChineseSimplified.po b/Translations/WinMerge/ChineseSimplified.po index ed5f2b71222..65aa3c5b2ab 100644 --- a/Translations/WinMerge/ChineseSimplified.po +++ b/Translations/WinMerge/ChineseSimplified.po @@ -1966,6 +1966,12 @@ msgstr "注册系统扩展(Windows 11 或更新的系统)(&W)" msgid "Unregister shell extension for W&indows 11 or later" msgstr "注销系统扩展(Windows 11 或更新的系统)(&I)" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "文件夹" @@ -4055,6 +4061,24 @@ msgstr "32 位的 WinMerge 不支持剪贴板比较" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "未安装 WebView2 运行库。你想下载吗?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "格式美化" diff --git a/Translations/WinMerge/ChineseTraditional.po b/Translations/WinMerge/ChineseTraditional.po index 718deeb6f80..87f00138e60 100644 --- a/Translations/WinMerge/ChineseTraditional.po +++ b/Translations/WinMerge/ChineseTraditional.po @@ -2430,6 +2430,12 @@ msgstr "為 &Windows 11 及以上版本註冊殼層延伸" msgid "Unregister shell extension for W&indows 11 or later" msgstr "為 &Windows 11 及以上版本取消註冊殼層延伸" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "資料夾" @@ -4709,6 +4715,24 @@ msgstr "32 位元版本的 WinMerge 不支援剪貼簿比較" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "美化" diff --git a/Translations/WinMerge/Corsican.po b/Translations/WinMerge/Corsican.po index dcf1611549e..a4f5077e467 100644 --- a/Translations/WinMerge/Corsican.po +++ b/Translations/WinMerge/Corsican.po @@ -1962,6 +1962,12 @@ msgstr "Arregistramentu di l’estensione Shell per &Windows 11 o una versione p msgid "Unregister shell extension for W&indows 11 or later" msgstr "Disarregistramentu di l’estensione Shell per W&indows 11 o una versione più recente" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Cartulare" @@ -4025,6 +4031,24 @@ msgstr "A versione 32-bit di WinMerge ùn accetta micca u paragone di preme’pa msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "L’ambiente d’esecuzione WebView2 ùn hè micca installatu. Vulete scaricallu ?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Imbellimentu" diff --git a/Translations/WinMerge/Croatian.po b/Translations/WinMerge/Croatian.po index e16824f610f..08917f188e8 100644 --- a/Translations/WinMerge/Croatian.po +++ b/Translations/WinMerge/Croatian.po @@ -2414,6 +2414,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Mapa" @@ -4552,6 +4558,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Czech.po b/Translations/WinMerge/Czech.po index 7a76dfadafa..ec374f02fe8 100644 --- a/Translations/WinMerge/Czech.po +++ b/Translations/WinMerge/Czech.po @@ -2414,6 +2414,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Složky" @@ -4485,6 +4491,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Danish.po b/Translations/WinMerge/Danish.po index 1a9d5a138c7..b7f42d34c23 100644 --- a/Translations/WinMerge/Danish.po +++ b/Translations/WinMerge/Danish.po @@ -2419,6 +2419,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Mappe" @@ -4590,6 +4596,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Dutch.po b/Translations/WinMerge/Dutch.po index 622901b351a..f35a9801e49 100644 --- a/Translations/WinMerge/Dutch.po +++ b/Translations/WinMerge/Dutch.po @@ -1958,6 +1958,12 @@ msgstr "Shell-extensie registreren voor Windows 11 of later" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Shell-extensie voor Windows 11 of later de-registreren" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Map" @@ -4011,6 +4017,24 @@ msgstr "De 32-bit-versie van WinMerge ondersteunt geen klembordvergelijking" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "WebView2-runtime is niet geïnstalleerd. Wilt u het downloaden?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Mooi maken" diff --git a/Translations/WinMerge/English.pot b/Translations/WinMerge/English.pot index da25702feba..6a10362a662 100644 --- a/Translations/WinMerge/English.pot +++ b/Translations/WinMerge/English.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: WinMerge\n" "Report-Msgid-Bugs-To: https://bugs.winmerge.org/\n" -"POT-Creation-Date: 2023-05-01 22:46+0000\n" +"POT-Creation-Date: 2023-05-01 23:13+0000\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: English \n" @@ -1944,6 +1944,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "" @@ -3622,6 +3628,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Finnish.po b/Translations/WinMerge/Finnish.po index 403a29b8871..5e22f8ffe9a 100644 --- a/Translations/WinMerge/Finnish.po +++ b/Translations/WinMerge/Finnish.po @@ -1965,6 +1965,12 @@ msgstr "" "Poista komentotulkin laajennuksen rekisteröinti &Windows 11:lle tai " "uudemmalle versiolle" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Kansio" @@ -4048,6 +4054,24 @@ msgstr "WinMergen 32-bittinen versio ei tue leikepöytävertailua" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "WebView2-runtimea ei ole asennettu. Haluatko ladata sen?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Kaunistelu" diff --git a/Translations/WinMerge/French.po b/Translations/WinMerge/French.po index 9a7ee2f7ab0..6d121bd52ad 100644 --- a/Translations/WinMerge/French.po +++ b/Translations/WinMerge/French.po @@ -2427,6 +2427,12 @@ msgstr "Enregistrer l'extension du shell pour &Windows 11 ou version ultérieure msgid "Unregister shell extension for W&indows 11 or later" msgstr "Désenregistrer l'extension de shell pour W&indows 11 ou version ultérieure" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Dossier" @@ -4739,6 +4745,24 @@ msgstr "La version 32 bits de WinMerge ne prend pas en charge la comparaison du msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "Le runtime WebView2 n'est pas installé. Voulez-vous le télécharger ?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Embellissement" diff --git a/Translations/WinMerge/Galician.po b/Translations/WinMerge/Galician.po index 4b0bc1688d3..0f5d78d4eb7 100644 --- a/Translations/WinMerge/Galician.po +++ b/Translations/WinMerge/Galician.po @@ -1959,6 +1959,12 @@ msgstr "Rexistrar a extensión de shell para &Windows 11 ou posterior" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Anular a extensión de shell para W&indows 11 ou posterior" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Carpeta" @@ -4015,6 +4021,24 @@ msgstr "A versión de 32 bit de WinMerge non soporta a comparación de portapape msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "O runtime WebView2 non está instalado. ¿Quere descargalo?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Melloras" diff --git a/Translations/WinMerge/German.po b/Translations/WinMerge/German.po index ae27836a5ec..84a4e1426ce 100644 --- a/Translations/WinMerge/German.po +++ b/Translations/WinMerge/German.po @@ -2416,6 +2416,12 @@ msgstr "Shell-Erweiterung für Windows 11 und höher registrieren" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Shell-Erweiterung für Windows 11 und höher nicht registrieren" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Ordner" @@ -4348,6 +4354,24 @@ msgstr "Die 32-Bit-Version von WinMerge unterstützt den Zwischenablagevergleich msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "WebView2-Laufzeitumgebung ist nicht installiert. Möchten Sie sie herunterladen?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Verschönerung" diff --git a/Translations/WinMerge/Greek.po b/Translations/WinMerge/Greek.po index 4eee1742269..785c9fddc1a 100644 --- a/Translations/WinMerge/Greek.po +++ b/Translations/WinMerge/Greek.po @@ -2411,6 +2411,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Φάκελος" @@ -4530,6 +4536,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Hungarian.po b/Translations/WinMerge/Hungarian.po index 4893ab80120..d6d147aafc5 100644 --- a/Translations/WinMerge/Hungarian.po +++ b/Translations/WinMerge/Hungarian.po @@ -2422,6 +2422,12 @@ msgstr "Shellbővítmény regisztrálása Windows 11-hez" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Shellbővítmény regisztrálás törlése Windows 11-hez" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Könyvtár" @@ -4691,6 +4697,24 @@ msgstr "A WinMerge 32 bites verziója nem támogatja a vágólap összehasonlít msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "A WebView2 runtime nincs telepítve. Le akarod tölteni?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Megjelenés optimalizálás" diff --git a/Translations/WinMerge/Italian.po b/Translations/WinMerge/Italian.po index 80852c85bc2..0d3aa81b814 100644 --- a/Translations/WinMerge/Italian.po +++ b/Translations/WinMerge/Italian.po @@ -1956,6 +1956,12 @@ msgstr "Registra l'estensione della shell per &Windows 11 o successivi" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Deregistra l'estensione della shell per &Windows 11 o successivi" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Cartella" @@ -3987,6 +3993,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Japanese.po b/Translations/WinMerge/Japanese.po index 27a3f587c58..7d9f20239a1 100644 --- a/Translations/WinMerge/Japanese.po +++ b/Translations/WinMerge/Japanese.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: WinMerge\n" "Report-Msgid-Bugs-To: https://bugs.winmerge.org/\n" "POT-Creation-Date: 2020-12-05 22:07+0000\n" -"PO-Revision-Date: 2023-04-09 09:28+0900\n" +"PO-Revision-Date: 2023-05-01 23:19+0900\n" "Last-Translator: Takashi Sawanaka \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -1961,6 +1961,12 @@ msgstr "Windows 11 以降用シェル拡張を登録(&W)" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Windows 11 以降用シェル拡張の登録を解除(&I)" +msgid "Jump List" +msgstr "ジャンプリスト" + +msgid "Clear all recent items" +msgstr "すべての最近使ったものの履歴をクリアする" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "フォルダー" @@ -4016,6 +4022,24 @@ msgstr "32bit版 WinMerge ではクリップボード比較はサポートされ msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "WebView2 ランタイムがインストールされていません。ダウンロードしますか?" +msgid "New Text Compare" +msgstr "新規テキスト比較" + +msgid "New Table Compare" +msgstr "新規テーブル比較" + +msgid "New Binary Compare" +msgstr "新規バイナリ比較" + +msgid "New Image Compare" +msgstr "新規画像比較" + +msgid "New Webpage Compare" +msgstr "新規Webページ比較" + +msgid "Clipboard Compare" +msgstr "クリップボード比較" + msgid "Prettification" msgstr "整形" @@ -4447,8 +4471,14 @@ msgstr "図形内のテキストを比較する" msgid "Compare headers and footers" msgstr "ヘッダーとフッターを比較する" -msgid "Cannot get Macros.\r\n To allow WinMerge to compare macros, use MS Office to alter the settings in the Macro Security for the current application.\r\n The Trust access to Visual Basic Project feature should be turned on to use this feature in WinMerge.\r\n" -msgstr "マクロを取得できません。\r\nWinMergeでマクロを比較するには、MS Officeを使用して、現在のアプリケーションのマクロセキュリティの設定を変更してください。\r\nWinMergeでこの機能を使用するには、「VBA プロジェクトへのアクセスを信頼する」をオンにする必要があります。\r\n" +msgid "" +"Cannot get Macros.\r\n" +" To allow WinMerge to compare macros, use MS Office to alter the settings in the Macro Security for the current application.\r\n" +" The Trust access to Visual Basic Project feature should be turned on to use this feature in WinMerge.\r\n" +msgstr "" +"マクロを取得できません。\r\n" +"WinMergeでマクロを比較するには、MS Officeを使用して、現在のアプリケーションのマクロセキュリティの設定を変更してください。\r\n" +"WinMergeでこの機能を使用するには、「VBA プロジェクトへのアクセスを信頼する」をオンにする必要があります。\r\n" msgid "Compare VBA macros" msgstr "VBA マクロを比較する" diff --git a/Translations/WinMerge/Korean.po b/Translations/WinMerge/Korean.po index ea5a49493fd..97afdbe52ba 100644 --- a/Translations/WinMerge/Korean.po +++ b/Translations/WinMerge/Korean.po @@ -2429,6 +2429,12 @@ msgstr "Windows 11 이상용 셸 확장 등록(&W)" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Windows 11 이상용 셸 확장 등록 해제(&I)" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "폴더" @@ -4737,6 +4743,24 @@ msgstr "32비트 버전의 WinMerge는 클립보드 비교를 지원하지 않 msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "WebView2 런타임이 설치되지 않았습니다. 다운로드하시겠습니까?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "꾸미기" diff --git a/Translations/WinMerge/Lithuanian.po b/Translations/WinMerge/Lithuanian.po index 17ea420783c..0b0e3b32bf3 100644 --- a/Translations/WinMerge/Lithuanian.po +++ b/Translations/WinMerge/Lithuanian.po @@ -1950,6 +1950,12 @@ msgstr "Registruoti aplinkos plėtinį &Windows 11 ar vėlesnei" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Išregistruoti aplinkos plėtinį W&indows 11 ar vėlesnei" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Katalogų" @@ -3628,6 +3634,24 @@ msgstr "32 bitų „WinMerge“ versija nepalaiko lyginimo mainų srityje" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "„WebView2“ vykdymo aplinka neįdiegta. Norite ją parsisiųsti?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Sutvarkymas" diff --git a/Translations/WinMerge/Norwegian.po b/Translations/WinMerge/Norwegian.po index 0274d37e986..6577993353b 100644 --- a/Translations/WinMerge/Norwegian.po +++ b/Translations/WinMerge/Norwegian.po @@ -1962,6 +1962,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Mappe" @@ -4018,6 +4024,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Persian.po b/Translations/WinMerge/Persian.po index 67ed2e10dad..2d00c3c6a45 100644 --- a/Translations/WinMerge/Persian.po +++ b/Translations/WinMerge/Persian.po @@ -2421,6 +2421,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr " پوشه " @@ -4599,6 +4605,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Polish.po b/Translations/WinMerge/Polish.po index 2da39b41486..676f115ac06 100644 --- a/Translations/WinMerge/Polish.po +++ b/Translations/WinMerge/Polish.po @@ -1951,6 +1951,12 @@ msgstr "Zarejestruj rozszerzenie powłoki dla Windows 11 lub nowszego" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Wyrejestruj rozszerzenie powłoki z Windows 11 lub nowszego" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Folder" @@ -3629,6 +3635,24 @@ msgstr "32-bitowa wersja programu WinMerge nie obsługuje funkcji porównywania msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "WebView2 Runtime nie został zainstalowany. Czy chcesz go pobrać?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Upiększanie" diff --git a/Translations/WinMerge/Portuguese.po b/Translations/WinMerge/Portuguese.po index 0091966290d..c08ed793589 100644 --- a/Translations/WinMerge/Portuguese.po +++ b/Translations/WinMerge/Portuguese.po @@ -1967,6 +1967,12 @@ msgstr "Registar a extensão do contexto para &Windows 11 ou posterior" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Cancelar o registo da extensão do contexto para W&indows 11 ou posterior" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Pasta" @@ -4060,6 +4066,24 @@ msgstr "A versão de 32 bits do WinMerge não suporta a comparação da área de msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "O runtime WebView2 não está instalado. Quer transferi-lo?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Embelezamento" diff --git a/Translations/WinMerge/Romanian.po b/Translations/WinMerge/Romanian.po index 13d15abcfcd..8260a98c968 100644 --- a/Translations/WinMerge/Romanian.po +++ b/Translations/WinMerge/Romanian.po @@ -2412,6 +2412,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Director" @@ -4535,6 +4541,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Russian.po b/Translations/WinMerge/Russian.po index e1a28aa49fa..3523ce3ad33 100644 --- a/Translations/WinMerge/Russian.po +++ b/Translations/WinMerge/Russian.po @@ -1952,6 +1952,12 @@ msgstr "Зарегистрировать shell для Windows 11" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Удалить shell для &Windows 11" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Папка" @@ -3630,6 +3636,24 @@ msgstr "32-битная версия WinMerge не поддерживает бу msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "Не установлена среда выполнения WebView2. Хотите скачать его?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Приукрашивание" diff --git a/Translations/WinMerge/Serbian.po b/Translations/WinMerge/Serbian.po index 5f8986bde45..2bfe281cdbd 100644 --- a/Translations/WinMerge/Serbian.po +++ b/Translations/WinMerge/Serbian.po @@ -2397,6 +2397,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Фасцикла" @@ -4524,6 +4530,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Sinhala.po b/Translations/WinMerge/Sinhala.po index dd1dde7fe3e..5177e9ba646 100644 --- a/Translations/WinMerge/Sinhala.po +++ b/Translations/WinMerge/Sinhala.po @@ -2412,6 +2412,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "ෆෝල්ඩර" @@ -4553,6 +4559,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "" diff --git a/Translations/WinMerge/Slovak.po b/Translations/WinMerge/Slovak.po index b8f0ba95bb7..ee10cae8c8b 100644 --- a/Translations/WinMerge/Slovak.po +++ b/Translations/WinMerge/Slovak.po @@ -1958,6 +1958,12 @@ msgstr "Registrovať rozšírenia vzhľadu pre &Windows 11 alebo novšie" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Zrušenie registrácie rozšírenia vzhľadu pre W&indows 11 alebo novšie" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Priečinok" @@ -3990,6 +3996,24 @@ msgstr "32-bitová verzia WinMerge nepodporuje porovnávanie schránky" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Prikrášlenie" diff --git a/Translations/WinMerge/Slovenian.po b/Translations/WinMerge/Slovenian.po index 6a1dc1ece88..2c3aa391ec3 100644 --- a/Translations/WinMerge/Slovenian.po +++ b/Translations/WinMerge/Slovenian.po @@ -1958,6 +1958,12 @@ msgstr "Registriraj razširitev lupine za &Windows 11 ali novejši" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Odstrani razširitev lupine za W&indows 11 ali novejši" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Mapa" @@ -4015,6 +4021,24 @@ msgstr "32-bitna različica WinMerge ne podpira primerjave odložišča" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "Izvajalski čas WebView2 ni nameščen. Ali ga želite prenesti?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Polepšanje" diff --git a/Translations/WinMerge/Spanish.po b/Translations/WinMerge/Spanish.po index 5f59aca2fd3..f351e95db0d 100644 --- a/Translations/WinMerge/Spanish.po +++ b/Translations/WinMerge/Spanish.po @@ -1961,6 +1961,12 @@ msgstr "Registrar extensión shell para &Windows 11 o más reciente" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Anular registro de extensión shell para &Windows 11 o más reciente" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Carpeta" @@ -4017,6 +4023,24 @@ msgstr "La versión de 32 bits de WinMerge no soporta comparación de portapapel msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "WebView2 Runtime no está instalado. ¿Desea descargarlo?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Mejoras" diff --git a/Translations/WinMerge/Swedish.po b/Translations/WinMerge/Swedish.po index fc05e4b588b..5456f493e9c 100644 --- a/Translations/WinMerge/Swedish.po +++ b/Translations/WinMerge/Swedish.po @@ -1971,6 +1971,12 @@ msgstr "Registrera filändelse för &Windows 11 eller senare" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Avregistrera filändelse för W&indows 11 eller senare" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Katalog" @@ -4095,6 +4101,24 @@ msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" "Körbara filer för WebView2 är inte installerade. Vill du ladda ned det?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Finputsning" diff --git a/Translations/WinMerge/Turkish.po b/Translations/WinMerge/Turkish.po index 5d24d277e47..ea01d67262b 100644 --- a/Translations/WinMerge/Turkish.po +++ b/Translations/WinMerge/Turkish.po @@ -1967,6 +1967,12 @@ msgstr "&Windows 11 için kabuk eklentisi kaydını ekle" msgid "Unregister shell extension for W&indows 11 or later" msgstr "Windows 11 için kabuk ek&lentisi kaydını sil" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Klasör" @@ -4087,6 +4093,24 @@ msgstr "32-bit WinMerge sürümünde pano karşılaştırma özelliği yok" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "WebView2 çalıştırıcı bulunamadı. İndirmek ister misiniz?" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr "Sadeleştirme" diff --git a/Translations/WinMerge/Ukrainian.po b/Translations/WinMerge/Ukrainian.po index e17970ff92b..81fa0dec69b 100644 --- a/Translations/WinMerge/Ukrainian.po +++ b/Translations/WinMerge/Ukrainian.po @@ -2415,6 +2415,12 @@ msgstr "" msgid "Unregister shell extension for W&indows 11 or later" msgstr "" +msgid "Jump List" +msgstr "" + +msgid "Clear all recent items" +msgstr "" + msgctxt "Options dialog|Categories" msgid "Folder" msgstr "Тека" @@ -4556,6 +4562,24 @@ msgstr "" msgid "WebView2 runtime is not installed. Do you want to download it?" msgstr "" +msgid "New Text Compare" +msgstr "" + +msgid "New Table Compare" +msgstr "" + +msgid "New Binary Compare" +msgstr "" + +msgid "New Image Compare" +msgstr "" + +msgid "New Webpage Compare" +msgstr "" + +msgid "Clipboard Compare" +msgstr "" + msgid "Prettification" msgstr ""