diff --git a/PowerEditor/bin/change.log b/PowerEditor/bin/change.log index 41ca621f2..9c926ed2c 100644 --- a/PowerEditor/bin/change.log +++ b/PowerEditor/bin/change.log @@ -1,11 +1,9 @@ -Notepad++ v5.9.4 new features and fixed bugs: +Notepad++ v5.9.5 new features and fixed bugs: -1. Add 3 Project Panels for the management of projects -2. Doc Switcher can be sorted now. -3. Fix a crash bug - crash on launch time if default User defined language was set on the previous session. -4. Fix crash issue while printing for some printers. -5. Fix ANSI version Clipboard history entries display bug. -6. Fix wrong display of tab number setting dialog in Lang Menu/Tab settings of Preferences dialog. +1. Fix Project Panel loading non-project file bug. +2. Fix saving project file bug while saving it on the root. +3. Fix adding/hidding Language Menue item problem in Preference dialog. +4. Make Project Panel translatable. diff --git a/PowerEditor/bin/npp.pdb b/PowerEditor/bin/npp.pdb index 6a1842608..c0e7efdcc 100644 Binary files a/PowerEditor/bin/npp.pdb and b/PowerEditor/bin/npp.pdb differ diff --git a/PowerEditor/installer/nativeLang/chinese.xml b/PowerEditor/installer/nativeLang/chinese.xml index 5b6f16b12..bbb2deace 100644 --- a/PowerEditor/installer/nativeLang/chinese.xml +++ b/PowerEditor/installer/nativeLang/chinese.xml @@ -32,12 +32,13 @@ - - + + - + + @@ -184,7 +185,9 @@ - + + + @@ -588,5 +591,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + diff --git a/PowerEditor/installer/nativeLang/czech.xml b/PowerEditor/installer/nativeLang/czech.xml index 48bee6dfa..16ab090c7 100644 --- a/PowerEditor/installer/nativeLang/czech.xml +++ b/PowerEditor/installer/nativeLang/czech.xml @@ -1,4 +1,9 @@ + @@ -20,9 +25,7 @@ - + @@ -42,6 +45,7 @@ + @@ -202,6 +206,9 @@ + + + @@ -533,9 +540,7 @@ - + diff --git a/PowerEditor/installer/nativeLang/english.xml b/PowerEditor/installer/nativeLang/english.xml index 1e1aaa55b..bf5e368f3 100644 --- a/PowerEditor/installer/nativeLang/english.xml +++ b/PowerEditor/installer/nativeLang/english.xml @@ -39,6 +39,7 @@ + @@ -189,7 +190,9 @@ - + + + diff --git a/PowerEditor/installer/nativeLang/french.xml b/PowerEditor/installer/nativeLang/french.xml index f69873640..8b78e187d 100644 --- a/PowerEditor/installer/nativeLang/french.xml +++ b/PowerEditor/installer/nativeLang/french.xml @@ -22,23 +22,24 @@ - + - - + + - + - + + @@ -189,7 +190,9 @@ - + + + diff --git a/PowerEditor/installer/nativeLang/romanian.xml b/PowerEditor/installer/nativeLang/romanian.xml index 9c8c9bf53..35e1abb00 100644 --- a/PowerEditor/installer/nativeLang/romanian.xml +++ b/PowerEditor/installer/nativeLang/romanian.xml @@ -20,6 +20,7 @@ + @@ -28,6 +29,7 @@ + @@ -39,6 +41,7 @@ + @@ -68,15 +71,15 @@ - + - - - + + + @@ -112,12 +115,25 @@ + + + + + + + + + + + + + @@ -189,6 +205,9 @@ + + + @@ -247,7 +266,7 @@ - + @@ -315,6 +334,18 @@ + + + + + + + + + + + + @@ -363,7 +394,7 @@ - + @@ -422,7 +453,7 @@ - + @@ -439,7 +470,9 @@ - + + + @@ -456,7 +489,7 @@ - + @@ -475,6 +508,10 @@ + + + + @@ -492,6 +529,10 @@ + + + + @@ -537,9 +578,6 @@ - - - @@ -563,12 +601,12 @@ - - + + - + diff --git a/PowerEditor/installer/nativeLang/slovak.xml b/PowerEditor/installer/nativeLang/slovak.xml index ad7c7446d..5a5a99bb7 100644 --- a/PowerEditor/installer/nativeLang/slovak.xml +++ b/PowerEditor/installer/nativeLang/slovak.xml @@ -40,6 +40,7 @@ + @@ -199,7 +200,11 @@ + + + + @@ -443,10 +448,10 @@ - - + + diff --git a/PowerEditor/installer/nppSetup.nsi b/PowerEditor/installer/nppSetup.nsi index 15d59bebf..aaad248f0 100644 --- a/PowerEditor/installer/nppSetup.nsi +++ b/PowerEditor/installer/nppSetup.nsi @@ -18,10 +18,10 @@ ; Define the application name !define APPNAME "Notepad++" -!define APPVERSION "5.9.4" +!define APPVERSION "5.9.5" !define APPNAMEANDVERSION "${APPNAME} v${APPVERSION}" !define VERSION_MAJOR 5 -!define VERSION_MINOR 94 +!define VERSION_MINOR 95 !define APPWEBSITE "http://notepad-plus-plus.org/" diff --git a/PowerEditor/src/Notepad_plus.cpp b/PowerEditor/src/Notepad_plus.cpp index a684bca73..6a83c550d 100644 --- a/PowerEditor/src/Notepad_plus.cpp +++ b/PowerEditor/src/Notepad_plus.cpp @@ -3868,7 +3868,7 @@ bool Notepad_plus::getIntegralDockingData(tTbData & dockData, int & iCont, bool { int cont = (pddi._currContainer < DOCKCONT_MAX ? pddi._prevContainer : pddi._currContainer); RECT rc; - if (dockingData.getFloatingRCFrom(cont, rc)) + if (dockingData.getFloatingRCFrom(cont, rc)) dockData.rcFloat = rc; } return true; @@ -4700,7 +4700,9 @@ void Notepad_plus::launchProjectPanel(int cmdID, ProjectPanel ** pProjPanel, int (*pProjPanel) = new ProjectPanel; (*pProjPanel)->init(_pPublicInterface->getHinst(), _pPublicInterface->getHSelf()); (*pProjPanel)->setWorkSpaceFilePath(pNppParam->getworkSpaceFilePath(panelID)); - tTbData data = {0}; + + tTbData data; + memset(&data, 0, sizeof(data)); (*pProjPanel)->create(&data); ::SendMessage(_pPublicInterface->getHSelf(), NPPM_MODELESSDIALOG, MODELESSDIALOGREMOVE, (WPARAM)(*pProjPanel)->getHSelf()); @@ -4713,6 +4715,16 @@ void Notepad_plus::launchProjectPanel(int cmdID, ProjectPanel ** pProjPanel, int // in this case is DOCKABLE_DEMO_INDEX // In the case of Notepad++ internal function, it'll be the command ID which triggers this dialog data.dlgID = cmdID; + + NativeLangSpeaker *pNativeSpeaker = (NppParameters::getInstance())->getNativeLangSpeaker(); + generic_string title_temp = pNativeSpeaker->getProjectPanelLangStr("PanelTitle", PM_PROJECTPANELTITLE); + + static TCHAR title[32]; + if (title_temp.length() < 32) + { + lstrcpy(title, title_temp.c_str()); + data.pszName = title; + } ::SendMessage(_pPublicInterface->getHSelf(), NPPM_DMMREGASDCKDLG, 0, (LPARAM)&data); } (*pProjPanel)->display(); diff --git a/PowerEditor/src/WinControls/DockingWnd/Docking.h b/PowerEditor/src/WinControls/DockingWnd/Docking.h index 618ec2edb..7ca57c1be 100644 --- a/PowerEditor/src/WinControls/DockingWnd/Docking.h +++ b/PowerEditor/src/WinControls/DockingWnd/Docking.h @@ -49,7 +49,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. typedef struct { HWND hClient; // client Window Handle - TCHAR *pszName; // name of plugin (shown in window) + const TCHAR *pszName; // name of plugin (shown in window) int dlgID; // a funcItem provides the function pointer to start a dialog. Please parse here these ID // user modifications diff --git a/PowerEditor/src/WinControls/DockingWnd/DockingCont.cpp b/PowerEditor/src/WinControls/DockingWnd/DockingCont.cpp index 82b642d5c..df32c83db 100644 --- a/PowerEditor/src/WinControls/DockingWnd/DockingCont.cpp +++ b/PowerEditor/src/WinControls/DockingWnd/DockingCont.cpp @@ -817,7 +817,7 @@ void DockingCont::drawTabItem(DRAWITEMSTRUCT *pDrawItemStruct) if (!tcItem.lParam) return; - TCHAR* text = ((tTbData*)tcItem.lParam)->pszName; + const TCHAR *text = ((tTbData*)tcItem.lParam)->pszName; int length = lstrlen(((tTbData*)tcItem.lParam)->pszName); @@ -1275,7 +1275,7 @@ void DockingCont::SelectTab(int iTab) { if (iTab != -1) { - TCHAR *pszMaxTxt = NULL; + const TCHAR *pszMaxTxt = NULL; TCITEM tcItem = {0}; SIZE size = {0}; int maxWidth = 0; @@ -1309,7 +1309,7 @@ void DockingCont::SelectTab(int iTab) for (int iItem = 0; iItem < iItemCnt; iItem++) { - TCHAR *pszTabTxt = NULL; + const TCHAR *pszTabTxt = NULL; ::SendMessage(_hContTab, TCM_GETITEM, iItem, (LPARAM)&tcItem); if (!tcItem.lParam) diff --git a/PowerEditor/src/WinControls/DockingWnd/DockingDlgInterface.h b/PowerEditor/src/WinControls/DockingWnd/DockingDlgInterface.h index 9cac03198..c51cb9809 100644 --- a/PowerEditor/src/WinControls/DockingWnd/DockingDlgInterface.h +++ b/PowerEditor/src/WinControls/DockingWnd/DockingDlgInterface.h @@ -31,10 +31,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. class DockingDlgInterface : public StaticDialog { public: - DockingDlgInterface(): StaticDialog(), _HSource(NULL), _data(NULL),\ + DockingDlgInterface(): StaticDialog(), _HSource(NULL),\ _dlgID(-1), _isFloating(TRUE), _iDockedPos(0), _pluginName(TEXT("")) {}; - DockingDlgInterface(int dlgID): StaticDialog(), _HSource(NULL), _data(NULL),\ + DockingDlgInterface(int dlgID): StaticDialog(), _HSource(NULL),\ _dlgID(dlgID), _isFloating(TRUE), _iDockedPos(0), _pluginName(TEXT("")) {}; virtual void init(HINSTANCE hInst, HWND parent) { @@ -58,9 +58,6 @@ public: // additional info data->pszAddInfo = NULL; - - _data = data; - }; virtual void updateDockingDlg() { @@ -121,7 +118,6 @@ protected : // Handles HWND _HSource; - tTbData* _data; int _dlgID; bool _isFloating; int _iDockedPos; diff --git a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp index f39f27325..84b1209ec 100644 --- a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp +++ b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp @@ -1523,7 +1523,7 @@ BOOL CALLBACK LangMenuDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPara return TRUE; } - case IDC_BUTTON_RESTORE : + case IDC_BUTTON_RESTORE : case IDC_BUTTON_REMOVE : { int list2Remove, list2Add, idButton2Enable, idButton2Disable; diff --git a/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp b/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp index cce774e4e..1ccd2dac4 100644 --- a/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp +++ b/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp @@ -23,6 +23,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "resource.h" #include "tinyxml.h" #include "FileDialog.h" +#include "localization.h" +#include "Parameters.h" #define CX_BITMAP 16 #define CY_BITMAP 16 @@ -52,19 +54,21 @@ BOOL CALLBACK ProjectPanel::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPar 0,0,0,0,_hSelf,(HMENU)0, _hInst, NULL); TBBUTTON tbButtons[2]; - static TCHAR *projectMenuStr = TEXT("Workspace"); + NativeLangSpeaker *pNativeSpeaker = (NppParameters::getInstance())->getNativeLangSpeaker(); + generic_string workspace_entry = pNativeSpeaker->getProjectPanelLangMenuStr("Entries", 0, PM_WORKSPACEMENUENTRY); + generic_string edit_entry = pNativeSpeaker->getProjectPanelLangMenuStr("Entries", 1, PM_EDITMENUENTRY); + tbButtons[0].idCommand = IDB_PROJECT_BTN; tbButtons[0].iBitmap = I_IMAGENONE; tbButtons[0].fsState = TBSTATE_ENABLED; tbButtons[0].fsStyle = BTNS_BUTTON | BTNS_AUTOSIZE; - tbButtons[0].iString = (INT_PTR)projectMenuStr; + tbButtons[0].iString = (INT_PTR)workspace_entry.c_str(); - static TCHAR *editMenuStr = TEXT("Edit"); tbButtons[1].idCommand = IDB_EDIT_BTN; tbButtons[1].iBitmap = I_IMAGENONE; tbButtons[1].fsState = TBSTATE_ENABLED; tbButtons[1].fsStyle = BTNS_BUTTON | BTNS_AUTOSIZE; - tbButtons[1].iString = (INT_PTR)editMenuStr; + tbButtons[1].iString = (INT_PTR)edit_entry.c_str(); SendMessage(_hToolbarMenu, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); SendMessage(_hToolbarMenu, TB_ADDBUTTONS, (WPARAM)sizeof(tbButtons) / sizeof(TBBUTTON), (LPARAM)&tbButtons); @@ -77,6 +81,7 @@ BOOL CALLBACK ProjectPanel::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPar _treeView.display(); if (!openWorkSpace(_workSpaceFilePath.c_str())) newWorkSpace(); + return TRUE; } @@ -144,31 +149,56 @@ void ProjectPanel::checkIfNeedSave(const TCHAR *title) void ProjectPanel::initMenus() { _hWorkSpaceMenu = ::CreatePopupMenu(); - ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_NEWWS, TEXT("New Workspace")); - ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_OPENWS, TEXT("Open Workspace")); - ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_RELOADWS, TEXT("Reload Workspace")); - ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_SAVEWS, TEXT("Save")); - ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_SAVEASWS, TEXT("Save As...")); - ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_SAVEACOPYASWS, TEXT("Save a Copy As...")); + + NativeLangSpeaker *pNativeSpeaker = (NppParameters::getInstance())->getNativeLangSpeaker(); + + generic_string new_workspace = pNativeSpeaker->getProjectPanelLangMenuStr("WorkspaceMenu", IDM_PROJECT_NEWWS, PM_NEWWORKSPACE); + generic_string open_workspace = pNativeSpeaker->getProjectPanelLangMenuStr("WorkspaceMenu", IDM_PROJECT_OPENWS, PM_OPENWORKSPACE); + generic_string reload_workspace = pNativeSpeaker->getProjectPanelLangMenuStr("WorkspaceMenu", IDM_PROJECT_RELOADWS, PM_RELOADWORKSPACE); + generic_string save_workspace = pNativeSpeaker->getProjectPanelLangMenuStr("WorkspaceMenu", IDM_PROJECT_SAVEWS, PM_SAVEWORKSPACE); + generic_string saveas_workspace = pNativeSpeaker->getProjectPanelLangMenuStr("WorkspaceMenu", IDM_PROJECT_SAVEASWS, PM_SAVEASWORKSPACE); + generic_string saveacopyas_workspace = pNativeSpeaker->getProjectPanelLangMenuStr("WorkspaceMenu", IDM_PROJECT_SAVEACOPYASWS, PM_SAVEACOPYASWORKSPACE); + generic_string newproject_workspace = pNativeSpeaker->getProjectPanelLangMenuStr("WorkspaceMenu", IDM_PROJECT_NEWPROJECT, PM_NEWPROJECTWORKSPACE); + + ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_NEWWS, new_workspace.c_str()); + ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_OPENWS, open_workspace.c_str()); + ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_RELOADWS, reload_workspace.c_str()); + ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_SAVEWS, save_workspace.c_str()); + ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_SAVEASWS, saveas_workspace.c_str()); + ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_SAVEACOPYASWS, saveacopyas_workspace.c_str()); ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, (UINT)-1, 0); - ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_NEWPROJECT, TEXT("Add New Project")); + ::InsertMenu(_hWorkSpaceMenu, 0, MF_BYCOMMAND, IDM_PROJECT_NEWPROJECT, newproject_workspace.c_str()); + + generic_string edit_rename = pNativeSpeaker->getProjectPanelLangMenuStr("ProjectMenu", IDM_PROJECT_RENAME, PM_EDITRENAME); + generic_string edit_addfolder = pNativeSpeaker->getProjectPanelLangMenuStr("ProjectMenu", IDM_PROJECT_NEWFOLDER, PM_EDITNEWFOLDER); + generic_string edit_addfiles = pNativeSpeaker->getProjectPanelLangMenuStr("ProjectMenu", IDM_PROJECT_ADDFILES, PM_EDITADDFILES); + generic_string edit_remove = pNativeSpeaker->getProjectPanelLangMenuStr("ProjectMenu", IDM_PROJECT_DELETEFOLDER, PM_EDITREMOVE); _hProjectMenu = ::CreatePopupMenu(); - ::InsertMenu(_hProjectMenu, 0, MF_BYCOMMAND, IDM_PROJECT_RENAME, TEXT("Rename")); - ::InsertMenu(_hProjectMenu, 0, MF_BYCOMMAND, IDM_PROJECT_NEWFOLDER, TEXT("Add Folder")); - ::InsertMenu(_hProjectMenu, 0, MF_BYCOMMAND, IDM_PROJECT_ADDFILES, TEXT("Add Files...")); - ::InsertMenu(_hProjectMenu, 0, MF_BYCOMMAND, IDM_PROJECT_DELETEFOLDER, TEXT("Remove")); + ::InsertMenu(_hProjectMenu, 0, MF_BYCOMMAND, IDM_PROJECT_RENAME, edit_rename.c_str()); + ::InsertMenu(_hProjectMenu, 0, MF_BYCOMMAND, IDM_PROJECT_NEWFOLDER, edit_addfolder.c_str()); + ::InsertMenu(_hProjectMenu, 0, MF_BYCOMMAND, IDM_PROJECT_ADDFILES, edit_addfiles.c_str()); + ::InsertMenu(_hProjectMenu, 0, MF_BYCOMMAND, IDM_PROJECT_DELETEFOLDER, edit_remove.c_str()); + + edit_rename = pNativeSpeaker->getProjectPanelLangMenuStr("FolderMenu", IDM_PROJECT_RENAME, PM_EDITRENAME); + edit_addfolder = pNativeSpeaker->getProjectPanelLangMenuStr("FolderMenu", IDM_PROJECT_NEWFOLDER, PM_EDITNEWFOLDER); + edit_addfiles = pNativeSpeaker->getProjectPanelLangMenuStr("FolderMenu", IDM_PROJECT_ADDFILES, PM_EDITADDFILES); + edit_remove = pNativeSpeaker->getProjectPanelLangMenuStr("FolderMenu", IDM_PROJECT_DELETEFOLDER, PM_EDITREMOVE); _hFolderMenu = ::CreatePopupMenu(); - ::InsertMenu(_hFolderMenu, 0, MF_BYCOMMAND, IDM_PROJECT_RENAME, TEXT("Rename")); - ::InsertMenu(_hFolderMenu, 0, MF_BYCOMMAND, IDM_PROJECT_NEWFOLDER, TEXT("Add Folder")); - ::InsertMenu(_hFolderMenu, 0, MF_BYCOMMAND, IDM_PROJECT_ADDFILES, TEXT("Add Files...")); - ::InsertMenu(_hFolderMenu, 0, MF_BYCOMMAND, IDM_PROJECT_DELETEFOLDER, TEXT("Remove")); + ::InsertMenu(_hFolderMenu, 0, MF_BYCOMMAND, IDM_PROJECT_RENAME, edit_rename.c_str()); + ::InsertMenu(_hFolderMenu, 0, MF_BYCOMMAND, IDM_PROJECT_NEWFOLDER, edit_addfolder.c_str()); + ::InsertMenu(_hFolderMenu, 0, MF_BYCOMMAND, IDM_PROJECT_ADDFILES, edit_addfiles.c_str()); + ::InsertMenu(_hFolderMenu, 0, MF_BYCOMMAND, IDM_PROJECT_DELETEFOLDER, edit_remove.c_str()); + + edit_rename = pNativeSpeaker->getProjectPanelLangMenuStr("FileMenu", IDM_PROJECT_RENAME, PM_EDITRENAME); + edit_remove = pNativeSpeaker->getProjectPanelLangMenuStr("FileMenu", IDM_PROJECT_DELETEFILE, PM_EDITREMOVE); + generic_string edit_modifyfile = pNativeSpeaker->getProjectPanelLangMenuStr("FileMenu", IDM_PROJECT_MODIFYFILEPATH, PM_EDITMODIFYFILE); _hFileMenu = ::CreatePopupMenu(); - ::InsertMenu(_hFileMenu, 0, MF_BYCOMMAND, IDM_PROJECT_RENAME, TEXT("Rename")); - ::InsertMenu(_hFileMenu, 0, MF_BYCOMMAND, IDM_PROJECT_DELETEFILE, TEXT("Remove")); - ::InsertMenu(_hFileMenu, 0, MF_BYCOMMAND, IDM_PROJECT_MODIFYFILEPATH, TEXT("Modify File Path")); + ::InsertMenu(_hFileMenu, 0, MF_BYCOMMAND, IDM_PROJECT_RENAME, edit_rename.c_str()); + ::InsertMenu(_hFileMenu, 0, MF_BYCOMMAND, IDM_PROJECT_DELETEFILE, edit_remove.c_str()); + ::InsertMenu(_hFileMenu, 0, MF_BYCOMMAND, IDM_PROJECT_MODIFYFILEPATH, edit_modifyfile.c_str()); } @@ -265,9 +295,9 @@ bool ProjectPanel::openWorkSpace(const TCHAR *projectFileName) _workSpaceFilePath = projectFileName; - _treeView.removeAllItems(); - - HTREEITEM rootItem = _treeView.addItem(TEXT("Workspace"), TVI_ROOT, INDEX_CLEAN_ROOT); + NativeLangSpeaker *pNativeSpeaker = (NppParameters::getInstance())->getNativeLangSpeaker(); + generic_string workspace = pNativeSpeaker->getProjectPanelLangStr("WorkspaceRootName", PM_WORKSPACEROOTNAME); + HTREEITEM rootItem = _treeView.addItem(workspace.c_str(), TVI_ROOT, INDEX_CLEAN_ROOT); for ( ; childNode ; childNode = childNode->NextSibling(TEXT("Project"))) { @@ -283,7 +313,9 @@ bool ProjectPanel::openWorkSpace(const TCHAR *projectFileName) void ProjectPanel::newWorkSpace() { - _treeView.addItem(TEXT("Workspace"), TVI_ROOT, INDEX_CLEAN_ROOT); + NativeLangSpeaker *pNativeSpeaker = (NppParameters::getInstance())->getNativeLangSpeaker(); + generic_string workspace = pNativeSpeaker->getProjectPanelLangStr("WorkspaceRootName", PM_WORKSPACEROOTNAME); + _treeView.addItem(workspace.c_str(), TVI_ROOT, INDEX_CLEAN_ROOT); setWorkSpaceDirty(false); _workSpaceFilePath = TEXT(""); } diff --git a/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.h b/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.h index 6e302ec48..2059b7d22 100644 --- a/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.h +++ b/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.h @@ -28,6 +28,25 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "TreeView.h" #include "ProjectPanel_rc.h" +#define PM_PROJECTPANELTITLE TEXT("Project") +#define PM_WORKSPACEROOTNAME TEXT("Workspace") +#define PM_NEWWORKSPACE TEXT("New Workspace") +#define PM_OPENWORKSPACE TEXT("Open Workspace") +#define PM_RELOADWORKSPACE TEXT("Reload Workspace") +#define PM_SAVEWORKSPACE TEXT("Save") +#define PM_SAVEASWORKSPACE TEXT("Save As...") +#define PM_SAVEACOPYASWORKSPACE TEXT("Save a Copy As...") +#define PM_NEWPROJECTWORKSPACE TEXT("Add New Project") + +#define PM_EDITRENAME TEXT("Rename") +#define PM_EDITNEWFOLDER TEXT("Add Folder") +#define PM_EDITADDFILES TEXT("Add Files...") +#define PM_EDITREMOVE TEXT("Remove") +#define PM_EDITMODIFYFILE TEXT("Modify File Path") + +#define PM_WORKSPACEMENUENTRY TEXT("Workspace") +#define PM_EDITMENUENTRY TEXT("Edit") + enum NodeType { nodeType_root = 0, nodeType_project = 1, nodeType_folder = 2, nodeType_file = 3 }; diff --git a/PowerEditor/src/localization.cpp b/PowerEditor/src/localization.cpp index 1c0d66a8f..9616f7087 100644 --- a/PowerEditor/src/localization.cpp +++ b/PowerEditor/src/localization.cpp @@ -1246,6 +1246,70 @@ bool NativeLangSpeaker::getMsgBoxLang(const char *msgBoxTagName, generic_string return false; } +generic_string NativeLangSpeaker::getProjectPanelLangMenuStr(const char * nodeName, int cmdID, const TCHAR *defaultStr) const +{ + if (!_nativeLangA) return defaultStr; + + TiXmlNodeA *targetNode = _nativeLangA->FirstChild("ProjectManager"); + if (!targetNode) return defaultStr; + + targetNode = targetNode->FirstChild("Menus"); + if (!targetNode) return defaultStr; + + targetNode = targetNode->FirstChild(nodeName); + if (!targetNode) return defaultStr; + + const char *name = NULL; + for (TiXmlNodeA *childNode = targetNode->FirstChildElement("Item"); + childNode ; + childNode = childNode->NextSibling("Item") ) + { + TiXmlElementA *element = childNode->ToElement(); + int id; + const char *idStr = element->Attribute("id", &id); + + if (idStr && id == cmdID) + { + name = element->Attribute("name"); + break; + } + } + + if (name && name[0]) + { +#ifdef UNICODE + WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance(); + return wmc->char2wchar(name, _nativeLangEncoding); +#else + return name; +#endif + } + return defaultStr; +} + +generic_string NativeLangSpeaker::getProjectPanelLangStr(const char *nodeName, const TCHAR *defaultStr) const +{ + if (!_nativeLangA) return defaultStr; + + TiXmlNodeA *targetNode = _nativeLangA->FirstChild("ProjectManager"); + if (!targetNode) return defaultStr; + targetNode = targetNode->FirstChild(nodeName); + if (!targetNode) return defaultStr; + + // Set Title + const char *name = (targetNode->ToElement())->Attribute("name"); + if (name && name[0]) + { +#ifdef UNICODE + WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance(); + return wmc->char2wchar(name, _nativeLangEncoding); +#else + return name; +#endif + } + return defaultStr; +} + int NativeLangSpeaker::messageBox(const char *msgBoxTagName, HWND hWnd, TCHAR *defaultMessage, TCHAR *defaultTitle, int msgBoxType) { generic_string msg, title; diff --git a/PowerEditor/src/localization.h b/PowerEditor/src/localization.h index 549aa7e60..49f93fd49 100644 --- a/PowerEditor/src/localization.h +++ b/PowerEditor/src/localization.h @@ -24,6 +24,8 @@ class FindReplaceDlg; class PreferenceDlg; +class ShortcutMapper; +class UserDefineDialog; class NativeLangSpeaker { public: @@ -59,6 +61,8 @@ public: return _nativeLangEncoding; }; bool getMsgBoxLang(const char *msgBoxTagName, generic_string & title, generic_string & message); + generic_string getProjectPanelLangMenuStr(const char * nodeName, int cmdID, const TCHAR *defaultStr) const; + generic_string getProjectPanelLangStr(const char *nodeName, const TCHAR *defaultStr) const; int messageBox(const char *msgBoxTagName, HWND hWnd, TCHAR *message, TCHAR *title, int msgBoxType); private: TiXmlNodeA *_nativeLangA; diff --git a/PowerEditor/src/resource.h b/PowerEditor/src/resource.h index 4680e7559..024743fec 100644 --- a/PowerEditor/src/resource.h +++ b/PowerEditor/src/resource.h @@ -18,12 +18,12 @@ #ifndef RESOURCE_H #define RESOURCE_H -#define NOTEPAD_PLUS_VERSION TEXT("Notepad++ v5.9.4") +#define NOTEPAD_PLUS_VERSION TEXT("Notepad++ v5.9.5") // should be X.Y : ie. if VERSION_DIGITALVALUE == 4, 7, 1, 0 , then X = 4, Y = 71 // ex : #define VERSION_VALUE TEXT("5.63\0") -#define VERSION_VALUE TEXT("5.94\0") -#define VERSION_DIGITALVALUE 5, 9, 4, 0 +#define VERSION_VALUE TEXT("5.95\0") +#define VERSION_DIGITALVALUE 5, 9, 5, 0 #ifdef UNICODE #define UNICODE_ANSI_MODE TEXT("(UNICODE)")