From 639c33658741082422b1627231ca0f246abbd057 Mon Sep 17 00:00:00 2001 From: Don Ho Date: Fri, 29 Jan 2010 23:52:47 +0000 Subject: [PATCH] [UPDATE] Refactor Notepad_plus.cpp (in progress). git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@606 f5eea248-9336-0410-98b8-ebc06183d4e3 --- PowerEditor/src/MISC/Common/Common.h | 3 + PowerEditor/src/Notepad_plus.cpp | 1977 +--------------- PowerEditor/src/Notepad_plus.h | 18 +- PowerEditor/src/NppCommands.cpp | 1986 +++++++++++++++++ .../src/WinControls/TaskList/TaskListDlg.h | 3 - PowerEditor/visual.net/notepadPlus.vcproj | 4 + 6 files changed, 2008 insertions(+), 1983 deletions(-) create mode 100644 PowerEditor/src/NppCommands.cpp diff --git a/PowerEditor/src/MISC/Common/Common.h b/PowerEditor/src/MISC/Common/Common.h index 38726184..61a4bb9e 100644 --- a/PowerEditor/src/MISC/Common/Common.h +++ b/PowerEditor/src/MISC/Common/Common.h @@ -18,6 +18,9 @@ #ifndef M30_IDE_COMMUN_H #define M30_IDE_COMMUN_H +const bool dirUp = true; +const bool dirDown = false; + #define NPP_CP_WIN_1252 1252 #define NPP_CP_DOS_437 437 #define NPP_CP_BIG5 950 diff --git a/PowerEditor/src/Notepad_plus.cpp b/PowerEditor/src/Notepad_plus.cpp index 307a78ca..7eca1523 100644 --- a/PowerEditor/src/Notepad_plus.cpp +++ b/PowerEditor/src/Notepad_plus.cpp @@ -1061,18 +1061,6 @@ void Notepad_plus::doClose(BufferID id, int whichOne) { return; } -void Notepad_plus::fileNew() -{ - BufferID newBufID = MainFileManager->newEmptyDocument(); - loadBufferIntoView(newBufID, currentView(), true); //true, because we want multiple new files if possible - activateBuffer(newBufID, currentView()); -} - -bool Notepad_plus::fileReload() -{ - BufferID buf = _pEditView->getCurrentBufferID(); - return doReload(buf, buf->isDirty()); -} generic_string exts2Filters(generic_string exts) { const TCHAR *extStr = exts.c_str(); @@ -3529,1969 +3517,6 @@ void Notepad_plus::specialCmd(int id, int param) } } -void Notepad_plus::command(int id) -{ - switch (id) - { - case IDM_FILE_NEW: - fileNew(); - break; - - case IDM_FILE_OPEN: - fileOpen(); - break; - - case IDM_FILE_RELOAD: - fileReload(); - break; - - case IDM_FILE_CLOSE: - fileClose(); - break; - - case IDM_FILE_DELETE: - fileDelete(); - break; - - case IDM_FILE_RENAME: - fileRename(); - break; - - case IDM_FILE_CLOSEALL: - fileCloseAll(); - break; - - case IDM_FILE_CLOSEALL_BUT_CURRENT : - fileCloseAllButCurrent(); - break; - - case IDM_FILE_SAVE : - fileSave(); - break; - - case IDM_FILE_SAVEALL : - fileSaveAll(); - break; - - case IDM_FILE_SAVEAS : - fileSaveAs(); - break; - - case IDM_FILE_SAVECOPYAS : - fileSaveAs(BUFFER_INVALID, true); - break; - - case IDM_FILE_LOADSESSION: - fileLoadSession(); - break; - - case IDM_FILE_SAVESESSION: - fileSaveSession(); - break; - - case IDM_FILE_PRINTNOW : - filePrint(false); - break; - - case IDM_FILE_PRINT : - filePrint(true); - break; - - case IDM_FILE_EXIT: - ::SendMessage(_hSelf, WM_CLOSE, 0, 0); - break; - - case IDM_EDIT_UNDO: - _pEditView->execute(WM_UNDO); - checkClipboard(); - checkUndoState(); - break; - - case IDM_EDIT_REDO: - _pEditView->execute(SCI_REDO); - checkClipboard(); - checkUndoState(); - break; - - case IDM_EDIT_CUT: - _pEditView->execute(WM_CUT); - checkClipboard(); - break; - - case IDM_EDIT_COPY: - _pEditView->execute(WM_COPY); - checkClipboard(); - break; - - case IDM_EDIT_PASTE: - { - int eolMode = int(_pEditView->execute(SCI_GETEOLMODE)); - _pEditView->execute(SCI_PASTE); - _pEditView->execute(SCI_CONVERTEOLS, eolMode); - } - break; - - case IDM_EDIT_DELETE: - _pEditView->execute(WM_CLEAR); - break; - - case IDM_MACRO_STARTRECORDINGMACRO: - case IDM_MACRO_STOPRECORDINGMACRO: - case IDC_EDIT_TOGGLEMACRORECORDING: - { - if (_recordingMacro) - { - // STOP !!! - _mainEditView.execute(SCI_STOPRECORD); - _subEditView.execute(SCI_STOPRECORD); - - _mainEditView.execute(SCI_SETCURSOR, (WPARAM)SC_CURSORNORMAL); - _subEditView.execute(SCI_SETCURSOR, (WPARAM)SC_CURSORNORMAL); - - _recordingMacro = false; - _runMacroDlg.initMacroList(); - } - else - { - _mainEditView.execute(SCI_SETCURSOR, 9); - _subEditView.execute(SCI_SETCURSOR, 9); - _macro.clear(); - - // START !!! - _mainEditView.execute(SCI_STARTRECORD); - _subEditView.execute(SCI_STARTRECORD); - _recordingMacro = true; - } - checkMacroState(); - break; - } - - case IDM_MACRO_PLAYBACKRECORDEDMACRO: - if (!_recordingMacro) // if we're not currently recording, then playback the recorded keystrokes - { - _pEditView->execute(SCI_BEGINUNDOACTION); - - for (Macro::iterator step = _macro.begin(); step != _macro.end(); step++) - step->PlayBack(this, _pEditView); - - _pEditView->execute(SCI_ENDUNDOACTION); - } - break; - - case IDM_MACRO_RUNMULTIMACRODLG : - { - if (!_recordingMacro) // if we're not currently recording, then playback the recorded keystrokes - { - bool isFirstTime = !_runMacroDlg.isCreated(); - _runMacroDlg.doDialog(_isRTL); - - if (isFirstTime) - { - changeDlgLang(_runMacroDlg.getHSelf(), "MultiMacro"); - } - break; - - } - } - break; - - case IDM_MACRO_SAVECURRENTMACRO : - { - if (addCurrentMacro()) - _runMacroDlg.initMacroList(); - break; - } - case IDM_EDIT_FULLPATHTOCLIP : - case IDM_EDIT_CURRENTDIRTOCLIP : - case IDM_EDIT_FILENAMETOCLIP : - { - Buffer * buf = _pEditView->getCurrentBuffer(); - if (id == IDM_EDIT_FULLPATHTOCLIP) - { - str2Cliboard(buf->getFullPathName()); - } - else if (id == IDM_EDIT_CURRENTDIRTOCLIP) - { - generic_string dir(buf->getFullPathName()); - PathRemoveFileSpec(dir); - str2Cliboard(dir.c_str()); - } - else if (id == IDM_EDIT_FILENAMETOCLIP) - { - str2Cliboard(buf->getFileName()); - } - } - break; - - case IDM_SEARCH_FIND : - case IDM_SEARCH_REPLACE : - { - const int strSize = FINDREPLACE_MAXLENGTH; - TCHAR str[strSize]; - - bool isFirstTime = !_findReplaceDlg.isCreated(); - - _findReplaceDlg.doDialog((id == IDM_SEARCH_FIND)?FIND_DLG:REPLACE_DLG, _isRTL); - - _pEditView->getGenericSelectedText(str, strSize); - _findReplaceDlg.setSearchText(str); - setFindReplaceFolderFilter(NULL, NULL); - - if (isFirstTime) - changeFindReplaceDlgLang(); - break; - } - - case IDM_SEARCH_FINDINFILES : - { - ::SendMessage(_hSelf, NPPM_LAUNCHFINDINFILESDLG, 0, 0); - break; - } - case IDM_SEARCH_FINDINCREMENT : - { - const int strSize = FINDREPLACE_MAXLENGTH; - TCHAR str[strSize]; - - _pEditView->getGenericSelectedText(str, strSize, false); - if (0!=str[0]) // the selected text is not empty, then use it - _incrementFindDlg.setSearchText(str, _pEditView->getCurrentBuffer()->getUnicodeMode() != uni8Bit); - - _incrementFindDlg.display(); - } - break; - - case IDM_SEARCH_FINDNEXT : - case IDM_SEARCH_FINDPREV : - { - if (!_findReplaceDlg.isCreated()) - return; - - FindOption op = _findReplaceDlg.getCurrentOptions(); - op._whichDirection = (id == IDM_SEARCH_FINDNEXT?DIR_DOWN:DIR_UP); - generic_string s = _findReplaceDlg.getText2search(); - - _findReplaceDlg.processFindNext(s.c_str(), &op); - break; - } - break; - - case IDM_SEARCH_SETANDFINDNEXT : - case IDM_SEARCH_SETANDFINDPREV : - { - bool isFirstTime = !_findReplaceDlg.isCreated(); - if (isFirstTime) - _findReplaceDlg.doDialog(FIND_DLG, _isRTL, false); - - const int strSize = FINDREPLACE_MAXLENGTH; - TCHAR str[strSize]; - _pEditView->getGenericSelectedText(str, strSize); - _findReplaceDlg.setSearchText(str); - setFindReplaceFolderFilter(NULL, NULL); - if (isFirstTime) - changeFindReplaceDlgLang(); - - FindOption op = _findReplaceDlg.getCurrentOptions(); - op._whichDirection = (id == IDM_SEARCH_SETANDFINDNEXT?DIR_DOWN:DIR_UP); - - _findReplaceDlg.processFindNext(str, &op); - break; - } - - case IDM_SEARCH_GOTONEXTFOUND: - { - _findReplaceDlg.gotoNextFoundResult(); - break; - } - case IDM_SEARCH_GOTOPREVFOUND: - { - _findReplaceDlg.gotoNextFoundResult(-1); - break; - } - case IDM_FOCUS_ON_FOUND_RESULTS: - { - if (GetFocus() == _findReplaceDlg.getHFindResults()) - // focus already on found results, switch to current edit view - switchEditViewTo(currentView()); - else - _findReplaceDlg.focusOnFinder(); - break; - } - - case IDM_SEARCH_VOLATILE_FINDNEXT : - case IDM_SEARCH_VOLATILE_FINDPREV : - { - TCHAR text2Find[MAX_PATH]; - _pEditView->getGenericSelectedText(text2Find, MAX_PATH); - - FindOption op; - op._isWholeWord = false; - op._whichDirection = (id == IDM_SEARCH_VOLATILE_FINDNEXT?DIR_DOWN:DIR_UP); - _findReplaceDlg.processFindNext(text2Find, &op); - break; - } - - case IDM_SEARCH_MARKALLEXT1 : - case IDM_SEARCH_MARKALLEXT2 : - case IDM_SEARCH_MARKALLEXT3 : - case IDM_SEARCH_MARKALLEXT4 : - case IDM_SEARCH_MARKALLEXT5 : - { - int styleID; - if (id == IDM_SEARCH_MARKALLEXT1) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT1; - else if (id == IDM_SEARCH_MARKALLEXT2) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT2; - else if (id == IDM_SEARCH_MARKALLEXT3) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT3; - else if (id == IDM_SEARCH_MARKALLEXT4) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT4; - else // (id == IDM_SEARCH_MARKALLEXT5) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT5; - - const int strSize = FINDREPLACE_MAXLENGTH; - TCHAR text2Find[strSize]; - _pEditView->getGenericSelectedText(text2Find, strSize, false); - if (text2Find[0] == '\0') - { - _pEditView->getGenericWordOnCaretPos(text2Find, strSize); - } - _findReplaceDlg.markAll(text2Find, styleID); - - break; - } - case IDM_SEARCH_UNMARKALLEXT1 : - case IDM_SEARCH_UNMARKALLEXT2 : - case IDM_SEARCH_UNMARKALLEXT3 : - case IDM_SEARCH_UNMARKALLEXT4 : - case IDM_SEARCH_UNMARKALLEXT5 : - { - int styleID; - if (id == IDM_SEARCH_UNMARKALLEXT1) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT1; - else if (id == IDM_SEARCH_UNMARKALLEXT2) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT2; - else if (id == IDM_SEARCH_UNMARKALLEXT3) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT3; - else if (id == IDM_SEARCH_UNMARKALLEXT4) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT4; - else // (id == IDM_SEARCH_UNMARKALLEXT5) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT5; - - _pEditView->clearIndicator(styleID); - break; - } - - case IDM_SEARCH_GONEXTMARKER1 : - case IDM_SEARCH_GONEXTMARKER2 : - case IDM_SEARCH_GONEXTMARKER3 : - case IDM_SEARCH_GONEXTMARKER4 : - case IDM_SEARCH_GONEXTMARKER5 : - case IDM_SEARCH_GONEXTMARKER_DEF : - { - int styleID; - if (id == IDM_SEARCH_GONEXTMARKER1) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT1; - else if (id == IDM_SEARCH_GONEXTMARKER2) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT2; - else if (id == IDM_SEARCH_GONEXTMARKER3) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT3; - else if (id == IDM_SEARCH_GONEXTMARKER4) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT4; - else if (id == IDM_SEARCH_GONEXTMARKER5) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT5; - else // (id == IDM_SEARCH_GONEXTMARKER_DEF) - styleID = SCE_UNIVERSAL_FOUND_STYLE; - - goToNextIndicator(styleID); - - break; - } - - case IDM_SEARCH_GOPREVMARKER1 : - case IDM_SEARCH_GOPREVMARKER2 : - case IDM_SEARCH_GOPREVMARKER3 : - case IDM_SEARCH_GOPREVMARKER4 : - case IDM_SEARCH_GOPREVMARKER5 : - case IDM_SEARCH_GOPREVMARKER_DEF : - { - int styleID; - if (id == IDM_SEARCH_GOPREVMARKER1) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT1; - else if (id == IDM_SEARCH_GOPREVMARKER2) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT2; - else if (id == IDM_SEARCH_GOPREVMARKER3) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT3; - else if (id == IDM_SEARCH_GOPREVMARKER4) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT4; - else if (id == IDM_SEARCH_GOPREVMARKER5) - styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT5; - else // (id == IDM_SEARCH_GOPREVMARKER_DEF) - styleID = SCE_UNIVERSAL_FOUND_STYLE; - - goToPreviousIndicator(styleID); - - break; - } - - case IDM_SEARCH_CLEARALLMARKS : - { - _pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_EXT1); - _pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_EXT2); - _pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_EXT3); - _pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_EXT4); - _pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_EXT5); - break; - } - - case IDM_SEARCH_GOTOLINE : - { - bool isFirstTime = !_goToLineDlg.isCreated(); - _goToLineDlg.doDialog(_isRTL); - if (isFirstTime) - changeDlgLang(_goToLineDlg.getHSelf(), "GoToLine"); - break; - } - - case IDM_EDIT_COLUMNMODE : - { - bool isFirstTime = !_colEditorDlg.isCreated(); - _colEditorDlg.doDialog(_isRTL); - if (isFirstTime) - changeDlgLang(_colEditorDlg.getHSelf(), "ColumnEditor"); - break; - } - - case IDM_SEARCH_GOTOMATCHINGBRACE : - { - int braceAtCaret = -1; - int braceOpposite = -1; - findMatchingBracePos(braceAtCaret, braceOpposite); - - if (braceOpposite != -1) - _pEditView->execute(SCI_GOTOPOS, braceOpposite); - break; - } - - case IDM_SEARCH_TOGGLE_BOOKMARK : - bookmarkToggle(-1); - break; - - case IDM_SEARCH_NEXT_BOOKMARK: - bookmarkNext(true); - break; - - case IDM_SEARCH_PREV_BOOKMARK: - bookmarkNext(false); - break; - - case IDM_SEARCH_CLEAR_BOOKMARKS: - bookmarkClearAll(); - break; - - case IDM_VIEW_USER_DLG : - { - bool isUDDlgVisible = false; - - UserDefineDialog *udd = _pEditView->getUserDefineDlg(); - - if (!udd->isCreated()) - { - _pEditView->doUserDefineDlg(true, _isRTL); - changeUserDefineLang(); - if (_isUDDocked) - ::SendMessage(udd->getHSelf(), WM_COMMAND, IDC_DOCK_BUTTON, 0); - - } - else - { - isUDDlgVisible = udd->isVisible(); - bool isUDDlgDocked = udd->isDocked(); - - if ((isUDDlgDocked)&&(isUDDlgVisible)) - { - ::ShowWindow(_pMainSplitter->getHSelf(), SW_HIDE); - - if (bothActive()) - _pMainWindow = &_subSplitter; - else - _pMainWindow = _pDocTab; - - ::SendMessage(_hSelf, WM_SIZE, 0, 0); - - udd->display(false); - _mainWindowStatus &= ~WindowUserActive; - } - else if ((isUDDlgDocked)&&(!isUDDlgVisible)) - { - if (!_pMainSplitter) - { - _pMainSplitter = new SplitterContainer; - _pMainSplitter->init(_hInst, _hSelf); - - Window *pWindow; - if (bothActive()) - pWindow = &_subSplitter; - else - pWindow = _pDocTab; - - _pMainSplitter->create(pWindow, ScintillaEditView::getUserDefineDlg(), 8, RIGHT_FIX, 45); - } - - _pMainWindow = _pMainSplitter; - - _pMainSplitter->setWin0((bothActive())?(Window *)&_subSplitter:(Window *)_pDocTab); - - ::SendMessage(_hSelf, WM_SIZE, 0, 0); - _pMainWindow->display(); - - _mainWindowStatus |= WindowUserActive; - } - else if ((!isUDDlgDocked)&&(isUDDlgVisible)) - { - udd->display(false); - } - else //((!isUDDlgDocked)&&(!isUDDlgVisible)) - udd->display(); - } - checkMenuItem(IDM_VIEW_USER_DLG, !isUDDlgVisible); - _toolBar.setCheck(IDM_VIEW_USER_DLG, !isUDDlgVisible); - - break; - } - - case IDM_EDIT_SELECTALL: - _pEditView->execute(SCI_SELECTALL); - checkClipboard(); - break; - - case IDM_EDIT_INS_TAB: - _pEditView->execute(SCI_TAB); - break; - - case IDM_EDIT_RMV_TAB: - _pEditView->execute(SCI_BACKTAB); - break; - - case IDM_EDIT_DUP_LINE: - _pEditView->execute(SCI_LINEDUPLICATE); - break; - - case IDM_EDIT_SPLIT_LINES: - _pEditView->execute(SCI_TARGETFROMSELECTION); - _pEditView->execute(SCI_LINESSPLIT); - break; - - case IDM_EDIT_JOIN_LINES: - _pEditView->execute(SCI_TARGETFROMSELECTION); - _pEditView->execute(SCI_LINESJOIN); - break; - - case IDM_EDIT_LINE_UP: - _pEditView->currentLinesUp(); - break; - - case IDM_EDIT_LINE_DOWN: - _pEditView->currentLinesDown(); - break; - - case IDM_EDIT_UPPERCASE: - _pEditView->convertSelectedTextToUpperCase(); - break; - - case IDM_EDIT_LOWERCASE: - _pEditView->convertSelectedTextToLowerCase(); - break; - - case IDM_EDIT_BLOCK_COMMENT: - doBlockComment(cm_toggle); - break; - - case IDM_EDIT_BLOCK_COMMENT_SET: - doBlockComment(cm_comment); - break; - - case IDM_EDIT_BLOCK_UNCOMMENT: - doBlockComment(cm_uncomment); - break; - - case IDM_EDIT_STREAM_COMMENT: - doStreamComment(); - break; - - case IDM_EDIT_TRIMTRAILING: - doTrimTrailing(); - break; - - case IDM_EDIT_SETREADONLY: - { - Buffer * buf = _pEditView->getCurrentBuffer(); - buf->setUserReadOnly(!buf->getUserReadOnly()); - } - break; - - case IDM_EDIT_CLEARREADONLY: - { - Buffer * buf = _pEditView->getCurrentBuffer(); - - DWORD dwFileAttribs = ::GetFileAttributes(buf->getFullPathName()); - dwFileAttribs ^= FILE_ATTRIBUTE_READONLY; - - ::SetFileAttributes(buf->getFullPathName(), dwFileAttribs); - - buf->setFileReadOnly(false); - } - break; - - case IDM_SEARCH_CUTMARKEDLINES : - cutMarkedLines(); - break; - - case IDM_SEARCH_COPYMARKEDLINES : - copyMarkedLines(); - break; - - case IDM_SEARCH_PASTEMARKEDLINES : - pasteToMarkedLines(); - break; - - case IDM_SEARCH_DELETEMARKEDLINES : - deleteMarkedLines(); - break; - - case IDM_VIEW_FULLSCREENTOGGLE : - fullScreenToggle(); - break; - - case IDM_VIEW_ALWAYSONTOP: - { - int check = (::GetMenuState(_mainMenuHandle, id, MF_BYCOMMAND) == MF_CHECKED)?MF_UNCHECKED:MF_CHECKED; - ::CheckMenuItem(_mainMenuHandle, id, MF_BYCOMMAND | check); - SetWindowPos(_hSelf, check == MF_CHECKED?HWND_TOPMOST:HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); - } - break; - - - case IDM_VIEW_FOLD_CURRENT : - case IDM_VIEW_UNFOLD_CURRENT : - _pEditView->foldCurrentPos((id==IDM_VIEW_FOLD_CURRENT)?fold_collapse:fold_uncollapse); - break; - - case IDM_VIEW_TOGGLE_FOLDALL: - case IDM_VIEW_TOGGLE_UNFOLDALL: - { - _pEditView->foldAll((id==IDM_VIEW_TOGGLE_FOLDALL)?fold_collapse:fold_uncollapse); - } - break; - - case IDM_VIEW_FOLD_1: - case IDM_VIEW_FOLD_2: - case IDM_VIEW_FOLD_3: - case IDM_VIEW_FOLD_4: - case IDM_VIEW_FOLD_5: - case IDM_VIEW_FOLD_6: - case IDM_VIEW_FOLD_7: - case IDM_VIEW_FOLD_8: - _pEditView->collapse(id - IDM_VIEW_FOLD - 1, fold_collapse); - break; - - case IDM_VIEW_UNFOLD_1: - case IDM_VIEW_UNFOLD_2: - case IDM_VIEW_UNFOLD_3: - case IDM_VIEW_UNFOLD_4: - case IDM_VIEW_UNFOLD_5: - case IDM_VIEW_UNFOLD_6: - case IDM_VIEW_UNFOLD_7: - case IDM_VIEW_UNFOLD_8: - _pEditView->collapse(id - IDM_VIEW_UNFOLD - 1, fold_uncollapse); - break; - - - case IDM_VIEW_TOOLBAR_REDUCE: - { - toolBarStatusType state = _toolBar.getState(); - - if (state != TB_SMALL) - { - _toolBar.reduce(); - changeToolBarIcons(); - } - } - break; - - case IDM_VIEW_TOOLBAR_ENLARGE: - { - toolBarStatusType state = _toolBar.getState(); - - if (state != TB_LARGE) - { - _toolBar.enlarge(); - changeToolBarIcons(); - } - } - break; - - case IDM_VIEW_TOOLBAR_STANDARD: - { - toolBarStatusType state = _toolBar.getState(); - - if (state != TB_STANDARD) - { - _toolBar.setToUglyIcons(); - } - } - break; - - case IDM_VIEW_REDUCETABBAR : - { - _toReduceTabBar = !_toReduceTabBar; - - //Resize the icon - int iconSize = _toReduceTabBar?12:18; - - //Resize the tab height - int tabHeight = _toReduceTabBar?20:25; - TabCtrl_SetItemSize(_mainDocTab.getHSelf(), 45, tabHeight); - TabCtrl_SetItemSize(_subDocTab.getHSelf(), 45, tabHeight); - _docTabIconList.setIconSize(iconSize); - - //change the font - int stockedFont = _toReduceTabBar?DEFAULT_GUI_FONT:SYSTEM_FONT; - HFONT hf = (HFONT)::GetStockObject(stockedFont); - - if (hf) - { - ::SendMessage(_mainDocTab.getHSelf(), WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE, 0)); - ::SendMessage(_subDocTab.getHSelf(), WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE, 0)); - } - - ::SendMessage(_hSelf, WM_SIZE, 0, 0); - break; - } - - case IDM_VIEW_REFRESHTABAR : - { - ::SendMessage(_hSelf, WM_SIZE, 0, 0); - break; - } - case IDM_VIEW_LOCKTABBAR: - { - bool isDrag = TabBarPlus::doDragNDropOrNot(); - TabBarPlus::doDragNDrop(!isDrag); - //checkMenuItem(IDM_VIEW_LOCKTABBAR, isDrag); - break; - } - - - case IDM_VIEW_DRAWTABBAR_INACIVETAB: - { - TabBarPlus::setDrawInactiveTab(!TabBarPlus::drawInactiveTab()); - //TabBarPlus::setDrawInactiveTab(!TabBarPlus::drawInactiveTab(), _subDocTab.getHSelf()); - break; - } - case IDM_VIEW_DRAWTABBAR_TOPBAR: - { - TabBarPlus::setDrawTopBar(!TabBarPlus::drawTopBar()); - break; - } - - case IDM_VIEW_DRAWTABBAR_CLOSEBOTTUN : - { - TabBarPlus::setDrawTabCloseButton(!TabBarPlus::drawTabCloseButton()); - - // This part is just for updating (redraw) the tabs - { - int tabHeight = TabBarPlus::drawTabCloseButton()?21:20; - TabCtrl_SetItemSize(_mainDocTab.getHSelf(), 45, tabHeight); - TabCtrl_SetItemSize(_subDocTab.getHSelf(), 45, tabHeight); - } - ::SendMessage(_hSelf, WM_SIZE, 0, 0); - break; - } - - case IDM_VIEW_DRAWTABBAR_DBCLK2CLOSE : - { - TabBarPlus::setDbClk2Close(!TabBarPlus::isDbClk2Close()); - break; - } - - case IDM_VIEW_DRAWTABBAR_VERTICAL : - { - TabBarPlus::setVertical(!TabBarPlus::isVertical()); - ::SendMessage(_hSelf, WM_SIZE, 0, 0); - break; - } - - case IDM_VIEW_DRAWTABBAR_MULTILINE : - { - TabBarPlus::setMultiLine(!TabBarPlus::isMultiLine()); - ::SendMessage(_hSelf, WM_SIZE, 0, 0); - break; - } - - case IDM_VIEW_POSTIT : - { - postItToggle(); - } - break; - - case IDM_VIEW_TAB_SPACE: - { - bool isChecked = !(::GetMenuState(_mainMenuHandle, IDM_VIEW_TAB_SPACE, MF_BYCOMMAND) == MF_CHECKED); - ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_EOL, MF_BYCOMMAND | MF_UNCHECKED); - ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_ALL_CHARACTERS, MF_BYCOMMAND | MF_UNCHECKED); - ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_TAB_SPACE, MF_BYCOMMAND | (isChecked?MF_CHECKED:MF_UNCHECKED)); - _toolBar.setCheck(IDM_VIEW_ALL_CHARACTERS, false); - _pEditView->showEOL(false); - _pEditView->showWSAndTab(isChecked); - break; - } - case IDM_VIEW_EOL: - { - bool isChecked = !(::GetMenuState(_mainMenuHandle, IDM_VIEW_EOL, MF_BYCOMMAND) == MF_CHECKED); - ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_TAB_SPACE, MF_BYCOMMAND | MF_UNCHECKED); - ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_EOL, MF_BYCOMMAND | (isChecked?MF_CHECKED:MF_UNCHECKED)); - ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_ALL_CHARACTERS, MF_BYCOMMAND | MF_UNCHECKED); - _toolBar.setCheck(IDM_VIEW_ALL_CHARACTERS, false); - _pEditView->showEOL(isChecked); - _pEditView->showWSAndTab(false); - break; - } - case IDM_VIEW_ALL_CHARACTERS: - { - bool isChecked = !(::GetMenuState(_mainMenuHandle, id, MF_BYCOMMAND) == MF_CHECKED); - ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_EOL, MF_BYCOMMAND | MF_UNCHECKED); - ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_TAB_SPACE, MF_BYCOMMAND | MF_UNCHECKED); - ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_ALL_CHARACTERS, MF_BYCOMMAND | (isChecked?MF_CHECKED:MF_UNCHECKED)); - _pEditView->showInvisibleChars(isChecked); - _toolBar.setCheck(IDM_VIEW_ALL_CHARACTERS, isChecked); - break; - } - - case IDM_VIEW_INDENT_GUIDE: - { - _pEditView->showIndentGuideLine(!_pEditView->isShownIndentGuide()); - _toolBar.setCheck(IDM_VIEW_INDENT_GUIDE, _pEditView->isShownIndentGuide()); - checkMenuItem(IDM_VIEW_INDENT_GUIDE, _pEditView->isShownIndentGuide()); - break; - } - - case IDM_VIEW_WRAP: - { - bool isWraped = !_pEditView->isWrap(); - _pEditView->wrap(isWraped); - _toolBar.setCheck(IDM_VIEW_WRAP, isWraped); - checkMenuItem(IDM_VIEW_WRAP, isWraped); - break; - } - case IDM_VIEW_WRAP_SYMBOL: - { - _pEditView->showWrapSymbol(!_pEditView->isWrapSymbolVisible()); - checkMenuItem(IDM_VIEW_WRAP_SYMBOL, _pEditView->isWrapSymbolVisible()); - break; - } - - case IDM_VIEW_HIDELINES: - { - _pEditView->hideLines(); - break; - } - - case IDM_VIEW_ZOOMIN: - { - _pEditView->execute(SCI_ZOOMIN); - break; - } - case IDM_VIEW_ZOOMOUT: - _pEditView->execute(SCI_ZOOMOUT); - break; - - case IDM_VIEW_ZOOMRESTORE: - //Zoom factor of 0 points means default view - _pEditView->execute(SCI_SETZOOM, 0);//_zoomOriginalValue); - break; - - case IDM_VIEW_SYNSCROLLV: - { - _syncInfo._isSynScollV = !_syncInfo._isSynScollV; - checkMenuItem(IDM_VIEW_SYNSCROLLV, _syncInfo._isSynScollV); - _toolBar.setCheck(IDM_VIEW_SYNSCROLLV, _syncInfo._isSynScollV); - - if (_syncInfo._isSynScollV) - { - int mainCurrentLine = _mainEditView.execute(SCI_GETFIRSTVISIBLELINE); - int subCurrentLine = _subEditView.execute(SCI_GETFIRSTVISIBLELINE); - _syncInfo._line = mainCurrentLine - subCurrentLine; - } - - } - break; - - case IDM_VIEW_SYNSCROLLH: - { - _syncInfo._isSynScollH = !_syncInfo._isSynScollH; - checkMenuItem(IDM_VIEW_SYNSCROLLH, _syncInfo._isSynScollH); - _toolBar.setCheck(IDM_VIEW_SYNSCROLLH, _syncInfo._isSynScollH); - - if (_syncInfo._isSynScollH) - { - int mxoffset = _mainEditView.execute(SCI_GETXOFFSET); - int pixel = int(_mainEditView.execute(SCI_TEXTWIDTH, STYLE_DEFAULT, (LPARAM)"P")); - int mainColumn = mxoffset/pixel; - - int sxoffset = _subEditView.execute(SCI_GETXOFFSET); - pixel = int(_subEditView.execute(SCI_TEXTWIDTH, STYLE_DEFAULT, (LPARAM)"P")); - int subColumn = sxoffset/pixel; - _syncInfo._column = mainColumn - subColumn; - } - } - break; - - case IDM_EXECUTE: - { - bool isFirstTime = !_runDlg.isCreated(); - _runDlg.doDialog(_isRTL); - if (isFirstTime) - changeDlgLang(_runDlg.getHSelf(), "Run"); - - break; - } - - case IDM_FORMAT_TODOS : - case IDM_FORMAT_TOUNIX : - case IDM_FORMAT_TOMAC : - { - Buffer * buf = _pEditView->getCurrentBuffer(); - - int f = int((id == IDM_FORMAT_TODOS)?SC_EOL_CRLF:(id == IDM_FORMAT_TOUNIX)?SC_EOL_LF:SC_EOL_CR); - - buf->setFormat((formatType)f); - _pEditView->execute(SCI_CONVERTEOLS, buf->getFormat()); - break; - } - - case IDM_FORMAT_ANSI : - case IDM_FORMAT_UTF_8 : - case IDM_FORMAT_UCS_2BE : - case IDM_FORMAT_UCS_2LE : - case IDM_FORMAT_AS_UTF_8 : - { - Buffer * buf = _pEditView->getCurrentBuffer(); - - UniMode um; - bool shoulBeDirty = true; - switch (id) - { - case IDM_FORMAT_AS_UTF_8: - shoulBeDirty = buf->getUnicodeMode() != uni8Bit; - um = uniCookie; - break; - - case IDM_FORMAT_UTF_8: - um = uniUTF8; - break; - - case IDM_FORMAT_UCS_2BE: - um = uni16BE; - break; - - case IDM_FORMAT_UCS_2LE: - um = uni16LE; - break; - - default : // IDM_FORMAT_ANSI - shoulBeDirty = buf->getUnicodeMode() != uniCookie; - um = uni8Bit; - } - - if (buf->getEncoding() != -1) - { - if (buf->isDirty()) - { - int answer = ::MessageBox(NULL, TEXT("You should save the current modification.\rAll the saved modifications can not be undone.\r\rContinue?"), TEXT("Save Current Modification"), MB_YESNO); - if (answer == IDYES) - { - fileSave(); - _pEditView->execute(SCI_EMPTYUNDOBUFFER); - } - else - return; - } - - if (_pEditView->execute(SCI_CANUNDO) == TRUE) - { - int answer = ::MessageBox(NULL, TEXT("All the saved modifications can not be undone.\r\rContinue?"), TEXT("Lose Undo Ability Waning"), MB_YESNO); - if (answer == IDYES) - { - // Do nothing - } - else - return; - } - - buf->setEncoding(-1); - - if (um == uni8Bit) - _pEditView->execute(SCI_SETCODEPAGE, CP_ACP); - else - buf->setUnicodeMode(um); - fileReload(); - } - else - { - if (buf->getUnicodeMode() != um) - { - buf->setUnicodeMode(um); - if (shoulBeDirty) - buf->setDirty(true); - } - } - break; - } - - case IDM_FORMAT_WIN_1250 : - case IDM_FORMAT_WIN_1251 : - case IDM_FORMAT_WIN_1252 : - case IDM_FORMAT_WIN_1253 : - case IDM_FORMAT_WIN_1254 : - case IDM_FORMAT_WIN_1255 : - case IDM_FORMAT_WIN_1256 : - case IDM_FORMAT_WIN_1257 : - case IDM_FORMAT_WIN_1258 : - case IDM_FORMAT_ISO_8859_1 : - case IDM_FORMAT_ISO_8859_2 : - case IDM_FORMAT_ISO_8859_3 : - case IDM_FORMAT_ISO_8859_4 : - case IDM_FORMAT_ISO_8859_5 : - case IDM_FORMAT_ISO_8859_6 : - case IDM_FORMAT_ISO_8859_7 : - case IDM_FORMAT_ISO_8859_8 : - case IDM_FORMAT_ISO_8859_9 : - case IDM_FORMAT_ISO_8859_10 : - case IDM_FORMAT_ISO_8859_11 : - case IDM_FORMAT_ISO_8859_13 : - case IDM_FORMAT_ISO_8859_14 : - case IDM_FORMAT_ISO_8859_15 : - case IDM_FORMAT_ISO_8859_16 : - case IDM_FORMAT_DOS_437 : - case IDM_FORMAT_DOS_720 : - case IDM_FORMAT_DOS_737 : - case IDM_FORMAT_DOS_775 : - case IDM_FORMAT_DOS_850 : - case IDM_FORMAT_DOS_852 : - case IDM_FORMAT_DOS_855 : - case IDM_FORMAT_DOS_857 : - case IDM_FORMAT_DOS_858 : - case IDM_FORMAT_DOS_860 : - case IDM_FORMAT_DOS_861 : - case IDM_FORMAT_DOS_862 : - case IDM_FORMAT_DOS_863 : - case IDM_FORMAT_DOS_865 : - case IDM_FORMAT_DOS_866 : - case IDM_FORMAT_DOS_869 : - case IDM_FORMAT_BIG5 : - case IDM_FORMAT_GB2312 : - case IDM_FORMAT_SHIFT_JIS : - case IDM_FORMAT_KOREAN_WIN : - case IDM_FORMAT_EUC_KR : - case IDM_FORMAT_TIS_620 : - case IDM_FORMAT_MAC_CYRILLIC : - case IDM_FORMAT_KOI8U_CYRILLIC : - case IDM_FORMAT_KOI8R_CYRILLIC : - { - int index = id - IDM_FORMAT_ENCODE; - - EncodingMapper *em = EncodingMapper::getInstance(); - int encoding = em->getEncodingFromIndex(index); - if (encoding == -1) - { - //printStr(TEXT("Encoding problem. Command is not added in encoding_table?")); - return; - } - - Buffer * buf = _pEditView->getCurrentBuffer(); - if (buf->isDirty()) - { - int answer = ::MessageBox(NULL, TEXT("You should save the current modification.\rAll the saved modifications can not be undone.\r\rContinue?"), TEXT("Save Current Modification"), MB_YESNO); - if (answer == IDYES) - { - fileSave(); - _pEditView->execute(SCI_EMPTYUNDOBUFFER); - } - else - return; - } - - if (_pEditView->execute(SCI_CANUNDO) == TRUE) - { - int answer = ::MessageBox(NULL, TEXT("All the saved modifications can not be undone.\r\rContinue?"), TEXT("Lose Undo Ability Waning"), MB_YESNO); - if (answer == IDYES) - { - // Do nothing - } - else - return; - } - - if (!buf->isDirty()) - { - Buffer *buf = _pEditView->getCurrentBuffer(); - buf->setEncoding(encoding); - buf->setUnicodeMode(uniCookie); - fileReload(); - } - break; - } - - - case IDM_FORMAT_CONV2_ANSI: - case IDM_FORMAT_CONV2_AS_UTF_8: - case IDM_FORMAT_CONV2_UTF_8: - case IDM_FORMAT_CONV2_UCS_2BE: - case IDM_FORMAT_CONV2_UCS_2LE: - { - int idEncoding = -1; - Buffer *buf = _pEditView->getCurrentBuffer(); - UniMode um = buf->getUnicodeMode(); - int encoding = buf->getEncoding(); - - switch(id) - { - case IDM_FORMAT_CONV2_ANSI: - { - if (encoding != -1) - { - // do nothing - return; - } - else - { - if (um == uni8Bit) - return; - - // set scintilla to ANSI - idEncoding = IDM_FORMAT_ANSI; - } - break; - } - case IDM_FORMAT_CONV2_AS_UTF_8: - { - if (encoding != -1) - { - buf->setDirty(true); - buf->setUnicodeMode(uniCookie); - buf->setEncoding(-1); - return; - } - - idEncoding = IDM_FORMAT_AS_UTF_8; - if (um == uniCookie) - return; - - if (um != uni8Bit) - { - ::SendMessage(_hSelf, WM_COMMAND, idEncoding, 0); - _pEditView->execute(SCI_EMPTYUNDOBUFFER); - return; - } - - break; - } - case IDM_FORMAT_CONV2_UTF_8: - { - if (encoding != -1) - { - buf->setDirty(true); - buf->setUnicodeMode(uniUTF8); - buf->setEncoding(-1); - return; - } - - idEncoding = IDM_FORMAT_UTF_8; - if (um == uniUTF8) - return; - - if (um != uni8Bit) - { - ::SendMessage(_hSelf, WM_COMMAND, idEncoding, 0); - _pEditView->execute(SCI_EMPTYUNDOBUFFER); - return; - } - break; - } - - case IDM_FORMAT_CONV2_UCS_2BE: - { - if (encoding != -1) - { - buf->setDirty(true); - buf->setUnicodeMode(uni16BE); - buf->setEncoding(-1); - return; - } - - idEncoding = IDM_FORMAT_UCS_2BE; - if (um == uni16BE) - return; - - if (um != uni8Bit) - { - ::SendMessage(_hSelf, WM_COMMAND, idEncoding, 0); - _pEditView->execute(SCI_EMPTYUNDOBUFFER); - return; - } - break; - } - - case IDM_FORMAT_CONV2_UCS_2LE: - { - if (encoding != -1) - { - buf->setDirty(true); - buf->setUnicodeMode(uni16LE); - buf->setEncoding(-1); - return; - } - - idEncoding = IDM_FORMAT_UCS_2LE; - if (um == uni16LE) - return; - if (um != uni8Bit) - { - ::SendMessage(_hSelf, WM_COMMAND, idEncoding, 0); - _pEditView->execute(SCI_EMPTYUNDOBUFFER); - return; - } - break; - } - } - - if (idEncoding != -1) - { - // Save the current clipboard content - ::OpenClipboard(_hSelf); - HANDLE clipboardData = ::GetClipboardData(CF_TEXT); - int len = ::GlobalSize(clipboardData); - LPVOID clipboardDataPtr = ::GlobalLock(clipboardData); - - HANDLE allocClipboardData = ::GlobalAlloc(GMEM_MOVEABLE, len); - LPVOID clipboardData2 = ::GlobalLock(allocClipboardData); - - ::memcpy(clipboardData2, clipboardDataPtr, len); - ::GlobalUnlock(clipboardData); - ::GlobalUnlock(allocClipboardData); - ::CloseClipboard(); - - _pEditView->saveCurrentPos(); - - // Cut all text - int docLen = _pEditView->getCurrentDocLen(); - _pEditView->execute(SCI_COPYRANGE, 0, docLen); - _pEditView->execute(SCI_CLEARALL); - - // Change to the proper buffer, save buffer status - - ::SendMessage(_hSelf, WM_COMMAND, idEncoding, 0); - - // Paste the texte, restore buffer status - _pEditView->execute(SCI_PASTE); - _pEditView->restoreCurrentPos(); - - // Restore the previous clipboard data - ::OpenClipboard(_hSelf); - ::EmptyClipboard(); - ::SetClipboardData(CF_TEXT, clipboardData2); - ::CloseClipboard(); - - //Do not free anything, EmptyClipboard does that - _pEditView->execute(SCI_EMPTYUNDOBUFFER); - } - break; - } - /* - case (IDM_FORMAT_WIN_1250 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_WIN_1251 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_WIN_1252 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_WIN_1253 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_WIN_1254 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_WIN_1255 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_WIN_1256 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_WIN_1257 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_WIN_1258 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_1 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_2 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_3 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_4 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_5 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_6 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_7 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_8 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_9 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_10 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_11 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_13 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_14 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_15 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_ISO_8859_16 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_437 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_720 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_737 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_775 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_850 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_852 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_855 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_857 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_858 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_860 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_861 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_862 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_863 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_865 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_866 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_DOS_869 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_BIG5 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_GB2312 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_SHIFT_JIS + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_KOREAN_WIN + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_EUC_KR + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_TIS_620 + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_MAC_CYRILLIC + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_KOI8U_CYRILLIC + IDM_FORMAT_CONVERT): - case (IDM_FORMAT_KOI8R_CYRILLIC + IDM_FORMAT_CONVERT): - { - int index = id - IDM_FORMAT_CONVERT - IDM_FORMAT_ENCODE; - - EncodingMapper *em = EncodingMapper::getInstance(); - int newEncoding = em->getEncodingFromIndex(index); - if (newEncoding == -1) - { - return; - } - - Buffer *buf = _pEditView->getCurrentBuffer(); - UniMode um = buf->getUnicodeMode(); - int oldEncoding = buf->getEncoding(); - - if (oldEncoding == newEncoding) - return; - - if (oldEncoding != -1) - { - //do waring - } - buf->setEncoding(newEncoding); - - break; - } -*/ - case IDM_SETTING_TAB_REPLCESPACE: - case IDM_SETTING_TAB_SIZE: - { - _pEditView->setTabSettings(_pEditView->getCurrentBuffer()->getCurrentLang()); - break; - } - - case IDM_SETTING_AUTOCNBCHAR: - { - const int NB_MIN_CHAR = 1; - const int NB_MAX_CHAR = 9; - - ValueDlg valDlg; - NppGUI & nppGUI = (NppGUI &)((NppParameters::getInstance())->getNppGUI()); - valDlg.init(_hInst, _preference.getHSelf(), nppGUI._autocFromLen, TEXT("Nb char : ")); - POINT p; - ::GetCursorPos(&p); - ::ScreenToClient(_hParent, &p); - int size = valDlg.doDialog(p, _isRTL); - - if (size != -1) - { - if (size > NB_MAX_CHAR) - size = NB_MAX_CHAR; - else if (size < NB_MIN_CHAR) - size = NB_MIN_CHAR; - - nppGUI._autocFromLen = size; - } - break; - } - - case IDM_SETTING_HISTORY_SIZE : - { - ValueDlg nbHistoryDlg; - NppParameters *pNppParam = NppParameters::getInstance(); - nbHistoryDlg.init(_hInst, _preference.getHSelf(), pNppParam->getNbMaxFile(), TEXT("Max File : ")); - POINT p; - ::GetCursorPos(&p); - ::ScreenToClient(_hParent, &p); - int size = nbHistoryDlg.doDialog(p, _isRTL); - - if (size != -1) - { - if (size > NB_MAX_LRF_FILE) - size = NB_MAX_LRF_FILE; - pNppParam->setNbMaxFile(size); - _lastRecentFileList.setUserMaxNbLRF(size); - } - break; - } - - case IDM_SETTING_IMPORTPLUGIN : - { - // get plugin source path - TCHAR *extFilterName = TEXT("Notepad++ plugin"); - TCHAR *extFilter = TEXT(".dll"); - TCHAR *destDir = TEXT("plugins"); - - vector copiedFiles = addNppComponents(destDir, extFilterName, extFilter); - - // load plugin - vector dll2Remove; - for (size_t i = 0 ; i < copiedFiles.size() ; i++) - { - int index = _pluginsManager.loadPlugin(copiedFiles[i].c_str(), dll2Remove); - if (_pluginsManager.getMenuHandle()) - _pluginsManager.addInMenuFromPMIndex(index); - } - if (!_pluginsManager.getMenuHandle()) - _pluginsManager.setMenu(_mainMenuHandle, NULL); - ::DrawMenuBar(_hSelf); - break; - } - - case IDM_SETTING_IMPORTSTYLETHEMS : - { - // get plugin source path - TCHAR *extFilterName = TEXT("Notepad++ style theme"); - TCHAR *extFilter = TEXT(".xml"); - TCHAR *destDir = TEXT("themes"); - - // load styler - NppParameters *pNppParams = NppParameters::getInstance(); - ThemeSwitcher & themeSwitcher = pNppParams->getThemeSwitcher(); - - vector copiedFiles = addNppComponents(destDir, extFilterName, extFilter); - for (size_t i = 0 ; i < copiedFiles.size() ; i++) - { - generic_string themeName(themeSwitcher.getThemeFromXmlFileName(copiedFiles[i].c_str())); - if (!themeSwitcher.themeNameExists(themeName.c_str())) - { - themeSwitcher.addThemeFromXml(copiedFiles[i].c_str()); - if (_configStyleDlg.isCreated()) - { - _configStyleDlg.addLastThemeEntry(); - } - } - } - break; - } - - case IDM_SETTING_SHORTCUT_MAPPER : - { - ShortcutMapper shortcutMapper; - shortcutMapper.init(_hInst, _hSelf); - changeShortcutmapperLang(&shortcutMapper); - shortcutMapper.doDialog(_isRTL); - shortcutMapper.destroy(); - break; - } - - case IDM_SETTING_PREFERECE : - { - bool isFirstTime = !_preference.isCreated(); - _preference.doDialog(_isRTL); - - if (isFirstTime) - { - changePrefereceDlgLang(); - } - break; - } - - case IDM_VIEW_GOTO_ANOTHER_VIEW: - docGotoAnotherEditView(TransferMove); - checkSyncState(); - break; - - case IDM_VIEW_CLONE_TO_ANOTHER_VIEW: - docGotoAnotherEditView(TransferClone); - checkSyncState(); - break; - - case IDM_VIEW_GOTO_NEW_INSTANCE : - docOpenInNewInstance(TransferMove); - break; - - case IDM_VIEW_LOAD_IN_NEW_INSTANCE: - docOpenInNewInstance(TransferClone); - break; - - case IDM_VIEW_SWITCHTO_OTHER_VIEW: - { - int view_to_focus; - HWND wnd = GetFocus(); - if (_pEditView->getHSelf() == wnd) - { - view_to_focus = otherView(); - if (!viewVisible(view_to_focus)) view_to_focus = _activeView; - } - else - { - view_to_focus = currentView(); - } - switchEditViewTo(view_to_focus); - break; - } - - case IDM_ABOUT: - { - bool isFirstTime = !_aboutDlg.isCreated(); - _aboutDlg.doDialog(); - if (isFirstTime && _nativeLangA) - { - if (_nativeLangEncoding == NPP_CP_BIG5) - { - char *authorName = "«J¤µ§^"; - HWND hItem = ::GetDlgItem(_aboutDlg.getHSelf(), IDC_AUTHOR_NAME); -#ifdef UNICODE - WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance(); - const wchar_t *authorNameW = wmc->char2wchar(authorName, NPP_CP_BIG5); - ::SetWindowText(hItem, authorNameW); -#else - ::SetWindowText(hItem, authorName); -#endif - } - } - break; - } - - case IDM_HELP : - { - generic_string tmp((NppParameters::getInstance())->getNppPath()); - generic_string nppHelpPath = tmp.c_str(); - - nppHelpPath += TEXT("\\NppHelp.chm"); - if (::PathFileExists(nppHelpPath.c_str())) - ::ShellExecute(NULL, TEXT("open"), nppHelpPath.c_str(), NULL, NULL, SW_SHOWNORMAL); - else - { - generic_string msg = nppHelpPath; - msg += TEXT("\rdoesn't exist. Please download it on Notepad++ site."); - ::MessageBox(_hSelf, msg.c_str(), TEXT("File does not exist"), MB_OK); - } - } - break; - - case IDM_HOMESWEETHOME : - { - ::ShellExecute(NULL, TEXT("open"), TEXT("http://notepad-plus.sourceforge.net/"), NULL, NULL, SW_SHOWNORMAL); - break; - } - case IDM_PROJECTPAGE : - { - ::ShellExecute(NULL, TEXT("open"), TEXT("http://sourceforge.net/projects/notepad-plus/"), NULL, NULL, SW_SHOWNORMAL); - break; - } - - case IDM_ONLINEHELP: - { - ::ShellExecute(NULL, TEXT("open"), TEXT("http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Main_Page"), NULL, NULL, SW_SHOWNORMAL); - break; - } - - case IDM_FORUM: - { - ::ShellExecute(NULL, TEXT("open"), TEXT("http://sourceforge.net/forum/?group_id=95717"), NULL, NULL, SW_SHOWNORMAL); - break; - } - - case IDM_PLUGINSHOME: - { - ::ShellExecute(NULL, TEXT("open"), TEXT("http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Plugin_Central"), NULL, NULL, SW_SHOWNORMAL); - break; - } - - case IDM_UPDATE_NPP : - { - generic_string updaterDir = (NppParameters::getInstance())->getNppPath(); - PathAppend(updaterDir ,TEXT("updater")); - - generic_string updaterFullPath = updaterDir; - PathAppend(updaterFullPath, TEXT("gup.exe")); - - generic_string param = TEXT("-verbose -v"); - param += VERSION_VALUE; - Process updater(updaterFullPath.c_str(), param.c_str(), updaterDir.c_str()); - updater.run(); - break; - } - - case IDM_EDIT_AUTOCOMPLETE : - showAutoComp(); - break; - - case IDM_EDIT_AUTOCOMPLETE_CURRENTFILE : - autoCompFromCurrentFile(); - break; - - case IDM_EDIT_FUNCCALLTIP : - showFunctionComp(); - break; - - case IDM_LANGSTYLE_CONFIG_DLG : - { - bool isFirstTime = !_configStyleDlg.isCreated(); - _configStyleDlg.doDialog(_isRTL); - if (isFirstTime) - changeConfigLang(); - break; - } - - case IDM_LANG_C : - case IDM_LANG_CPP : - case IDM_LANG_JAVA : - case IDM_LANG_CS : - case IDM_LANG_HTML : - case IDM_LANG_XML : - case IDM_LANG_JS : - case IDM_LANG_PHP : - case IDM_LANG_ASP : - case IDM_LANG_CSS : - case IDM_LANG_LUA : - case IDM_LANG_PERL : - case IDM_LANG_PYTHON : - case IDM_LANG_PASCAL : - case IDM_LANG_BATCH : - case IDM_LANG_OBJC : - case IDM_LANG_VB : - case IDM_LANG_SQL : - case IDM_LANG_ASCII : - case IDM_LANG_TEXT : - case IDM_LANG_RC : - case IDM_LANG_MAKEFILE : - case IDM_LANG_INI : - case IDM_LANG_TEX : - case IDM_LANG_FORTRAN : - case IDM_LANG_SH : - case IDM_LANG_FLASH : - case IDM_LANG_NSIS : - case IDM_LANG_TCL : - case IDM_LANG_LISP : - case IDM_LANG_SCHEME : - case IDM_LANG_ASM : - case IDM_LANG_DIFF : - case IDM_LANG_PROPS : - case IDM_LANG_PS: - case IDM_LANG_RUBY: - case IDM_LANG_SMALLTALK: - case IDM_LANG_VHDL : - case IDM_LANG_KIX : - case IDM_LANG_CAML : - case IDM_LANG_ADA : - case IDM_LANG_VERILOG : - case IDM_LANG_MATLAB : - case IDM_LANG_HASKELL : - case IDM_LANG_AU3 : - case IDM_LANG_INNO : - case IDM_LANG_CMAKE : - case IDM_LANG_YAML : - case IDM_LANG_COBOL : - case IDM_LANG_D : - case IDM_LANG_GUI4CLI : - case IDM_LANG_POWERSHELL : - case IDM_LANG_R : - case IDM_LANG_JSP : - case IDM_LANG_USER : - { - setLanguage(menuID2LangType(id)); - } - break; - - case IDC_PREV_DOC : - case IDC_NEXT_DOC : - { - int nbDoc = viewVisible(MAIN_VIEW)?_mainDocTab.nbItem():0; - nbDoc += viewVisible(SUB_VIEW)?_subDocTab.nbItem():0; - - bool doTaskList = ((NppParameters::getInstance())->getNppGUI())._doTaskList; - if (nbDoc > 1) - { - bool direction = (id == IDC_NEXT_DOC)?dirDown:dirUp; - - if (!doTaskList) - { - activateNextDoc(direction); - } - else - { - TaskListDlg tld; - HIMAGELIST hImgLst = _docTabIconList.getHandle(); - tld.init(_hInst, _hSelf, hImgLst, direction); - tld.doDialog(); - } - } - _linkTriggered = true; - } - break; - - case IDM_OPEN_ALL_RECENT_FILE : { - BufferID lastOne = BUFFER_INVALID; - int size = _lastRecentFileList.getSize(); - for (int i = size - 1; i >= 0; i--) - { - BufferID test = doOpen(_lastRecentFileList.getIndex(i).c_str()); - if (test != BUFFER_INVALID) - lastOne = test; - } - if (lastOne != BUFFER_INVALID) { - switchToFile(lastOne); - } - break; } - - case IDM_CLEAN_RECENT_FILE_LIST : - _lastRecentFileList.clear(); - break; - - case IDM_EDIT_RTL : - case IDM_EDIT_LTR : - { - long exStyle = ::GetWindowLongPtr(_pEditView->getHSelf(), GWL_EXSTYLE); - exStyle = (id == IDM_EDIT_RTL)?exStyle|WS_EX_LAYOUTRTL:exStyle&(~WS_EX_LAYOUTRTL); - ::SetWindowLongPtr(_pEditView->getHSelf(), GWL_EXSTYLE, exStyle); - _pEditView->redraw(); - } - break; - - case IDM_WINDOW_WINDOWS : - { - WindowsDlg _windowsDlg; - _windowsDlg.init(_hInst, _hSelf, _pDocTab); - - TiXmlNodeA *dlgNode = NULL; - if (_nativeLangA) - { - dlgNode = _nativeLangA->FirstChild("Dialog"); - if (dlgNode) - dlgNode = searchDlgNode(dlgNode, "Window"); - } - _windowsDlg.doDialog(dlgNode); - } - break; - - - case IDM_SYSTRAYPOPUP_NEWDOC: - { - NppGUI & nppGUI = (NppGUI &)((NppParameters::getInstance())->getNppGUI()); - ::ShowWindow(_hSelf, nppGUI._isMaximized?SW_MAXIMIZE:SW_SHOW); - fileNew(); - } - break; - - case IDM_SYSTRAYPOPUP_ACTIVATE : - { - NppGUI & nppGUI = (NppGUI &)((NppParameters::getInstance())->getNppGUI()); - ::ShowWindow(_hSelf, nppGUI._isMaximized?SW_MAXIMIZE:SW_SHOW); - } - break; - - case IDM_SYSTRAYPOPUP_NEW_AND_PASTE: - { - NppGUI & nppGUI = (NppGUI &)((NppParameters::getInstance())->getNppGUI()); - ::ShowWindow(_hSelf, nppGUI._isMaximized?SW_MAXIMIZE:SW_SHOW); - BufferID bufferID = _pEditView->getCurrentBufferID(); - Buffer * buf = MainFileManager->getBufferByID(bufferID); - if (!buf->isUntitled() || buf->docLength() != 0) - { - fileNew(); - } - command(IDM_EDIT_PASTE); - } - break; - - case IDM_SYSTRAYPOPUP_OPENFILE: - { - NppGUI & nppGUI = (NppGUI &)((NppParameters::getInstance())->getNppGUI()); - ::ShowWindow(_hSelf, nppGUI._isMaximized?SW_MAXIMIZE:SW_SHOW); - fileOpen(); - } - break; - - case IDM_SYSTRAYPOPUP_CLOSE: - { - _isPrelaunch = false; - _pTrayIco->doTrayIcon(REMOVE); - if (!::IsWindowVisible(_hSelf)) - ::SendMessage(_hSelf, WM_CLOSE, 0,0); - } - break; - - default : - if (id > IDM_FILEMENU_LASTONE && id < (IDM_FILEMENU_LASTONE + _lastRecentFileList.getMaxNbLRF() + 1)) - { - BufferID lastOpened = doOpen(_lastRecentFileList.getItem(id).c_str()); - if (lastOpened != BUFFER_INVALID) { - switchToFile(lastOpened); - } - } - else if ((id > IDM_LANG_USER) && (id < IDM_LANG_USER_LIMIT)) - { - TCHAR langName[langNameLenMax]; - ::GetMenuString(_mainMenuHandle, id, langName, langNameLenMax, MF_BYCOMMAND); - _pEditView->getCurrentBuffer()->setLangType(L_USER, langName); - } - else if ((id >= IDM_LANG_EXTERNAL) && (id <= IDM_LANG_EXTERNAL_LIMIT)) - { - setLanguage((LangType)(id - IDM_LANG_EXTERNAL + L_EXTERNAL)); - } - else if ((id >= ID_MACRO) && (id < ID_MACRO_LIMIT)) - { - int i = id - ID_MACRO; - vector & theMacros = (NppParameters::getInstance())->getMacroList(); - Macro macro = theMacros[i].getMacro(); - _pEditView->execute(SCI_BEGINUNDOACTION); - - for (Macro::iterator step = macro.begin(); step != macro.end(); step++) - step->PlayBack(this, _pEditView); - - _pEditView->execute(SCI_ENDUNDOACTION); - - } - else if ((id >= ID_USER_CMD) && (id < ID_USER_CMD_LIMIT)) - { - int i = id - ID_USER_CMD; - vector & theUserCommands = (NppParameters::getInstance())->getUserCommandList(); - UserCommand ucmd = theUserCommands[i]; - - Command cmd(ucmd.getCmd()); - cmd.run(_hSelf); - } - else if ((id >= ID_PLUGINS_CMD) && (id < ID_PLUGINS_CMD_LIMIT)) - { - int i = id - ID_PLUGINS_CMD; - _pluginsManager.runPluginCommand(i); - } -/*UNLOAD - else if ((id >= ID_PLUGINS_REMOVING) && (id < ID_PLUGINS_REMOVING_END)) - { - int i = id - ID_PLUGINS_REMOVING; - _pluginsManager.unloadPlugin(i, _hSelf); - } -*/ - else if ((id >= IDM_WINDOW_MRU_FIRST) && (id <= IDM_WINDOW_MRU_LIMIT)) - { - activateDoc(id-IDM_WINDOW_MRU_FIRST); - } - } - - if (_recordingMacro) - switch (id) - { - case IDM_FILE_NEW : - case IDM_FILE_CLOSE : - case IDM_FILE_CLOSEALL : - case IDM_FILE_CLOSEALL_BUT_CURRENT : - case IDM_FILE_SAVE : - case IDM_FILE_SAVEALL : - case IDM_FILE_RELOAD: - case IDM_EDIT_UNDO: - case IDM_EDIT_REDO: - case IDM_EDIT_CUT: - case IDM_EDIT_COPY: - //case IDM_EDIT_PASTE: - case IDM_EDIT_DELETE: - case IDM_SEARCH_FINDNEXT : - case IDM_SEARCH_FINDPREV : - case IDM_SEARCH_SETANDFINDNEXT : - case IDM_SEARCH_SETANDFINDPREV : - case IDM_SEARCH_GOTOMATCHINGBRACE : - case IDM_SEARCH_TOGGLE_BOOKMARK : - case IDM_SEARCH_NEXT_BOOKMARK: - case IDM_SEARCH_PREV_BOOKMARK: - case IDM_SEARCH_CLEAR_BOOKMARKS: - case IDM_EDIT_SELECTALL: - case IDM_EDIT_INS_TAB: - case IDM_EDIT_RMV_TAB: - case IDM_EDIT_DUP_LINE: - case IDM_EDIT_TRANSPOSE_LINE: - case IDM_EDIT_SPLIT_LINES: - case IDM_EDIT_JOIN_LINES: - case IDM_EDIT_LINE_UP: - case IDM_EDIT_LINE_DOWN: - case IDM_EDIT_UPPERCASE: - case IDM_EDIT_LOWERCASE: - case IDM_EDIT_BLOCK_COMMENT: - case IDM_EDIT_BLOCK_COMMENT_SET: - case IDM_EDIT_BLOCK_UNCOMMENT: - case IDM_EDIT_STREAM_COMMENT: - case IDM_EDIT_TRIMTRAILING: - case IDM_EDIT_SETREADONLY : - case IDM_EDIT_FULLPATHTOCLIP : - case IDM_EDIT_FILENAMETOCLIP : - case IDM_EDIT_CURRENTDIRTOCLIP : - case IDM_EDIT_CLEARREADONLY : - case IDM_EDIT_RTL : - case IDM_EDIT_LTR : - case IDM_VIEW_FULLSCREENTOGGLE : - case IDM_VIEW_ALWAYSONTOP : - case IDM_VIEW_WRAP : - case IDM_VIEW_FOLD_CURRENT : - case IDM_VIEW_UNFOLD_CURRENT : - case IDM_VIEW_TOGGLE_FOLDALL: - case IDM_VIEW_TOGGLE_UNFOLDALL: - case IDM_VIEW_FOLD_1: - case IDM_VIEW_FOLD_2: - case IDM_VIEW_FOLD_3: - case IDM_VIEW_FOLD_4: - case IDM_VIEW_FOLD_5: - case IDM_VIEW_FOLD_6: - case IDM_VIEW_FOLD_7: - case IDM_VIEW_FOLD_8: - case IDM_VIEW_UNFOLD_1: - case IDM_VIEW_UNFOLD_2: - case IDM_VIEW_UNFOLD_3: - case IDM_VIEW_UNFOLD_4: - case IDM_VIEW_UNFOLD_5: - case IDM_VIEW_UNFOLD_6: - case IDM_VIEW_UNFOLD_7: - case IDM_VIEW_UNFOLD_8: - case IDM_VIEW_GOTO_ANOTHER_VIEW: - case IDM_VIEW_SYNSCROLLV: - case IDM_VIEW_SYNSCROLLH: - case IDC_PREV_DOC : - case IDC_NEXT_DOC : - case IDM_SEARCH_GOPREVMARKER1 : - case IDM_SEARCH_GOPREVMARKER2 : - case IDM_SEARCH_GOPREVMARKER3 : - case IDM_SEARCH_GOPREVMARKER4 : - case IDM_SEARCH_GOPREVMARKER5 : - case IDM_SEARCH_GOPREVMARKER_DEF: - case IDM_SEARCH_GONEXTMARKER1 : - case IDM_SEARCH_GONEXTMARKER2 : - case IDM_SEARCH_GONEXTMARKER3 : - case IDM_SEARCH_GONEXTMARKER4 : - case IDM_SEARCH_GONEXTMARKER5 : - case IDM_SEARCH_GONEXTMARKER_DEF: - case IDM_SEARCH_VOLATILE_FINDNEXT: - case IDM_SEARCH_VOLATILE_FINDPREV: - case IDM_SEARCH_CUTMARKEDLINES : - case IDM_SEARCH_COPYMARKEDLINES : - case IDM_SEARCH_PASTEMARKEDLINES : - case IDM_SEARCH_DELETEMARKEDLINES: - case IDM_SEARCH_MARKALLEXT1 : - case IDM_SEARCH_UNMARKALLEXT1 : - case IDM_SEARCH_MARKALLEXT2 : - case IDM_SEARCH_UNMARKALLEXT2 : - case IDM_SEARCH_MARKALLEXT3 : - case IDM_SEARCH_UNMARKALLEXT3 : - case IDM_SEARCH_MARKALLEXT4 : - case IDM_SEARCH_UNMARKALLEXT4 : - case IDM_SEARCH_MARKALLEXT5 : - case IDM_SEARCH_UNMARKALLEXT5 : - case IDM_SEARCH_CLEARALLMARKS : - _macro.push_back(recordedMacroStep(id)); - break; - } - -} void Notepad_plus::setLanguage(LangType langType) { //Add logic to prevent changing a language when a document is shared between two views @@ -7578,7 +5603,7 @@ void Notepad_plus::changeShortcutmapperLang(ShortcutMapper * sm) } -TiXmlNodeA * searchDlgNode(TiXmlNodeA *node, const char *dlgTagName) +TiXmlNodeA * Notepad_plus::searchDlgNode(TiXmlNodeA *node, const char *dlgTagName) { TiXmlNodeA *dlgNode = node->FirstChild(dlgTagName); if (dlgNode) return dlgNode; diff --git a/PowerEditor/src/Notepad_plus.h b/PowerEditor/src/Notepad_plus.h index c66ef858..d4a79084 100644 --- a/PowerEditor/src/Notepad_plus.h +++ b/PowerEditor/src/Notepad_plus.h @@ -135,8 +135,8 @@ enum Views { }; */ + struct TaskListInfo; -static TiXmlNodeA * searchDlgNode(TiXmlNodeA *node, const char *dlgTagName); struct iconLocator { int listIndex; @@ -201,9 +201,18 @@ public: void doClose(BufferID, int whichOne); //bool doDelete(const TCHAR *fileName) const {return ::DeleteFile(fileName) != 0;}; - inline void fileNew(); void fileOpen(); - inline bool fileReload(); + void fileNew() { + BufferID newBufID = MainFileManager->newEmptyDocument(); + loadBufferIntoView(newBufID, currentView(), true); //true, because we want multiple new files if possible + activateBuffer(newBufID, currentView()); + }; + + bool fileReload() { + BufferID buf = _pEditView->getCurrentBufferID(); + return doReload(buf, buf->isDirty()); + }; + bool fileClose(BufferID id = BUFFER_INVALID, int curView = -1); //use curView to override view to close from bool fileCloseAll(); bool fileCloseAllButCurrent(); @@ -235,6 +244,7 @@ public: const TCHAR * fileSaveSession(size_t nbFile, TCHAR ** fileNames, const TCHAR *sessionFile2save); const TCHAR * fileSaveSession(size_t nbFile = 0, TCHAR ** fileNames = NULL); + TiXmlNodeA * searchDlgNode(TiXmlNodeA *node, const char *dlgTagName); bool changeDlgLang(HWND hDlg, const char *dlgTagName, char *title = NULL); void changeFindReplaceDlgLang(); void changeConfigLang(); @@ -251,7 +261,7 @@ public: bool doBlockComment(comment_mode currCommentMode); bool doStreamComment(); - inline void doTrimTrailing(); + void doTrimTrailing(); inline HACCEL getAccTable() const{ return _accelerator.getAccTable(); diff --git a/PowerEditor/src/NppCommands.cpp b/PowerEditor/src/NppCommands.cpp new file mode 100644 index 00000000..eaa4a2d5 --- /dev/null +++ b/PowerEditor/src/NppCommands.cpp @@ -0,0 +1,1986 @@ +//this file is part of notepad++ +//Copyright (C)2003 Don HO ( donho@altern.org ) +// +//This program is free software; you can redistribute it and/or +//modify it under the terms of the GNU General Public License +//as published by the Free Software Foundation; either +//version 2 of the License, or (at your option) any later version. +// +//This program is distributed in the hope that it will be useful, +//but WITHOUT ANY WARRANTY; without even the implied warranty of +//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//GNU General Public License for more details. +// +//You should have received a copy of the GNU General Public License +//along with this program; if not, write to the Free Software +//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +#include "precompiledHeaders.h" +#include "Notepad_plus.h" +#include "EncodingMapper.h" +#include "ShortcutMapper.h" +#include "TaskListDlg.h" + + +void Notepad_plus::command(int id) +{ + switch (id) + { + case IDM_FILE_NEW: + fileNew(); + break; + + case IDM_FILE_OPEN: + fileOpen(); + break; + + case IDM_FILE_RELOAD: + fileReload(); + break; + + case IDM_FILE_CLOSE: + fileClose(); + break; + + case IDM_FILE_DELETE: + fileDelete(); + break; + + case IDM_FILE_RENAME: + fileRename(); + break; + + case IDM_FILE_CLOSEALL: + fileCloseAll(); + break; + + case IDM_FILE_CLOSEALL_BUT_CURRENT : + fileCloseAllButCurrent(); + break; + + case IDM_FILE_SAVE : + fileSave(); + break; + + case IDM_FILE_SAVEALL : + fileSaveAll(); + break; + + case IDM_FILE_SAVEAS : + fileSaveAs(); + break; + + case IDM_FILE_SAVECOPYAS : + fileSaveAs(BUFFER_INVALID, true); + break; + + case IDM_FILE_LOADSESSION: + fileLoadSession(); + break; + + case IDM_FILE_SAVESESSION: + fileSaveSession(); + break; + + case IDM_FILE_PRINTNOW : + filePrint(false); + break; + + case IDM_FILE_PRINT : + filePrint(true); + break; + + case IDM_FILE_EXIT: + ::SendMessage(_hSelf, WM_CLOSE, 0, 0); + break; + + case IDM_EDIT_UNDO: + _pEditView->execute(WM_UNDO); + checkClipboard(); + checkUndoState(); + break; + + case IDM_EDIT_REDO: + _pEditView->execute(SCI_REDO); + checkClipboard(); + checkUndoState(); + break; + + case IDM_EDIT_CUT: + _pEditView->execute(WM_CUT); + checkClipboard(); + break; + + case IDM_EDIT_COPY: + _pEditView->execute(WM_COPY); + checkClipboard(); + break; + + case IDM_EDIT_PASTE: + { + int eolMode = int(_pEditView->execute(SCI_GETEOLMODE)); + _pEditView->execute(SCI_PASTE); + _pEditView->execute(SCI_CONVERTEOLS, eolMode); + } + break; + + case IDM_EDIT_DELETE: + _pEditView->execute(WM_CLEAR); + break; + + case IDM_MACRO_STARTRECORDINGMACRO: + case IDM_MACRO_STOPRECORDINGMACRO: + case IDC_EDIT_TOGGLEMACRORECORDING: + { + if (_recordingMacro) + { + // STOP !!! + _mainEditView.execute(SCI_STOPRECORD); + _subEditView.execute(SCI_STOPRECORD); + + _mainEditView.execute(SCI_SETCURSOR, (WPARAM)SC_CURSORNORMAL); + _subEditView.execute(SCI_SETCURSOR, (WPARAM)SC_CURSORNORMAL); + + _recordingMacro = false; + _runMacroDlg.initMacroList(); + } + else + { + _mainEditView.execute(SCI_SETCURSOR, 9); + _subEditView.execute(SCI_SETCURSOR, 9); + _macro.clear(); + + // START !!! + _mainEditView.execute(SCI_STARTRECORD); + _subEditView.execute(SCI_STARTRECORD); + _recordingMacro = true; + } + checkMacroState(); + break; + } + + case IDM_MACRO_PLAYBACKRECORDEDMACRO: + if (!_recordingMacro) // if we're not currently recording, then playback the recorded keystrokes + { + _pEditView->execute(SCI_BEGINUNDOACTION); + + for (Macro::iterator step = _macro.begin(); step != _macro.end(); step++) + step->PlayBack(this, _pEditView); + + _pEditView->execute(SCI_ENDUNDOACTION); + } + break; + + case IDM_MACRO_RUNMULTIMACRODLG : + { + if (!_recordingMacro) // if we're not currently recording, then playback the recorded keystrokes + { + bool isFirstTime = !_runMacroDlg.isCreated(); + _runMacroDlg.doDialog(_isRTL); + + if (isFirstTime) + { + changeDlgLang(_runMacroDlg.getHSelf(), "MultiMacro"); + } + break; + + } + } + break; + + case IDM_MACRO_SAVECURRENTMACRO : + { + if (addCurrentMacro()) + _runMacroDlg.initMacroList(); + break; + } + case IDM_EDIT_FULLPATHTOCLIP : + case IDM_EDIT_CURRENTDIRTOCLIP : + case IDM_EDIT_FILENAMETOCLIP : + { + Buffer * buf = _pEditView->getCurrentBuffer(); + if (id == IDM_EDIT_FULLPATHTOCLIP) + { + str2Cliboard(buf->getFullPathName()); + } + else if (id == IDM_EDIT_CURRENTDIRTOCLIP) + { + generic_string dir(buf->getFullPathName()); + PathRemoveFileSpec(dir); + str2Cliboard(dir.c_str()); + } + else if (id == IDM_EDIT_FILENAMETOCLIP) + { + str2Cliboard(buf->getFileName()); + } + } + break; + + case IDM_SEARCH_FIND : + case IDM_SEARCH_REPLACE : + { + const int strSize = FINDREPLACE_MAXLENGTH; + TCHAR str[strSize]; + + bool isFirstTime = !_findReplaceDlg.isCreated(); + + _findReplaceDlg.doDialog((id == IDM_SEARCH_FIND)?FIND_DLG:REPLACE_DLG, _isRTL); + + _pEditView->getGenericSelectedText(str, strSize); + _findReplaceDlg.setSearchText(str); + setFindReplaceFolderFilter(NULL, NULL); + + if (isFirstTime) + changeFindReplaceDlgLang(); + break; + } + + case IDM_SEARCH_FINDINFILES : + { + ::SendMessage(_hSelf, NPPM_LAUNCHFINDINFILESDLG, 0, 0); + break; + } + case IDM_SEARCH_FINDINCREMENT : + { + const int strSize = FINDREPLACE_MAXLENGTH; + TCHAR str[strSize]; + + _pEditView->getGenericSelectedText(str, strSize, false); + if (0!=str[0]) // the selected text is not empty, then use it + _incrementFindDlg.setSearchText(str, _pEditView->getCurrentBuffer()->getUnicodeMode() != uni8Bit); + + _incrementFindDlg.display(); + } + break; + + case IDM_SEARCH_FINDNEXT : + case IDM_SEARCH_FINDPREV : + { + if (!_findReplaceDlg.isCreated()) + return; + + FindOption op = _findReplaceDlg.getCurrentOptions(); + op._whichDirection = (id == IDM_SEARCH_FINDNEXT?DIR_DOWN:DIR_UP); + generic_string s = _findReplaceDlg.getText2search(); + + _findReplaceDlg.processFindNext(s.c_str(), &op); + break; + } + break; + + case IDM_SEARCH_SETANDFINDNEXT : + case IDM_SEARCH_SETANDFINDPREV : + { + bool isFirstTime = !_findReplaceDlg.isCreated(); + if (isFirstTime) + _findReplaceDlg.doDialog(FIND_DLG, _isRTL, false); + + const int strSize = FINDREPLACE_MAXLENGTH; + TCHAR str[strSize]; + _pEditView->getGenericSelectedText(str, strSize); + _findReplaceDlg.setSearchText(str); + setFindReplaceFolderFilter(NULL, NULL); + if (isFirstTime) + changeFindReplaceDlgLang(); + + FindOption op = _findReplaceDlg.getCurrentOptions(); + op._whichDirection = (id == IDM_SEARCH_SETANDFINDNEXT?DIR_DOWN:DIR_UP); + + _findReplaceDlg.processFindNext(str, &op); + break; + } + + case IDM_SEARCH_GOTONEXTFOUND: + { + _findReplaceDlg.gotoNextFoundResult(); + break; + } + case IDM_SEARCH_GOTOPREVFOUND: + { + _findReplaceDlg.gotoNextFoundResult(-1); + break; + } + case IDM_FOCUS_ON_FOUND_RESULTS: + { + if (GetFocus() == _findReplaceDlg.getHFindResults()) + // focus already on found results, switch to current edit view + switchEditViewTo(currentView()); + else + _findReplaceDlg.focusOnFinder(); + break; + } + + case IDM_SEARCH_VOLATILE_FINDNEXT : + case IDM_SEARCH_VOLATILE_FINDPREV : + { + TCHAR text2Find[MAX_PATH]; + _pEditView->getGenericSelectedText(text2Find, MAX_PATH); + + FindOption op; + op._isWholeWord = false; + op._whichDirection = (id == IDM_SEARCH_VOLATILE_FINDNEXT?DIR_DOWN:DIR_UP); + _findReplaceDlg.processFindNext(text2Find, &op); + break; + } + + case IDM_SEARCH_MARKALLEXT1 : + case IDM_SEARCH_MARKALLEXT2 : + case IDM_SEARCH_MARKALLEXT3 : + case IDM_SEARCH_MARKALLEXT4 : + case IDM_SEARCH_MARKALLEXT5 : + { + int styleID; + if (id == IDM_SEARCH_MARKALLEXT1) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT1; + else if (id == IDM_SEARCH_MARKALLEXT2) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT2; + else if (id == IDM_SEARCH_MARKALLEXT3) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT3; + else if (id == IDM_SEARCH_MARKALLEXT4) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT4; + else // (id == IDM_SEARCH_MARKALLEXT5) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT5; + + const int strSize = FINDREPLACE_MAXLENGTH; + TCHAR text2Find[strSize]; + _pEditView->getGenericSelectedText(text2Find, strSize, false); + if (text2Find[0] == '\0') + { + _pEditView->getGenericWordOnCaretPos(text2Find, strSize); + } + _findReplaceDlg.markAll(text2Find, styleID); + + break; + } + case IDM_SEARCH_UNMARKALLEXT1 : + case IDM_SEARCH_UNMARKALLEXT2 : + case IDM_SEARCH_UNMARKALLEXT3 : + case IDM_SEARCH_UNMARKALLEXT4 : + case IDM_SEARCH_UNMARKALLEXT5 : + { + int styleID; + if (id == IDM_SEARCH_UNMARKALLEXT1) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT1; + else if (id == IDM_SEARCH_UNMARKALLEXT2) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT2; + else if (id == IDM_SEARCH_UNMARKALLEXT3) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT3; + else if (id == IDM_SEARCH_UNMARKALLEXT4) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT4; + else // (id == IDM_SEARCH_UNMARKALLEXT5) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT5; + + _pEditView->clearIndicator(styleID); + break; + } + + case IDM_SEARCH_GONEXTMARKER1 : + case IDM_SEARCH_GONEXTMARKER2 : + case IDM_SEARCH_GONEXTMARKER3 : + case IDM_SEARCH_GONEXTMARKER4 : + case IDM_SEARCH_GONEXTMARKER5 : + case IDM_SEARCH_GONEXTMARKER_DEF : + { + int styleID; + if (id == IDM_SEARCH_GONEXTMARKER1) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT1; + else if (id == IDM_SEARCH_GONEXTMARKER2) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT2; + else if (id == IDM_SEARCH_GONEXTMARKER3) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT3; + else if (id == IDM_SEARCH_GONEXTMARKER4) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT4; + else if (id == IDM_SEARCH_GONEXTMARKER5) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT5; + else // (id == IDM_SEARCH_GONEXTMARKER_DEF) + styleID = SCE_UNIVERSAL_FOUND_STYLE; + + goToNextIndicator(styleID); + + break; + } + + case IDM_SEARCH_GOPREVMARKER1 : + case IDM_SEARCH_GOPREVMARKER2 : + case IDM_SEARCH_GOPREVMARKER3 : + case IDM_SEARCH_GOPREVMARKER4 : + case IDM_SEARCH_GOPREVMARKER5 : + case IDM_SEARCH_GOPREVMARKER_DEF : + { + int styleID; + if (id == IDM_SEARCH_GOPREVMARKER1) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT1; + else if (id == IDM_SEARCH_GOPREVMARKER2) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT2; + else if (id == IDM_SEARCH_GOPREVMARKER3) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT3; + else if (id == IDM_SEARCH_GOPREVMARKER4) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT4; + else if (id == IDM_SEARCH_GOPREVMARKER5) + styleID = SCE_UNIVERSAL_FOUND_STYLE_EXT5; + else // (id == IDM_SEARCH_GOPREVMARKER_DEF) + styleID = SCE_UNIVERSAL_FOUND_STYLE; + + goToPreviousIndicator(styleID); + + break; + } + + case IDM_SEARCH_CLEARALLMARKS : + { + _pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_EXT1); + _pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_EXT2); + _pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_EXT3); + _pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_EXT4); + _pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_EXT5); + break; + } + + case IDM_SEARCH_GOTOLINE : + { + bool isFirstTime = !_goToLineDlg.isCreated(); + _goToLineDlg.doDialog(_isRTL); + if (isFirstTime) + changeDlgLang(_goToLineDlg.getHSelf(), "GoToLine"); + break; + } + + case IDM_EDIT_COLUMNMODE : + { + bool isFirstTime = !_colEditorDlg.isCreated(); + _colEditorDlg.doDialog(_isRTL); + if (isFirstTime) + changeDlgLang(_colEditorDlg.getHSelf(), "ColumnEditor"); + break; + } + + case IDM_SEARCH_GOTOMATCHINGBRACE : + { + int braceAtCaret = -1; + int braceOpposite = -1; + findMatchingBracePos(braceAtCaret, braceOpposite); + + if (braceOpposite != -1) + _pEditView->execute(SCI_GOTOPOS, braceOpposite); + break; + } + + case IDM_SEARCH_TOGGLE_BOOKMARK : + bookmarkToggle(-1); + break; + + case IDM_SEARCH_NEXT_BOOKMARK: + bookmarkNext(true); + break; + + case IDM_SEARCH_PREV_BOOKMARK: + bookmarkNext(false); + break; + + case IDM_SEARCH_CLEAR_BOOKMARKS: + bookmarkClearAll(); + break; + + case IDM_VIEW_USER_DLG : + { + bool isUDDlgVisible = false; + + UserDefineDialog *udd = _pEditView->getUserDefineDlg(); + + if (!udd->isCreated()) + { + _pEditView->doUserDefineDlg(true, _isRTL); + changeUserDefineLang(); + if (_isUDDocked) + ::SendMessage(udd->getHSelf(), WM_COMMAND, IDC_DOCK_BUTTON, 0); + + } + else + { + isUDDlgVisible = udd->isVisible(); + bool isUDDlgDocked = udd->isDocked(); + + if ((isUDDlgDocked)&&(isUDDlgVisible)) + { + ::ShowWindow(_pMainSplitter->getHSelf(), SW_HIDE); + + if (bothActive()) + _pMainWindow = &_subSplitter; + else + _pMainWindow = _pDocTab; + + ::SendMessage(_hSelf, WM_SIZE, 0, 0); + + udd->display(false); + _mainWindowStatus &= ~WindowUserActive; + } + else if ((isUDDlgDocked)&&(!isUDDlgVisible)) + { + if (!_pMainSplitter) + { + _pMainSplitter = new SplitterContainer; + _pMainSplitter->init(_hInst, _hSelf); + + Window *pWindow; + if (bothActive()) + pWindow = &_subSplitter; + else + pWindow = _pDocTab; + + _pMainSplitter->create(pWindow, ScintillaEditView::getUserDefineDlg(), 8, RIGHT_FIX, 45); + } + + _pMainWindow = _pMainSplitter; + + _pMainSplitter->setWin0((bothActive())?(Window *)&_subSplitter:(Window *)_pDocTab); + + ::SendMessage(_hSelf, WM_SIZE, 0, 0); + _pMainWindow->display(); + + _mainWindowStatus |= WindowUserActive; + } + else if ((!isUDDlgDocked)&&(isUDDlgVisible)) + { + udd->display(false); + } + else //((!isUDDlgDocked)&&(!isUDDlgVisible)) + udd->display(); + } + checkMenuItem(IDM_VIEW_USER_DLG, !isUDDlgVisible); + _toolBar.setCheck(IDM_VIEW_USER_DLG, !isUDDlgVisible); + + break; + } + + case IDM_EDIT_SELECTALL: + _pEditView->execute(SCI_SELECTALL); + checkClipboard(); + break; + + case IDM_EDIT_INS_TAB: + _pEditView->execute(SCI_TAB); + break; + + case IDM_EDIT_RMV_TAB: + _pEditView->execute(SCI_BACKTAB); + break; + + case IDM_EDIT_DUP_LINE: + _pEditView->execute(SCI_LINEDUPLICATE); + break; + + case IDM_EDIT_SPLIT_LINES: + _pEditView->execute(SCI_TARGETFROMSELECTION); + _pEditView->execute(SCI_LINESSPLIT); + break; + + case IDM_EDIT_JOIN_LINES: + _pEditView->execute(SCI_TARGETFROMSELECTION); + _pEditView->execute(SCI_LINESJOIN); + break; + + case IDM_EDIT_LINE_UP: + _pEditView->currentLinesUp(); + break; + + case IDM_EDIT_LINE_DOWN: + _pEditView->currentLinesDown(); + break; + + case IDM_EDIT_UPPERCASE: + _pEditView->convertSelectedTextToUpperCase(); + break; + + case IDM_EDIT_LOWERCASE: + _pEditView->convertSelectedTextToLowerCase(); + break; + + case IDM_EDIT_BLOCK_COMMENT: + doBlockComment(cm_toggle); + break; + + case IDM_EDIT_BLOCK_COMMENT_SET: + doBlockComment(cm_comment); + break; + + case IDM_EDIT_BLOCK_UNCOMMENT: + doBlockComment(cm_uncomment); + break; + + case IDM_EDIT_STREAM_COMMENT: + doStreamComment(); + break; + + case IDM_EDIT_TRIMTRAILING: + doTrimTrailing(); + break; + + case IDM_EDIT_SETREADONLY: + { + Buffer * buf = _pEditView->getCurrentBuffer(); + buf->setUserReadOnly(!buf->getUserReadOnly()); + } + break; + + case IDM_EDIT_CLEARREADONLY: + { + Buffer * buf = _pEditView->getCurrentBuffer(); + + DWORD dwFileAttribs = ::GetFileAttributes(buf->getFullPathName()); + dwFileAttribs ^= FILE_ATTRIBUTE_READONLY; + + ::SetFileAttributes(buf->getFullPathName(), dwFileAttribs); + + buf->setFileReadOnly(false); + } + break; + + case IDM_SEARCH_CUTMARKEDLINES : + cutMarkedLines(); + break; + + case IDM_SEARCH_COPYMARKEDLINES : + copyMarkedLines(); + break; + + case IDM_SEARCH_PASTEMARKEDLINES : + pasteToMarkedLines(); + break; + + case IDM_SEARCH_DELETEMARKEDLINES : + deleteMarkedLines(); + break; + + case IDM_VIEW_FULLSCREENTOGGLE : + fullScreenToggle(); + break; + + case IDM_VIEW_ALWAYSONTOP: + { + int check = (::GetMenuState(_mainMenuHandle, id, MF_BYCOMMAND) == MF_CHECKED)?MF_UNCHECKED:MF_CHECKED; + ::CheckMenuItem(_mainMenuHandle, id, MF_BYCOMMAND | check); + SetWindowPos(_hSelf, check == MF_CHECKED?HWND_TOPMOST:HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); + } + break; + + + case IDM_VIEW_FOLD_CURRENT : + case IDM_VIEW_UNFOLD_CURRENT : + _pEditView->foldCurrentPos((id==IDM_VIEW_FOLD_CURRENT)?fold_collapse:fold_uncollapse); + break; + + case IDM_VIEW_TOGGLE_FOLDALL: + case IDM_VIEW_TOGGLE_UNFOLDALL: + { + _pEditView->foldAll((id==IDM_VIEW_TOGGLE_FOLDALL)?fold_collapse:fold_uncollapse); + } + break; + + case IDM_VIEW_FOLD_1: + case IDM_VIEW_FOLD_2: + case IDM_VIEW_FOLD_3: + case IDM_VIEW_FOLD_4: + case IDM_VIEW_FOLD_5: + case IDM_VIEW_FOLD_6: + case IDM_VIEW_FOLD_7: + case IDM_VIEW_FOLD_8: + _pEditView->collapse(id - IDM_VIEW_FOLD - 1, fold_collapse); + break; + + case IDM_VIEW_UNFOLD_1: + case IDM_VIEW_UNFOLD_2: + case IDM_VIEW_UNFOLD_3: + case IDM_VIEW_UNFOLD_4: + case IDM_VIEW_UNFOLD_5: + case IDM_VIEW_UNFOLD_6: + case IDM_VIEW_UNFOLD_7: + case IDM_VIEW_UNFOLD_8: + _pEditView->collapse(id - IDM_VIEW_UNFOLD - 1, fold_uncollapse); + break; + + + case IDM_VIEW_TOOLBAR_REDUCE: + { + toolBarStatusType state = _toolBar.getState(); + + if (state != TB_SMALL) + { + _toolBar.reduce(); + changeToolBarIcons(); + } + } + break; + + case IDM_VIEW_TOOLBAR_ENLARGE: + { + toolBarStatusType state = _toolBar.getState(); + + if (state != TB_LARGE) + { + _toolBar.enlarge(); + changeToolBarIcons(); + } + } + break; + + case IDM_VIEW_TOOLBAR_STANDARD: + { + toolBarStatusType state = _toolBar.getState(); + + if (state != TB_STANDARD) + { + _toolBar.setToUglyIcons(); + } + } + break; + + case IDM_VIEW_REDUCETABBAR : + { + _toReduceTabBar = !_toReduceTabBar; + + //Resize the icon + int iconSize = _toReduceTabBar?12:18; + + //Resize the tab height + int tabHeight = _toReduceTabBar?20:25; + TabCtrl_SetItemSize(_mainDocTab.getHSelf(), 45, tabHeight); + TabCtrl_SetItemSize(_subDocTab.getHSelf(), 45, tabHeight); + _docTabIconList.setIconSize(iconSize); + + //change the font + int stockedFont = _toReduceTabBar?DEFAULT_GUI_FONT:SYSTEM_FONT; + HFONT hf = (HFONT)::GetStockObject(stockedFont); + + if (hf) + { + ::SendMessage(_mainDocTab.getHSelf(), WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE, 0)); + ::SendMessage(_subDocTab.getHSelf(), WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE, 0)); + } + + ::SendMessage(_hSelf, WM_SIZE, 0, 0); + break; + } + + case IDM_VIEW_REFRESHTABAR : + { + ::SendMessage(_hSelf, WM_SIZE, 0, 0); + break; + } + case IDM_VIEW_LOCKTABBAR: + { + bool isDrag = TabBarPlus::doDragNDropOrNot(); + TabBarPlus::doDragNDrop(!isDrag); + //checkMenuItem(IDM_VIEW_LOCKTABBAR, isDrag); + break; + } + + + case IDM_VIEW_DRAWTABBAR_INACIVETAB: + { + TabBarPlus::setDrawInactiveTab(!TabBarPlus::drawInactiveTab()); + //TabBarPlus::setDrawInactiveTab(!TabBarPlus::drawInactiveTab(), _subDocTab.getHSelf()); + break; + } + case IDM_VIEW_DRAWTABBAR_TOPBAR: + { + TabBarPlus::setDrawTopBar(!TabBarPlus::drawTopBar()); + break; + } + + case IDM_VIEW_DRAWTABBAR_CLOSEBOTTUN : + { + TabBarPlus::setDrawTabCloseButton(!TabBarPlus::drawTabCloseButton()); + + // This part is just for updating (redraw) the tabs + { + int tabHeight = TabBarPlus::drawTabCloseButton()?21:20; + TabCtrl_SetItemSize(_mainDocTab.getHSelf(), 45, tabHeight); + TabCtrl_SetItemSize(_subDocTab.getHSelf(), 45, tabHeight); + } + ::SendMessage(_hSelf, WM_SIZE, 0, 0); + break; + } + + case IDM_VIEW_DRAWTABBAR_DBCLK2CLOSE : + { + TabBarPlus::setDbClk2Close(!TabBarPlus::isDbClk2Close()); + break; + } + + case IDM_VIEW_DRAWTABBAR_VERTICAL : + { + TabBarPlus::setVertical(!TabBarPlus::isVertical()); + ::SendMessage(_hSelf, WM_SIZE, 0, 0); + break; + } + + case IDM_VIEW_DRAWTABBAR_MULTILINE : + { + TabBarPlus::setMultiLine(!TabBarPlus::isMultiLine()); + ::SendMessage(_hSelf, WM_SIZE, 0, 0); + break; + } + + case IDM_VIEW_POSTIT : + { + postItToggle(); + } + break; + + case IDM_VIEW_TAB_SPACE: + { + bool isChecked = !(::GetMenuState(_mainMenuHandle, IDM_VIEW_TAB_SPACE, MF_BYCOMMAND) == MF_CHECKED); + ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_EOL, MF_BYCOMMAND | MF_UNCHECKED); + ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_ALL_CHARACTERS, MF_BYCOMMAND | MF_UNCHECKED); + ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_TAB_SPACE, MF_BYCOMMAND | (isChecked?MF_CHECKED:MF_UNCHECKED)); + _toolBar.setCheck(IDM_VIEW_ALL_CHARACTERS, false); + _pEditView->showEOL(false); + _pEditView->showWSAndTab(isChecked); + break; + } + case IDM_VIEW_EOL: + { + bool isChecked = !(::GetMenuState(_mainMenuHandle, IDM_VIEW_EOL, MF_BYCOMMAND) == MF_CHECKED); + ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_TAB_SPACE, MF_BYCOMMAND | MF_UNCHECKED); + ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_EOL, MF_BYCOMMAND | (isChecked?MF_CHECKED:MF_UNCHECKED)); + ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_ALL_CHARACTERS, MF_BYCOMMAND | MF_UNCHECKED); + _toolBar.setCheck(IDM_VIEW_ALL_CHARACTERS, false); + _pEditView->showEOL(isChecked); + _pEditView->showWSAndTab(false); + break; + } + case IDM_VIEW_ALL_CHARACTERS: + { + bool isChecked = !(::GetMenuState(_mainMenuHandle, id, MF_BYCOMMAND) == MF_CHECKED); + ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_EOL, MF_BYCOMMAND | MF_UNCHECKED); + ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_TAB_SPACE, MF_BYCOMMAND | MF_UNCHECKED); + ::CheckMenuItem(_mainMenuHandle, IDM_VIEW_ALL_CHARACTERS, MF_BYCOMMAND | (isChecked?MF_CHECKED:MF_UNCHECKED)); + _pEditView->showInvisibleChars(isChecked); + _toolBar.setCheck(IDM_VIEW_ALL_CHARACTERS, isChecked); + break; + } + + case IDM_VIEW_INDENT_GUIDE: + { + _pEditView->showIndentGuideLine(!_pEditView->isShownIndentGuide()); + _toolBar.setCheck(IDM_VIEW_INDENT_GUIDE, _pEditView->isShownIndentGuide()); + checkMenuItem(IDM_VIEW_INDENT_GUIDE, _pEditView->isShownIndentGuide()); + break; + } + + case IDM_VIEW_WRAP: + { + bool isWraped = !_pEditView->isWrap(); + _pEditView->wrap(isWraped); + _toolBar.setCheck(IDM_VIEW_WRAP, isWraped); + checkMenuItem(IDM_VIEW_WRAP, isWraped); + break; + } + case IDM_VIEW_WRAP_SYMBOL: + { + _pEditView->showWrapSymbol(!_pEditView->isWrapSymbolVisible()); + checkMenuItem(IDM_VIEW_WRAP_SYMBOL, _pEditView->isWrapSymbolVisible()); + break; + } + + case IDM_VIEW_HIDELINES: + { + _pEditView->hideLines(); + break; + } + + case IDM_VIEW_ZOOMIN: + { + _pEditView->execute(SCI_ZOOMIN); + break; + } + case IDM_VIEW_ZOOMOUT: + _pEditView->execute(SCI_ZOOMOUT); + break; + + case IDM_VIEW_ZOOMRESTORE: + //Zoom factor of 0 points means default view + _pEditView->execute(SCI_SETZOOM, 0);//_zoomOriginalValue); + break; + + case IDM_VIEW_SYNSCROLLV: + { + _syncInfo._isSynScollV = !_syncInfo._isSynScollV; + checkMenuItem(IDM_VIEW_SYNSCROLLV, _syncInfo._isSynScollV); + _toolBar.setCheck(IDM_VIEW_SYNSCROLLV, _syncInfo._isSynScollV); + + if (_syncInfo._isSynScollV) + { + int mainCurrentLine = _mainEditView.execute(SCI_GETFIRSTVISIBLELINE); + int subCurrentLine = _subEditView.execute(SCI_GETFIRSTVISIBLELINE); + _syncInfo._line = mainCurrentLine - subCurrentLine; + } + + } + break; + + case IDM_VIEW_SYNSCROLLH: + { + _syncInfo._isSynScollH = !_syncInfo._isSynScollH; + checkMenuItem(IDM_VIEW_SYNSCROLLH, _syncInfo._isSynScollH); + _toolBar.setCheck(IDM_VIEW_SYNSCROLLH, _syncInfo._isSynScollH); + + if (_syncInfo._isSynScollH) + { + int mxoffset = _mainEditView.execute(SCI_GETXOFFSET); + int pixel = int(_mainEditView.execute(SCI_TEXTWIDTH, STYLE_DEFAULT, (LPARAM)"P")); + int mainColumn = mxoffset/pixel; + + int sxoffset = _subEditView.execute(SCI_GETXOFFSET); + pixel = int(_subEditView.execute(SCI_TEXTWIDTH, STYLE_DEFAULT, (LPARAM)"P")); + int subColumn = sxoffset/pixel; + _syncInfo._column = mainColumn - subColumn; + } + } + break; + + case IDM_EXECUTE: + { + bool isFirstTime = !_runDlg.isCreated(); + _runDlg.doDialog(_isRTL); + if (isFirstTime) + changeDlgLang(_runDlg.getHSelf(), "Run"); + + break; + } + + case IDM_FORMAT_TODOS : + case IDM_FORMAT_TOUNIX : + case IDM_FORMAT_TOMAC : + { + Buffer * buf = _pEditView->getCurrentBuffer(); + + int f = int((id == IDM_FORMAT_TODOS)?SC_EOL_CRLF:(id == IDM_FORMAT_TOUNIX)?SC_EOL_LF:SC_EOL_CR); + + buf->setFormat((formatType)f); + _pEditView->execute(SCI_CONVERTEOLS, buf->getFormat()); + break; + } + + case IDM_FORMAT_ANSI : + case IDM_FORMAT_UTF_8 : + case IDM_FORMAT_UCS_2BE : + case IDM_FORMAT_UCS_2LE : + case IDM_FORMAT_AS_UTF_8 : + { + Buffer * buf = _pEditView->getCurrentBuffer(); + + UniMode um; + bool shoulBeDirty = true; + switch (id) + { + case IDM_FORMAT_AS_UTF_8: + shoulBeDirty = buf->getUnicodeMode() != uni8Bit; + um = uniCookie; + break; + + case IDM_FORMAT_UTF_8: + um = uniUTF8; + break; + + case IDM_FORMAT_UCS_2BE: + um = uni16BE; + break; + + case IDM_FORMAT_UCS_2LE: + um = uni16LE; + break; + + default : // IDM_FORMAT_ANSI + shoulBeDirty = buf->getUnicodeMode() != uniCookie; + um = uni8Bit; + } + + if (buf->getEncoding() != -1) + { + if (buf->isDirty()) + { + int answer = ::MessageBox(NULL, TEXT("You should save the current modification.\rAll the saved modifications can not be undone.\r\rContinue?"), TEXT("Save Current Modification"), MB_YESNO); + if (answer == IDYES) + { + fileSave(); + _pEditView->execute(SCI_EMPTYUNDOBUFFER); + } + else + return; + } + + if (_pEditView->execute(SCI_CANUNDO) == TRUE) + { + int answer = ::MessageBox(NULL, TEXT("All the saved modifications can not be undone.\r\rContinue?"), TEXT("Lose Undo Ability Waning"), MB_YESNO); + if (answer == IDYES) + { + // Do nothing + } + else + return; + } + + buf->setEncoding(-1); + + if (um == uni8Bit) + _pEditView->execute(SCI_SETCODEPAGE, CP_ACP); + else + buf->setUnicodeMode(um); + fileReload(); + } + else + { + if (buf->getUnicodeMode() != um) + { + buf->setUnicodeMode(um); + if (shoulBeDirty) + buf->setDirty(true); + } + } + break; + } + + case IDM_FORMAT_WIN_1250 : + case IDM_FORMAT_WIN_1251 : + case IDM_FORMAT_WIN_1252 : + case IDM_FORMAT_WIN_1253 : + case IDM_FORMAT_WIN_1254 : + case IDM_FORMAT_WIN_1255 : + case IDM_FORMAT_WIN_1256 : + case IDM_FORMAT_WIN_1257 : + case IDM_FORMAT_WIN_1258 : + case IDM_FORMAT_ISO_8859_1 : + case IDM_FORMAT_ISO_8859_2 : + case IDM_FORMAT_ISO_8859_3 : + case IDM_FORMAT_ISO_8859_4 : + case IDM_FORMAT_ISO_8859_5 : + case IDM_FORMAT_ISO_8859_6 : + case IDM_FORMAT_ISO_8859_7 : + case IDM_FORMAT_ISO_8859_8 : + case IDM_FORMAT_ISO_8859_9 : + case IDM_FORMAT_ISO_8859_10 : + case IDM_FORMAT_ISO_8859_11 : + case IDM_FORMAT_ISO_8859_13 : + case IDM_FORMAT_ISO_8859_14 : + case IDM_FORMAT_ISO_8859_15 : + case IDM_FORMAT_ISO_8859_16 : + case IDM_FORMAT_DOS_437 : + case IDM_FORMAT_DOS_720 : + case IDM_FORMAT_DOS_737 : + case IDM_FORMAT_DOS_775 : + case IDM_FORMAT_DOS_850 : + case IDM_FORMAT_DOS_852 : + case IDM_FORMAT_DOS_855 : + case IDM_FORMAT_DOS_857 : + case IDM_FORMAT_DOS_858 : + case IDM_FORMAT_DOS_860 : + case IDM_FORMAT_DOS_861 : + case IDM_FORMAT_DOS_862 : + case IDM_FORMAT_DOS_863 : + case IDM_FORMAT_DOS_865 : + case IDM_FORMAT_DOS_866 : + case IDM_FORMAT_DOS_869 : + case IDM_FORMAT_BIG5 : + case IDM_FORMAT_GB2312 : + case IDM_FORMAT_SHIFT_JIS : + case IDM_FORMAT_KOREAN_WIN : + case IDM_FORMAT_EUC_KR : + case IDM_FORMAT_TIS_620 : + case IDM_FORMAT_MAC_CYRILLIC : + case IDM_FORMAT_KOI8U_CYRILLIC : + case IDM_FORMAT_KOI8R_CYRILLIC : + { + int index = id - IDM_FORMAT_ENCODE; + + EncodingMapper *em = EncodingMapper::getInstance(); + int encoding = em->getEncodingFromIndex(index); + if (encoding == -1) + { + //printStr(TEXT("Encoding problem. Command is not added in encoding_table?")); + return; + } + + Buffer * buf = _pEditView->getCurrentBuffer(); + if (buf->isDirty()) + { + int answer = ::MessageBox(NULL, TEXT("You should save the current modification.\rAll the saved modifications can not be undone.\r\rContinue?"), TEXT("Save Current Modification"), MB_YESNO); + if (answer == IDYES) + { + fileSave(); + _pEditView->execute(SCI_EMPTYUNDOBUFFER); + } + else + return; + } + + if (_pEditView->execute(SCI_CANUNDO) == TRUE) + { + int answer = ::MessageBox(NULL, TEXT("All the saved modifications can not be undone.\r\rContinue?"), TEXT("Lose Undo Ability Waning"), MB_YESNO); + if (answer == IDYES) + { + // Do nothing + } + else + return; + } + + if (!buf->isDirty()) + { + Buffer *buf = _pEditView->getCurrentBuffer(); + buf->setEncoding(encoding); + buf->setUnicodeMode(uniCookie); + fileReload(); + } + break; + } + + + case IDM_FORMAT_CONV2_ANSI: + case IDM_FORMAT_CONV2_AS_UTF_8: + case IDM_FORMAT_CONV2_UTF_8: + case IDM_FORMAT_CONV2_UCS_2BE: + case IDM_FORMAT_CONV2_UCS_2LE: + { + int idEncoding = -1; + Buffer *buf = _pEditView->getCurrentBuffer(); + UniMode um = buf->getUnicodeMode(); + int encoding = buf->getEncoding(); + + switch(id) + { + case IDM_FORMAT_CONV2_ANSI: + { + if (encoding != -1) + { + // do nothing + return; + } + else + { + if (um == uni8Bit) + return; + + // set scintilla to ANSI + idEncoding = IDM_FORMAT_ANSI; + } + break; + } + case IDM_FORMAT_CONV2_AS_UTF_8: + { + if (encoding != -1) + { + buf->setDirty(true); + buf->setUnicodeMode(uniCookie); + buf->setEncoding(-1); + return; + } + + idEncoding = IDM_FORMAT_AS_UTF_8; + if (um == uniCookie) + return; + + if (um != uni8Bit) + { + ::SendMessage(_hSelf, WM_COMMAND, idEncoding, 0); + _pEditView->execute(SCI_EMPTYUNDOBUFFER); + return; + } + + break; + } + case IDM_FORMAT_CONV2_UTF_8: + { + if (encoding != -1) + { + buf->setDirty(true); + buf->setUnicodeMode(uniUTF8); + buf->setEncoding(-1); + return; + } + + idEncoding = IDM_FORMAT_UTF_8; + if (um == uniUTF8) + return; + + if (um != uni8Bit) + { + ::SendMessage(_hSelf, WM_COMMAND, idEncoding, 0); + _pEditView->execute(SCI_EMPTYUNDOBUFFER); + return; + } + break; + } + + case IDM_FORMAT_CONV2_UCS_2BE: + { + if (encoding != -1) + { + buf->setDirty(true); + buf->setUnicodeMode(uni16BE); + buf->setEncoding(-1); + return; + } + + idEncoding = IDM_FORMAT_UCS_2BE; + if (um == uni16BE) + return; + + if (um != uni8Bit) + { + ::SendMessage(_hSelf, WM_COMMAND, idEncoding, 0); + _pEditView->execute(SCI_EMPTYUNDOBUFFER); + return; + } + break; + } + + case IDM_FORMAT_CONV2_UCS_2LE: + { + if (encoding != -1) + { + buf->setDirty(true); + buf->setUnicodeMode(uni16LE); + buf->setEncoding(-1); + return; + } + + idEncoding = IDM_FORMAT_UCS_2LE; + if (um == uni16LE) + return; + if (um != uni8Bit) + { + ::SendMessage(_hSelf, WM_COMMAND, idEncoding, 0); + _pEditView->execute(SCI_EMPTYUNDOBUFFER); + return; + } + break; + } + } + + if (idEncoding != -1) + { + // Save the current clipboard content + ::OpenClipboard(_hSelf); + HANDLE clipboardData = ::GetClipboardData(CF_TEXT); + int len = ::GlobalSize(clipboardData); + LPVOID clipboardDataPtr = ::GlobalLock(clipboardData); + + HANDLE allocClipboardData = ::GlobalAlloc(GMEM_MOVEABLE, len); + LPVOID clipboardData2 = ::GlobalLock(allocClipboardData); + + ::memcpy(clipboardData2, clipboardDataPtr, len); + ::GlobalUnlock(clipboardData); + ::GlobalUnlock(allocClipboardData); + ::CloseClipboard(); + + _pEditView->saveCurrentPos(); + + // Cut all text + int docLen = _pEditView->getCurrentDocLen(); + _pEditView->execute(SCI_COPYRANGE, 0, docLen); + _pEditView->execute(SCI_CLEARALL); + + // Change to the proper buffer, save buffer status + + ::SendMessage(_hSelf, WM_COMMAND, idEncoding, 0); + + // Paste the texte, restore buffer status + _pEditView->execute(SCI_PASTE); + _pEditView->restoreCurrentPos(); + + // Restore the previous clipboard data + ::OpenClipboard(_hSelf); + ::EmptyClipboard(); + ::SetClipboardData(CF_TEXT, clipboardData2); + ::CloseClipboard(); + + //Do not free anything, EmptyClipboard does that + _pEditView->execute(SCI_EMPTYUNDOBUFFER); + } + break; + } + /* + case (IDM_FORMAT_WIN_1250 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_WIN_1251 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_WIN_1252 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_WIN_1253 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_WIN_1254 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_WIN_1255 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_WIN_1256 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_WIN_1257 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_WIN_1258 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_1 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_2 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_3 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_4 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_5 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_6 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_7 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_8 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_9 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_10 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_11 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_13 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_14 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_15 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_ISO_8859_16 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_437 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_720 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_737 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_775 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_850 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_852 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_855 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_857 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_858 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_860 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_861 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_862 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_863 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_865 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_866 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_DOS_869 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_BIG5 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_GB2312 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_SHIFT_JIS + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_KOREAN_WIN + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_EUC_KR + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_TIS_620 + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_MAC_CYRILLIC + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_KOI8U_CYRILLIC + IDM_FORMAT_CONVERT): + case (IDM_FORMAT_KOI8R_CYRILLIC + IDM_FORMAT_CONVERT): + { + int index = id - IDM_FORMAT_CONVERT - IDM_FORMAT_ENCODE; + + EncodingMapper *em = EncodingMapper::getInstance(); + int newEncoding = em->getEncodingFromIndex(index); + if (newEncoding == -1) + { + return; + } + + Buffer *buf = _pEditView->getCurrentBuffer(); + UniMode um = buf->getUnicodeMode(); + int oldEncoding = buf->getEncoding(); + + if (oldEncoding == newEncoding) + return; + + if (oldEncoding != -1) + { + //do waring + } + buf->setEncoding(newEncoding); + + break; + } +*/ + case IDM_SETTING_TAB_REPLCESPACE: + case IDM_SETTING_TAB_SIZE: + { + _pEditView->setTabSettings(_pEditView->getCurrentBuffer()->getCurrentLang()); + break; + } + + case IDM_SETTING_AUTOCNBCHAR: + { + const int NB_MIN_CHAR = 1; + const int NB_MAX_CHAR = 9; + + ValueDlg valDlg; + NppGUI & nppGUI = (NppGUI &)((NppParameters::getInstance())->getNppGUI()); + valDlg.init(_hInst, _preference.getHSelf(), nppGUI._autocFromLen, TEXT("Nb char : ")); + POINT p; + ::GetCursorPos(&p); + ::ScreenToClient(_hParent, &p); + int size = valDlg.doDialog(p, _isRTL); + + if (size != -1) + { + if (size > NB_MAX_CHAR) + size = NB_MAX_CHAR; + else if (size < NB_MIN_CHAR) + size = NB_MIN_CHAR; + + nppGUI._autocFromLen = size; + } + break; + } + + case IDM_SETTING_HISTORY_SIZE : + { + ValueDlg nbHistoryDlg; + NppParameters *pNppParam = NppParameters::getInstance(); + nbHistoryDlg.init(_hInst, _preference.getHSelf(), pNppParam->getNbMaxFile(), TEXT("Max File : ")); + POINT p; + ::GetCursorPos(&p); + ::ScreenToClient(_hParent, &p); + int size = nbHistoryDlg.doDialog(p, _isRTL); + + if (size != -1) + { + if (size > NB_MAX_LRF_FILE) + size = NB_MAX_LRF_FILE; + pNppParam->setNbMaxFile(size); + _lastRecentFileList.setUserMaxNbLRF(size); + } + break; + } + + case IDM_SETTING_IMPORTPLUGIN : + { + // get plugin source path + TCHAR *extFilterName = TEXT("Notepad++ plugin"); + TCHAR *extFilter = TEXT(".dll"); + TCHAR *destDir = TEXT("plugins"); + + vector copiedFiles = addNppComponents(destDir, extFilterName, extFilter); + + // load plugin + vector dll2Remove; + for (size_t i = 0 ; i < copiedFiles.size() ; i++) + { + int index = _pluginsManager.loadPlugin(copiedFiles[i].c_str(), dll2Remove); + if (_pluginsManager.getMenuHandle()) + _pluginsManager.addInMenuFromPMIndex(index); + } + if (!_pluginsManager.getMenuHandle()) + _pluginsManager.setMenu(_mainMenuHandle, NULL); + ::DrawMenuBar(_hSelf); + break; + } + + case IDM_SETTING_IMPORTSTYLETHEMS : + { + // get plugin source path + TCHAR *extFilterName = TEXT("Notepad++ style theme"); + TCHAR *extFilter = TEXT(".xml"); + TCHAR *destDir = TEXT("themes"); + + // load styler + NppParameters *pNppParams = NppParameters::getInstance(); + ThemeSwitcher & themeSwitcher = pNppParams->getThemeSwitcher(); + + vector copiedFiles = addNppComponents(destDir, extFilterName, extFilter); + for (size_t i = 0 ; i < copiedFiles.size() ; i++) + { + generic_string themeName(themeSwitcher.getThemeFromXmlFileName(copiedFiles[i].c_str())); + if (!themeSwitcher.themeNameExists(themeName.c_str())) + { + themeSwitcher.addThemeFromXml(copiedFiles[i].c_str()); + if (_configStyleDlg.isCreated()) + { + _configStyleDlg.addLastThemeEntry(); + } + } + } + break; + } + + case IDM_SETTING_SHORTCUT_MAPPER : + { + ShortcutMapper shortcutMapper; + shortcutMapper.init(_hInst, _hSelf); + changeShortcutmapperLang(&shortcutMapper); + shortcutMapper.doDialog(_isRTL); + shortcutMapper.destroy(); + break; + } + + case IDM_SETTING_PREFERECE : + { + bool isFirstTime = !_preference.isCreated(); + _preference.doDialog(_isRTL); + + if (isFirstTime) + { + changePrefereceDlgLang(); + } + break; + } + + case IDM_VIEW_GOTO_ANOTHER_VIEW: + docGotoAnotherEditView(TransferMove); + checkSyncState(); + break; + + case IDM_VIEW_CLONE_TO_ANOTHER_VIEW: + docGotoAnotherEditView(TransferClone); + checkSyncState(); + break; + + case IDM_VIEW_GOTO_NEW_INSTANCE : + docOpenInNewInstance(TransferMove); + break; + + case IDM_VIEW_LOAD_IN_NEW_INSTANCE: + docOpenInNewInstance(TransferClone); + break; + + case IDM_VIEW_SWITCHTO_OTHER_VIEW: + { + int view_to_focus; + HWND wnd = GetFocus(); + if (_pEditView->getHSelf() == wnd) + { + view_to_focus = otherView(); + if (!viewVisible(view_to_focus)) view_to_focus = _activeView; + } + else + { + view_to_focus = currentView(); + } + switchEditViewTo(view_to_focus); + break; + } + + case IDM_ABOUT: + { + bool isFirstTime = !_aboutDlg.isCreated(); + _aboutDlg.doDialog(); + if (isFirstTime && _nativeLangA) + { + if (_nativeLangEncoding == NPP_CP_BIG5) + { + char *authorName = "«J¤µ§^"; + HWND hItem = ::GetDlgItem(_aboutDlg.getHSelf(), IDC_AUTHOR_NAME); +#ifdef UNICODE + WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance(); + const wchar_t *authorNameW = wmc->char2wchar(authorName, NPP_CP_BIG5); + ::SetWindowText(hItem, authorNameW); +#else + ::SetWindowText(hItem, authorName); +#endif + } + } + break; + } + + case IDM_HELP : + { + generic_string tmp((NppParameters::getInstance())->getNppPath()); + generic_string nppHelpPath = tmp.c_str(); + + nppHelpPath += TEXT("\\NppHelp.chm"); + if (::PathFileExists(nppHelpPath.c_str())) + ::ShellExecute(NULL, TEXT("open"), nppHelpPath.c_str(), NULL, NULL, SW_SHOWNORMAL); + else + { + generic_string msg = nppHelpPath; + msg += TEXT("\rdoesn't exist. Please download it on Notepad++ site."); + ::MessageBox(_hSelf, msg.c_str(), TEXT("File does not exist"), MB_OK); + } + } + break; + + case IDM_HOMESWEETHOME : + { + ::ShellExecute(NULL, TEXT("open"), TEXT("http://notepad-plus.sourceforge.net/"), NULL, NULL, SW_SHOWNORMAL); + break; + } + case IDM_PROJECTPAGE : + { + ::ShellExecute(NULL, TEXT("open"), TEXT("http://sourceforge.net/projects/notepad-plus/"), NULL, NULL, SW_SHOWNORMAL); + break; + } + + case IDM_ONLINEHELP: + { + ::ShellExecute(NULL, TEXT("open"), TEXT("http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Main_Page"), NULL, NULL, SW_SHOWNORMAL); + break; + } + + case IDM_FORUM: + { + ::ShellExecute(NULL, TEXT("open"), TEXT("http://sourceforge.net/forum/?group_id=95717"), NULL, NULL, SW_SHOWNORMAL); + break; + } + + case IDM_PLUGINSHOME: + { + ::ShellExecute(NULL, TEXT("open"), TEXT("http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Plugin_Central"), NULL, NULL, SW_SHOWNORMAL); + break; + } + + case IDM_UPDATE_NPP : + { + generic_string updaterDir = (NppParameters::getInstance())->getNppPath(); + PathAppend(updaterDir ,TEXT("updater")); + + generic_string updaterFullPath = updaterDir; + PathAppend(updaterFullPath, TEXT("gup.exe")); + + generic_string param = TEXT("-verbose -v"); + param += VERSION_VALUE; + Process updater(updaterFullPath.c_str(), param.c_str(), updaterDir.c_str()); + updater.run(); + break; + } + + case IDM_EDIT_AUTOCOMPLETE : + showAutoComp(); + break; + + case IDM_EDIT_AUTOCOMPLETE_CURRENTFILE : + autoCompFromCurrentFile(); + break; + + case IDM_EDIT_FUNCCALLTIP : + showFunctionComp(); + break; + + case IDM_LANGSTYLE_CONFIG_DLG : + { + bool isFirstTime = !_configStyleDlg.isCreated(); + _configStyleDlg.doDialog(_isRTL); + if (isFirstTime) + changeConfigLang(); + break; + } + + case IDM_LANG_C : + case IDM_LANG_CPP : + case IDM_LANG_JAVA : + case IDM_LANG_CS : + case IDM_LANG_HTML : + case IDM_LANG_XML : + case IDM_LANG_JS : + case IDM_LANG_PHP : + case IDM_LANG_ASP : + case IDM_LANG_CSS : + case IDM_LANG_LUA : + case IDM_LANG_PERL : + case IDM_LANG_PYTHON : + case IDM_LANG_PASCAL : + case IDM_LANG_BATCH : + case IDM_LANG_OBJC : + case IDM_LANG_VB : + case IDM_LANG_SQL : + case IDM_LANG_ASCII : + case IDM_LANG_TEXT : + case IDM_LANG_RC : + case IDM_LANG_MAKEFILE : + case IDM_LANG_INI : + case IDM_LANG_TEX : + case IDM_LANG_FORTRAN : + case IDM_LANG_SH : + case IDM_LANG_FLASH : + case IDM_LANG_NSIS : + case IDM_LANG_TCL : + case IDM_LANG_LISP : + case IDM_LANG_SCHEME : + case IDM_LANG_ASM : + case IDM_LANG_DIFF : + case IDM_LANG_PROPS : + case IDM_LANG_PS: + case IDM_LANG_RUBY: + case IDM_LANG_SMALLTALK: + case IDM_LANG_VHDL : + case IDM_LANG_KIX : + case IDM_LANG_CAML : + case IDM_LANG_ADA : + case IDM_LANG_VERILOG : + case IDM_LANG_MATLAB : + case IDM_LANG_HASKELL : + case IDM_LANG_AU3 : + case IDM_LANG_INNO : + case IDM_LANG_CMAKE : + case IDM_LANG_YAML : + case IDM_LANG_COBOL : + case IDM_LANG_D : + case IDM_LANG_GUI4CLI : + case IDM_LANG_POWERSHELL : + case IDM_LANG_R : + case IDM_LANG_JSP : + case IDM_LANG_USER : + { + setLanguage(menuID2LangType(id)); + } + break; + + case IDC_PREV_DOC : + case IDC_NEXT_DOC : + { + int nbDoc = viewVisible(MAIN_VIEW)?_mainDocTab.nbItem():0; + nbDoc += viewVisible(SUB_VIEW)?_subDocTab.nbItem():0; + + bool doTaskList = ((NppParameters::getInstance())->getNppGUI())._doTaskList; + if (nbDoc > 1) + { + bool direction = (id == IDC_NEXT_DOC)?dirDown:dirUp; + + if (!doTaskList) + { + activateNextDoc(direction); + } + else + { + TaskListDlg tld; + HIMAGELIST hImgLst = _docTabIconList.getHandle(); + tld.init(_hInst, _hSelf, hImgLst, direction); + tld.doDialog(); + } + } + _linkTriggered = true; + } + break; + + case IDM_OPEN_ALL_RECENT_FILE : { + BufferID lastOne = BUFFER_INVALID; + int size = _lastRecentFileList.getSize(); + for (int i = size - 1; i >= 0; i--) + { + BufferID test = doOpen(_lastRecentFileList.getIndex(i).c_str()); + if (test != BUFFER_INVALID) + lastOne = test; + } + if (lastOne != BUFFER_INVALID) { + switchToFile(lastOne); + } + break; } + + case IDM_CLEAN_RECENT_FILE_LIST : + _lastRecentFileList.clear(); + break; + + case IDM_EDIT_RTL : + case IDM_EDIT_LTR : + { + long exStyle = ::GetWindowLongPtr(_pEditView->getHSelf(), GWL_EXSTYLE); + exStyle = (id == IDM_EDIT_RTL)?exStyle|WS_EX_LAYOUTRTL:exStyle&(~WS_EX_LAYOUTRTL); + ::SetWindowLongPtr(_pEditView->getHSelf(), GWL_EXSTYLE, exStyle); + _pEditView->redraw(); + } + break; + + case IDM_WINDOW_WINDOWS : + { + WindowsDlg _windowsDlg; + _windowsDlg.init(_hInst, _hSelf, _pDocTab); + + TiXmlNodeA *dlgNode = NULL; + if (_nativeLangA) + { + dlgNode = _nativeLangA->FirstChild("Dialog"); + if (dlgNode) + dlgNode = searchDlgNode(dlgNode, "Window"); + } + _windowsDlg.doDialog(dlgNode); + } + break; + + + case IDM_SYSTRAYPOPUP_NEWDOC: + { + NppGUI & nppGUI = (NppGUI &)((NppParameters::getInstance())->getNppGUI()); + ::ShowWindow(_hSelf, nppGUI._isMaximized?SW_MAXIMIZE:SW_SHOW); + fileNew(); + } + break; + + case IDM_SYSTRAYPOPUP_ACTIVATE : + { + NppGUI & nppGUI = (NppGUI &)((NppParameters::getInstance())->getNppGUI()); + ::ShowWindow(_hSelf, nppGUI._isMaximized?SW_MAXIMIZE:SW_SHOW); + } + break; + + case IDM_SYSTRAYPOPUP_NEW_AND_PASTE: + { + NppGUI & nppGUI = (NppGUI &)((NppParameters::getInstance())->getNppGUI()); + ::ShowWindow(_hSelf, nppGUI._isMaximized?SW_MAXIMIZE:SW_SHOW); + BufferID bufferID = _pEditView->getCurrentBufferID(); + Buffer * buf = MainFileManager->getBufferByID(bufferID); + if (!buf->isUntitled() || buf->docLength() != 0) + { + fileNew(); + } + command(IDM_EDIT_PASTE); + } + break; + + case IDM_SYSTRAYPOPUP_OPENFILE: + { + NppGUI & nppGUI = (NppGUI &)((NppParameters::getInstance())->getNppGUI()); + ::ShowWindow(_hSelf, nppGUI._isMaximized?SW_MAXIMIZE:SW_SHOW); + fileOpen(); + } + break; + + case IDM_SYSTRAYPOPUP_CLOSE: + { + _isPrelaunch = false; + _pTrayIco->doTrayIcon(REMOVE); + if (!::IsWindowVisible(_hSelf)) + ::SendMessage(_hSelf, WM_CLOSE, 0,0); + } + break; + + default : + if (id > IDM_FILEMENU_LASTONE && id < (IDM_FILEMENU_LASTONE + _lastRecentFileList.getMaxNbLRF() + 1)) + { + BufferID lastOpened = doOpen(_lastRecentFileList.getItem(id).c_str()); + if (lastOpened != BUFFER_INVALID) { + switchToFile(lastOpened); + } + } + else if ((id > IDM_LANG_USER) && (id < IDM_LANG_USER_LIMIT)) + { + TCHAR langName[langNameLenMax]; + ::GetMenuString(_mainMenuHandle, id, langName, langNameLenMax, MF_BYCOMMAND); + _pEditView->getCurrentBuffer()->setLangType(L_USER, langName); + } + else if ((id >= IDM_LANG_EXTERNAL) && (id <= IDM_LANG_EXTERNAL_LIMIT)) + { + setLanguage((LangType)(id - IDM_LANG_EXTERNAL + L_EXTERNAL)); + } + else if ((id >= ID_MACRO) && (id < ID_MACRO_LIMIT)) + { + int i = id - ID_MACRO; + vector & theMacros = (NppParameters::getInstance())->getMacroList(); + Macro macro = theMacros[i].getMacro(); + _pEditView->execute(SCI_BEGINUNDOACTION); + + for (Macro::iterator step = macro.begin(); step != macro.end(); step++) + step->PlayBack(this, _pEditView); + + _pEditView->execute(SCI_ENDUNDOACTION); + + } + else if ((id >= ID_USER_CMD) && (id < ID_USER_CMD_LIMIT)) + { + int i = id - ID_USER_CMD; + vector & theUserCommands = (NppParameters::getInstance())->getUserCommandList(); + UserCommand ucmd = theUserCommands[i]; + + Command cmd(ucmd.getCmd()); + cmd.run(_hSelf); + } + else if ((id >= ID_PLUGINS_CMD) && (id < ID_PLUGINS_CMD_LIMIT)) + { + int i = id - ID_PLUGINS_CMD; + _pluginsManager.runPluginCommand(i); + } +/*UNLOAD + else if ((id >= ID_PLUGINS_REMOVING) && (id < ID_PLUGINS_REMOVING_END)) + { + int i = id - ID_PLUGINS_REMOVING; + _pluginsManager.unloadPlugin(i, _hSelf); + } +*/ + else if ((id >= IDM_WINDOW_MRU_FIRST) && (id <= IDM_WINDOW_MRU_LIMIT)) + { + activateDoc(id-IDM_WINDOW_MRU_FIRST); + } + } + + if (_recordingMacro) + switch (id) + { + case IDM_FILE_NEW : + case IDM_FILE_CLOSE : + case IDM_FILE_CLOSEALL : + case IDM_FILE_CLOSEALL_BUT_CURRENT : + case IDM_FILE_SAVE : + case IDM_FILE_SAVEALL : + case IDM_FILE_RELOAD: + case IDM_EDIT_UNDO: + case IDM_EDIT_REDO: + case IDM_EDIT_CUT: + case IDM_EDIT_COPY: + //case IDM_EDIT_PASTE: + case IDM_EDIT_DELETE: + case IDM_SEARCH_FINDNEXT : + case IDM_SEARCH_FINDPREV : + case IDM_SEARCH_SETANDFINDNEXT : + case IDM_SEARCH_SETANDFINDPREV : + case IDM_SEARCH_GOTOMATCHINGBRACE : + case IDM_SEARCH_TOGGLE_BOOKMARK : + case IDM_SEARCH_NEXT_BOOKMARK: + case IDM_SEARCH_PREV_BOOKMARK: + case IDM_SEARCH_CLEAR_BOOKMARKS: + case IDM_EDIT_SELECTALL: + case IDM_EDIT_INS_TAB: + case IDM_EDIT_RMV_TAB: + case IDM_EDIT_DUP_LINE: + case IDM_EDIT_TRANSPOSE_LINE: + case IDM_EDIT_SPLIT_LINES: + case IDM_EDIT_JOIN_LINES: + case IDM_EDIT_LINE_UP: + case IDM_EDIT_LINE_DOWN: + case IDM_EDIT_UPPERCASE: + case IDM_EDIT_LOWERCASE: + case IDM_EDIT_BLOCK_COMMENT: + case IDM_EDIT_BLOCK_COMMENT_SET: + case IDM_EDIT_BLOCK_UNCOMMENT: + case IDM_EDIT_STREAM_COMMENT: + case IDM_EDIT_TRIMTRAILING: + case IDM_EDIT_SETREADONLY : + case IDM_EDIT_FULLPATHTOCLIP : + case IDM_EDIT_FILENAMETOCLIP : + case IDM_EDIT_CURRENTDIRTOCLIP : + case IDM_EDIT_CLEARREADONLY : + case IDM_EDIT_RTL : + case IDM_EDIT_LTR : + case IDM_VIEW_FULLSCREENTOGGLE : + case IDM_VIEW_ALWAYSONTOP : + case IDM_VIEW_WRAP : + case IDM_VIEW_FOLD_CURRENT : + case IDM_VIEW_UNFOLD_CURRENT : + case IDM_VIEW_TOGGLE_FOLDALL: + case IDM_VIEW_TOGGLE_UNFOLDALL: + case IDM_VIEW_FOLD_1: + case IDM_VIEW_FOLD_2: + case IDM_VIEW_FOLD_3: + case IDM_VIEW_FOLD_4: + case IDM_VIEW_FOLD_5: + case IDM_VIEW_FOLD_6: + case IDM_VIEW_FOLD_7: + case IDM_VIEW_FOLD_8: + case IDM_VIEW_UNFOLD_1: + case IDM_VIEW_UNFOLD_2: + case IDM_VIEW_UNFOLD_3: + case IDM_VIEW_UNFOLD_4: + case IDM_VIEW_UNFOLD_5: + case IDM_VIEW_UNFOLD_6: + case IDM_VIEW_UNFOLD_7: + case IDM_VIEW_UNFOLD_8: + case IDM_VIEW_GOTO_ANOTHER_VIEW: + case IDM_VIEW_SYNSCROLLV: + case IDM_VIEW_SYNSCROLLH: + case IDC_PREV_DOC : + case IDC_NEXT_DOC : + case IDM_SEARCH_GOPREVMARKER1 : + case IDM_SEARCH_GOPREVMARKER2 : + case IDM_SEARCH_GOPREVMARKER3 : + case IDM_SEARCH_GOPREVMARKER4 : + case IDM_SEARCH_GOPREVMARKER5 : + case IDM_SEARCH_GOPREVMARKER_DEF: + case IDM_SEARCH_GONEXTMARKER1 : + case IDM_SEARCH_GONEXTMARKER2 : + case IDM_SEARCH_GONEXTMARKER3 : + case IDM_SEARCH_GONEXTMARKER4 : + case IDM_SEARCH_GONEXTMARKER5 : + case IDM_SEARCH_GONEXTMARKER_DEF: + case IDM_SEARCH_VOLATILE_FINDNEXT: + case IDM_SEARCH_VOLATILE_FINDPREV: + case IDM_SEARCH_CUTMARKEDLINES : + case IDM_SEARCH_COPYMARKEDLINES : + case IDM_SEARCH_PASTEMARKEDLINES : + case IDM_SEARCH_DELETEMARKEDLINES: + case IDM_SEARCH_MARKALLEXT1 : + case IDM_SEARCH_UNMARKALLEXT1 : + case IDM_SEARCH_MARKALLEXT2 : + case IDM_SEARCH_UNMARKALLEXT2 : + case IDM_SEARCH_MARKALLEXT3 : + case IDM_SEARCH_UNMARKALLEXT3 : + case IDM_SEARCH_MARKALLEXT4 : + case IDM_SEARCH_UNMARKALLEXT4 : + case IDM_SEARCH_MARKALLEXT5 : + case IDM_SEARCH_UNMARKALLEXT5 : + case IDM_SEARCH_CLEARALLMARKS : + _macro.push_back(recordedMacroStep(id)); + break; + } +} diff --git a/PowerEditor/src/WinControls/TaskList/TaskListDlg.h b/PowerEditor/src/WinControls/TaskList/TaskListDlg.h index f2d27974..95f82701 100644 --- a/PowerEditor/src/WinControls/TaskList/TaskListDlg.h +++ b/PowerEditor/src/WinControls/TaskList/TaskListDlg.h @@ -34,9 +34,6 @@ #include "Notepad_plus_msgs.h" #endif //NOTEPAD_PLUS_MSGS_H -const bool dirUp = true; -const bool dirDown = false; - #define TASKLIST_USER (WM_USER + 8000) #define WM_GETTASKLISTINFO (TASKLIST_USER + 01) diff --git a/PowerEditor/visual.net/notepadPlus.vcproj b/PowerEditor/visual.net/notepadPlus.vcproj index 1267641a..5d8a5ead 100644 --- a/PowerEditor/visual.net/notepadPlus.vcproj +++ b/PowerEditor/visual.net/notepadPlus.vcproj @@ -498,6 +498,10 @@ RelativePath="..\src\Notepad_plus.cpp" > + +