2012-04-15 16:54:38 +00:00
// This file is part of Notepad++ project
// Copyright (C)2003 Don HO <don.h@free.fr>
2010-01-29 23:52:47 +00:00
//
2012-04-15 16:54:38 +00:00
// 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.
2010-01-29 23:52:47 +00:00
//
2012-04-15 16:54:38 +00:00
// Note that the GPL places important restrictions on "derived works", yet
2015-08-06 09:03:57 +00:00
// it does not provide a detailed definition of that term. To avoid
// misunderstandings, we consider an application to constitute a
2012-04-15 16:54:38 +00:00
// "derivative work" for the purpose of this license if it does any of the
2015-08-06 09:03:57 +00:00
// following:
2012-04-15 16:54:38 +00:00
// 1. Integrates source code from Notepad++.
// 2. Integrates/includes/aggregates Notepad++ into a proprietary executable
// installer, such as those produced by InstallShield.
// 3. Links to a library or executes a program that does any of the above.
2010-01-29 23:52:47 +00:00
//
2012-04-15 16:54:38 +00:00
// 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.
2015-06-02 16:01:47 +00:00
# include <memory>
# include <shlwapi.h>
2010-03-26 00:22:14 +00:00
# include "Notepad_plus_Window.h"
2010-01-29 23:52:47 +00:00
# include "EncodingMapper.h"
# include "ShortcutMapper.h"
# include "TaskListDlg.h"
2011-04-20 21:45:18 +00:00
# include "clipboardFormats.h"
2011-06-13 01:24:00 +00:00
# include "VerticalFileSwitcher.h"
2012-03-04 18:04:36 +00:00
# include "documentMap.h"
2013-06-04 23:46:24 +00:00
# include "functionListPanel.h"
2016-02-08 00:34:33 +00:00
# include "fileBrowser.h"
2015-05-17 17:18:43 +00:00
# include "Sorters.h"
2016-03-20 01:25:19 +00:00
# include "verifySignedfile.h"
2017-01-01 17:28:25 +00:00
# include "md5.h"
2018-10-24 07:45:35 +00:00
# include "sha-256.h"
2011-03-11 00:57:06 +00:00
2015-05-31 20:40:07 +00:00
using namespace std ;
2014-06-12 23:30:28 +00:00
2019-08-25 12:58:57 +00:00
std : : mutex command_mutex ;
2018-10-24 07:45:35 +00:00
2010-08-15 18:52:55 +00:00
void Notepad_plus : : macroPlayback ( Macro macro )
{
2016-11-10 14:50:20 +00:00
_playingBackMacro = true ;
2010-08-15 18:52:55 +00:00
_pEditView - > execute ( SCI_BEGINUNDOACTION ) ;
2013-07-07 21:33:19 +00:00
for ( Macro : : iterator step = macro . begin ( ) ; step ! = macro . end ( ) ; + + step )
2010-08-15 18:52:55 +00:00
{
2019-02-24 10:34:27 +00:00
if ( step - > isScintillaMacro ( ) )
2010-08-15 18:52:55 +00:00
step - > PlayBack ( this - > _pPublicInterface , _pEditView ) ;
else
2016-06-05 18:29:21 +00:00
_findReplaceDlg . execSavedCommand ( step - > _message , step - > _lParameter , step - > _sParameter ) ;
2010-08-15 18:52:55 +00:00
}
_pEditView - > execute ( SCI_ENDUNDOACTION ) ;
2016-11-10 14:50:20 +00:00
_playingBackMacro = false ;
2010-08-15 18:52:55 +00:00
}
2010-01-29 23:52:47 +00:00
2016-11-11 17:11:19 +00:00
2015-08-06 09:03:57 +00:00
void Notepad_plus : : command ( int id )
2010-01-29 23:52:47 +00:00
{
switch ( id )
{
case IDM_FILE_NEW :
2011-05-19 21:19:05 +00:00
{
2011-09-20 23:55:35 +00:00
fileNew ( ) ;
2011-05-19 21:19:05 +00:00
}
break ;
2010-01-29 23:52:47 +00:00
case IDM_FILE_OPEN :
2011-05-19 21:19:05 +00:00
{
2011-07-15 01:00:05 +00:00
fileOpen ( ) ;
2011-05-19 21:19:05 +00:00
}
break ;
2010-01-29 23:52:47 +00:00
2013-12-07 01:43:35 +00:00
case IDM_FILE_OPEN_FOLDER :
{
2016-03-29 13:49:58 +00:00
Command cmd ( TEXT ( " explorer /select, \" $(FULL_CURRENT_PATH) \ " " ) ) ;
2013-12-07 01:43:35 +00:00
cmd . run ( _pPublicInterface - > getHSelf ( ) ) ;
}
break ;
case IDM_FILE_OPEN_CMD :
{
2019-08-06 10:01:04 +00:00
Command cmd ( NppParameters : : getInstance ( ) . getNppGUI ( ) . _commandLineInterpreter . c_str ( ) ) ;
2019-03-10 22:27:05 +00:00
cmd . run ( _pPublicInterface - > getHSelf ( ) , TEXT ( " $(CURRENT_DIRECTORY) " ) ) ;
2013-12-07 01:43:35 +00:00
}
break ;
2016-03-19 15:15:21 +00:00
2017-07-30 07:10:36 +00:00
case IDM_FILE_OPEN_DEFAULT_VIEWER :
{
// Opens file in its default viewer.
// Has the same effect as double– clicking this file in Windows Explorer.
BufferID buf = _pEditView - > getCurrentBufferID ( ) ;
HINSTANCE res = : : ShellExecute ( NULL , TEXT ( " open " ) , buf - > getFullPathName ( ) , NULL , NULL , SW_SHOW ) ;
// As per MSDN (https://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx)
// If the function succeeds, it returns a value greater than 32.
// If the function fails, it returns an error value that indicates the cause of the failure.
2018-06-02 23:55:56 +00:00
int retResult = static_cast < int > ( reinterpret_cast < INT_PTR > ( res ) ) ;
2017-07-30 07:10:36 +00:00
if ( retResult < = 32 )
{
generic_string errorMsg ;
errorMsg + = GetLastErrorAsString ( retResult ) ;
errorMsg + = TEXT ( " An attempt was made to execute the below command. " ) ;
errorMsg + = TEXT ( " \n ---------------------------------------------------------- " ) ;
errorMsg + = TEXT ( " \n Command: " ) ;
errorMsg + = buf - > getFullPathName ( ) ;
errorMsg + = TEXT ( " \n Error Code: " ) ;
errorMsg + = intToString ( retResult ) ;
errorMsg + = TEXT ( " \n ---------------------------------------------------------- " ) ;
: : MessageBox ( _pPublicInterface - > getHSelf ( ) , errorMsg . c_str ( ) , TEXT ( " ShellExecute - ERROR " ) , MB_ICONINFORMATION | MB_APPLMODAL ) ;
}
}
break ;
2016-03-19 15:15:21 +00:00
case IDM_FILE_OPENFOLDERASWORSPACE :
{
generic_string folderPath = folderBrowser ( _pPublicInterface - > getHSelf ( ) , TEXT ( " Select a folder to add in Folder as Workspace panel " ) ) ;
if ( not folderPath . empty ( ) )
{
if ( _pFileBrowser = = nullptr ) // first launch, check in params to open folders
{
vector < generic_string > dummy ;
launchFileBrowser ( dummy ) ;
if ( _pFileBrowser ! = nullptr )
{
checkMenuItem ( IDM_VIEW_FILEBROWSER , true ) ;
_toolBar . setCheck ( IDM_VIEW_FILEBROWSER , true ) ;
_pFileBrowser - > setClosed ( false ) ;
}
else // problem
return ;
}
else
{
if ( _pFileBrowser - > isClosed ( ) )
{
_pFileBrowser - > display ( ) ;
2016-09-10 09:04:30 +00:00
checkMenuItem ( IDM_VIEW_FILEBROWSER , true ) ;
_toolBar . setCheck ( IDM_VIEW_FILEBROWSER , true ) ;
2016-03-19 15:15:21 +00:00
_pFileBrowser - > setClosed ( false ) ;
}
}
_pFileBrowser - > addRootFolder ( folderPath ) ;
}
}
break ;
2013-12-07 01:43:35 +00:00
2010-01-29 23:52:47 +00:00
case IDM_FILE_RELOAD :
fileReload ( ) ;
break ;
2013-05-01 15:43:51 +00:00
case IDM_FILESWITCHER_FILESCLOSE :
case IDM_FILESWITCHER_FILESCLOSEOTHERS :
if ( _pFileSwitcherPanel )
{
vector < SwitcherFileInfo > files = _pFileSwitcherPanel - > getSelectedFiles ( id = = IDM_FILESWITCHER_FILESCLOSEOTHERS ) ;
2013-07-08 00:12:50 +00:00
for ( size_t i = 0 , len = files . size ( ) ; i < len ; + + i )
2013-05-01 15:43:51 +00:00
{
fileClose ( ( BufferID ) files [ i ] . _bufID , files [ i ] . _iView ) ;
}
if ( id = = IDM_FILESWITCHER_FILESCLOSEOTHERS )
{
// Get current buffer and its view
2015-06-08 10:11:10 +00:00
_pFileSwitcherPanel - > activateItem ( _pEditView - > getCurrentBufferID ( ) , currentView ( ) ) ;
2013-05-01 15:43:51 +00:00
}
}
break ;
2010-01-29 23:52:47 +00:00
case IDM_FILE_CLOSE :
2010-07-04 07:12:02 +00:00
if ( fileClose ( ) )
checkDocState ( ) ;
2010-01-29 23:52:47 +00:00
break ;
case IDM_FILE_DELETE :
2010-07-04 07:12:02 +00:00
if ( fileDelete ( ) )
checkDocState ( ) ;
2010-01-29 23:52:47 +00:00
break ;
case IDM_FILE_RENAME :
fileRename ( ) ;
break ;
case IDM_FILE_CLOSEALL :
2014-04-10 18:16:11 +00:00
{
2019-08-14 20:13:24 +00:00
bool isSnapshotMode = NppParameters : : getInstance ( ) . getNppGUI ( ) . isSnapshotMode ( ) ;
2014-04-13 01:31:02 +00:00
fileCloseAll ( isSnapshotMode , false ) ;
2010-07-04 07:12:02 +00:00
checkDocState ( ) ;
2010-01-29 23:52:47 +00:00
break ;
2014-04-10 18:16:11 +00:00
}
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
case IDM_FILE_CLOSEALL_BUT_CURRENT :
fileCloseAllButCurrent ( ) ;
2010-07-04 07:12:02 +00:00
checkDocState ( ) ;
2010-01-29 23:52:47 +00:00
break ;
2013-08-03 23:40:07 +00:00
case IDM_FILE_CLOSEALL_TOLEFT :
fileCloseAllToLeft ( ) ;
checkDocState ( ) ;
break ;
case IDM_FILE_CLOSEALL_TORIGHT :
fileCloseAllToRight ( ) ;
checkDocState ( ) ;
break ;
2019-01-01 09:18:35 +00:00
case IDM_FILE_CLOSEALL_UNCHANGED :
fileCloseAllUnchanged ( ) ;
checkDocState ( ) ;
break ;
2010-01-29 23:52:47 +00:00
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 :
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_CLOSE , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
break ;
case IDM_EDIT_UNDO :
2015-05-26 13:58:46 +00:00
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2010-01-29 23:52:47 +00:00
_pEditView - > execute ( WM_UNDO ) ;
checkClipboard ( ) ;
checkUndoState ( ) ;
break ;
2015-05-26 13:58:46 +00:00
}
2010-01-29 23:52:47 +00:00
case IDM_EDIT_REDO :
2015-05-26 13:58:46 +00:00
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2010-01-29 23:52:47 +00:00
_pEditView - > execute ( SCI_REDO ) ;
checkClipboard ( ) ;
checkUndoState ( ) ;
break ;
2015-05-26 13:58:46 +00:00
}
2010-01-29 23:52:47 +00:00
case IDM_EDIT_CUT :
_pEditView - > execute ( WM_CUT ) ;
checkClipboard ( ) ;
break ;
case IDM_EDIT_COPY :
_pEditView - > execute ( WM_COPY ) ;
checkClipboard ( ) ;
break ;
2011-03-15 01:36:55 +00:00
case IDM_EDIT_COPY_BINARY :
case IDM_EDIT_CUT_BINARY :
{
2016-06-05 18:29:21 +00:00
int textLen = static_cast < int32_t > ( _pEditView - > execute ( SCI_GETSELTEXT , 0 , 0 ) ) - 1 ;
2011-03-31 00:14:18 +00:00
if ( ! textLen )
return ;
2011-03-15 01:36:55 +00:00
char * pBinText = new char [ textLen + 1 ] ;
_pEditView - > getSelectedText ( pBinText , textLen + 1 ) ;
2011-03-31 00:14:18 +00:00
// Open the clipboard, and empty it.
if ( ! OpenClipboard ( NULL ) )
2011-03-15 01:36:55 +00:00
return ;
EmptyClipboard ( ) ;
2011-03-31 00:14:18 +00:00
// Allocate a global memory object for the text.
HGLOBAL hglbCopy = GlobalAlloc ( GMEM_MOVEABLE , ( textLen + 1 ) * sizeof ( unsigned char ) ) ;
if ( hglbCopy = = NULL )
{
CloseClipboard ( ) ;
return ;
}
// Lock the handle and copy the text to the buffer.
unsigned char * lpucharCopy = ( unsigned char * ) GlobalLock ( hglbCopy ) ;
memcpy ( lpucharCopy , pBinText , textLen * sizeof ( unsigned char ) ) ;
2011-03-15 01:36:55 +00:00
lpucharCopy [ textLen ] = 0 ; // null character
2015-08-06 09:03:57 +00:00
2011-03-31 00:14:18 +00:00
GlobalUnlock ( hglbCopy ) ;
2015-08-06 09:03:57 +00:00
2011-03-15 01:36:55 +00:00
// Place the handle on the clipboard.
SetClipboardData ( CF_TEXT , hglbCopy ) ;
2015-08-06 09:03:57 +00:00
2011-03-15 01:36:55 +00:00
// Allocate a global memory object for the text length.
2011-03-31 00:14:18 +00:00
HGLOBAL hglbLenCopy = GlobalAlloc ( GMEM_MOVEABLE , sizeof ( unsigned long ) ) ;
if ( hglbLenCopy = = NULL )
{
CloseClipboard ( ) ;
return ;
}
2015-08-06 09:03:57 +00:00
// Lock the handle and copy the text to the buffer.
unsigned long * lpLenCopy = ( unsigned long * ) GlobalLock ( hglbLenCopy ) ;
2011-03-15 01:36:55 +00:00
* lpLenCopy = textLen ;
2015-08-06 09:03:57 +00:00
GlobalUnlock ( hglbLenCopy ) ;
2011-03-15 01:36:55 +00:00
// Place the handle on the clipboard.
UINT f = RegisterClipboardFormat ( CF_NPPTEXTLEN ) ;
SetClipboardData ( f , hglbLenCopy ) ;
CloseClipboard ( ) ;
if ( id = = IDM_EDIT_CUT_BINARY )
2016-08-09 22:22:45 +00:00
_pEditView - > execute ( SCI_REPLACESEL , 0 , reinterpret_cast < LPARAM > ( " " ) ) ;
2011-03-15 01:36:55 +00:00
}
break ;
2010-01-29 23:52:47 +00:00
case IDM_EDIT_PASTE :
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2010-01-29 23:52:47 +00:00
int eolMode = int ( _pEditView - > execute ( SCI_GETEOLMODE ) ) ;
_pEditView - > execute ( SCI_PASTE ) ;
_pEditView - > execute ( SCI_CONVERTEOLS , eolMode ) ;
}
break ;
2011-03-15 01:36:55 +00:00
case IDM_EDIT_PASTE_BINARY :
2015-08-06 09:03:57 +00:00
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2011-03-15 01:36:55 +00:00
if ( ! IsClipboardFormatAvailable ( CF_TEXT ) )
return ;
if ( ! OpenClipboard ( NULL ) )
2015-08-06 09:03:57 +00:00
return ;
HGLOBAL hglb = GetClipboardData ( CF_TEXT ) ;
if ( hglb ! = NULL )
{
char * lpchar = ( char * ) GlobalLock ( hglb ) ;
if ( lpchar ! = NULL )
2011-03-15 01:36:55 +00:00
{
UINT cf_nppTextLen = RegisterClipboardFormat ( CF_NPPTEXTLEN ) ;
if ( IsClipboardFormatAvailable ( cf_nppTextLen ) )
{
2015-08-06 09:03:57 +00:00
HGLOBAL hglbLen = GetClipboardData ( cf_nppTextLen ) ;
if ( hglbLen ! = NULL )
{
unsigned long * lpLen = ( unsigned long * ) GlobalLock ( hglbLen ) ;
if ( lpLen ! = NULL )
2011-03-15 01:36:55 +00:00
{
2016-08-09 22:22:45 +00:00
_pEditView - > execute ( SCI_REPLACESEL , 0 , reinterpret_cast < LPARAM > ( " " ) ) ;
_pEditView - > execute ( SCI_ADDTEXT , * lpLen , reinterpret_cast < LPARAM > ( lpchar ) ) ;
2011-03-15 01:36:55 +00:00
2019-11-16 15:54:21 +00:00
GlobalUnlock ( hglbLen ) ;
2011-03-15 01:36:55 +00:00
}
}
}
else
{
2016-08-09 22:22:45 +00:00
_pEditView - > execute ( SCI_REPLACESEL , 0 , reinterpret_cast < LPARAM > ( lpchar ) ) ;
2011-03-15 01:36:55 +00:00
}
2015-08-06 09:03:57 +00:00
GlobalUnlock ( hglb ) ;
2011-03-15 01:36:55 +00:00
}
}
CloseClipboard ( ) ;
}
break ;
2016-08-21 22:52:26 +00:00
case IDM_EDIT_OPENINFOLDER :
case IDM_EDIT_OPENASFILE :
{
if ( _pEditView - > execute ( SCI_GETSELECTIONS ) ! = 1 ) // Multi-Selection || Column mode || no selection
return ;
HWND hwnd = _pPublicInterface - > getHSelf ( ) ;
TCHAR curentWord [ CURRENTWORD_MAXLENGTH ] ;
2017-02-07 11:11:11 +00:00
: : SendMessage ( hwnd , NPPM_GETFILENAMEATCURSOR , CURRENTWORD_MAXLENGTH , reinterpret_cast < LPARAM > ( curentWord ) ) ;
2016-08-21 22:52:26 +00:00
TCHAR cmd2Exec [ CURRENTWORD_MAXLENGTH ] ;
if ( id = = IDM_EDIT_OPENINFOLDER )
{
2019-02-11 01:07:04 +00:00
wcscpy_s ( cmd2Exec , TEXT ( " explorer " ) ) ;
2016-08-21 22:52:26 +00:00
}
else
{
: : SendMessage ( hwnd , NPPM_GETNPPFULLFILEPATH , CURRENTWORD_MAXLENGTH , reinterpret_cast < LPARAM > ( cmd2Exec ) ) ;
}
2016-08-28 22:13:28 +00:00
// Full file path
2016-08-21 22:52:26 +00:00
if ( : : PathFileExists ( curentWord ) )
{
generic_string fullFilePath = id = = IDM_EDIT_OPENINFOLDER ? TEXT ( " /select, " ) : TEXT ( " " ) ;
fullFilePath + = TEXT ( " \" " ) ;
fullFilePath + = curentWord ;
fullFilePath + = TEXT ( " \" " ) ;
if ( id = = IDM_EDIT_OPENINFOLDER | |
( id = = IDM_EDIT_OPENASFILE & & not : : PathIsDirectory ( curentWord ) ) )
: : ShellExecute ( hwnd , TEXT ( " open " ) , cmd2Exec , fullFilePath . c_str ( ) , TEXT ( " . " ) , SW_SHOW ) ;
}
2016-08-28 22:13:28 +00:00
else // Full file path - need concatenate with current full file path
2016-08-21 22:52:26 +00:00
{
TCHAR currentDir [ CURRENTWORD_MAXLENGTH ] ;
: : SendMessage ( hwnd , NPPM_GETCURRENTDIRECTORY , CURRENTWORD_MAXLENGTH , reinterpret_cast < LPARAM > ( currentDir ) ) ;
generic_string fullFilePath = id = = IDM_EDIT_OPENINFOLDER ? TEXT ( " /select, " ) : TEXT ( " " ) ;
fullFilePath + = TEXT ( " \" " ) ;
fullFilePath + = currentDir ;
fullFilePath + = TEXT ( " \\ " ) ;
fullFilePath + = curentWord ;
2016-08-28 22:13:28 +00:00
if ( ( id = = IDM_EDIT_OPENASFILE & &
2016-08-21 22:52:26 +00:00
( not : : PathFileExists ( fullFilePath . c_str ( ) + 1 ) | | : : PathIsDirectory ( fullFilePath . c_str ( ) + 1 ) ) ) )
2016-08-28 22:13:28 +00:00
{
_nativeLangSpeaker . messageBox ( " FilePathNotFoundWarning " ,
_pPublicInterface - > getHSelf ( ) ,
TEXT ( " The file you're trying to open doesn't exist. " ) ,
TEXT ( " File Open " ) ,
MB_OK | MB_APPLMODAL ) ;
2016-08-21 22:52:26 +00:00
return ;
2016-08-28 22:13:28 +00:00
}
2016-08-21 22:52:26 +00:00
fullFilePath + = TEXT ( " \" " ) ;
: : ShellExecute ( hwnd , TEXT ( " open " ) , cmd2Exec , fullFilePath . c_str ( ) , TEXT ( " . " ) , SW_SHOW ) ;
}
}
break ;
case IDM_EDIT_SEARCHONINTERNET :
{
2016-08-28 22:13:28 +00:00
if ( _pEditView - > execute ( SCI_GETSELECTIONS ) ! = 1 ) // Multi-Selection || Column mode || no selection
return ;
2016-08-21 22:52:26 +00:00
2019-08-14 20:13:24 +00:00
const NppGUI & nppGui = ( NppParameters : : getInstance ( ) ) . getNppGUI ( ) ;
2016-08-28 22:13:28 +00:00
generic_string url ;
if ( nppGui . _searchEngineChoice = = nppGui . se_custom )
{
2019-02-19 23:34:28 +00:00
url = nppGui . _searchEngineCustom ;
2018-02-01 22:05:41 +00:00
remove_if ( url . begin ( ) , url . end ( ) , _istspace ) ;
2019-02-19 23:34:28 +00:00
auto httpPos = url . find ( TEXT ( " http:// " ) ) ;
auto httpsPos = url . find ( TEXT ( " https:// " ) ) ;
if ( url . empty ( ) | | ( httpPos ! = 0 & & httpsPos ! = 0 ) ) // if string is not a url (for launching only browser)
2016-08-28 22:13:28 +00:00
{
url = TEXT ( " https://www.google.com/search?q=$(CURRENT_WORD) " ) ;
}
}
else if ( nppGui . _searchEngineChoice = = nppGui . se_duckDuckGo )
{
url = TEXT ( " https://duckduckgo.com/?q=$(CURRENT_WORD) " ) ;
}
else if ( nppGui . _searchEngineChoice = = nppGui . se_google )
{
url = TEXT ( " https://www.google.com/search?q=$(CURRENT_WORD) " ) ;
}
else if ( nppGui . _searchEngineChoice = = nppGui . se_bing )
{
url = TEXT ( " https://www.bing.com/search?q=$(CURRENT_WORD) " ) ;
}
else if ( nppGui . _searchEngineChoice = = nppGui . se_yahoo )
{
url = TEXT ( " https://search.yahoo.com/search?q=$(CURRENT_WORD) " ) ;
}
2019-02-19 12:05:02 +00:00
else if ( nppGui . _searchEngineChoice = = nppGui . se_stackoverflow )
{
url = TEXT ( " https://stackoverflow.com/search?q=$(CURRENT_WORD) " ) ;
}
2016-08-28 22:13:28 +00:00
Command cmd ( url . c_str ( ) ) ;
cmd . run ( _pPublicInterface - > getHSelf ( ) ) ;
2016-08-21 22:52:26 +00:00
}
break ;
2016-08-28 22:13:28 +00:00
case IDM_EDIT_CHANGESEARCHENGINE :
2016-08-21 22:52:26 +00:00
{
2019-03-01 12:35:26 +00:00
command ( IDM_SETTING_PREFERENCE ) ;
2016-08-28 22:13:28 +00:00
_preference . showDialogByName ( TEXT ( " SearchEngine " ) ) ;
2016-08-21 22:52:26 +00:00
}
break ;
2011-03-11 00:57:06 +00:00
case IDM_EDIT_PASTE_AS_RTF :
case IDM_EDIT_PASTE_AS_HTML :
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2011-03-11 00:57:06 +00:00
UINT f = RegisterClipboardFormat ( id = = IDM_EDIT_PASTE_AS_HTML ? CF_HTML : CF_RTF ) ;
2015-08-06 09:03:57 +00:00
if ( ! IsClipboardFormatAvailable ( f ) )
2011-03-11 00:57:06 +00:00
return ;
2015-08-06 09:03:57 +00:00
2011-03-11 00:57:06 +00:00
if ( ! OpenClipboard ( NULL ) )
2015-08-06 09:03:57 +00:00
return ;
HGLOBAL hglb = GetClipboardData ( f ) ;
if ( hglb ! = NULL )
{
LPSTR lptstr = ( LPSTR ) GlobalLock ( hglb ) ;
if ( lptstr ! = NULL )
{
// Call the application-defined ReplaceSelection
// function to insert the text and repaint the
// window.
2016-08-09 22:22:45 +00:00
_pEditView - > execute ( SCI_REPLACESEL , 0 , reinterpret_cast < LPARAM > ( lptstr ) ) ;
2011-03-11 00:57:06 +00:00
2015-08-06 09:03:57 +00:00
GlobalUnlock ( hglb ) ;
2011-03-11 00:57:06 +00:00
}
}
2015-08-06 09:03:57 +00:00
CloseClipboard ( ) ;
2011-03-11 00:57:06 +00:00
}
break ;
2013-06-09 08:52:15 +00:00
case IDM_EDIT_BEGINENDSELECT :
{
2015-03-14 22:55:03 +00:00
: : CheckMenuItem ( _mainMenuHandle , IDM_EDIT_BEGINENDSELECT , MF_BYCOMMAND | ( _pEditView - > beginEndSelectedIsStarted ( ) ? MF_UNCHECKED : MF_CHECKED ) ) ;
2013-09-17 20:22:32 +00:00
_pEditView - > beginOrEndSelect ( ) ;
2013-06-09 08:52:15 +00:00
}
break ;
2015-05-17 17:18:43 +00:00
case IDM_EDIT_SORTLINES_LEXICOGRAPHIC_ASCENDING :
case IDM_EDIT_SORTLINES_LEXICOGRAPHIC_DESCENDING :
case IDM_EDIT_SORTLINES_INTEGER_ASCENDING :
case IDM_EDIT_SORTLINES_INTEGER_DESCENDING :
case IDM_EDIT_SORTLINES_DECIMALCOMMA_ASCENDING :
case IDM_EDIT_SORTLINES_DECIMALCOMMA_DESCENDING :
case IDM_EDIT_SORTLINES_DECIMALDOT_ASCENDING :
case IDM_EDIT_SORTLINES_DECIMALDOT_DESCENDING :
2013-11-19 23:30:41 +00:00
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2015-05-26 13:58:46 +00:00
2015-05-21 13:53:48 +00:00
size_t fromLine = 0 , toLine = 0 ;
size_t fromColumn = 0 , toColumn = 0 ;
2013-12-25 16:56:31 +00:00
2015-05-21 13:53:48 +00:00
bool hasLineSelection = false ;
if ( _pEditView - > execute ( SCI_GETSELECTIONS ) > 1 )
2013-12-25 16:56:31 +00:00
{
2015-05-21 13:53:48 +00:00
if ( _pEditView - > execute ( SCI_SELECTIONISRECTANGLE ) )
{
ColumnModeInfos colInfos = _pEditView - > getColumnModeSelectInfo ( ) ;
int leftPos = colInfos . begin ( ) - > _selLpos ;
int rightPos = colInfos . rbegin ( ) - > _selRpos ;
int startPos = min ( leftPos , rightPos ) ;
int endPos = max ( leftPos , rightPos ) ;
fromLine = _pEditView - > execute ( SCI_LINEFROMPOSITION , startPos ) ;
toLine = _pEditView - > execute ( SCI_LINEFROMPOSITION , endPos ) ;
fromColumn = _pEditView - > execute ( SCI_GETCOLUMN , leftPos ) ;
toColumn = _pEditView - > execute ( SCI_GETCOLUMN , rightPos ) ;
}
else
{
2013-12-25 16:56:31 +00:00
return ;
2015-05-21 13:53:48 +00:00
}
}
else
{
2016-06-05 18:29:21 +00:00
auto selStart = _pEditView - > execute ( SCI_GETSELECTIONSTART ) ;
auto selEnd = _pEditView - > execute ( SCI_GETSELECTIONEND ) ;
2015-05-21 13:53:48 +00:00
hasLineSelection = selStart ! = selEnd ;
if ( hasLineSelection )
{
pair < int , int > lineRange = _pEditView - > getSelectionLinesRange ( ) ;
// One single line selection is not allowed.
if ( lineRange . first = = lineRange . second )
{
return ;
}
fromLine = lineRange . first ;
toLine = lineRange . second ;
}
else
{
// No selection.
fromLine = 0 ;
toLine = _pEditView - > execute ( SCI_GETLINECOUNT ) - 1 ;
}
2013-12-25 16:56:31 +00:00
}
2015-05-17 17:18:43 +00:00
bool isDescending = id = = IDM_EDIT_SORTLINES_LEXICOGRAPHIC_DESCENDING | |
id = = IDM_EDIT_SORTLINES_INTEGER_DESCENDING | |
id = = IDM_EDIT_SORTLINES_DECIMALCOMMA_DESCENDING | |
id = = IDM_EDIT_SORTLINES_DECIMALDOT_DESCENDING ;
2013-11-19 23:30:41 +00:00
_pEditView - > execute ( SCI_BEGINUNDOACTION ) ;
2015-05-17 17:18:43 +00:00
std : : unique_ptr < ISorter > pSorter ;
if ( id = = IDM_EDIT_SORTLINES_LEXICOGRAPHIC_DESCENDING | | id = = IDM_EDIT_SORTLINES_LEXICOGRAPHIC_ASCENDING )
{
2015-05-21 13:53:48 +00:00
pSorter = std : : unique_ptr < ISorter > ( new LexicographicSorter ( isDescending , fromColumn , toColumn ) ) ;
2015-05-17 17:18:43 +00:00
}
else if ( id = = IDM_EDIT_SORTLINES_INTEGER_DESCENDING | | id = = IDM_EDIT_SORTLINES_INTEGER_ASCENDING )
{
2018-04-14 19:10:34 +00:00
pSorter = std : : unique_ptr < ISorter > ( new NaturalSorter ( isDescending , fromColumn , toColumn ) ) ;
2015-05-17 17:18:43 +00:00
}
else if ( id = = IDM_EDIT_SORTLINES_DECIMALCOMMA_DESCENDING | | id = = IDM_EDIT_SORTLINES_DECIMALCOMMA_ASCENDING )
{
2015-05-21 13:53:48 +00:00
pSorter = std : : unique_ptr < ISorter > ( new DecimalCommaSorter ( isDescending , fromColumn , toColumn ) ) ;
2015-05-17 17:18:43 +00:00
}
else
{
2015-05-21 13:53:48 +00:00
pSorter = std : : unique_ptr < ISorter > ( new DecimalDotSorter ( isDescending , fromColumn , toColumn ) ) ;
2015-05-17 17:18:43 +00:00
}
try
{
_pEditView - > sortLines ( fromLine , toLine , pSorter . get ( ) ) ;
}
catch ( size_t & failedLineIndex )
{
2018-02-19 10:40:47 +00:00
size_t lineNo = 1 + fromLine + failedLineIndex ;
2015-05-17 17:18:43 +00:00
_nativeLangSpeaker . messageBox ( " SortingError " ,
_pPublicInterface - > getHSelf ( ) ,
2018-02-20 12:38:09 +00:00
TEXT ( " Unable to perform numeric sorting due to line $INT_REPLACE$. " ) ,
2015-05-17 17:18:43 +00:00
TEXT ( " Sorting Error " ) ,
MB_OK | MB_ICONINFORMATION | MB_APPLMODAL ,
2018-02-19 10:40:47 +00:00
static_cast < int > ( lineNo ) ,
0 ) ;
2015-05-17 17:18:43 +00:00
}
2013-11-19 23:30:41 +00:00
_pEditView - > execute ( SCI_ENDUNDOACTION ) ;
2013-12-25 16:56:31 +00:00
2015-05-21 13:53:48 +00:00
if ( hasLineSelection ) // there was 1 selection, so we restore it
2013-12-25 16:56:31 +00:00
{
2016-06-05 18:29:21 +00:00
auto posStart = _pEditView - > execute ( SCI_POSITIONFROMLINE , fromLine ) ;
auto posEnd = _pEditView - > execute ( SCI_GETLINEENDPOSITION , toLine ) ;
2013-12-25 16:56:31 +00:00
_pEditView - > execute ( SCI_SETSELECTIONSTART , posStart ) ;
_pEditView - > execute ( SCI_SETSELECTIONEND , posEnd ) ;
}
2013-11-19 23:30:41 +00:00
}
break ;
2013-08-01 19:44:11 +00:00
case IDM_EDIT_BLANKLINEABOVECURRENT :
{
_pEditView - > insertNewLineAboveCurrentLine ( ) ;
}
break ;
case IDM_EDIT_BLANKLINEBELOWCURRENT :
{
_pEditView - > insertNewLineBelowCurrentLine ( ) ;
}
break ;
2011-04-13 07:08:51 +00:00
case IDM_EDIT_CHAR_PANEL :
{
launchAnsiCharPanel ( ) ;
}
break ;
2011-04-20 21:45:18 +00:00
case IDM_EDIT_CLIPBOARDHISTORY_PANEL :
{
launchClipboardHistoryPanel ( ) ;
}
break ;
2011-05-19 21:19:05 +00:00
case IDM_VIEW_FILESWITCHER_PANEL :
{
launchFileSwitcherPanel ( ) ;
}
break ;
2011-09-20 23:55:35 +00:00
case IDM_VIEW_PROJECT_PANEL_1 :
2011-08-29 23:01:41 +00:00
{
2011-09-25 01:33:34 +00:00
launchProjectPanel ( id , & _pProjectPanel_1 , 0 ) ;
2011-09-20 23:55:35 +00:00
}
break ;
case IDM_VIEW_PROJECT_PANEL_2 :
{
2011-09-25 01:33:34 +00:00
launchProjectPanel ( id , & _pProjectPanel_2 , 1 ) ;
2011-09-20 23:55:35 +00:00
}
break ;
case IDM_VIEW_PROJECT_PANEL_3 :
{
2011-09-25 01:33:34 +00:00
launchProjectPanel ( id , & _pProjectPanel_3 , 2 ) ;
2011-08-29 23:01:41 +00:00
}
break ;
2016-02-02 18:06:23 +00:00
case IDM_VIEW_FILEBROWSER :
{
2016-02-08 00:34:33 +00:00
if ( _pFileBrowser = = nullptr ) // first launch, check in params to open folders
{
2019-08-14 20:13:24 +00:00
NppParameters & nppParam = NppParameters : : getInstance ( ) ;
launchFileBrowser ( nppParam . getFileBrowserRoots ( ) ) ;
2016-02-08 00:34:33 +00:00
if ( _pFileBrowser ! = nullptr )
{
checkMenuItem ( IDM_VIEW_FILEBROWSER , true ) ;
_toolBar . setCheck ( IDM_VIEW_FILEBROWSER , true ) ;
_pFileBrowser - > setClosed ( false ) ;
}
}
else
{
if ( not _pFileBrowser - > isClosed ( ) )
{
_pFileBrowser - > display ( false ) ;
_pFileBrowser - > setClosed ( true ) ;
checkMenuItem ( IDM_VIEW_FILEBROWSER , false ) ;
_toolBar . setCheck ( IDM_VIEW_FILEBROWSER , false ) ;
}
else
{
vector < generic_string > dummy ;
launchFileBrowser ( dummy ) ;
checkMenuItem ( IDM_VIEW_FILEBROWSER , true ) ;
_toolBar . setCheck ( IDM_VIEW_FILEBROWSER , true ) ;
_pFileBrowser - > setClosed ( false ) ;
}
}
2016-02-02 18:06:23 +00:00
}
break ;
2012-01-30 00:00:50 +00:00
case IDM_VIEW_DOC_MAP :
{
2016-02-08 00:34:33 +00:00
if ( _pDocMap & & ( not _pDocMap - > isClosed ( ) ) )
2012-07-21 00:46:03 +00:00
{
_pDocMap - > display ( false ) ;
_pDocMap - > vzDlgDisplay ( false ) ;
2013-06-04 23:46:24 +00:00
_pDocMap - > setClosed ( true ) ;
2012-07-21 00:46:03 +00:00
checkMenuItem ( IDM_VIEW_DOC_MAP , false ) ;
2013-05-05 18:12:01 +00:00
_toolBar . setCheck ( IDM_VIEW_DOC_MAP , false ) ;
2012-07-21 00:46:03 +00:00
}
else
{
launchDocMap ( ) ;
2013-09-14 19:29:12 +00:00
if ( _pDocMap )
{
checkMenuItem ( IDM_VIEW_DOC_MAP , true ) ;
_toolBar . setCheck ( IDM_VIEW_DOC_MAP , true ) ;
_pDocMap - > setClosed ( false ) ;
}
2012-07-21 00:46:03 +00:00
}
2012-01-30 00:00:50 +00:00
}
break ;
2012-11-24 20:14:52 +00:00
case IDM_VIEW_FUNC_LIST :
{
2016-02-08 00:34:33 +00:00
if ( _pFuncList & & ( not _pFuncList - > isClosed ( ) ) )
2012-11-24 20:14:52 +00:00
{
2013-06-04 23:46:24 +00:00
_pFuncList - > display ( false ) ;
_pFuncList - > setClosed ( true ) ;
checkMenuItem ( IDM_VIEW_FUNC_LIST , false ) ;
_toolBar . setCheck ( IDM_VIEW_FUNC_LIST , false ) ;
2012-11-24 20:14:52 +00:00
}
else
{
2013-06-04 23:46:24 +00:00
checkMenuItem ( IDM_VIEW_FUNC_LIST , true ) ;
_toolBar . setCheck ( IDM_VIEW_FUNC_LIST , true ) ;
launchFunctionList ( ) ;
_pFuncList - > setClosed ( false ) ;
2012-11-24 20:14:52 +00:00
}
}
break ;
2015-08-06 09:03:57 +00:00
2013-08-03 00:19:06 +00:00
case IDM_VIEW_TAB1 :
case IDM_VIEW_TAB2 :
case IDM_VIEW_TAB3 :
case IDM_VIEW_TAB4 :
case IDM_VIEW_TAB5 :
case IDM_VIEW_TAB6 :
case IDM_VIEW_TAB7 :
case IDM_VIEW_TAB8 :
case IDM_VIEW_TAB9 :
{
const int index = id - IDM_VIEW_TAB1 ;
BufferID buf = _pDocTab - > getBufferByIndex ( index ) ;
2018-09-22 16:32:00 +00:00
_isFolding = true ;
2019-03-13 01:02:35 +00:00
if ( buf = = BUFFER_INVALID )
2013-08-03 00:19:06 +00:00
{
// No buffer at chosen index, select the very last buffer instead.
const int last_index = _pDocTab - > getItemCount ( ) - 1 ;
2019-03-13 01:02:35 +00:00
if ( last_index > 0 )
2013-08-03 00:19:06 +00:00
switchToFile ( _pDocTab - > getBufferByIndex ( last_index ) ) ;
}
else
2018-09-22 16:32:00 +00:00
{
2013-08-03 00:19:06 +00:00
switchToFile ( buf ) ;
2018-09-22 16:32:00 +00:00
}
_isFolding = false ;
2013-08-03 00:19:06 +00:00
}
break ;
case IDM_VIEW_TAB_NEXT :
{
const int current_index = _pDocTab - > getCurrentTabIndex ( ) ;
const int last_index = _pDocTab - > getItemCount ( ) - 1 ;
2018-09-22 16:32:00 +00:00
_isFolding = true ;
2019-03-13 01:02:35 +00:00
if ( current_index < last_index )
2013-08-03 00:19:06 +00:00
switchToFile ( _pDocTab - > getBufferByIndex ( current_index + 1 ) ) ;
else
2018-09-22 16:32:00 +00:00
{
2013-08-03 00:19:06 +00:00
switchToFile ( _pDocTab - > getBufferByIndex ( 0 ) ) ; // Loop around.
2018-09-22 16:32:00 +00:00
}
_isFolding = false ;
2013-08-03 00:19:06 +00:00
}
break ;
case IDM_VIEW_TAB_PREV :
{
const int current_index = _pDocTab - > getCurrentTabIndex ( ) ;
2018-09-22 16:32:00 +00:00
_isFolding = true ;
2019-03-13 01:02:35 +00:00
if ( current_index > 0 )
2013-08-03 00:19:06 +00:00
switchToFile ( _pDocTab - > getBufferByIndex ( current_index - 1 ) ) ;
else
{
const int last_index = _pDocTab - > getItemCount ( ) - 1 ;
switchToFile ( _pDocTab - > getBufferByIndex ( last_index ) ) ; // Loop around.
}
2018-09-22 16:32:00 +00:00
_isFolding = false ;
2013-08-03 00:19:06 +00:00
}
break ;
2012-11-24 20:14:52 +00:00
2016-06-30 01:21:11 +00:00
case IDM_VIEW_TAB_MOVEFORWARD :
case IDM_VIEW_TAB_MOVEBACKWARD :
{
const int currentTabIndex = _pDocTab - > getCurrentTabIndex ( ) ;
const int lastTabIndex = _pDocTab - > getItemCount ( ) - 1 ;
int newTabIndex = currentTabIndex ;
if ( id = = IDM_VIEW_TAB_MOVEFORWARD )
{
if ( currentTabIndex > = lastTabIndex )
return ;
+ + newTabIndex ;
}
else
{
if ( currentTabIndex < 1 )
return ;
- - newTabIndex ;
}
TCITEM tciMove , tciShift ;
tciMove . mask = tciShift . mask = TCIF_IMAGE | TCIF_TEXT | TCIF_PARAM ;
const int strSizeMax = 256 ;
TCHAR strMove [ strSizeMax ] ;
TCHAR strShift [ strSizeMax ] ;
tciMove . pszText = strMove ;
tciMove . cchTextMax = strSizeMax ;
tciShift . pszText = strShift ;
tciShift . cchTextMax = strSizeMax ;
: : SendMessage ( _pDocTab - > getHSelf ( ) , TCM_GETITEM , currentTabIndex , reinterpret_cast < LPARAM > ( & tciMove ) ) ;
: : SendMessage ( _pDocTab - > getHSelf ( ) , TCM_GETITEM , newTabIndex , reinterpret_cast < LPARAM > ( & tciShift ) ) ;
: : SendMessage ( _pDocTab - > getHSelf ( ) , TCM_SETITEM , currentTabIndex , reinterpret_cast < LPARAM > ( & tciShift ) ) ;
: : SendMessage ( _pDocTab - > getHSelf ( ) , TCM_SETITEM , newTabIndex , reinterpret_cast < LPARAM > ( & tciMove ) ) ;
: : SendMessage ( _pDocTab - > getHSelf ( ) , TCM_SETCURSEL , newTabIndex , 0 ) ;
// Notify plugins that the document order has changed
: : SendMessage ( _pDocTab - > getHParent ( ) , NPPM_INTERNAL_DOCORDERCHANGED , 0 , newTabIndex ) ;
}
break ;
2010-01-29 23:52:47 +00:00
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 ) ;
2015-08-06 09:03:57 +00:00
2016-08-09 22:22:45 +00:00
_mainEditView . execute ( SCI_SETCURSOR , static_cast < WPARAM > ( SC_CURSORNORMAL ) ) ;
_subEditView . execute ( SCI_SETCURSOR , static_cast < WPARAM > ( SC_CURSORNORMAL ) ) ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
_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 ;
}
2018-01-23 14:24:28 +00:00
_recordingSaved = false ;
2010-01-29 23:52:47 +00:00
checkMacroState ( ) ;
break ;
}
case IDM_MACRO_PLAYBACKRECORDEDMACRO :
if ( ! _recordingMacro ) // if we're not currently recording, then playback the recorded keystrokes
2015-10-07 15:55:29 +00:00
{
2010-08-15 18:52:55 +00:00
macroPlayback ( _macro ) ;
2015-10-07 15:55:29 +00:00
}
2010-01-29 23:52:47 +00:00
break ;
case IDM_MACRO_RUNMULTIMACRODLG :
{
if ( ! _recordingMacro ) // if we're not currently recording, then playback the recorded keystrokes
{
bool isFirstTime = ! _runMacroDlg . isCreated ( ) ;
2010-03-05 00:15:06 +00:00
_runMacroDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
if ( isFirstTime )
{
2010-03-05 00:15:06 +00:00
_nativeLangSpeaker . changeDlgLang ( _runMacroDlg . getHSelf ( ) , " MultiMacro " ) ;
2010-01-29 23:52:47 +00:00
}
break ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
}
}
break ;
case IDM_MACRO_SAVECURRENTMACRO :
{
if ( addCurrentMacro ( ) )
2018-01-23 14:24:28 +00:00
{
_recordingSaved = true ;
2010-01-29 23:52:47 +00:00
_runMacroDlg . initMacroList ( ) ;
2018-01-23 14:24:28 +00:00
checkMacroState ( ) ;
}
2010-01-29 23:52:47 +00:00
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 ) ;
2015-06-01 16:47:24 +00:00
str2Cliboard ( dir ) ;
2010-01-29 23:52:47 +00:00
}
else if ( id = = IDM_EDIT_FILENAMETOCLIP )
{
str2Cliboard ( buf - > getFileName ( ) ) ;
}
}
break ;
case IDM_SEARCH_FIND :
case IDM_SEARCH_REPLACE :
2014-12-21 19:43:40 +00:00
case IDM_SEARCH_MARK :
2010-01-29 23:52:47 +00:00
{
const int strSize = FINDREPLACE_MAXLENGTH ;
TCHAR str [ strSize ] ;
bool isFirstTime = ! _findReplaceDlg . isCreated ( ) ;
2015-08-06 09:03:57 +00:00
2014-12-21 19:43:40 +00:00
DIALOG_TYPE dlgID = FIND_DLG ;
if ( id = = IDM_SEARCH_REPLACE )
dlgID = REPLACE_DLG ;
else if ( id = = IDM_SEARCH_MARK )
dlgID = MARK_DLG ;
_findReplaceDlg . doDialog ( dlgID , _nativeLangSpeaker . isRTL ( ) ) ;
2010-01-29 23:52:47 +00:00
2019-12-25 08:32:40 +00:00
const NppGUI & nppGui = ( NppParameters : : getInstance ( ) ) . getNppGUI ( ) ;
if ( ! nppGui . _stopFillingFindField )
{
_pEditView - > getGenericSelectedText ( str , strSize ) ;
_findReplaceDlg . setSearchText ( str ) ;
}
2010-01-29 23:52:47 +00:00
setFindReplaceFolderFilter ( NULL , NULL ) ;
if ( isFirstTime )
2010-03-05 00:15:06 +00:00
_nativeLangSpeaker . changeFindReplaceDlgLang ( _findReplaceDlg ) ;
2010-01-29 23:52:47 +00:00
break ;
}
2014-12-21 19:43:40 +00:00
case IDM_SEARCH_FINDINFILES :
2010-01-29 23:52:47 +00:00
{
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , NPPM_LAUNCHFINDINFILESDLG , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
break ;
}
2014-12-24 02:03:52 +00:00
2010-01-29 23:52:47 +00:00
case IDM_SEARCH_FINDINCREMENT :
{
const int strSize = FINDREPLACE_MAXLENGTH ;
TCHAR str [ strSize ] ;
_pEditView - > getGenericSelectedText ( str , strSize , false ) ;
2014-12-21 19:43:40 +00:00
if ( 0 ! = str [ 0 ] ) // the selected text is not empty, then use it
_incrementFindDlg . setSearchText ( str , _pEditView - > getCurrentBuffer ( ) - > getUnicodeMode ( ) ! = uni8Bit ) ;
2010-01-29 23:52:47 +00:00
_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 ( ) ;
2013-05-20 21:56:30 +00:00
FindStatus status = FSNoMessage ;
_findReplaceDlg . processFindNext ( s . c_str ( ) , & op , & status ) ;
if ( status = = FSEndReached )
2018-02-14 09:02:55 +00:00
{
2018-02-19 10:40:47 +00:00
generic_string msg = _nativeLangSpeaker . getLocalizedStrFromID ( " find-status-end-reached " , TEXT ( " Find: Found the 1st occurrence from the top. The end of the document has been reached. " ) ) ;
2018-02-14 09:02:55 +00:00
_findReplaceDlg . setStatusbarMessage ( msg , FSEndReached ) ;
}
2013-05-20 21:56:30 +00:00
else if ( status = = FSTopReached )
2018-02-14 09:02:55 +00:00
{
2018-02-19 10:40:47 +00:00
generic_string msg = _nativeLangSpeaker . getLocalizedStrFromID ( " find-status-top-reached " , TEXT ( " Find: Found the 1st occurrence from the bottom. The beginning of the document has been reached. " ) ) ;
2018-02-14 09:02:55 +00:00
_findReplaceDlg . setStatusbarMessage ( msg , FSTopReached ) ;
}
2010-01-29 23:52:47 +00:00
}
break ;
case IDM_SEARCH_SETANDFINDNEXT :
case IDM_SEARCH_SETANDFINDPREV :
{
bool isFirstTime = ! _findReplaceDlg . isCreated ( ) ;
if ( isFirstTime )
2010-03-05 00:15:06 +00:00
_findReplaceDlg . doDialog ( FIND_DLG , _nativeLangSpeaker . isRTL ( ) , false ) ;
2010-01-29 23:52:47 +00:00
const int strSize = FINDREPLACE_MAXLENGTH ;
TCHAR str [ strSize ] ;
_pEditView - > getGenericSelectedText ( str , strSize ) ;
_findReplaceDlg . setSearchText ( str ) ;
2010-09-04 17:22:03 +00:00
_findReplaceDlg . _env - > _str2Search = str ;
2010-01-29 23:52:47 +00:00
setFindReplaceFolderFilter ( NULL , NULL ) ;
if ( isFirstTime )
2010-03-05 00:15:06 +00:00
_nativeLangSpeaker . changeFindReplaceDlgLang ( _findReplaceDlg ) ;
2010-01-29 23:52:47 +00:00
FindOption op = _findReplaceDlg . getCurrentOptions ( ) ;
op . _whichDirection = ( id = = IDM_SEARCH_SETANDFINDNEXT ? DIR_DOWN : DIR_UP ) ;
2013-05-20 21:56:30 +00:00
FindStatus status = FSNoMessage ;
_findReplaceDlg . processFindNext ( str , & op , & status ) ;
if ( status = = FSEndReached )
2018-02-14 09:02:55 +00:00
{
2018-02-19 10:40:47 +00:00
generic_string msg = _nativeLangSpeaker . getLocalizedStrFromID ( " find-status-end-reached " , TEXT ( " Find: Found the 1st occurrence from the top. The end of the document has been reached. " ) ) ;
2018-02-14 09:02:55 +00:00
_findReplaceDlg . setStatusbarMessage ( msg , FSEndReached ) ;
}
2013-05-20 21:56:30 +00:00
else if ( status = = FSTopReached )
2018-02-14 09:02:55 +00:00
{
2018-02-19 10:40:47 +00:00
generic_string msg = _nativeLangSpeaker . getLocalizedStrFromID ( " find-status-top-reached " , TEXT ( " Find: Found the 1st occurrence from the bottom. The beginning of the document has been reached. " ) ) ;
2018-02-14 09:02:55 +00:00
_findReplaceDlg . setStatusbarMessage ( msg , FSTopReached ) ;
}
2010-01-29 23:52:47 +00:00
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
case IDM_SEARCH_GOTONEXTFOUND :
{
_findReplaceDlg . gotoNextFoundResult ( ) ;
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
case IDM_SEARCH_GOTOPREVFOUND :
{
_findReplaceDlg . gotoNextFoundResult ( - 1 ) ;
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
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 ( ) ;
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
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 ) ;
2013-05-20 21:56:30 +00:00
FindStatus status = FSNoMessage ;
_findReplaceDlg . processFindNext ( text2Find , & op , & status ) ;
if ( status = = FSEndReached )
2018-02-14 09:02:55 +00:00
{
2018-02-19 10:40:47 +00:00
generic_string msg = _nativeLangSpeaker . getLocalizedStrFromID ( " find-status-end-reached " , TEXT ( " Find: Found the 1st occurrence from the top. The end of the document has been reached. " ) ) ;
2018-02-14 09:02:55 +00:00
_findReplaceDlg . setStatusbarMessage ( msg , FSEndReached ) ;
}
2013-05-20 21:56:30 +00:00
else if ( status = = FSTopReached )
2018-02-14 09:02:55 +00:00
{
2018-02-19 10:40:47 +00:00
generic_string msg = _nativeLangSpeaker . getLocalizedStrFromID ( " find-status-top-reached " , TEXT ( " Find: Found the 1st occurrence from the bottom. The beginning of the document has been reached. " ) ) ;
2018-02-14 09:02:55 +00:00
_findReplaceDlg . setStatusbarMessage ( msg , FSTopReached ) ;
}
2010-01-29 23:52:47 +00:00
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
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 ] ;
2013-09-18 17:52:34 +00:00
TCHAR text2Find2 [ strSize ] ;
2010-01-29 23:52:47 +00:00
_pEditView - > getGenericSelectedText ( text2Find , strSize , false ) ;
2013-09-18 17:52:34 +00:00
_pEditView - > getGenericWordOnCaretPos ( text2Find2 , strSize ) ;
2010-01-29 23:52:47 +00:00
if ( text2Find [ 0 ] = = ' \0 ' )
{
2013-09-18 17:52:34 +00:00
_findReplaceDlg . markAll ( text2Find2 , styleID , true ) ;
2010-01-29 23:52:47 +00:00
}
2013-09-18 17:52:34 +00:00
else
{
_findReplaceDlg . markAll ( text2Find , styleID , lstrlen ( text2Find ) = = lstrlen ( text2Find2 ) ) ;
}
2010-01-29 23:52:47 +00:00
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
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 ) ;
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
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 ) ;
}
2018-02-14 09:02:55 +00:00
break ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
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 ;
2018-02-14 09:02:55 +00:00
goToPreviousIndicator ( styleID ) ;
2010-01-29 23:52:47 +00:00
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
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 ) ;
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
case IDM_SEARCH_GOTOLINE :
{
bool isFirstTime = ! _goToLineDlg . isCreated ( ) ;
2010-03-05 00:15:06 +00:00
_goToLineDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
2010-01-29 23:52:47 +00:00
if ( isFirstTime )
2010-03-05 00:15:06 +00:00
_nativeLangSpeaker . changeDlgLang ( _goToLineDlg . getHSelf ( ) , " GoToLine " ) ;
2010-01-29 23:52:47 +00:00
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
2011-05-19 21:19:05 +00:00
case IDM_SEARCH_FINDCHARINRANGE :
{
bool isFirstTime = ! _findCharsInRangeDlg . isCreated ( ) ;
_findCharsInRangeDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
if ( isFirstTime )
_nativeLangSpeaker . changeDlgLang ( _findCharsInRangeDlg . getHSelf ( ) , " FindCharsInRange " ) ;
}
2018-02-14 09:02:55 +00:00
break ;
2011-05-19 21:19:05 +00:00
2011-02-19 15:06:53 +00:00
case IDM_EDIT_COLUMNMODETIP :
{
_nativeLangSpeaker . messageBox ( " ColumnModeTip " ,
_pPublicInterface - > getHSelf ( ) ,
TEXT ( " Please use \" ALT+Mouse Selection \" or \" Alt+Shift+Arrow key \" to switch to column mode. " ) ,
2011-03-31 00:14:18 +00:00
TEXT ( " Column Mode Tip " ) ,
2011-02-19 15:06:53 +00:00
MB_OK | MB_APPLMODAL ) ;
}
2018-02-14 09:02:55 +00:00
break ;
2011-02-19 15:06:53 +00:00
2010-01-29 23:52:47 +00:00
case IDM_EDIT_COLUMNMODE :
{
bool isFirstTime = ! _colEditorDlg . isCreated ( ) ;
2010-03-05 00:15:06 +00:00
_colEditorDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
2010-01-29 23:52:47 +00:00
if ( isFirstTime )
2010-03-05 00:15:06 +00:00
_nativeLangSpeaker . changeDlgLang ( _colEditorDlg . getHSelf ( ) , " ColumnEditor " ) ;
2010-01-29 23:52:47 +00:00
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
case IDM_SEARCH_GOTOMATCHINGBRACE :
2013-08-01 18:50:39 +00:00
case IDM_SEARCH_SELECTMATCHINGBRACES :
2010-01-29 23:52:47 +00:00
{
int braceAtCaret = - 1 ;
int braceOpposite = - 1 ;
findMatchingBracePos ( braceAtCaret , braceOpposite ) ;
if ( braceOpposite ! = - 1 )
2013-08-01 18:50:39 +00:00
{
2019-03-13 01:02:35 +00:00
if ( id = = IDM_SEARCH_GOTOMATCHINGBRACE )
2013-08-01 18:50:39 +00:00
_pEditView - > execute ( SCI_GOTOPOS , braceOpposite ) ;
else
_pEditView - > execute ( SCI_SETSEL , min ( braceAtCaret , braceOpposite ) , max ( braceAtCaret , braceOpposite ) + 1 ) ; // + 1 so we always include the ending brace in the selection.
}
2010-01-29 23:52:47 +00:00
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
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 ;
2015-08-06 09:03:57 +00:00
2012-09-28 21:04:16 +00:00
case IDM_LANG_USER_DLG :
2010-01-29 23:52:47 +00:00
{
bool isUDDlgVisible = false ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
UserDefineDialog * udd = _pEditView - > getUserDefineDlg ( ) ;
if ( ! udd - > isCreated ( ) )
{
2010-03-05 00:15:06 +00:00
_pEditView - > doUserDefineDlg ( true , _nativeLangSpeaker . isRTL ( ) ) ;
_nativeLangSpeaker . changeUserDefineLang ( udd ) ;
2010-01-29 23:52:47 +00:00
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 ;
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_SIZE , 0 , 0 ) ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
udd - > display ( false ) ;
_mainWindowStatus & = ~ WindowUserActive ;
}
else if ( ( isUDDlgDocked ) & & ( ! isUDDlgVisible ) )
{
if ( ! _pMainSplitter )
{
_pMainSplitter = new SplitterContainer ;
2010-03-26 00:22:14 +00:00
_pMainSplitter - > init ( _pPublicInterface - > getHinst ( ) , _pPublicInterface - > getHSelf ( ) ) ;
2010-01-29 23:52:47 +00:00
Window * pWindow ;
if ( bothActive ( ) )
pWindow = & _subSplitter ;
else
pWindow = _pDocTab ;
2015-08-06 09:03:57 +00:00
_pMainSplitter - > create ( pWindow , ScintillaEditView : : getUserDefineDlg ( ) , 8 , SplitterMode : : RIGHT_FIX , 45 ) ;
2010-01-29 23:52:47 +00:00
}
_pMainWindow = _pMainSplitter ;
_pMainSplitter - > setWin0 ( ( bothActive ( ) ) ? ( Window * ) & _subSplitter : ( Window * ) _pDocTab ) ;
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_SIZE , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
_pMainWindow - > display ( ) ;
_mainWindowStatus | = WindowUserActive ;
}
else if ( ( ! isUDDlgDocked ) & & ( isUDDlgVisible ) )
{
udd - > display ( false ) ;
}
else //((!isUDDlgDocked)&&(!isUDDlgVisible))
udd - > display ( ) ;
}
2012-09-28 21:04:16 +00:00
checkMenuItem ( IDM_LANG_USER_DLG , ! isUDDlgVisible ) ;
_toolBar . setCheck ( IDM_LANG_USER_DLG , ! isUDDlgVisible ) ;
2010-01-29 23:52:47 +00:00
}
2018-02-14 09:02:55 +00:00
break ;
2010-01-29 23:52:47 +00:00
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 ;
2019-02-01 00:00:36 +00:00
case IDM_EDIT_REMOVE_DUP_LINES :
_pEditView - > execute ( SCI_BEGINUNDOACTION ) ;
removeDuplicateLines ( ) ;
_pEditView - > execute ( SCI_ENDUNDOACTION ) ;
break ;
2010-01-29 23:52:47 +00:00
case IDM_EDIT_SPLIT_LINES :
_pEditView - > execute ( SCI_TARGETFROMSELECTION ) ;
2015-04-29 00:45:11 +00:00
if ( _pEditView - > execute ( SCI_GETEDGEMODE ) = = EDGE_NONE )
2016-08-09 22:22:45 +00:00
{
2015-04-29 00:45:11 +00:00
_pEditView - > execute ( SCI_LINESSPLIT ) ;
2016-08-09 22:22:45 +00:00
}
2015-04-29 00:45:11 +00:00
else
2016-08-09 22:22:45 +00:00
{
auto textWidth = _pEditView - > execute ( SCI_TEXTWIDTH , STYLE_LINENUMBER , reinterpret_cast < LPARAM > ( " P " ) ) ;
auto edgeCol = _pEditView - > execute ( SCI_GETEDGECOLUMN ) ;
_pEditView - > execute ( SCI_LINESSPLIT , textWidth * edgeCol ) ;
}
2010-01-29 23:52:47 +00:00
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 ;
2012-12-05 00:10:22 +00:00
case IDM_EDIT_REMOVEEMPTYLINES :
_pEditView - > execute ( SCI_BEGINUNDOACTION ) ;
removeEmptyLine ( false ) ;
_pEditView - > execute ( SCI_ENDUNDOACTION ) ;
break ;
case IDM_EDIT_REMOVEEMPTYLINESWITHBLANK :
_pEditView - > execute ( SCI_BEGINUNDOACTION ) ;
removeEmptyLine ( true ) ;
_pEditView - > execute ( SCI_ENDUNDOACTION ) ;
break ;
2010-01-29 23:52:47 +00:00
case IDM_EDIT_UPPERCASE :
_pEditView - > convertSelectedTextToUpperCase ( ) ;
break ;
case IDM_EDIT_LOWERCASE :
_pEditView - > convertSelectedTextToLowerCase ( ) ;
break ;
2016-09-10 10:30:43 +00:00
case IDM_EDIT_PROPERCASE_FORCE :
2016-06-30 01:13:00 +00:00
_pEditView - > convertSelectedTextToNewerCase ( TITLECASE_FORCE ) ;
break ;
2016-09-10 10:30:43 +00:00
case IDM_EDIT_PROPERCASE_BLEND :
2016-06-30 01:13:00 +00:00
_pEditView - > convertSelectedTextToNewerCase ( TITLECASE_BLEND ) ;
break ;
case IDM_EDIT_SENTENCECASE_FORCE :
_pEditView - > convertSelectedTextToNewerCase ( SENTENCECASE_FORCE ) ;
break ;
case IDM_EDIT_SENTENCECASE_BLEND :
_pEditView - > convertSelectedTextToNewerCase ( SENTENCECASE_BLEND ) ;
break ;
case IDM_EDIT_INVERTCASE :
_pEditView - > convertSelectedTextToNewerCase ( INVERTCASE ) ;
break ;
case IDM_EDIT_RANDOMCASE :
_pEditView - > convertSelectedTextToNewerCase ( RANDOMCASE ) ;
break ;
2010-01-29 23:52:47 +00:00
case IDM_EDIT_BLOCK_COMMENT :
doBlockComment ( cm_toggle ) ;
break ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
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 ;
2012-08-31 19:14:00 +00:00
case IDM_EDIT_STREAM_UNCOMMENT :
undoStreamComment ( ) ;
break ;
2010-01-29 23:52:47 +00:00
case IDM_EDIT_TRIMTRAILING :
2018-08-02 14:09:38 +00:00
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2018-08-02 14:09:38 +00:00
2010-12-05 19:33:48 +00:00
_pEditView - > execute ( SCI_BEGINUNDOACTION ) ;
doTrim ( lineTail ) ;
_pEditView - > execute ( SCI_ENDUNDOACTION ) ;
break ;
2018-08-02 14:09:38 +00:00
}
2010-12-05 19:33:48 +00:00
case IDM_EDIT_TRIMLINEHEAD :
2018-08-02 14:09:38 +00:00
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2018-08-02 14:09:38 +00:00
2010-12-05 19:33:48 +00:00
_pEditView - > execute ( SCI_BEGINUNDOACTION ) ;
doTrim ( lineHeader ) ;
_pEditView - > execute ( SCI_ENDUNDOACTION ) ;
break ;
2018-08-02 14:09:38 +00:00
}
2010-12-05 19:33:48 +00:00
case IDM_EDIT_TRIM_BOTH :
2018-08-02 14:09:38 +00:00
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2018-08-02 14:09:38 +00:00
2010-12-05 19:33:48 +00:00
_pEditView - > execute ( SCI_BEGINUNDOACTION ) ;
doTrim ( lineTail ) ;
doTrim ( lineHeader ) ;
_pEditView - > execute ( SCI_ENDUNDOACTION ) ;
break ;
2018-08-02 14:09:38 +00:00
}
2010-12-05 19:33:48 +00:00
case IDM_EDIT_EOL2WS :
_pEditView - > execute ( SCI_BEGINUNDOACTION ) ;
2019-05-25 00:43:43 +00:00
_pEditView - > execute ( SCI_TARGETWHOLEDOCUMENT ) ;
2010-12-05 19:33:48 +00:00
_pEditView - > execute ( SCI_LINESJOIN ) ;
_pEditView - > execute ( SCI_ENDUNDOACTION ) ;
break ;
case IDM_EDIT_TRIMALL :
2018-08-02 14:09:38 +00:00
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2018-08-02 14:09:38 +00:00
2010-12-05 19:33:48 +00:00
_pEditView - > execute ( SCI_BEGINUNDOACTION ) ;
doTrim ( lineTail ) ;
doTrim ( lineHeader ) ;
2019-05-25 00:43:43 +00:00
_pEditView - > execute ( SCI_TARGETWHOLEDOCUMENT ) ;
2010-12-05 19:33:48 +00:00
_pEditView - > execute ( SCI_LINESJOIN ) ;
_pEditView - > execute ( SCI_ENDUNDOACTION ) ;
break ;
2018-08-02 14:09:38 +00:00
}
2010-12-05 19:33:48 +00:00
case IDM_EDIT_TAB2SW :
2012-08-25 19:23:16 +00:00
wsTabConvert ( tab2Space ) ;
2010-12-05 19:33:48 +00:00
break ;
2012-08-25 19:23:16 +00:00
case IDM_EDIT_SW2TAB_LEADING :
wsTabConvert ( space2TabLeading ) ;
break ;
case IDM_EDIT_SW2TAB_ALL :
wsTabConvert ( space2TabAll ) ;
2010-01-29 23:52:47 +00:00
break ;
case IDM_EDIT_SETREADONLY :
{
Buffer * buf = _pEditView - > getCurrentBuffer ( ) ;
buf - > setUserReadOnly ( ! buf - > getUserReadOnly ( ) ) ;
}
break ;
case IDM_EDIT_CLEARREADONLY :
{
Buffer * buf = _pEditView - > getCurrentBuffer ( ) ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
DWORD dwFileAttribs = : : GetFileAttributes ( buf - > getFullPathName ( ) ) ;
2019-06-10 19:38:10 +00:00
dwFileAttribs & = ~ FILE_ATTRIBUTE_READONLY ;
2010-01-29 23:52:47 +00:00
2015-08-06 09:03:57 +00:00
: : SetFileAttributes ( buf - > getFullPathName ( ) , dwFileAttribs ) ;
2010-01-29 23:52:47 +00:00
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 :
2011-02-19 15:06:53 +00:00
deleteMarkedLines ( true ) ;
break ;
case IDM_SEARCH_DELETEUNMARKEDLINES :
deleteMarkedLines ( false ) ;
2010-01-29 23:52:47 +00:00
break ;
2010-05-27 00:05:51 +00:00
case IDM_SEARCH_INVERSEMARKS :
inverseMarks ( ) ;
break ;
2010-01-29 23:52:47 +00:00
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 ) ;
2010-03-26 00:22:14 +00:00
SetWindowPos ( _pPublicInterface - > getHSelf ( ) , check = = MF_CHECKED ? HWND_TOPMOST : HWND_NOTOPMOST , 0 , 0 , 0 , 0 , SWP_NOMOVE | SWP_NOSIZE ) ;
2010-01-29 23:52:47 +00:00
}
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 :
{
2012-05-25 23:40:44 +00:00
_isFolding = true ; // So we can ignore events while folding is taking place
2012-06-26 00:55:01 +00:00
bool doCollapse = ( id = = IDM_VIEW_TOGGLE_FOLDALL ) ? fold_collapse : fold_uncollapse ;
_pEditView - > foldAll ( doCollapse ) ;
if ( _pDocMap )
{
_pDocMap - > foldAll ( doCollapse ) ;
}
2012-05-25 23:40:44 +00:00
_isFolding = false ;
2010-01-29 23:52:47 +00:00
}
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 :
2012-05-25 23:40:44 +00:00
_isFolding = true ; // So we can ignore events while folding is taking place
_pEditView - > collapse ( id - IDM_VIEW_FOLD - 1 , fold_collapse ) ;
_isFolding = false ;
2010-01-29 23:52:47 +00:00
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 :
2012-05-25 23:40:44 +00:00
_isFolding = true ; // So we can ignore events while folding is taking place
_pEditView - > collapse ( id - IDM_VIEW_UNFOLD - 1 , fold_uncollapse ) ;
_isFolding = false ;
2010-01-29 23:52:47 +00:00
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
2019-08-14 20:13:24 +00:00
int iconDpiDynamicalSize = NppParameters : : getInstance ( ) . _dpiManager . scaleY ( _toReduceTabBar ? 12 : 18 ) ;
2010-01-29 23:52:47 +00:00
//Resize the tab height
2019-08-14 20:13:24 +00:00
int tabDpiDynamicalWidth = NppParameters : : getInstance ( ) . _dpiManager . scaleX ( 45 ) ;
int tabDpiDynamicalHeight = NppParameters : : getInstance ( ) . _dpiManager . scaleY ( _toReduceTabBar ? 22 : 25 ) ;
2015-05-01 17:51:59 +00:00
TabCtrl_SetItemSize ( _mainDocTab . getHSelf ( ) , tabDpiDynamicalWidth , tabDpiDynamicalHeight ) ;
TabCtrl_SetItemSize ( _subDocTab . getHSelf ( ) , tabDpiDynamicalWidth , tabDpiDynamicalHeight ) ;
2014-02-11 00:26:24 +00:00
_docTabIconList . setIconSize ( iconDpiDynamicalSize ) ;
2010-01-29 23:52:47 +00:00
//change the font
int stockedFont = _toReduceTabBar ? DEFAULT_GUI_FONT : SYSTEM_FONT ;
HFONT hf = ( HFONT ) : : GetStockObject ( stockedFont ) ;
if ( hf )
{
2016-08-09 22:22:45 +00:00
: : SendMessage ( _mainDocTab . getHSelf ( ) , WM_SETFONT , reinterpret_cast < WPARAM > ( hf ) , MAKELPARAM ( TRUE , 0 ) ) ;
: : SendMessage ( _subDocTab . getHSelf ( ) , WM_SETFONT , reinterpret_cast < WPARAM > ( hf ) , MAKELPARAM ( TRUE , 0 ) ) ;
2010-01-29 23:52:47 +00:00
}
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_SIZE , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
break ;
}
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
case IDM_VIEW_REFRESHTABAR :
{
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_SIZE , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
break ;
}
case IDM_VIEW_LOCKTABBAR :
{
bool isDrag = TabBarPlus : : doDragNDropOrNot ( ) ;
TabBarPlus : : doDragNDrop ( ! isDrag ) ;
break ;
}
case IDM_VIEW_DRAWTABBAR_INACIVETAB :
{
TabBarPlus : : setDrawInactiveTab ( ! TabBarPlus : : drawInactiveTab ( ) ) ;
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
2019-08-14 20:13:24 +00:00
int tabDpiDynamicalHeight = NppParameters : : getInstance ( ) . _dpiManager . scaleY ( 22 ) ;
int tabDpiDynamicalWidth = NppParameters : : getInstance ( ) . _dpiManager . scaleX ( TabBarPlus : : drawTabCloseButton ( ) ? 60 : 45 ) ;
2016-07-18 00:08:29 +00:00
TabCtrl_SetItemSize ( _mainDocTab . getHSelf ( ) , tabDpiDynamicalWidth , tabDpiDynamicalHeight ) ;
TabCtrl_SetItemSize ( _subDocTab . getHSelf ( ) , tabDpiDynamicalWidth , tabDpiDynamicalHeight ) ;
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_SIZE , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
break ;
}
case IDM_VIEW_DRAWTABBAR_DBCLK2CLOSE :
{
TabBarPlus : : setDbClk2Close ( ! TabBarPlus : : isDbClk2Close ( ) ) ;
break ;
}
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
case IDM_VIEW_DRAWTABBAR_VERTICAL :
{
TabBarPlus : : setVertical ( ! TabBarPlus : : isVertical ( ) ) ;
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_SIZE , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
break ;
}
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
case IDM_VIEW_DRAWTABBAR_MULTILINE :
{
TabBarPlus : : setMultiLine ( ! TabBarPlus : : isMultiLine ( ) ) ;
2015-08-06 09:03:57 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_SIZE , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
break ;
}
case IDM_VIEW_POSTIT :
{
postItToggle ( ) ;
}
break ;
2019-03-16 03:19:02 +00:00
case IDM_VIEW_IN_FIREFOX :
case IDM_VIEW_IN_CHROME :
case IDM_VIEW_IN_IE :
{
auto currentBuf = _pEditView - > getCurrentBuffer ( ) ;
if ( ! currentBuf - > isUntitled ( ) )
{
generic_string appName ;
if ( id = = IDM_VIEW_IN_FIREFOX )
{
appName = TEXT ( " firefox.exe " ) ;
}
else if ( id = = IDM_VIEW_IN_CHROME )
{
appName = TEXT ( " chrome.exe " ) ;
}
else // if (id == IDM_VIEW_IN_IE)
{
appName = TEXT ( " IEXPLORE.EXE " ) ;
}
TCHAR valData [ MAX_PATH ] = { ' \0 ' } ;
2019-03-19 01:52:13 +00:00
DWORD valDataLen = MAX_PATH * sizeof ( TCHAR ) ;
2019-03-18 08:45:25 +00:00
DWORD valType ;
2019-03-16 03:19:02 +00:00
HKEY hKey2Check = nullptr ;
generic_string appEntry = TEXT ( " SOFTWARE \\ Microsoft \\ Windows \\ CurrentVersion \\ App Paths \\ " ) ;
appEntry + = appName ;
: : RegOpenKeyEx ( HKEY_LOCAL_MACHINE , appEntry . c_str ( ) , 0 , KEY_READ , & hKey2Check ) ;
2019-03-19 01:52:13 +00:00
: : RegQueryValueEx ( hKey2Check , TEXT ( " " ) , nullptr , & valType , reinterpret_cast < LPBYTE > ( valData ) , & valDataLen ) ;
2019-03-16 03:19:02 +00:00
generic_string fullCurrentPath = TEXT ( " \" " ) ;
fullCurrentPath + = currentBuf - > getFullPathName ( ) ;
fullCurrentPath + = TEXT ( " \" " ) ;
if ( hKey2Check & & valData [ 0 ] ! = ' \0 ' )
{
: : ShellExecute ( NULL , TEXT ( " open " ) , valData , fullCurrentPath . c_str ( ) , NULL , SW_SHOWNORMAL ) ;
}
else
{
_nativeLangSpeaker . messageBox ( " ViewInBrowser " ,
_pPublicInterface - > getHSelf ( ) ,
TEXT ( " Application cannot be found in your system. " ) ,
TEXT ( " View Current File in Browser " ) ,
MB_OK ) ;
}
: : RegCloseKey ( hKey2Check ) ;
}
}
break ;
case IDM_VIEW_IN_EDGE :
{
auto currentBuf = _pEditView - > getCurrentBuffer ( ) ;
if ( ! currentBuf - > isUntitled ( ) )
{
// Don't put the quots for Edge, otherwise it doesn't work
//fullCurrentPath = TEXT("\"");
generic_string fullCurrentPath = currentBuf - > getFullPathName ( ) ;
//fullCurrentPath += TEXT("\"");
ShellExecute ( NULL , TEXT ( " open " ) , TEXT ( " shell:Appsfolder \\ Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge " ) , fullCurrentPath . c_str ( ) , NULL , SW_SHOW ) ;
}
}
break ;
2010-01-29 23:52:47 +00:00
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 ) ;
2010-07-26 00:12:02 +00:00
_mainEditView . showEOL ( false ) ;
_mainEditView . showWSAndTab ( isChecked ) ;
_subEditView . showEOL ( false ) ;
_subEditView . showWSAndTab ( isChecked ) ;
2010-09-01 20:36:47 +00:00
2019-08-14 20:13:24 +00:00
ScintillaViewParams & svp1 = ( ScintillaViewParams & ) ( NppParameters : : getInstance ( ) ) . getSVP ( ) ;
2010-09-01 20:36:47 +00:00
svp1 . _whiteSpaceShow = isChecked ;
svp1 . _eolShow = false ;
2010-01-29 23:52:47 +00:00
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 ) ;
2010-07-26 00:12:02 +00:00
_mainEditView . showEOL ( isChecked ) ;
_subEditView . showEOL ( isChecked ) ;
_mainEditView . showWSAndTab ( false ) ;
_subEditView . showWSAndTab ( false ) ;
2010-09-01 20:36:47 +00:00
2019-08-14 20:13:24 +00:00
ScintillaViewParams & svp1 = ( ScintillaViewParams & ) ( NppParameters : : getInstance ( ) ) . getSVP ( ) ;
2010-09-01 20:36:47 +00:00
svp1 . _whiteSpaceShow = false ;
svp1 . _eolShow = isChecked ;
2010-01-29 23:52:47 +00:00
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 ) ) ;
2010-07-26 00:12:02 +00:00
_mainEditView . showInvisibleChars ( isChecked ) ;
_subEditView . showInvisibleChars ( isChecked ) ;
2010-01-29 23:52:47 +00:00
_toolBar . setCheck ( IDM_VIEW_ALL_CHARACTERS , isChecked ) ;
2010-09-01 20:36:47 +00:00
2019-08-14 20:13:24 +00:00
ScintillaViewParams & svp1 = ( ScintillaViewParams & ) ( NppParameters : : getInstance ( ) ) . getSVP ( ) ;
2010-09-01 20:36:47 +00:00
svp1 . _whiteSpaceShow = isChecked ;
svp1 . _eolShow = isChecked ;
2010-01-29 23:52:47 +00:00
break ;
}
case IDM_VIEW_INDENT_GUIDE :
{
2010-07-26 00:12:02 +00:00
_mainEditView . showIndentGuideLine ( ! _pEditView - > isShownIndentGuide ( ) ) ;
_subEditView . showIndentGuideLine ( ! _pEditView - > isShownIndentGuide ( ) ) ;
2010-01-29 23:52:47 +00:00
_toolBar . setCheck ( IDM_VIEW_INDENT_GUIDE , _pEditView - > isShownIndentGuide ( ) ) ;
checkMenuItem ( IDM_VIEW_INDENT_GUIDE , _pEditView - > isShownIndentGuide ( ) ) ;
2010-09-01 20:36:47 +00:00
2019-08-14 20:13:24 +00:00
ScintillaViewParams & svp1 = ( ScintillaViewParams & ) ( NppParameters : : getInstance ( ) ) . getSVP ( ) ;
2010-09-01 20:36:47 +00:00
svp1 . _indentGuideLineShow = _pEditView - > isShownIndentGuide ( ) ;
2010-01-29 23:52:47 +00:00
break ;
}
case IDM_VIEW_WRAP :
{
2012-03-07 02:17:16 +00:00
bool isWraped = ! _pEditView - > isWrap ( ) ;
2017-02-06 19:58:37 +00:00
// ViewMoveAtWrappingDisableFix: Disable wrapping messes up visible lines. Therefore save view position before in IDM_VIEW_WRAP and restore after SCN_PAINTED, as Scintilla-Doc. says
2012-06-30 01:30:00 +00:00
if ( ! isWraped )
{
_mainEditView . saveCurrentPos ( ) ;
_mainEditView . setWrapRestoreNeeded ( true ) ;
_subEditView . saveCurrentPos ( ) ;
_subEditView . setWrapRestoreNeeded ( true ) ;
}
2012-03-07 02:17:16 +00:00
_mainEditView . wrap ( isWraped ) ;
_subEditView . wrap ( isWraped ) ;
_toolBar . setCheck ( IDM_VIEW_WRAP , isWraped ) ;
checkMenuItem ( IDM_VIEW_WRAP , isWraped ) ;
2019-08-14 20:13:24 +00:00
ScintillaViewParams & svp1 = ( ScintillaViewParams & ) ( NppParameters : : getInstance ( ) ) . getSVP ( ) ;
2012-03-07 02:17:16 +00:00
svp1 . _doWrap = isWraped ;
if ( _pDocMap )
2012-03-04 18:04:36 +00:00
{
2012-03-14 02:07:45 +00:00
_pDocMap - > initWrapMap ( ) ;
_pDocMap - > wrapMap ( ) ;
2012-03-04 18:04:36 +00:00
}
2010-01-29 23:52:47 +00:00
break ;
}
case IDM_VIEW_WRAP_SYMBOL :
{
2010-07-26 00:12:02 +00:00
_mainEditView . showWrapSymbol ( ! _pEditView - > isWrapSymbolVisible ( ) ) ;
_subEditView . showWrapSymbol ( ! _pEditView - > isWrapSymbolVisible ( ) ) ;
2010-01-29 23:52:47 +00:00
checkMenuItem ( IDM_VIEW_WRAP_SYMBOL , _pEditView - > isWrapSymbolVisible ( ) ) ;
2010-09-01 20:36:47 +00:00
2019-08-14 20:13:24 +00:00
ScintillaViewParams & svp1 = ( ScintillaViewParams & ) ( NppParameters : : getInstance ( ) ) . getSVP ( ) ;
2010-09-01 20:36:47 +00:00
svp1 . _wrapSymbolShow = _pEditView - > isWrapSymbolVisible ( ) ;
2010-01-29 23:52:47 +00:00
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 :
{
2010-03-17 23:37:58 +00:00
bool isSynScollV = ! _syncInfo . _isSynScollV ;
2015-08-06 09:03:57 +00:00
2010-03-17 23:37:58 +00:00
checkMenuItem ( IDM_VIEW_SYNSCROLLV , isSynScollV ) ;
_toolBar . setCheck ( IDM_VIEW_SYNSCROLLV , isSynScollV ) ;
2010-01-29 23:52:47 +00:00
2010-03-17 23:37:58 +00:00
_syncInfo . _isSynScollV = isSynScollV ;
2010-01-29 23:52:47 +00:00
if ( _syncInfo . _isSynScollV )
{
2016-06-05 18:29:21 +00:00
int mainCurrentLine = static_cast < int32_t > ( _mainEditView . execute ( SCI_GETFIRSTVISIBLELINE ) ) ;
int subCurrentLine = static_cast < int32_t > ( _subEditView . execute ( SCI_GETFIRSTVISIBLELINE ) ) ;
2010-01-29 23:52:47 +00:00
_syncInfo . _line = mainCurrentLine - subCurrentLine ;
}
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
}
break ;
case IDM_VIEW_SYNSCROLLH :
{
2010-03-17 23:37:58 +00:00
bool isSynScollH = ! _syncInfo . _isSynScollH ;
checkMenuItem ( IDM_VIEW_SYNSCROLLH , isSynScollH ) ;
_toolBar . setCheck ( IDM_VIEW_SYNSCROLLH , isSynScollH ) ;
2010-01-29 23:52:47 +00:00
2010-03-17 23:37:58 +00:00
_syncInfo . _isSynScollH = isSynScollH ;
2010-01-29 23:52:47 +00:00
if ( _syncInfo . _isSynScollH )
{
2016-06-05 18:29:21 +00:00
int mxoffset = static_cast < int32_t > ( _mainEditView . execute ( SCI_GETXOFFSET ) ) ;
2016-08-09 22:22:45 +00:00
int pixel = static_cast < int32_t > ( _mainEditView . execute ( SCI_TEXTWIDTH , STYLE_DEFAULT , reinterpret_cast < LPARAM > ( " P " ) ) ) ;
2010-01-29 23:52:47 +00:00
int mainColumn = mxoffset / pixel ;
2016-06-05 18:29:21 +00:00
int sxoffset = static_cast < int32_t > ( _subEditView . execute ( SCI_GETXOFFSET ) ) ;
2016-08-09 22:22:45 +00:00
pixel = int ( _subEditView . execute ( SCI_TEXTWIDTH , STYLE_DEFAULT , reinterpret_cast < LPARAM > ( " P " ) ) ) ;
2010-01-29 23:52:47 +00:00
int subColumn = sxoffset / pixel ;
_syncInfo . _column = mainColumn - subColumn ;
}
}
break ;
2010-09-19 01:27:41 +00:00
case IDM_VIEW_SUMMARY :
{
generic_string characterNumber = TEXT ( " " ) ;
Buffer * curBuf = _pEditView - > getCurrentBuffer ( ) ;
2018-05-31 14:13:01 +00:00
int64_t fileLen = curBuf - > getFileLength ( ) ;
2010-09-19 01:27:41 +00:00
2019-04-27 10:48:30 +00:00
// localization for summary date
2019-08-14 20:13:24 +00:00
NativeLangSpeaker * pNativeSpeaker = ( NppParameters : : getInstance ( ) ) . getNativeLangSpeaker ( ) ;
2019-04-27 10:48:30 +00:00
if ( pNativeSpeaker )
2010-09-19 01:27:41 +00:00
{
2019-04-27 10:48:30 +00:00
if ( fileLen ! = - 1 )
{
generic_string filePathLabel = pNativeSpeaker - > getLocalizedStrFromID ( " summary-filepath " , TEXT ( " Full file path: " ) ) ;
generic_string fileCreateTimeLabel = pNativeSpeaker - > getLocalizedStrFromID ( " summary-filecreatetime " , TEXT ( " Created: " ) ) ;
generic_string fileModifyTimeLabel = pNativeSpeaker - > getLocalizedStrFromID ( " summary-filemodifytime " , TEXT ( " Modified: " ) ) ;
characterNumber + = filePathLabel ;
characterNumber + = curBuf - > getFullPathName ( ) ;
characterNumber + = TEXT ( " \r " ) ;
characterNumber + = fileCreateTimeLabel ;
characterNumber + = curBuf - > getFileTime ( Buffer : : ft_created ) ;
characterNumber + = TEXT ( " \r " ) ;
characterNumber + = fileModifyTimeLabel ;
characterNumber + = curBuf - > getFileTime ( Buffer : : ft_modified ) ;
characterNumber + = TEXT ( " \r " ) ;
}
generic_string nbCharLabel = pNativeSpeaker - > getLocalizedStrFromID ( " summary-nbchar " , TEXT ( " Characters (without line endings): " ) ) ;
generic_string nbWordLabel = pNativeSpeaker - > getLocalizedStrFromID ( " summary-nbword " , TEXT ( " Words: " ) ) ;
generic_string nbLineLabel = pNativeSpeaker - > getLocalizedStrFromID ( " summary-nbline " , TEXT ( " Lines: " ) ) ;
2019-07-27 09:03:14 +00:00
generic_string nbByteLabel = pNativeSpeaker - > getLocalizedStrFromID ( " summary-nbbyte " , TEXT ( " Document length: " ) ) ;
2019-04-27 10:48:30 +00:00
generic_string nbSelLabel1 = pNativeSpeaker - > getLocalizedStrFromID ( " summary-nbsel1 " , TEXT ( " selected characters ( " ) ) ;
generic_string nbSelLabel2 = pNativeSpeaker - > getLocalizedStrFromID ( " summary-nbsel2 " , TEXT ( " bytes) in " ) ) ;
generic_string nbRangeLabel = pNativeSpeaker - > getLocalizedStrFromID ( " summary-nbrange " , TEXT ( " ranges " ) ) ;
UniMode um = _pEditView - > getCurrentBuffer ( ) - > getUnicodeMode ( ) ;
auto nbChar = getCurrentDocCharCount ( um ) ;
int nbWord = wordCount ( ) ;
auto nbLine = _pEditView - > execute ( SCI_GETLINECOUNT ) ;
auto nbByte = _pEditView - > execute ( SCI_GETLENGTH ) ;
auto nbSel = getSelectedCharNumber ( um ) ;
auto nbSelByte = getSelectedBytes ( ) ;
auto nbRange = getSelectedAreas ( ) ;
characterNumber + = nbCharLabel ;
characterNumber + = commafyInt ( nbChar ) . c_str ( ) ;
2010-09-19 01:27:41 +00:00
characterNumber + = TEXT ( " \r " ) ;
2019-04-27 10:48:30 +00:00
characterNumber + = nbWordLabel ;
characterNumber + = commafyInt ( nbWord ) . c_str ( ) ;
2010-09-19 01:27:41 +00:00
characterNumber + = TEXT ( " \r " ) ;
2019-04-27 10:48:30 +00:00
characterNumber + = nbLineLabel ;
characterNumber + = commafyInt ( static_cast < int > ( nbLine ) ) . c_str ( ) ;
2010-09-19 01:27:41 +00:00
characterNumber + = TEXT ( " \r " ) ;
2019-04-27 10:48:30 +00:00
characterNumber + = nbByteLabel ;
characterNumber + = commafyInt ( nbByte ) . c_str ( ) ;
2010-09-19 01:27:41 +00:00
characterNumber + = TEXT ( " \r " ) ;
2019-04-27 10:48:30 +00:00
characterNumber + = commafyInt ( nbSel ) . c_str ( ) ;
characterNumber + = nbSelLabel1 ;
characterNumber + = commafyInt ( nbSelByte ) . c_str ( ) ;
characterNumber + = nbSelLabel2 ;
characterNumber + = commafyInt ( nbRange ) . c_str ( ) ;
characterNumber + = nbRangeLabel ;
2010-09-19 01:27:41 +00:00
characterNumber + = TEXT ( " \r " ) ;
2019-04-27 10:48:30 +00:00
generic_string summaryLabel = pNativeSpeaker - > getLocalizedStrFromID ( " summary " , TEXT ( " Summary " ) ) ;
: : MessageBox ( _pPublicInterface - > getHSelf ( ) , characterNumber . c_str ( ) , summaryLabel . c_str ( ) , MB_OK | MB_APPLMODAL ) ;
2010-09-19 01:27:41 +00:00
}
}
break ;
2016-04-24 03:29:05 +00:00
case IDM_VIEW_MONITORING :
{
Buffer * curBuf = _pEditView - > getCurrentBuffer ( ) ;
if ( curBuf - > isMonitoringOn ( ) )
{
2018-10-03 13:53:30 +00:00
monitoringStartOrStopAndUpdateUI ( curBuf , false ) ;
2016-04-24 03:29:05 +00:00
}
else
{
const TCHAR * longFileName = curBuf - > getFullPathName ( ) ;
if ( : : PathFileExists ( longFileName ) )
{
if ( curBuf - > isDirty ( ) )
{
2018-02-04 20:38:49 +00:00
_nativeLangSpeaker . messageBox ( " DocTooDirtyToMonitor " ,
_pPublicInterface - > getHSelf ( ) ,
TEXT ( " The document is dirty. Please save the modification before monitoring it. " ) ,
TEXT ( " Monitoring problem " ) ,
MB_OK ) ;
2016-04-24 03:29:05 +00:00
}
else
{
2018-10-03 13:53:30 +00:00
// Monitoring firstly for making monitoring icon
monitoringStartOrStopAndUpdateUI ( curBuf , true ) ;
2016-04-24 03:29:05 +00:00
2016-05-11 00:18:04 +00:00
MonitorInfo * monitorInfo = new MonitorInfo ( curBuf , _pPublicInterface - > getHSelf ( ) ) ;
2017-07-22 16:17:33 +00:00
HANDLE hThread = : : CreateThread ( NULL , 0 , monitorFileOnChange , ( void * ) monitorInfo , 0 , NULL ) ; // will be deallocated while quitting thread
: : CloseHandle ( hThread ) ;
2016-04-24 03:29:05 +00:00
}
}
else
{
2018-02-04 20:38:49 +00:00
_nativeLangSpeaker . messageBox ( " DocNoExistToMonitor " ,
_pPublicInterface - > getHSelf ( ) ,
TEXT ( " The file should exist to be monitored. " ) ,
TEXT ( " Monitoring problem " ) ,
MB_OK ) ;
2016-04-24 03:29:05 +00:00
}
}
break ;
}
2010-01-29 23:52:47 +00:00
case IDM_EXECUTE :
{
bool isFirstTime = ! _runDlg . isCreated ( ) ;
2010-03-05 00:15:06 +00:00
_runDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
2010-01-29 23:52:47 +00:00
if ( isFirstTime )
2010-03-05 00:15:06 +00:00
_nativeLangSpeaker . changeDlgLang ( _runDlg . getHSelf ( ) , " Run " ) ;
2010-01-29 23:52:47 +00:00
break ;
}
2015-08-14 12:57:19 +00:00
case IDM_FORMAT_TODOS :
case IDM_FORMAT_TOUNIX :
case IDM_FORMAT_TOMAC :
2010-01-29 23:52:47 +00:00
{
2015-10-27 14:35:19 +00:00
EolType newFormat = ( id = = IDM_FORMAT_TODOS )
? EolType : : windows
: ( id = = IDM_FORMAT_TOUNIX ) ? EolType : : unix : EolType : : macos ;
2010-01-29 23:52:47 +00:00
2015-08-14 12:57:19 +00:00
Buffer * buf = _pEditView - > getCurrentBuffer ( ) ;
2016-04-02 14:26:27 +00:00
if ( not buf - > isReadOnly ( ) )
{
2019-08-25 12:58:57 +00:00
std : : lock_guard < std : : mutex > lock ( command_mutex ) ;
2016-04-02 14:26:27 +00:00
buf - > setEolFormat ( newFormat ) ;
_pEditView - > execute ( SCI_CONVERTEOLS , static_cast < int > ( buf - > getEolFormat ( ) ) ) ;
}
2010-01-29 23:52:47 +00:00
break ;
}
case IDM_FORMAT_ANSI :
2015-08-06 09:03:57 +00:00
case IDM_FORMAT_UTF_8 :
2010-01-29 23:52:47 +00:00
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 ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
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 ( ) )
{
2012-05-28 10:25:35 +00:00
int answer = _nativeLangSpeaker . messageBox ( " SaveCurrentModifWarning " ,
2018-02-04 20:38:49 +00:00
_pPublicInterface - > getHSelf ( ) ,
2011-01-19 21:05:40 +00:00
TEXT ( " You should save the current modification. \r All the saved modifications can not be undone. \r \r Continue? " ) ,
TEXT ( " Save Current Modification " ) ,
MB_YESNO ) ;
2010-01-29 23:52:47 +00:00
if ( answer = = IDYES )
{
fileSave ( ) ;
_pEditView - > execute ( SCI_EMPTYUNDOBUFFER ) ;
}
else
return ;
}
if ( _pEditView - > execute ( SCI_CANUNDO ) = = TRUE )
{
2011-01-19 21:05:40 +00:00
generic_string msg , title ;
2012-05-28 10:25:35 +00:00
int answer = _nativeLangSpeaker . messageBox ( " LoseUndoAbilityWarning " ,
2018-02-04 20:38:49 +00:00
_pPublicInterface - > getHSelf ( ) ,
2011-01-19 21:05:40 +00:00
TEXT ( " You should save the current modification. \r All the saved modifications can not be undone. \r \r Continue? " ) ,
TEXT ( " Lose Undo Ability Waning " ) ,
MB_YESNO ) ;
2010-01-29 23:52:47 +00:00
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_13 :
case IDM_FORMAT_ISO_8859_14 :
case IDM_FORMAT_ISO_8859_15 :
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 :
2015-08-06 09:03:57 +00:00
case IDM_FORMAT_MAC_CYRILLIC :
2010-01-29 23:52:47 +00:00
case IDM_FORMAT_KOI8U_CYRILLIC :
case IDM_FORMAT_KOI8R_CYRILLIC :
{
int index = id - IDM_FORMAT_ENCODE ;
2019-08-13 23:15:08 +00:00
EncodingMapper & em = EncodingMapper : : getInstance ( ) ;
int encoding = em . getEncodingFromIndex ( index ) ;
2010-01-29 23:52:47 +00:00
if ( encoding = = - 1 )
{
//printStr(TEXT("Encoding problem. Command is not added in encoding_table?"));
return ;
}
2015-08-14 11:32:38 +00:00
Buffer * buf = _pEditView - > getCurrentBuffer ( ) ;
2010-01-29 23:52:47 +00:00
if ( buf - > isDirty ( ) )
{
2011-01-19 21:05:40 +00:00
generic_string warning , title ;
2012-05-28 10:25:35 +00:00
int answer = _nativeLangSpeaker . messageBox ( " SaveCurrentModifWarning " ,
2018-02-04 20:38:49 +00:00
_pPublicInterface - > getHSelf ( ) ,
2011-01-19 21:05:40 +00:00
TEXT ( " You should save the current modification. \r All the saved modifications can not be undone. \r \r Continue? " ) ,
TEXT ( " Save Current Modification " ) ,
MB_YESNO ) ;
2010-01-29 23:52:47 +00:00
if ( answer = = IDYES )
{
fileSave ( ) ;
_pEditView - > execute ( SCI_EMPTYUNDOBUFFER ) ;
}
else
return ;
}
if ( _pEditView - > execute ( SCI_CANUNDO ) = = TRUE )
{
2011-01-19 21:05:40 +00:00
generic_string msg , title ;
2012-05-28 10:25:35 +00:00
int answer = _nativeLangSpeaker . messageBox ( " LoseUndoAbilityWarning " ,
2018-02-04 20:38:49 +00:00
_pPublicInterface - > getHSelf ( ) ,
2011-01-19 21:05:40 +00:00
TEXT ( " You should save the current modification. \r All the saved modifications can not be undone. \r \r Continue? " ) ,
TEXT ( " Lose Undo Ability Waning " ) ,
MB_YESNO ) ;
2015-08-06 09:03:57 +00:00
2015-08-14 11:32:38 +00:00
if ( answer ! = IDYES )
2010-01-29 23:52:47 +00:00
return ;
}
2015-08-14 11:32:38 +00:00
if ( not buf - > isDirty ( ) )
2010-01-29 23:52:47 +00:00
{
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 :
2015-08-06 09:03:57 +00:00
case IDM_FORMAT_CONV2_UCS_2BE :
2010-01-29 23:52:47 +00:00
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 ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
// 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 )
{
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_COMMAND , idEncoding , 0 ) ;
2010-01-29 23:52:47 +00:00
_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 )
{
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_COMMAND , idEncoding , 0 ) ;
2010-01-29 23:52:47 +00:00
_pEditView - > execute ( SCI_EMPTYUNDOBUFFER ) ;
return ;
}
break ;
}
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
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 )
{
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_COMMAND , idEncoding , 0 ) ;
2010-01-29 23:52:47 +00:00
_pEditView - > execute ( SCI_EMPTYUNDOBUFFER ) ;
return ;
}
break ;
}
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
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 )
{
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_COMMAND , idEncoding , 0 ) ;
2010-01-29 23:52:47 +00:00
_pEditView - > execute ( SCI_EMPTYUNDOBUFFER ) ;
return ;
}
break ;
}
}
if ( idEncoding ! = - 1 )
{
// Save the current clipboard content
2010-03-26 00:22:14 +00:00
: : OpenClipboard ( _pPublicInterface - > getHSelf ( ) ) ;
2010-01-29 23:52:47 +00:00
HANDLE clipboardData = : : GetClipboardData ( CF_TEXT ) ;
2016-06-05 18:29:21 +00:00
int len = static_cast < int32_t > ( : : GlobalSize ( clipboardData ) ) ;
2010-01-29 23:52:47 +00:00
LPVOID clipboardDataPtr = : : GlobalLock ( clipboardData ) ;
HANDLE allocClipboardData = : : GlobalAlloc ( GMEM_MOVEABLE , len ) ;
LPVOID clipboardData2 = : : GlobalLock ( allocClipboardData ) ;
: : memcpy ( clipboardData2 , clipboardDataPtr , len ) ;
2015-08-06 09:03:57 +00:00
: : GlobalUnlock ( clipboardData ) ;
: : GlobalUnlock ( allocClipboardData ) ;
2010-01-29 23:52:47 +00:00
: : 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
2015-08-06 09:03:57 +00:00
2010-03-26 00:22:14 +00:00
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_COMMAND , idEncoding , 0 ) ;
2010-01-29 23:52:47 +00:00
// Paste the texte, restore buffer status
_pEditView - > execute ( SCI_PASTE ) ;
_pEditView - > restoreCurrentPos ( ) ;
// Restore the previous clipboard data
2010-03-26 00:22:14 +00:00
: : OpenClipboard ( _pPublicInterface - > getHSelf ( ) ) ;
2015-08-06 09:03:57 +00:00
: : EmptyClipboard ( ) ;
2010-01-29 23:52:47 +00:00
: : SetClipboardData ( CF_TEXT , clipboardData2 ) ;
: : CloseClipboard ( ) ;
//Do not free anything, EmptyClipboard does that
_pEditView - > execute ( SCI_EMPTYUNDOBUFFER ) ;
}
break ;
}
case IDM_SETTING_IMPORTPLUGIN :
{
2018-11-17 18:01:24 +00:00
// Copy plugins to Plugins Home
2018-02-05 14:27:32 +00:00
const TCHAR * extFilterName = TEXT ( " Notepad++ plugin " ) ;
const TCHAR * extFilter = TEXT ( " .dll " ) ;
2018-11-17 18:01:24 +00:00
vector < generic_string > copiedFiles = addNppPlugins ( extFilterName , extFilter ) ;
2010-01-29 23:52:47 +00:00
2018-11-17 18:01:24 +00:00
// Tell users to restart Notepad++ to load plugin
if ( copiedFiles . size ( ) )
{
2019-08-14 20:13:24 +00:00
NativeLangSpeaker * pNativeSpeaker = ( NppParameters : : getInstance ( ) ) . getNativeLangSpeaker ( ) ;
2018-11-17 18:01:24 +00:00
pNativeSpeaker - > messageBox ( " NeedToRestartToLoadPlugins " ,
NULL ,
TEXT ( " You have to restart Notepad++ to load plugins you installed. " ) ,
TEXT ( " Notepad++ need to be relaunched " ) ,
MB_OK | MB_APPLMODAL ) ;
}
2010-01-29 23:52:47 +00:00
break ;
}
case IDM_SETTING_IMPORTSTYLETHEMS :
{
// get plugin source path
2018-02-05 14:27:32 +00:00
const TCHAR * extFilterName = TEXT ( " Notepad++ style theme " ) ;
const TCHAR * extFilter = TEXT ( " .xml " ) ;
const TCHAR * destDir = TEXT ( " themes " ) ;
2010-01-29 23:52:47 +00:00
// load styler
2019-08-14 20:13:24 +00:00
NppParameters & nppParams = NppParameters : : getInstance ( ) ;
ThemeSwitcher & themeSwitcher = nppParams . getThemeSwitcher ( ) ;
2010-01-29 23:52:47 +00:00
vector < generic_string > copiedFiles = addNppComponents ( destDir , extFilterName , extFilter ) ;
2013-07-08 00:12:50 +00:00
for ( size_t i = 0 , len = copiedFiles . size ( ) ; i < len ; + + i )
2010-01-29 23:52:47 +00:00
{
generic_string themeName ( themeSwitcher . getThemeFromXmlFileName ( copiedFiles [ i ] . c_str ( ) ) ) ;
2015-08-06 09:03:57 +00:00
if ( ! themeSwitcher . themeNameExists ( themeName . c_str ( ) ) )
2010-01-29 23:52:47 +00:00
{
themeSwitcher . addThemeFromXml ( copiedFiles [ i ] . c_str ( ) ) ;
if ( _configStyleDlg . isCreated ( ) )
{
_configStyleDlg . addLastThemeEntry ( ) ;
}
}
}
break ;
}
2018-07-19 00:03:17 +00:00
case IDM_SETTING_PLUGINADM :
{
bool isFirstTime = ! _pluginsAdminDlg . isCreated ( ) ;
_pluginsAdminDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
if ( isFirstTime )
{
2018-11-27 12:12:56 +00:00
_nativeLangSpeaker . changePluginsAdminDlgLang ( _pluginsAdminDlg ) ;
2018-07-19 00:03:17 +00:00
_pluginsAdminDlg . updateListAndLoadFromJson ( ) ;
}
break ;
}
2019-01-11 14:36:01 +00:00
case IDM_SETTING_OPENPLUGINSDIR :
{
2019-08-14 20:13:24 +00:00
const TCHAR * pluginHomePath = NppParameters : : getInstance ( ) . getPluginRootDir ( ) ;
2019-01-11 14:36:01 +00:00
if ( pluginHomePath & & pluginHomePath [ 0 ] )
{
: : ShellExecute ( NULL , NULL , pluginHomePath , NULL , NULL , SW_SHOWNORMAL ) ;
}
break ;
}
2010-01-29 23:52:47 +00:00
case IDM_SETTING_SHORTCUT_MAPPER :
2010-08-14 00:11:01 +00:00
case IDM_SETTING_SHORTCUT_MAPPER_MACRO :
case IDM_SETTING_SHORTCUT_MAPPER_RUN :
2010-01-29 23:52:47 +00:00
{
2010-08-14 00:11:01 +00:00
GridState st = id = = IDM_SETTING_SHORTCUT_MAPPER_MACRO ? STATE_MACRO : id = = IDM_SETTING_SHORTCUT_MAPPER_RUN ? STATE_USER : STATE_MENU ;
2010-01-29 23:52:47 +00:00
ShortcutMapper shortcutMapper ;
2010-08-14 00:11:01 +00:00
shortcutMapper . init ( _pPublicInterface - > getHinst ( ) , _pPublicInterface - > getHSelf ( ) , st ) ;
2010-03-05 00:15:06 +00:00
shortcutMapper . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
2010-01-29 23:52:47 +00:00
shortcutMapper . destroy ( ) ;
break ;
}
2019-03-01 12:35:26 +00:00
case IDM_SETTING_PREFERENCE :
2010-01-29 23:52:47 +00:00
{
bool isFirstTime = ! _preference . isCreated ( ) ;
2010-03-05 00:15:06 +00:00
_preference . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
if ( isFirstTime )
{
2010-03-05 00:15:06 +00:00
_nativeLangSpeaker . changePrefereceDlgLang ( _preference ) ;
2010-01-29 23:52:47 +00:00
}
break ;
}
2010-10-22 21:14:04 +00:00
case IDM_SETTING_EDITCONTEXTMENU :
{
2016-08-28 22:13:28 +00:00
_nativeLangSpeaker . messageBox ( " ContextMenuXmlEditWarning " ,
_pPublicInterface - > getHSelf ( ) ,
TEXT ( " Editing contextMenu.xml allows you to modify your Notepad++ popup context menu on edit zone. \r You have to restart your Notepad++ to take effect after modifying contextMenu.xml. " ) ,
TEXT ( " Editing contextMenu " ) ,
MB_OK | MB_APPLMODAL ) ;
2019-08-14 20:13:24 +00:00
NppParameters & nppParams = NppParameters : : getInstance ( ) ;
BufferID bufID = doOpen ( ( nppParams . getContextMenuPath ( ) ) ) ;
2010-10-24 23:49:07 +00:00
switchToFile ( bufID ) ;
2010-10-22 21:14:04 +00:00
break ;
}
2010-01-29 23:52:47 +00:00
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 ;
}
2017-01-01 17:28:25 +00:00
case IDM_TOOL_MD5_GENERATE :
{
bool isFirstTime = ! _md5FromTextDlg . isCreated ( ) ;
_md5FromTextDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
if ( isFirstTime )
_nativeLangSpeaker . changeDlgLang ( _md5FromTextDlg . getHSelf ( ) , " MD5FromTextDlg " ) ;
}
break ;
case IDM_TOOL_MD5_GENERATEFROMFILE :
{
bool isFirstTime = ! _md5FromFilesDlg . isCreated ( ) ;
_md5FromFilesDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
if ( isFirstTime )
2018-12-25 23:06:04 +00:00
_nativeLangSpeaker . changeDlgLang ( _md5FromFilesDlg . getHSelf ( ) , " MD5FromFilesDlg " ) ;
2017-01-01 17:28:25 +00:00
}
break ;
case IDM_TOOL_MD5_GENERATEINTOCLIPBOARD :
{
if ( _pEditView - > execute ( SCI_GETSELECTIONS ) = = 1 )
{
size_t selectionStart = _pEditView - > execute ( SCI_GETSELECTIONSTART ) ;
size_t selectionEnd = _pEditView - > execute ( SCI_GETSELECTIONEND ) ;
int32_t strLen = static_cast < int32_t > ( selectionEnd - selectionStart ) ;
if ( strLen )
{
int strSize = strLen + 1 ;
char * selectedStr = new char [ strSize ] ;
_pEditView - > execute ( SCI_GETSELTEXT , 0 , reinterpret_cast < LPARAM > ( selectedStr ) ) ;
MD5 md5 ;
std : : string md5ResultA = md5 . digestString ( selectedStr ) ;
std : : wstring md5ResultW ( md5ResultA . begin ( ) , md5ResultA . end ( ) ) ;
str2Clipboard ( md5ResultW , _pPublicInterface - > getHSelf ( ) ) ;
delete [ ] selectedStr ;
}
}
}
break ;
2018-12-16 19:14:30 +00:00
case IDM_TOOL_SHA256_GENERATE :
{
bool isFirstTime = ! _sha2FromTextDlg . isCreated ( ) ;
_sha2FromTextDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
if ( isFirstTime )
_nativeLangSpeaker . changeDlgLang ( _sha2FromTextDlg . getHSelf ( ) , " SHA256FromTextDlg " ) ;
}
break ;
case IDM_TOOL_SHA256_GENERATEFROMFILE :
{
bool isFirstTime = ! _sha2FromFilesDlg . isCreated ( ) ;
_sha2FromFilesDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
if ( isFirstTime )
_nativeLangSpeaker . changeDlgLang ( _sha2FromFilesDlg . getHSelf ( ) , " SHA256FromFilesDlg " ) ;
}
break ;
case IDM_TOOL_SHA256_GENERATEINTOCLIPBOARD :
{
if ( _pEditView - > execute ( SCI_GETSELECTIONS ) = = 1 )
{
size_t selectionStart = _pEditView - > execute ( SCI_GETSELECTIONSTART ) ;
size_t selectionEnd = _pEditView - > execute ( SCI_GETSELECTIONEND ) ;
int32_t strLen = static_cast < int32_t > ( selectionEnd - selectionStart ) ;
if ( strLen )
{
int strSize = strLen + 1 ;
char * selectedStr = new char [ strSize ] ;
_pEditView - > execute ( SCI_GETSELTEXT , 0 , reinterpret_cast < LPARAM > ( selectedStr ) ) ;
uint8_t sha2hash [ 32 ] ;
calc_sha_256 ( sha2hash , reinterpret_cast < const uint8_t * > ( selectedStr ) , strlen ( selectedStr ) ) ;
wchar_t sha2hashStr [ 65 ] = { ' \0 ' } ;
for ( size_t i = 0 ; i < 32 ; i + + )
wsprintf ( sha2hashStr + i * 2 , TEXT ( " %02x " ) , sha2hash [ i ] ) ;
str2Clipboard ( sha2hashStr , _pPublicInterface - > getHSelf ( ) ) ;
delete [ ] selectedStr ;
}
}
}
break ;
2015-12-06 22:20:14 +00:00
case IDM_DEBUGINFO :
{
_debugInfoDlg . doDialog ( ) ;
break ;
}
2010-01-29 23:52:47 +00:00
case IDM_ABOUT :
{
2012-01-01 19:29:31 +00:00
bool doAboutDlg = false ;
const int maxSelLen = 32 ;
2016-06-05 18:29:21 +00:00
auto textLen = _pEditView - > execute ( SCI_GETSELTEXT , 0 , 0 ) - 1 ;
2012-01-01 19:29:31 +00:00
if ( ! textLen )
doAboutDlg = true ;
if ( textLen > maxSelLen )
doAboutDlg = true ;
if ( ! doAboutDlg )
2010-01-29 23:52:47 +00:00
{
2012-01-01 19:29:31 +00:00
char author [ maxSelLen + 1 ] = " " ;
_pEditView - > getSelectedText ( author , maxSelLen + 1 ) ;
2019-08-13 23:54:56 +00:00
WcharMbcsConvertor & wmc = WcharMbcsConvertor : : getInstance ( ) ;
const wchar_t * authorW = wmc . char2wchar ( author , _nativeLangSpeaker . getLangEncoding ( ) ) ;
2018-03-07 01:17:26 +00:00
int iQuote = getQuoteIndexFrom ( authorW ) ;
2015-08-06 09:03:57 +00:00
2012-01-01 19:29:31 +00:00
if ( iQuote = = - 1 )
2010-01-29 23:52:47 +00:00
{
2012-01-01 19:29:31 +00:00
doAboutDlg = true ;
}
else if ( iQuote = = - 2 )
{
2019-08-14 20:13:24 +00:00
generic_string noEasterEggsPath ( ( NppParameters : : getInstance ( ) ) . getNppPath ( ) ) ;
2014-12-01 22:39:08 +00:00
noEasterEggsPath . append ( TEXT ( " \\ noEasterEggs.xml " ) ) ;
if ( ! : : PathFileExists ( noEasterEggsPath . c_str ( ) ) )
showAllQuotes ( ) ;
2012-01-01 19:29:31 +00:00
return ;
}
if ( iQuote ! = - 1 )
{
2019-08-14 20:13:24 +00:00
generic_string noEasterEggsPath ( ( NppParameters : : getInstance ( ) ) . getNppPath ( ) ) ;
2014-12-01 22:39:08 +00:00
noEasterEggsPath . append ( TEXT ( " \\ noEasterEggs.xml " ) ) ;
if ( ! : : PathFileExists ( noEasterEggsPath . c_str ( ) ) )
showQuoteFromIndex ( iQuote ) ;
2012-01-01 19:29:31 +00:00
return ;
2015-08-06 09:03:57 +00:00
}
2012-01-01 19:29:31 +00:00
}
2017-04-17 23:31:41 +00:00
2012-01-01 19:29:31 +00:00
if ( doAboutDlg )
{
bool isFirstTime = ! _aboutDlg . isCreated ( ) ;
_aboutDlg . doDialog ( ) ;
if ( isFirstTime & & _nativeLangSpeaker . getNativeLangA ( ) )
{
if ( _nativeLangSpeaker . getLangEncoding ( ) = = NPP_CP_BIG5 )
{
2018-02-05 14:27:32 +00:00
const char * authorName = " «J¤µ§^ " ;
2012-01-01 19:29:31 +00:00
HWND hItem = : : GetDlgItem ( _aboutDlg . getHSelf ( ) , IDC_AUTHOR_NAME ) ;
2013-12-07 01:43:35 +00:00
2019-08-13 23:54:56 +00:00
WcharMbcsConvertor & wmc = WcharMbcsConvertor : : getInstance ( ) ;
const wchar_t * authorNameW = wmc . char2wchar ( authorName , NPP_CP_BIG5 ) ;
2012-01-01 19:29:31 +00:00
: : SetWindowText ( hItem , authorNameW ) ;
}
2010-01-29 23:52:47 +00:00
}
}
break ;
}
case IDM_HELP :
{
2019-08-14 20:13:24 +00:00
generic_string tmp ( ( NppParameters : : getInstance ( ) ) . getNppPath ( ) ) ;
2010-01-29 23:52:47 +00:00
generic_string nppHelpPath = tmp . c_str ( ) ;
2011-03-31 00:14:18 +00:00
nppHelpPath + = TEXT ( " \\ user.manual \\ documentation \\ notepad-online-document.html " ) ;
2010-01-29 23:52:47 +00:00
if ( : : PathFileExists ( nppHelpPath . c_str ( ) ) )
: : ShellExecute ( NULL , TEXT ( " open " ) , nppHelpPath . c_str ( ) , NULL , NULL , SW_SHOWNORMAL ) ;
else
{
generic_string msg = nppHelpPath ;
2011-01-19 21:05:40 +00:00
generic_string warning , title ;
2012-05-28 10:25:35 +00:00
if ( ! _nativeLangSpeaker . getMsgBoxLang ( " NppHelpAbsentWarning " , title , warning ) )
2011-01-19 21:05:40 +00:00
{
title = TEXT ( " File does not exist " ) ;
warning = TEXT ( " \r doesn't exist. Please download it on Notepad++ site. " ) ;
}
msg + = warning ;
: : MessageBox ( _pPublicInterface - > getHSelf ( ) , msg . c_str ( ) , title . c_str ( ) , MB_OK ) ;
2010-01-29 23:52:47 +00:00
}
}
break ;
case IDM_HOMESWEETHOME :
{
2015-05-22 19:11:08 +00:00
: : ShellExecute ( NULL , TEXT ( " open " ) , TEXT ( " https://notepad-plus-plus.org/ " ) , NULL , NULL , SW_SHOWNORMAL ) ;
2010-01-29 23:52:47 +00:00
break ;
}
case IDM_PROJECTPAGE :
{
2016-08-27 19:49:53 +00:00
: : ShellExecute ( NULL , TEXT ( " open " ) , TEXT ( " https://github.com/notepad-plus-plus/notepad-plus-plus/ " ) , NULL , NULL , SW_SHOWNORMAL ) ;
2010-01-29 23:52:47 +00:00
break ;
}
2019-10-05 15:07:39 +00:00
case IDM_ONLINEDOCUMENT :
2010-01-29 23:52:47 +00:00
{
2019-10-05 15:07:39 +00:00
: : ShellExecute ( NULL , TEXT ( " open " ) , TEXT ( " https://npp-user-manual.org/ " ) , NULL , NULL , SW_SHOWNORMAL ) ;
2010-01-29 23:52:47 +00:00
break ;
}
2014-03-05 22:09:57 +00:00
case IDM_CMDLINEARGUMENTS :
{
2018-02-04 20:38:49 +00:00
// No translattable
2019-08-08 17:46:44 +00:00
: : MessageBox ( _pPublicInterface - > getHSelf ( ) , COMMAND_ARG_HELP , TEXT ( " Notepad++ Command Argument Help " ) , MB_OK | MB_APPLMODAL ) ;
2014-03-05 22:09:57 +00:00
break ;
}
2015-08-15 14:28:43 +00:00
2010-01-29 23:52:47 +00:00
case IDM_FORUM :
{
2019-10-05 15:07:39 +00:00
: : ShellExecute ( NULL , TEXT ( " open " ) , TEXT ( " https://community.notepad-plus-plus.org/ " ) , NULL , NULL , SW_SHOWNORMAL ) ;
2015-06-17 23:34:34 +00:00
break ;
}
2015-08-15 14:28:43 +00:00
2015-06-17 23:34:34 +00:00
case IDM_ONLINESUPPORT :
{
: : ShellExecute ( NULL , TEXT ( " open " ) , TEXT ( " https://gitter.im/notepad-plus-plus/notepad-plus-plus " ) , NULL , NULL , SW_SHOWNORMAL ) ;
2010-01-29 23:52:47 +00:00
break ;
}
2019-10-05 15:07:39 +00:00
2010-01-29 23:52:47 +00:00
case IDM_UPDATE_NPP :
2013-02-17 18:02:14 +00:00
case IDM_CONFUPDATERPROXY :
2010-01-29 23:52:47 +00:00
{
2017-03-20 10:27:11 +00:00
// wingup doesn't work with the obsolete security layer (API) under xp since downloadings are secured with SSL on notepad_plus_plus.org
2019-08-14 20:13:24 +00:00
winVer ver = NppParameters : : getInstance ( ) . getWinVersion ( ) ;
2015-05-22 19:11:08 +00:00
if ( ver < = WV_XP )
{
2018-02-04 20:38:49 +00:00
long res = _nativeLangSpeaker . messageBox ( " XpUpdaterProblem " ,
_pPublicInterface - > getHSelf ( ) ,
TEXT ( " Notepad++ updater is not compatible with XP due to the obsolete security layer under XP. \r Do you want to go to Notepad++ page to download the latest version? " ) ,
TEXT ( " Notepad++ Updater " ) ,
MB_YESNO ) ;
2015-05-22 19:11:08 +00:00
if ( res = = IDYES )
{
2019-10-05 15:07:39 +00:00
: : ShellExecute ( NULL , TEXT ( " open " ) , TEXT ( " https://notepad-plus-plus.org/downloads/ " ) , NULL , NULL , SW_SHOWNORMAL ) ;
2015-05-22 19:11:08 +00:00
}
}
else
{
2019-08-14 20:13:24 +00:00
generic_string updaterDir = ( NppParameters : : getInstance ( ) ) . getNppPath ( ) ;
2015-05-22 19:11:08 +00:00
PathAppend ( updaterDir , TEXT ( " updater " ) ) ;
2010-01-29 23:52:47 +00:00
2015-05-22 19:11:08 +00:00
generic_string updaterFullPath = updaterDir ;
PathAppend ( updaterFullPath , TEXT ( " gup.exe " ) ) ;
2013-02-17 18:02:14 +00:00
2015-05-22 19:11:08 +00:00
2019-02-13 18:39:39 +00:00
# ifdef DEBUG // if not debug, then it's release
bool isCertifVerified = true ;
# else //RELEASE
// check the signature on updater
2019-02-27 09:14:36 +00:00
SecurityGard securityGard ;
bool isCertifVerified = securityGard . checkModule ( updaterFullPath , nm_gup ) ;
2019-02-13 18:39:39 +00:00
# endif
if ( isCertifVerified )
{
generic_string param ;
if ( id = = IDM_CONFUPDATERPROXY )
2016-09-19 23:01:40 +00:00
{
2019-12-31 14:07:17 +00:00
if ( ! _isAdministrator )
{
_nativeLangSpeaker . messageBox ( " GUpConfNeedAdminMode " ,
_pPublicInterface - > getHSelf ( ) ,
TEXT ( " Please relaunch Notepad++ in Admin mode to configure proxy. " ) ,
TEXT ( " Proxy Settings " ) ,
MB_OK | MB_APPLMODAL ) ;
return ;
}
2019-02-13 18:39:39 +00:00
param = TEXT ( " -options " ) ;
2016-09-19 23:01:40 +00:00
}
2019-02-13 18:39:39 +00:00
else
{
param = TEXT ( " -verbose -v " ) ;
param + = VERSION_VALUE ;
2019-08-14 20:13:24 +00:00
if ( NppParameters : : getInstance ( ) . isx64 ( ) )
2019-02-13 18:39:39 +00:00
{
param + = TEXT ( " -px64 " ) ;
}
}
Process updater ( updaterFullPath . c_str ( ) , param . c_str ( ) , updaterDir . c_str ( ) ) ;
2015-05-22 19:11:08 +00:00
2019-02-13 18:39:39 +00:00
updater . run ( ) ;
}
2015-05-22 19:11:08 +00:00
}
2010-01-29 23:52:47 +00:00
break ;
}
case IDM_EDIT_AUTOCOMPLETE :
showAutoComp ( ) ;
break ;
case IDM_EDIT_AUTOCOMPLETE_CURRENTFILE :
autoCompFromCurrentFile ( ) ;
break ;
2013-10-10 23:05:50 +00:00
case IDM_EDIT_AUTOCOMPLETE_PATH :
showPathCompletion ( ) ;
break ;
2010-01-29 23:52:47 +00:00
case IDM_EDIT_FUNCCALLTIP :
showFunctionComp ( ) ;
break ;
case IDM_LANGSTYLE_CONFIG_DLG :
{
bool isFirstTime = ! _configStyleDlg . isCreated ( ) ;
2010-03-05 00:15:06 +00:00
_configStyleDlg . doDialog ( _nativeLangSpeaker . isRTL ( ) ) ;
2010-01-29 23:52:47 +00:00
if ( isFirstTime )
2010-03-05 00:15:06 +00:00
_nativeLangSpeaker . changeConfigLang ( _configStyleDlg . getHSelf ( ) ) ;
2010-01-29 23:52:47 +00:00
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 :
2015-09-19 15:18:20 +00:00
case IDM_LANG_JSON :
2010-01-29 23:52:47 +00:00
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 :
2015-08-08 16:00:00 +00:00
case IDM_LANG_FORTRAN_77 :
2010-02-04 01:22:41 +00:00
case IDM_LANG_BASH :
2010-01-29 23:52:47 +00:00
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 :
2013-09-14 19:35:34 +00:00
case IDM_LANG_COFFEESCRIPT :
2016-12-15 12:22:54 +00:00
case IDM_LANG_BAANC :
2014-12-13 03:44:30 +00:00
case IDM_LANG_SREC :
case IDM_LANG_IHEX :
case IDM_LANG_TEHEX :
2017-06-17 18:03:28 +00:00
case IDM_LANG_SWIFT :
Add new languages support
Connect Scintilla Lexers to npp : SCLEX_ASN1 (Abstract Syntax Notation One), SCLEX_AVS (AviSynth), SCLEX_BLITZBASIC, SCLEX_PUREBASIC, SCLEX_FREEBASIC, SCLEX_CSOUND, SCLEX_ERLANG, SCLEX_ESCRIPT, SCLEX_FORTH, SCLEX_LATEX, SCLEX_MMIXAL, SCLEX_NIMROD, SCLEX_NNCRONTAB, SCLEX_OSCRIPT, SCLEX_REBOL, SCLEX_REGISTRY, SCLEX_RUST, SCLEX_SPICE, SCLEX_TXT2TAGS
Connect Scintilla Lexers to npp :
asn1 (Abstract Syntax Notation One) : https://fr.wikipedia.org/wiki/ASN.1#Exemple
avs (AviSynth) : http://avisynth.nl/index.php/Script_examples
blitzbasic : http://www.blitzbasic.com/bmdocs/command.php?name=Mid&ref=2d_cat
http://www.blitzbasic.com/codearcs/codearcs.php?cat=8"
csound : http://www.csounds.com/manual/html/PrefaceGettingStarted.html
erlang : http://erlang.org/doc/man/file.html
http://erlang.org/documentation/doc-5.3.6.13/doc/getting_started/getting_started.html"
escript : http://erlang.org/doc/man/escript.html
forth : http://wiki.c2.com/?ExampleForthCode
freebasic : http://www.freebasic.net/
latex : http://physics.clarku.edu/sip/tutorials/TeX/intro.html (Sample LaTeX file)
mmixal : http://mmix.cs.hm.edu/examples/hello.html
nimrod : http://www.csse.monash.edu.au/~nimrod/nimrodportal/manual/planfileexamples.shtml
nncrontab : http://www.nncron.ru/help/EN/working/cron-format.htm
oscript : http://www.oscriptadventures.com/
purebasic : https://www.purebasic.com/documentation/reference/ide_form.html
rebol : http://www.rebol.net/cookbook/recipes/0031.html
registry : windows registry file
rust : http://rustbyexample.com/std_misc/file/open.html
spice : http://www.seas.upenn.edu/~jan/spice/spice.overview.html
txt2tags : https://github.com/txt2tags/txt2tags/blob/master/samples/sample.t2t
2016-11-13 18:42:23 +00:00
case IDM_LANG_ASN1 :
case IDM_LANG_AVS :
case IDM_LANG_BLITZBASIC :
case IDM_LANG_PUREBASIC :
case IDM_LANG_FREEBASIC :
case IDM_LANG_CSOUND :
case IDM_LANG_ERLANG :
case IDM_LANG_ESCRIPT :
case IDM_LANG_FORTH :
case IDM_LANG_LATEX :
case IDM_LANG_MMIXAL :
case IDM_LANG_NIMROD :
case IDM_LANG_NNCRONTAB :
case IDM_LANG_OSCRIPT :
case IDM_LANG_REBOL :
case IDM_LANG_REGISTRY :
case IDM_LANG_RUST :
case IDM_LANG_SPICE :
case IDM_LANG_TXT2TAGS :
2016-02-02 21:43:06 +00:00
case IDM_LANG_VISUALPROLOG :
2010-01-29 23:52:47 +00:00
case IDM_LANG_USER :
{
setLanguage ( menuID2LangType ( id ) ) ;
2017-05-08 23:59:05 +00:00
// Manually set language, don't change language even file extension changes.
Buffer * buffer = _pEditView - > getCurrentBuffer ( ) ;
buffer - > langHasBeenSetFromMenu ( ) ;
2014-07-27 14:19:19 +00:00
if ( _pDocMap )
{
_pDocMap - > setSyntaxHiliting ( ) ;
}
2010-01-29 23:52:47 +00:00
}
break ;
2019-11-10 11:09:37 +00:00
2019-11-21 01:24:57 +00:00
case IDM_LANG_OPENUDLDIR :
{
generic_string userDefineLangFolderPath = NppParameters : : getInstance ( ) . getUserDefineLangFolderPath ( ) ;
: : ShellExecute ( _pPublicInterface - > getHSelf ( ) , TEXT ( " open " ) , userDefineLangFolderPath . c_str ( ) , NULL , NULL , SW_SHOW ) ;
2019-11-10 11:09:37 +00:00
break ;
}
2010-01-29 23:52:47 +00:00
case IDC_PREV_DOC :
case IDC_NEXT_DOC :
{
2016-06-05 18:29:21 +00:00
size_t nbDoc = viewVisible ( MAIN_VIEW ) ? _mainDocTab . nbItem ( ) : 0 ;
2010-01-29 23:52:47 +00:00
nbDoc + = viewVisible ( SUB_VIEW ) ? _subDocTab . nbItem ( ) : 0 ;
2015-08-06 09:03:57 +00:00
2019-08-14 20:13:24 +00:00
bool doTaskList = ( ( NppParameters : : getInstance ( ) ) . getNppGUI ( ) ) . _doTaskList ;
2018-09-22 16:32:00 +00:00
_isFolding = true ;
2010-01-29 23:52:47 +00:00
if ( nbDoc > 1 )
{
bool direction = ( id = = IDC_NEXT_DOC ) ? dirDown : dirUp ;
if ( ! doTaskList )
{
activateNextDoc ( direction ) ;
}
else
2015-08-06 09:03:57 +00:00
{
2017-03-01 18:43:12 +00:00
if ( TaskListDlg : : _instanceCount = = 0 )
{
TaskListDlg tld ;
HIMAGELIST hImgLst = _docTabIconList . getHandle ( ) ;
tld . init ( _pPublicInterface - > getHinst ( ) , _pPublicInterface - > getHSelf ( ) , hImgLst , direction ) ;
tld . doDialog ( ) ;
}
2010-01-29 23:52:47 +00:00
}
}
2018-09-22 16:32:00 +00:00
_isFolding = false ;
2010-01-29 23:52:47 +00:00
_linkTriggered = true ;
}
break ;
2015-04-07 00:10:03 +00:00
case IDM_OPEN_ALL_RECENT_FILE :
{
2010-01-29 23:52:47 +00:00
BufferID lastOne = BUFFER_INVALID ;
int size = _lastRecentFileList . getSize ( ) ;
for ( int i = size - 1 ; i > = 0 ; i - - )
{
2015-08-06 11:49:14 +00:00
BufferID test = doOpen ( _lastRecentFileList . getIndex ( i ) ) ;
2010-01-29 23:52:47 +00:00
if ( test ! = BUFFER_INVALID )
lastOne = test ;
}
2015-04-07 00:10:03 +00:00
if ( lastOne ! = BUFFER_INVALID )
{
2010-01-29 23:52:47 +00:00
switchToFile ( lastOne ) ;
}
2015-04-07 00:10:03 +00:00
break ;
}
2010-01-29 23:52:47 +00:00
case IDM_CLEAN_RECENT_FILE_LIST :
_lastRecentFileList . clear ( ) ;
break ;
case IDM_EDIT_RTL :
case IDM_EDIT_LTR :
{
2014-12-07 16:43:31 +00:00
_pEditView - > changeTextDirection ( id = = IDM_EDIT_RTL ) ;
2014-12-09 23:16:48 +00:00
// Wrap then !wrap to fix problem of mirror characters
bool isWraped = _pEditView - > isWrap ( ) ;
2014-12-07 01:23:05 +00:00
_pEditView - > wrap ( ! isWraped ) ;
_pEditView - > wrap ( isWraped ) ;
2014-12-07 16:43:31 +00:00
if ( _pDocMap )
{
_pDocMap - > changeTextDirection ( id = = IDM_EDIT_RTL ) ;
}
2010-01-29 23:52:47 +00:00
}
break ;
case IDM_WINDOW_WINDOWS :
{
WindowsDlg _windowsDlg ;
2010-03-26 00:22:14 +00:00
_windowsDlg . init ( _pPublicInterface - > getHinst ( ) , _pPublicInterface - > getHSelf ( ) , _pDocTab ) ;
2015-08-06 09:03:57 +00:00
2010-03-05 00:15:06 +00:00
const TiXmlNodeA * nativeLangA = _nativeLangSpeaker . getNativeLangA ( ) ;
2010-01-29 23:52:47 +00:00
TiXmlNodeA * dlgNode = NULL ;
2010-03-05 00:15:06 +00:00
if ( nativeLangA )
2010-01-29 23:52:47 +00:00
{
2010-03-05 00:15:06 +00:00
dlgNode = nativeLangA - > FirstChild ( " Dialog " ) ;
2010-01-29 23:52:47 +00:00
if ( dlgNode )
2010-03-05 00:15:06 +00:00
dlgNode = _nativeLangSpeaker . searchDlgNode ( dlgNode , " Window " ) ;
2010-01-29 23:52:47 +00:00
}
2018-03-02 18:37:10 +00:00
_windowsDlg . doDialog ( ) ;
2010-01-29 23:52:47 +00:00
}
break ;
case IDM_SYSTRAYPOPUP_NEWDOC :
{
2019-08-14 20:13:24 +00:00
NppGUI & nppGUI = const_cast < NppGUI & > ( ( NppParameters : : getInstance ( ) ) . getNppGUI ( ) ) ;
2010-03-26 00:22:14 +00:00
: : ShowWindow ( _pPublicInterface - > getHSelf ( ) , nppGUI . _isMaximized ? SW_MAXIMIZE : SW_SHOW ) ;
2010-01-29 23:52:47 +00:00
fileNew ( ) ;
}
break ;
case IDM_SYSTRAYPOPUP_ACTIVATE :
{
2019-08-14 20:13:24 +00:00
NppGUI & nppGUI = const_cast < NppGUI & > ( ( NppParameters : : getInstance ( ) ) . getNppGUI ( ) ) ;
2010-03-26 00:22:14 +00:00
: : ShowWindow ( _pPublicInterface - > getHSelf ( ) , nppGUI . _isMaximized ? SW_MAXIMIZE : SW_SHOW ) ;
2016-12-29 19:16:16 +00:00
// Send sizing info to make window fit (specially to show tool bar. Fixed issue #2600)
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_SIZE , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
}
break ;
case IDM_SYSTRAYPOPUP_NEW_AND_PASTE :
{
2019-08-14 20:13:24 +00:00
NppGUI & nppGUI = const_cast < NppGUI & > ( ( NppParameters : : getInstance ( ) ) . getNppGUI ( ) ) ;
2010-03-26 00:22:14 +00:00
: : ShowWindow ( _pPublicInterface - > getHSelf ( ) , nppGUI . _isMaximized ? SW_MAXIMIZE : SW_SHOW ) ;
2010-01-29 23:52:47 +00:00
BufferID bufferID = _pEditView - > getCurrentBufferID ( ) ;
2019-08-13 23:32:01 +00:00
Buffer * buf = MainFileManager . getBufferByID ( bufferID ) ;
2010-01-29 23:52:47 +00:00
if ( ! buf - > isUntitled ( ) | | buf - > docLength ( ) ! = 0 )
{
fileNew ( ) ;
2015-08-06 09:03:57 +00:00
}
2010-01-29 23:52:47 +00:00
command ( IDM_EDIT_PASTE ) ;
}
break ;
2015-08-06 09:03:57 +00:00
2010-01-29 23:52:47 +00:00
case IDM_SYSTRAYPOPUP_OPENFILE :
{
2019-08-14 20:13:24 +00:00
NppGUI & nppGUI = const_cast < NppGUI & > ( ( NppParameters : : getInstance ( ) ) . getNppGUI ( ) ) ;
2010-03-26 00:22:14 +00:00
: : ShowWindow ( _pPublicInterface - > getHSelf ( ) , nppGUI . _isMaximized ? SW_MAXIMIZE : SW_SHOW ) ;
2016-12-29 19:16:16 +00:00
// Send sizing info to make window fit (specially to show tool bar. Fixed issue #2600)
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_SIZE , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
fileOpen ( ) ;
}
break ;
case IDM_SYSTRAYPOPUP_CLOSE :
{
2010-03-26 00:22:14 +00:00
_pPublicInterface - > setIsPrelaunch ( false ) ;
2010-01-29 23:52:47 +00:00
_pTrayIco - > doTrayIcon ( REMOVE ) ;
2010-03-26 00:22:14 +00:00
if ( ! : : IsWindowVisible ( _pPublicInterface - > getHSelf ( ) ) )
: : SendMessage ( _pPublicInterface - > getHSelf ( ) , WM_CLOSE , 0 , 0 ) ;
2010-01-29 23:52:47 +00:00
}
break ;
2015-04-07 00:10:03 +00:00
case IDM_FILE_RESTORELASTCLOSEDFILE :
{
generic_string lastOpenedFullPath = _lastRecentFileList . getFirstItem ( ) ;
2015-08-06 11:49:14 +00:00
if ( not lastOpenedFullPath . empty ( ) )
2015-04-07 00:10:03 +00:00
{
2015-08-06 11:49:14 +00:00
BufferID lastOpened = doOpen ( lastOpenedFullPath ) ;
2015-04-07 00:10:03 +00:00
if ( lastOpened ! = BUFFER_INVALID )
switchToFile ( lastOpened ) ;
}
}
break ;
2015-07-25 15:25:10 +00:00
case IDM_VIEW_LINENUMBER :
case IDM_VIEW_SYMBOLMARGIN :
case IDM_VIEW_DOCCHANGEMARGIN :
{
int margin ;
if ( id = = IDM_VIEW_LINENUMBER )
margin = ScintillaEditView : : _SC_MARGE_LINENUMBER ;
else //if (id == IDM_VIEW_SYMBOLMARGIN)
margin = ScintillaEditView : : _SC_MARGE_SYBOLE ;
if ( _mainEditView . hasMarginShowed ( margin ) )
{
_mainEditView . showMargin ( margin , false ) ;
_subEditView . showMargin ( margin , false ) ;
}
else
{
_mainEditView . showMargin ( margin ) ;
_subEditView . showMargin ( margin ) ;
}
}
break ;
case IDM_VIEW_FOLDERMAGIN_SIMPLE :
case IDM_VIEW_FOLDERMAGIN_ARROW :
case IDM_VIEW_FOLDERMAGIN_CIRCLE :
case IDM_VIEW_FOLDERMAGIN_BOX :
case IDM_VIEW_FOLDERMAGIN :
{
folderStyle fStyle = ( id = = IDM_VIEW_FOLDERMAGIN_SIMPLE ) ? FOLDER_STYLE_SIMPLE : \
( id = = IDM_VIEW_FOLDERMAGIN_ARROW ) ? FOLDER_STYLE_ARROW : \
( id = = IDM_VIEW_FOLDERMAGIN_CIRCLE ) ? FOLDER_STYLE_CIRCLE : \
( id = = IDM_VIEW_FOLDERMAGIN ) ? FOLDER_STYLE_NONE : FOLDER_STYLE_BOX ;
_mainEditView . setMakerStyle ( fStyle ) ;
_subEditView . setMakerStyle ( fStyle ) ;
}
break ;
case IDM_VIEW_CURLINE_HILITING :
{
2019-08-14 20:13:24 +00:00
COLORREF colour = ( NppParameters : : getInstance ( ) ) . getCurLineHilitingColour ( ) ;
2015-07-25 15:25:10 +00:00
_mainEditView . setCurrentLineHiLiting ( ! _pEditView - > isCurrentLineHiLiting ( ) , colour ) ;
_subEditView . setCurrentLineHiLiting ( ! _pEditView - > isCurrentLineHiLiting ( ) , colour ) ;
}
break ;
case IDM_VIEW_EDGEBACKGROUND :
case IDM_VIEW_EDGELINE :
case IDM_VIEW_EDGENONE :
{
int mode ;
switch ( id )
{
case IDM_VIEW_EDGELINE :
{
mode = EDGE_LINE ;
break ;
}
case IDM_VIEW_EDGEBACKGROUND :
{
mode = EDGE_BACKGROUND ;
break ;
}
default :
mode = EDGE_NONE ;
}
_mainEditView . execute ( SCI_SETEDGEMODE , mode ) ;
_subEditView . execute ( SCI_SETEDGEMODE , mode ) ;
}
break ;
case IDM_VIEW_LWDEF :
case IDM_VIEW_LWALIGN :
case IDM_VIEW_LWINDENT :
{
int mode = ( id = = IDM_VIEW_LWALIGN ) ? SC_WRAPINDENT_SAME : \
( id = = IDM_VIEW_LWINDENT ) ? SC_WRAPINDENT_INDENT : SC_WRAPINDENT_FIXED ;
_mainEditView . execute ( SCI_SETWRAPINDENTMODE , mode ) ;
_subEditView . execute ( SCI_SETWRAPINDENTMODE , mode ) ;
}
break ;
2010-01-29 23:52:47 +00:00
default :
if ( id > IDM_FILEMENU_LASTONE & & id < ( IDM_FILEMENU_LASTONE + _lastRecentFileList . getMaxNbLRF ( ) + 1 ) )
{
2015-08-06 11:49:14 +00:00
BufferID lastOpened = doOpen ( _lastRecentFileList . getItem ( id ) ) ;
2015-04-07 00:10:03 +00:00
if ( lastOpened ! = BUFFER_INVALID )
{
2010-01-29 23:52:47 +00:00
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 ) ;
2015-10-25 01:41:56 +00:00
if ( _pDocMap )
{
_pDocMap - > setSyntaxHiliting ( ) ;
}
2010-01-29 23:52:47 +00:00
}
else if ( ( id > = IDM_LANG_EXTERNAL ) & & ( id < = IDM_LANG_EXTERNAL_LIMIT ) )
{
setLanguage ( ( LangType ) ( id - IDM_LANG_EXTERNAL + L_EXTERNAL ) ) ;
2015-10-25 01:41:56 +00:00
if ( _pDocMap )
{
_pDocMap - > setSyntaxHiliting ( ) ;
}
2010-01-29 23:52:47 +00:00
}
else if ( ( id > = ID_MACRO ) & & ( id < ID_MACRO_LIMIT ) )
{
int i = id - ID_MACRO ;
2019-08-14 20:13:24 +00:00
vector < MacroShortcut > & theMacros = ( NppParameters : : getInstance ( ) ) . getMacroList ( ) ;
2015-08-06 09:03:57 +00:00
macroPlayback ( theMacros [ i ] . getMacro ( ) ) ;
2010-01-29 23:52:47 +00:00
}
else if ( ( id > = ID_USER_CMD ) & & ( id < ID_USER_CMD_LIMIT ) )
{
int i = id - ID_USER_CMD ;
2019-08-14 20:13:24 +00:00
vector < UserCommand > & theUserCommands = ( NppParameters : : getInstance ( ) ) . getUserCommandList ( ) ;
2010-01-29 23:52:47 +00:00
UserCommand ucmd = theUserCommands [ i ] ;
Command cmd ( ucmd . getCmd ( ) ) ;
2010-03-26 00:22:14 +00:00
cmd . run ( _pPublicInterface - > getHSelf ( ) ) ;
2010-01-29 23:52:47 +00:00
}
else if ( ( id > = ID_PLUGINS_CMD ) & & ( id < ID_PLUGINS_CMD_LIMIT ) )
{
int i = id - ID_PLUGINS_CMD ;
_pluginsManager . runPluginCommand ( i ) ;
}
2010-09-13 23:10:24 +00:00
else if ( _pluginsManager . inDynamicRange ( id ) ) // in the dynamic range allocated with NPPM_ALLOCATECMDID
{
_pluginsManager . relayNppMessages ( WM_COMMAND , id , 0 ) ;
}
2015-08-06 09:03:57 +00:00
/*UNLOAD
2010-01-29 23:52:47 +00:00
else if ( ( id > = ID_PLUGINS_REMOVING ) & & ( id < ID_PLUGINS_REMOVING_END ) )
{
int i = id - ID_PLUGINS_REMOVING ;
2010-03-26 00:22:14 +00:00
_pluginsManager . unloadPlugin ( i , _pPublicInterface - > getHSelf ( ) ) ;
2010-01-29 23:52:47 +00:00
}
*/
else if ( ( id > = IDM_WINDOW_MRU_FIRST ) & & ( id < = IDM_WINDOW_MRU_LIMIT ) )
{
2015-08-06 09:03:57 +00:00
activateDoc ( id - IDM_WINDOW_MRU_FIRST ) ;
2010-01-29 23:52:47 +00:00
}
}
2015-08-06 09:03:57 +00:00
if ( _recordingMacro )
2010-01-29 23:52:47 +00:00
switch ( id )
{
case IDM_FILE_NEW :
case IDM_FILE_CLOSE :
case IDM_FILE_CLOSEALL :
case IDM_FILE_CLOSEALL_BUT_CURRENT :
2013-08-03 23:40:07 +00:00
case IDM_FILE_CLOSEALL_TOLEFT :
case IDM_FILE_CLOSEALL_TORIGHT :
2019-01-01 09:18:35 +00:00
case IDM_FILE_CLOSEALL_UNCHANGED :
2010-01-29 23:52:47 +00:00
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 :
2013-08-01 18:50:39 +00:00
case IDM_SEARCH_SELECTMATCHINGBRACES :
2010-01-29 23:52:47 +00:00
case IDM_SEARCH_TOGGLE_BOOKMARK :
case IDM_SEARCH_NEXT_BOOKMARK :
case IDM_SEARCH_PREV_BOOKMARK :
case IDM_SEARCH_CLEAR_BOOKMARKS :
2019-08-02 18:42:24 +00:00
case IDM_SEARCH_INVERSEMARKS :
2010-01-29 23:52:47 +00:00
case IDM_EDIT_SELECTALL :
case IDM_EDIT_INS_TAB :
case IDM_EDIT_RMV_TAB :
case IDM_EDIT_DUP_LINE :
2019-08-08 15:02:14 +00:00
case IDM_EDIT_REMOVE_DUP_LINES :
2010-01-29 23:52:47 +00:00
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 :
2015-07-10 04:58:54 +00:00
case IDM_EDIT_REMOVEEMPTYLINES :
case IDM_EDIT_REMOVEEMPTYLINESWITHBLANK :
2010-01-29 23:52:47 +00:00
case IDM_EDIT_UPPERCASE :
case IDM_EDIT_LOWERCASE :
2016-09-10 10:30:43 +00:00
case IDM_EDIT_PROPERCASE_FORCE :
case IDM_EDIT_PROPERCASE_BLEND :
2016-06-30 01:13:00 +00:00
case IDM_EDIT_SENTENCECASE_FORCE :
case IDM_EDIT_SENTENCECASE_BLEND :
case IDM_EDIT_INVERTCASE :
case IDM_EDIT_RANDOMCASE :
2010-01-29 23:52:47 +00:00
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 :
2010-12-05 19:33:48 +00:00
case IDM_EDIT_TRIMLINEHEAD :
case IDM_EDIT_TRIM_BOTH :
case IDM_EDIT_EOL2WS :
case IDM_EDIT_TRIMALL :
case IDM_EDIT_TAB2SW :
2012-08-25 19:23:16 +00:00
case IDM_EDIT_SW2TAB_ALL :
case IDM_EDIT_SW2TAB_LEADING :
2010-01-29 23:52:47 +00:00
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 :
2013-07-02 18:19:46 +00:00
case IDM_EDIT_BEGINENDSELECT :
2015-05-17 17:18:43 +00:00
case IDM_EDIT_SORTLINES_LEXICOGRAPHIC_ASCENDING :
case IDM_EDIT_SORTLINES_LEXICOGRAPHIC_DESCENDING :
case IDM_EDIT_SORTLINES_INTEGER_ASCENDING :
case IDM_EDIT_SORTLINES_INTEGER_DESCENDING :
case IDM_EDIT_SORTLINES_DECIMALCOMMA_ASCENDING :
case IDM_EDIT_SORTLINES_DECIMALCOMMA_DESCENDING :
case IDM_EDIT_SORTLINES_DECIMALDOT_ASCENDING :
case IDM_EDIT_SORTLINES_DECIMALDOT_DESCENDING :
2013-08-01 19:44:11 +00:00
case IDM_EDIT_BLANKLINEABOVECURRENT :
case IDM_EDIT_BLANKLINEBELOWCURRENT :
2010-01-29 23:52:47 +00:00
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 :
2015-08-06 09:03:57 +00:00
case IDM_VIEW_TAB1 :
case IDM_VIEW_TAB2 :
case IDM_VIEW_TAB3 :
case IDM_VIEW_TAB4 :
case IDM_VIEW_TAB5 :
case IDM_VIEW_TAB6 :
case IDM_VIEW_TAB7 :
case IDM_VIEW_TAB8 :
case IDM_VIEW_TAB9 :
2013-08-03 00:19:06 +00:00
case IDM_VIEW_TAB_NEXT :
case IDM_VIEW_TAB_PREV :
2016-06-30 01:21:11 +00:00
case IDM_VIEW_TAB_MOVEFORWARD :
case IDM_VIEW_TAB_MOVEBACKWARD :
2010-01-29 23:52:47 +00:00
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 :
2011-02-19 15:06:53 +00:00
case IDM_SEARCH_COPYMARKEDLINES :
case IDM_SEARCH_PASTEMARKEDLINES :
case IDM_SEARCH_DELETEMARKEDLINES :
case IDM_SEARCH_DELETEUNMARKEDLINES :
2010-01-29 23:52:47 +00:00
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 :
2019-11-06 14:41:09 +00:00
case IDM_FORMAT_TODOS :
case IDM_FORMAT_TOUNIX :
case IDM_FORMAT_TOMAC :
2010-01-29 23:52:47 +00:00
_macro . push_back ( recordedMacroStep ( id ) ) ;
break ;
}
}