2012-04-15 09:50:22 +00:00
// This file is part of Notepad++ project
// Copyright (C)2003 Don HO <don.h@free.fr>
2009-04-24 23:34:47 +00:00
//
2012-04-15 09:50:22 +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.
2009-04-24 23:34:47 +00:00
//
2012-04-15 09:50:22 +00:00
// Note that the GPL places important restrictions on "derived works", yet
2015-07-15 12:09:31 +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 09:50:22 +00:00
// "derivative work" for the purpose of this license if it does any of the
2015-07-15 12:09:31 +00:00
// following:
2012-04-15 09:50:22 +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.
2009-04-24 23:34:47 +00:00
//
2012-04-15 09:50:22 +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.
2009-04-24 23:34:47 +00:00
2016-11-11 17:11:19 +00:00
# pragma once
2009-09-04 00:10:01 +00:00
2009-04-24 23:34:47 +00:00
# include "ScintillaEditView.h"
# include "DocTabView.h"
# include "SplitterContainer.h"
# include "FindReplaceDlg.h"
# include "AboutDlg.h"
# include "RunDlg.h"
# include "StatusBar.h"
# include "lastRecentFileList.h"
# include "GoToLineDlg.h"
2011-05-19 21:19:05 +00:00
# include "FindCharsInRange.h"
2009-04-24 23:34:47 +00:00
# include "columnEditor.h"
# include "WordStyleDlg.h"
# include "trayIconControler.h"
# include "PluginsManager.h"
# include "preferenceDlg.h"
# include "WindowsDlg.h"
# include "RunMacroDlg.h"
# include "DockingManager.h"
2016-01-23 01:24:37 +00:00
# include "Processus.h"
2009-04-24 23:34:47 +00:00
# include "AutoCompletion.h"
# include "SmartHighlighter.h"
2009-09-04 00:10:01 +00:00
# include "ScintillaCtrls.h"
2009-12-13 23:54:02 +00:00
# include "lesDlgs.h"
2016-11-11 17:11:19 +00:00
# include "pluginsAdmin.h"
2018-02-28 01:31:22 +00:00
# include "localization.h"
# include "documentSnapshot.h"
# include "md5Dlgs.h"
2013-08-03 23:40:07 +00:00
# include <vector>
2015-06-30 00:02:13 +00:00
# include <iso646.h>
2011-05-19 21:19:05 +00:00
2010-03-05 00:15:06 +00:00
2009-04-24 23:34:47 +00:00
# define MENU 0x01
# define TOOLBAR 0x02
2010-02-21 18:17:54 +00:00
# define URL_REG_EXPR "[A-Za-z]+: //[A-Za-z0-9_\\-\\+~.:?&@=/%#,;\\{\\}\\(\\)\\[\\]\\|\\*\\!\\\\]+"
2010-02-13 01:12:17 +00:00
2009-04-24 23:34:47 +00:00
enum FileTransferMode {
TransferClone = 0x01 ,
TransferMove = 0x02
} ;
enum WindowStatus { //bitwise mask
WindowMainActive = 0x01 ,
WindowSubActive = 0x02 ,
WindowBothActive = 0x03 , //little helper shortcut
WindowUserActive = 0x04 ,
WindowMask = 0x07
} ;
2010-12-05 19:33:48 +00:00
enum trimOp {
lineHeader = 0 ,
lineTail = 1 ,
lineEol = 2
2009-04-24 23:34:47 +00:00
} ;
2010-01-29 23:52:47 +00:00
2012-08-25 19:23:16 +00:00
enum spaceTab {
tab2Space = 0 ,
space2TabLeading = 1 ,
space2TabAll = 2
} ;
2009-04-24 23:34:47 +00:00
struct TaskListInfo ;
2015-08-04 11:36:22 +00:00
struct VisibleGUIConf final
{
bool isPostIt = false ;
bool isFullScreen = false ;
2015-07-15 12:09:31 +00:00
2009-04-24 23:34:47 +00:00
//Used by both views
2015-08-04 11:36:22 +00:00
bool isMenuShown = true ;
2009-04-24 23:34:47 +00:00
//bool isToolbarShown; //toolbar forcefully hidden by hiding rebar
2015-08-04 11:36:22 +00:00
DWORD_PTR preStyle = ( WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN ) ;
2009-04-24 23:34:47 +00:00
//used by postit only
2015-08-04 11:36:22 +00:00
bool isTabbarShown = true ;
bool isAlwaysOnTop = false ;
bool isStatusbarShown = true ;
2009-04-24 23:34:47 +00:00
//used by fullscreen only
WINDOWPLACEMENT _winPlace ;
2015-08-04 11:36:22 +00:00
VisibleGUIConf ( )
2009-04-24 23:34:47 +00:00
{
2015-08-04 11:36:22 +00:00
memset ( & _winPlace , 0x0 , sizeof ( _winPlace ) ) ;
}
2009-04-24 23:34:47 +00:00
} ;
2018-03-10 10:30:55 +00:00
struct QuoteParams
{
enum Speed { slow = 0 , rapid , speedOfLight } ;
QuoteParams ( ) { } ;
QuoteParams ( const wchar_t * quoter , Speed speed , bool shouldBeTrolling , int encoding , LangType lang , const wchar_t * quote ) :
_quoter ( quoter ) , _speed ( speed ) , _shouldBeTrolling ( shouldBeTrolling ) , _encoding ( encoding ) , _lang ( lang ) , _quote ( quote ) { }
void reset ( ) {
_quoter = nullptr ;
_speed = rapid ;
_shouldBeTrolling = false ;
_encoding = SC_CP_UTF8 ;
_lang = L_TEXT ;
_quote = nullptr ;
} ;
const wchar_t * _quoter = nullptr ;
Speed _speed = rapid ;
bool _shouldBeTrolling = false ;
int _encoding = SC_CP_UTF8 ;
LangType _lang = L_TEXT ;
const wchar_t * _quote = nullptr ;
} ;
2009-04-24 23:34:47 +00:00
class FileDialog ;
2010-03-26 00:22:14 +00:00
class Notepad_plus_Window ;
2011-04-13 07:08:51 +00:00
class AnsiCharPanel ;
2011-05-19 21:19:05 +00:00
class ClipboardHistoryPanel ;
class VerticalFileSwitcher ;
2011-08-29 23:01:41 +00:00
class ProjectPanel ;
2012-01-30 00:00:50 +00:00
class DocumentMap ;
2012-11-24 20:14:52 +00:00
class FunctionListPanel ;
2016-01-23 01:24:37 +00:00
class FileBrowser ;
2018-03-10 10:30:55 +00:00
struct QuoteParams ;
2015-08-04 11:36:22 +00:00
class Notepad_plus final
2015-07-15 12:09:31 +00:00
{
2010-03-26 00:22:14 +00:00
friend class Notepad_plus_Window ;
2014-05-04 20:37:54 +00:00
friend class FileManager ;
2009-04-24 23:34:47 +00:00
public :
Notepad_plus ( ) ;
2015-08-04 11:36:22 +00:00
~ Notepad_plus ( ) ;
2010-03-26 00:22:14 +00:00
LRESULT init ( HWND hwnd ) ;
LRESULT process ( HWND hwnd , UINT Message , WPARAM wParam , LPARAM lParam ) ;
2010-02-13 01:12:17 +00:00
void killAllChildren ( ) ;
2009-04-24 23:34:47 +00:00
2010-03-26 00:22:14 +00:00
enum comment_mode { cm_comment , cm_uncomment , cm_toggle } ;
2009-04-24 23:34:47 +00:00
void setTitle ( ) ;
void getTaskListInfo ( TaskListInfo * tli ) ;
// For filtering the modeless Dialog message
2015-08-04 11:36:22 +00:00
//! \name File Operations
//@{
2009-04-24 23:34:47 +00:00
//The doXXX functions apply to a single buffer and dont need to worry about views, with the excpetion of doClose, since closing one view doesnt have to mean the document is gone
2018-05-31 13:32:44 +00:00
BufferID doOpen ( const generic_string & fileName , bool isRecursive = false , bool isReadOnly = false , int encoding = - 1 , const TCHAR * backupFileName = NULL , FILETIME fileNameTimestamp = { } ) ;
2009-04-24 23:34:47 +00:00
bool doReload ( BufferID id , bool alert = true ) ;
bool doSave ( BufferID , const TCHAR * filename , bool isSaveCopy = false ) ;
2014-03-31 01:01:54 +00:00
void doClose ( BufferID , int whichOne , bool doDeleteBackup = false ) ;
2009-04-24 23:34:47 +00:00
//bool doDelete(const TCHAR *fileName) const {return ::DeleteFile(fileName) != 0;};
void fileOpen ( ) ;
2010-11-13 11:15:06 +00:00
void fileNew ( ) ;
2015-08-04 11:36:22 +00:00
bool fileReload ( ) ;
2009-04-24 23:34:47 +00:00
bool fileClose ( BufferID id = BUFFER_INVALID , int curView = - 1 ) ; //use curView to override view to close from
2014-04-13 01:31:02 +00:00
bool fileCloseAll ( bool doDeleteBackup , bool isSnapshotMode = false ) ;
2009-04-24 23:34:47 +00:00
bool fileCloseAllButCurrent ( ) ;
2015-08-04 11:36:22 +00:00
bool fileCloseAllGiven ( const std : : vector < int > & krvecBufferIndexes ) ;
2013-08-03 23:40:07 +00:00
bool fileCloseAllToLeft ( ) ;
bool fileCloseAllToRight ( ) ;
2009-04-24 23:34:47 +00:00
bool fileSave ( BufferID id = BUFFER_INVALID ) ;
bool fileSaveAll ( ) ;
2015-12-02 15:02:30 +00:00
bool fileSaveSpecific ( const generic_string & fileNameToSave ) ;
2009-04-24 23:34:47 +00:00
bool fileSaveAs ( BufferID id = BUFFER_INVALID , bool isSaveCopy = false ) ;
2009-07-04 11:33:17 +00:00
bool fileDelete ( BufferID id = BUFFER_INVALID ) ;
bool fileRename ( BufferID id = BUFFER_INVALID ) ;
2009-04-24 23:34:47 +00:00
bool addBufferToView ( BufferID id , int whichOne ) ;
bool moveBuffer ( BufferID id , int whereTo ) ; //assumes whereFrom is otherView(whereTo)
bool switchToFile ( BufferID buffer ) ; //find buffer in active view then in other view.
2015-08-04 11:36:22 +00:00
//@}
2009-04-24 23:34:47 +00:00
bool isFileSession ( const TCHAR * filename ) ;
2015-06-13 15:10:02 +00:00
bool isFileWorkspace ( const TCHAR * filename ) ;
2009-04-24 23:34:47 +00:00
void filePrint ( bool showDialog ) ;
2016-10-23 01:50:41 +00:00
void saveScintillasZoom ( ) ;
2009-04-24 23:34:47 +00:00
2009-09-04 00:10:01 +00:00
bool saveGUIParams ( ) ;
2011-09-25 01:33:34 +00:00
bool saveProjectPanelsParams ( ) ;
2016-02-02 18:06:23 +00:00
bool saveFileBrowserParam ( ) ;
2009-09-04 00:10:01 +00:00
void saveDockingParams ( ) ;
2015-08-04 11:36:22 +00:00
void saveUserDefineLangs ( ) ;
void saveShortcuts ( ) ;
2009-09-04 00:10:01 +00:00
void saveSession ( const Session & session ) ;
2014-04-02 22:02:10 +00:00
void saveCurrentSession ( ) ;
2015-08-04 11:36:22 +00:00
void saveFindHistory ( ) ;
2014-04-02 22:02:10 +00:00
2015-08-04 11:36:22 +00:00
void getCurrentOpenedFiles ( Session & session , bool includUntitledDoc = false ) ;
2009-04-24 23:34:47 +00:00
2015-08-04 11:36:22 +00:00
bool fileLoadSession ( const TCHAR * fn = nullptr ) ;
2009-04-24 23:34:47 +00:00
const TCHAR * fileSaveSession ( size_t nbFile , TCHAR * * fileNames , const TCHAR * sessionFile2save ) ;
2015-08-04 11:36:22 +00:00
const TCHAR * fileSaveSession ( size_t nbFile = 0 , TCHAR * * fileNames = nullptr ) ;
2009-04-24 23:34:47 +00:00
void changeToolBarIcons ( ) ;
bool doBlockComment ( comment_mode currCommentMode ) ;
bool doStreamComment ( ) ;
2017-02-06 19:58:37 +00:00
bool undoStreamComment ( bool tryBlockComment = true ) ;
2015-07-15 12:09:31 +00:00
2009-04-24 23:34:47 +00:00
bool addCurrentMacro ( ) ;
2010-08-15 18:52:55 +00:00
void macroPlayback ( Macro ) ;
2015-07-15 12:09:31 +00:00
2014-05-08 20:48:03 +00:00
void loadLastSession ( ) ;
2014-04-13 01:31:02 +00:00
bool loadSession ( Session & session , bool isSnapshotMode = false ) ;
2015-07-15 12:09:31 +00:00
2017-02-24 22:47:19 +00:00
void prepareBufferChangedDialog ( Buffer * buffer ) ;
2009-04-24 23:34:47 +00:00
void notifyBufferChanged ( Buffer * buffer , int mask ) ;
2016-03-31 07:35:18 +00:00
bool findInFinderFiles ( FindersInfo * findInFolderInfo ) ;
2009-04-24 23:34:47 +00:00
bool findInFiles ( ) ;
bool replaceInFiles ( ) ;
void setFindReplaceFolderFilter ( const TCHAR * dir , const TCHAR * filters ) ;
2015-05-31 20:40:07 +00:00
std : : vector < generic_string > addNppComponents ( const TCHAR * destDir , const TCHAR * extFilterName , const TCHAR * extFilter ) ;
2009-11-26 01:34:25 +00:00
int getHtmlXmlEncoding ( const TCHAR * fileName ) const ;
2014-08-02 11:28:42 +00:00
HACCEL getAccTable ( ) const {
2010-03-26 00:22:14 +00:00
return _accelerator . getAccTable ( ) ;
2015-07-15 12:09:31 +00:00
}
2010-03-26 00:22:14 +00:00
bool emergency ( generic_string emergencySavedDir ) ;
2015-08-04 11:36:22 +00:00
Buffer * getCurrentBuffer ( ) {
2014-03-27 01:30:31 +00:00
return _pEditView - > getCurrentBuffer ( ) ;
2015-07-15 12:09:31 +00:00
}
2014-03-27 01:30:31 +00:00
void launchDocumentBackupTask ( ) ;
2018-03-07 01:17:26 +00:00
int getQuoteIndexFrom ( const wchar_t * quoter ) const ;
2015-01-10 23:41:49 +00:00
void showQuoteFromIndex ( int index ) const ;
2018-03-10 10:30:55 +00:00
void showQuote ( const QuoteParams * quote ) const ;
2015-07-15 12:09:31 +00:00
2015-08-04 11:36:22 +00:00
2009-04-24 23:34:47 +00:00
private :
2015-08-04 11:36:22 +00:00
Notepad_plus_Window * _pPublicInterface = nullptr ;
Window * _pMainWindow = nullptr ;
2009-04-24 23:34:47 +00:00
DockingManager _dockingManager ;
2015-05-31 20:40:07 +00:00
std : : vector < int > _internalFuncIDs ;
2009-04-24 23:34:47 +00:00
AutoCompletion _autoCompleteMain ;
2015-08-04 11:36:22 +00:00
AutoCompletion _autoCompleteSub ; // each Scintilla has its own autoComplete
2009-04-24 23:34:47 +00:00
SmartHighlighter _smartHighlighter ;
2010-03-05 00:15:06 +00:00
NativeLangSpeaker _nativeLangSpeaker ;
2009-04-24 23:34:47 +00:00
DocTabView _mainDocTab ;
DocTabView _subDocTab ;
2015-08-04 11:36:22 +00:00
DocTabView * _pDocTab = nullptr ;
DocTabView * _pNonDocTab = nullptr ;
2009-04-24 23:34:47 +00:00
ScintillaEditView _subEditView ;
ScintillaEditView _mainEditView ;
2015-08-04 11:36:22 +00:00
ScintillaEditView _invisibleEditView ; // for searches
ScintillaEditView _fileEditView ; // for FileManager
ScintillaEditView * _pEditView = nullptr ;
ScintillaEditView * _pNonEditView = nullptr ;
2009-04-24 23:34:47 +00:00
2015-08-04 11:36:22 +00:00
SplitterContainer * _pMainSplitter = nullptr ;
2009-04-24 23:34:47 +00:00
SplitterContainer _subSplitter ;
2015-08-04 11:36:22 +00:00
ContextMenu _tabPopupMenu ;
ContextMenu _tabPopupDropMenu ;
ContextMenu _fileSwitcherMultiFilePopupMenu ;
2009-04-24 23:34:47 +00:00
ToolBar _toolBar ;
IconList _docTabIconList ;
2015-07-15 12:09:31 +00:00
2009-04-24 23:34:47 +00:00
StatusBar _statusBar ;
2015-08-04 11:36:22 +00:00
bool _toReduceTabBar = false ;
2009-04-24 23:34:47 +00:00
ReBar _rebarTop ;
ReBar _rebarBottom ;
// Dialog
FindReplaceDlg _findReplaceDlg ;
2016-03-31 07:35:18 +00:00
FindInFinderDlg _findInFinderDlg ;
2009-04-24 23:34:47 +00:00
FindIncrementDlg _incrementFindDlg ;
AboutDlg _aboutDlg ;
2015-12-06 22:20:14 +00:00
DebugInfoDlg _debugInfoDlg ;
2009-04-24 23:34:47 +00:00
RunDlg _runDlg ;
2017-01-01 17:28:25 +00:00
MD5FromFilesDlg _md5FromFilesDlg ;
MD5FromTextDlg _md5FromTextDlg ;
2009-04-24 23:34:47 +00:00
GoToLineDlg _goToLineDlg ;
ColumnEditorDlg _colEditorDlg ;
WordStyleDlg _configStyleDlg ;
PreferenceDlg _preference ;
2011-05-19 21:19:05 +00:00
FindCharsInRangeDlg _findCharsInRangeDlg ;
2016-11-11 17:11:19 +00:00
PluginsAdminDlg _pluginsAdminDlg ;
2017-05-15 07:22:31 +00:00
DocumentPeeker _documentPeeker ;
2015-07-15 12:09:31 +00:00
2009-04-24 23:34:47 +00:00
// a handle list of all the Notepad++ dialogs
2015-05-31 20:40:07 +00:00
std : : vector < HWND > _hModelessDlgs ;
2009-04-24 23:34:47 +00:00
LastRecentFileList _lastRecentFileList ;
2010-03-16 22:32:58 +00:00
//vector<iconLocator> _customIconVect;
2009-04-24 23:34:47 +00:00
WindowsMenu _windowsMenu ;
2015-08-04 11:36:22 +00:00
HMENU _mainMenuHandle = NULL ;
2009-04-24 23:34:47 +00:00
2015-08-04 11:36:22 +00:00
bool _sysMenuEntering = false ;
2015-07-15 12:09:31 +00:00
2016-06-02 20:47:13 +00:00
// make sure we don't recursively call doClose when closing the last file with -quitOnEmpty
bool _isAttemptingCloseOnQuit = false ;
2009-04-24 23:34:47 +00:00
// For FullScreen/PostIt features
VisibleGUIConf _beforeSpecialView ;
void fullScreenToggle ( ) ;
void postItToggle ( ) ;
// Keystroke macro recording and playback
Macro _macro ;
2015-08-04 11:36:22 +00:00
bool _recordingMacro = false ;
2015-10-07 15:55:29 +00:00
bool _playingBackMacro = false ;
2018-01-23 14:24:28 +00:00
bool _recordingSaved = false ;
2009-04-24 23:34:47 +00:00
RunMacroDlg _runMacroDlg ;
2016-07-11 23:24:05 +00:00
// For conflict detection when saving Macros or RunCommands
ShortcutMapper * _pShortcutMapper = nullptr ;
2009-04-24 23:34:47 +00:00
// For hotspot
2015-08-04 11:36:22 +00:00
bool _linkTriggered = true ;
bool _isFolding = false ;
2009-04-24 23:34:47 +00:00
//For Dynamic selection highlight
CharacterRange _prevSelectedRange ;
//Synchronized Scolling
2015-08-04 11:36:22 +00:00
struct SyncInfo final
2015-07-15 12:09:31 +00:00
{
2015-08-04 11:36:22 +00:00
int _line = 0 ;
int _column = 0 ;
bool _isSynScollV = false ;
bool _isSynScollH = false ;
bool doSync ( ) const { return ( _isSynScollV | | _isSynScollH ) ; }
2015-07-15 12:09:31 +00:00
}
_syncInfo ;
2009-04-24 23:34:47 +00:00
2015-08-04 11:36:22 +00:00
bool _isUDDocked = false ;
2009-04-24 23:34:47 +00:00
2015-08-04 11:36:22 +00:00
trayIconControler * _pTrayIco = nullptr ;
int _zoomOriginalValue = 0 ;
2009-04-24 23:34:47 +00:00
Accelerator _accelerator ;
ScintillaAccelerator _scintaccelerator ;
PluginsManager _pluginsManager ;
2009-12-13 23:54:02 +00:00
ButtonDlg _restoreButton ;
2009-04-24 23:34:47 +00:00
2015-08-04 11:36:22 +00:00
bool _isFileOpening = false ;
bool _isAdministrator = false ;
2009-04-24 23:34:47 +00:00
2009-09-04 00:10:01 +00:00
ScintillaCtrls _scintillaCtrls4Plugins ;
2009-04-24 23:34:47 +00:00
2015-05-31 20:40:07 +00:00
std : : vector < std : : pair < int , int > > _hideLinesMarks ;
2009-06-07 01:49:42 +00:00
StyleArray _hotspotStyles ;
2010-03-26 00:22:14 +00:00
2015-08-04 11:36:22 +00:00
AnsiCharPanel * _pAnsiCharPanel = nullptr ;
ClipboardHistoryPanel * _pClipboardHistoryPanel = nullptr ;
VerticalFileSwitcher * _pFileSwitcherPanel = nullptr ;
ProjectPanel * _pProjectPanel_1 = nullptr ;
ProjectPanel * _pProjectPanel_2 = nullptr ;
ProjectPanel * _pProjectPanel_3 = nullptr ;
2009-04-24 23:34:47 +00:00
2016-01-23 01:24:37 +00:00
FileBrowser * _pFileBrowser = nullptr ;
2015-08-04 11:36:22 +00:00
DocumentMap * _pDocMap = nullptr ;
FunctionListPanel * _pFuncList = nullptr ;
2012-01-30 00:00:50 +00:00
2009-04-24 23:34:47 +00:00
BOOL notify ( SCNotification * notification ) ;
void command ( int id ) ;
//Document management
2015-08-04 11:36:22 +00:00
UCHAR _mainWindowStatus = 0 ; //For 2 views and user dialog if docked
int _activeView = MAIN_VIEW ;
2009-04-24 23:34:47 +00:00
//User dialog docking
void dockUserDlg ( ) ;
void undockUserDlg ( ) ;
//View visibility
void showView ( int whichOne ) ;
bool viewVisible ( int whichOne ) ;
void hideView ( int whichOne ) ;
void hideCurrentView ( ) ;
bool bothActive ( ) { return ( _mainWindowStatus & WindowBothActive ) = = WindowBothActive ; } ;
bool reloadLang ( ) ;
bool loadStyles ( ) ;
2016-05-11 00:18:04 +00:00
int currentView ( ) {
2009-04-24 23:34:47 +00:00
return _activeView ;
2015-07-15 12:09:31 +00:00
}
2009-09-04 00:10:01 +00:00
2009-04-24 23:34:47 +00:00
int otherView ( ) {
return ( _activeView = = MAIN_VIEW ? SUB_VIEW : MAIN_VIEW ) ;
2015-07-15 12:09:31 +00:00
}
2009-09-04 00:10:01 +00:00
2009-04-24 23:34:47 +00:00
int otherFromView ( int whichOne ) {
return ( whichOne = = MAIN_VIEW ? SUB_VIEW : MAIN_VIEW ) ;
2015-07-15 12:09:31 +00:00
}
2009-09-04 00:10:01 +00:00
2009-04-24 23:34:47 +00:00
bool canHideView ( int whichOne ) ; //true if view can safely be hidden (no open docs etc)
2016-06-02 20:47:13 +00:00
bool isEmpty ( ) ; // true if we have 1 view with 1 clean, untitled doc
2009-04-24 23:34:47 +00:00
int switchEditViewTo ( int gid ) ; //activate other view (set focus etc)
void docGotoAnotherEditView ( FileTransferMode mode ) ; //TransferMode
void docOpenInNewInstance ( FileTransferMode mode , int x = 0 , int y = 0 ) ;
void loadBufferIntoView ( BufferID id , int whichOne , bool dontClose = false ) ; //Doesnt _activate_ the buffer
2011-06-13 01:24:00 +00:00
bool removeBufferFromView ( BufferID id , int whichOne ) ; //Activates alternative of possible, or creates clean document if not clean already
2009-04-24 23:34:47 +00:00
bool activateBuffer ( BufferID id , int whichOne ) ; //activate buffer in that view if found
void notifyBufferActivated ( BufferID bufid , int view ) ;
void performPostReload ( int whichOne ) ;
//END: Document management
2009-09-04 00:10:01 +00:00
int doSaveOrNot ( const TCHAR * fn ) ;
int doReloadOrNot ( const TCHAR * fn , bool dirty ) ;
int doCloseOrNot ( const TCHAR * fn ) ;
int doDeleteOrNot ( const TCHAR * fn ) ;
int doActionOrNot ( const TCHAR * title , const TCHAR * displayText , int type ) ;
2009-04-24 23:34:47 +00:00
2009-09-04 00:10:01 +00:00
void enableMenu ( int cmdID , bool doEnable ) const ;
2009-04-24 23:34:47 +00:00
void enableCommand ( int cmdID , bool doEnable , int which ) const ;
void checkClipboard ( ) ;
void checkDocState ( ) ;
void checkUndoState ( ) ;
void checkMacroState ( ) ;
void checkSyncState ( ) ;
void dropFiles ( HDROP hdrop ) ;
void checkModifiedDocument ( ) ;
void getMainClientRect ( RECT & rc ) const ;
2010-07-26 00:12:02 +00:00
void staticCheckMenuAndTB ( ) const ;
2009-04-24 23:34:47 +00:00
void dynamicCheckMenuAndTB ( ) const ;
2015-10-27 14:35:19 +00:00
void enableConvertMenuItems ( EolType f ) const ;
2009-12-01 01:20:13 +00:00
void checkUnicodeMenuItems ( ) const ;
2009-04-24 23:34:47 +00:00
2011-06-18 21:53:14 +00:00
generic_string getLangDesc ( LangType langType , bool getName = false ) ;
2009-04-24 23:34:47 +00:00
2015-08-04 11:36:22 +00:00
void setLangStatus ( LangType langType ) ;
2009-04-24 23:34:47 +00:00
2015-10-27 14:35:19 +00:00
void setDisplayFormat ( EolType f ) ;
2009-11-22 01:52:07 +00:00
void setUniModeText ( ) ;
2009-04-24 23:34:47 +00:00
void checkLangsMenu ( int id ) const ;
2009-07-04 11:33:17 +00:00
void setLanguage ( LangType langType ) ;
2017-02-16 23:35:28 +00:00
LangType menuID2LangType ( int cmdID ) ;
2009-04-24 23:34:47 +00:00
2015-02-06 03:46:15 +00:00
BOOL processIncrFindAccel ( MSG * msg ) const ;
2016-12-18 16:37:43 +00:00
BOOL processFindAccel ( MSG * msg ) const ;
2015-02-06 03:46:15 +00:00
2009-04-24 23:34:47 +00:00
void checkMenuItem ( int itemID , bool willBeChecked ) const {
: : CheckMenuItem ( _mainMenuHandle , itemID , MF_BYCOMMAND | ( willBeChecked ? MF_CHECKED : MF_UNCHECKED ) ) ;
2015-07-15 12:09:31 +00:00
}
2014-11-12 02:14:45 +00:00
bool isConditionExprLine ( int lineNumber ) ;
2014-11-17 00:36:36 +00:00
int findMachedBracePos ( size_t startPos , size_t endPos , char targetSymbol , char matchedSymbol ) ;
2014-11-12 02:14:45 +00:00
void maintainIndentation ( TCHAR ch ) ;
2015-07-15 12:09:31 +00:00
2012-10-19 00:20:40 +00:00
void addHotSpot ( ) ;
2009-04-24 23:34:47 +00:00
2015-07-15 12:09:31 +00:00
void bookmarkAdd ( int lineno ) const
{
2009-04-24 23:34:47 +00:00
if ( lineno = = - 1 )
2016-06-05 18:29:21 +00:00
lineno = static_cast < int32_t > ( _pEditView - > getCurrentLineNumber ( ) ) ;
2009-04-24 23:34:47 +00:00
if ( ! bookmarkPresent ( lineno ) )
_pEditView - > execute ( SCI_MARKERADD , lineno , MARK_BOOKMARK ) ;
2015-07-15 12:09:31 +00:00
}
void bookmarkDelete ( int lineno ) const
{
2009-04-24 23:34:47 +00:00
if ( lineno = = - 1 )
2016-06-05 18:29:21 +00:00
lineno = static_cast < int32_t > ( _pEditView - > getCurrentLineNumber ( ) ) ;
2016-09-28 15:59:52 +00:00
while ( bookmarkPresent ( lineno ) )
2009-04-24 23:34:47 +00:00
_pEditView - > execute ( SCI_MARKERDELETE , lineno , MARK_BOOKMARK ) ;
2015-07-15 12:09:31 +00:00
}
bool bookmarkPresent ( int lineno ) const
{
2009-04-24 23:34:47 +00:00
if ( lineno = = - 1 )
2016-06-05 18:29:21 +00:00
lineno = static_cast < int32_t > ( _pEditView - > getCurrentLineNumber ( ) ) ;
2009-04-24 23:34:47 +00:00
LRESULT state = _pEditView - > execute ( SCI_MARKERGET , lineno ) ;
return ( ( state & ( 1 < < MARK_BOOKMARK ) ) ! = 0 ) ;
2015-07-15 12:09:31 +00:00
}
void bookmarkToggle ( int lineno ) const
{
2009-04-24 23:34:47 +00:00
if ( lineno = = - 1 )
2016-06-05 18:29:21 +00:00
lineno = static_cast < int32_t > ( _pEditView - > getCurrentLineNumber ( ) ) ;
2009-04-24 23:34:47 +00:00
if ( bookmarkPresent ( lineno ) )
bookmarkDelete ( lineno ) ;
else
2015-07-15 12:09:31 +00:00
bookmarkAdd ( lineno ) ;
}
2009-04-24 23:34:47 +00:00
void bookmarkNext ( bool forwardScan ) ;
2015-07-15 12:09:31 +00:00
void bookmarkClearAll ( ) const
{
2009-04-24 23:34:47 +00:00
_pEditView - > execute ( SCI_MARKERDELETEALL , MARK_BOOKMARK ) ;
2015-07-15 12:09:31 +00:00
}
2009-04-24 23:34:47 +00:00
2009-09-04 00:10:01 +00:00
void copyMarkedLines ( ) ;
void cutMarkedLines ( ) ;
2011-02-19 15:06:53 +00:00
void deleteMarkedLines ( bool isMarked ) ;
2009-09-04 00:10:01 +00:00
void pasteToMarkedLines ( ) ;
void deleteMarkedline ( int ln ) ;
2010-05-27 00:05:51 +00:00
void inverseMarks ( ) ;
2009-09-04 00:10:01 +00:00
void replaceMarkedline ( int ln , const TCHAR * str ) ;
generic_string getMarkedLine ( int ln ) ;
2009-04-24 23:34:47 +00:00
void findMatchingBracePos ( int & braceAtCaret , int & braceOpposite ) ;
2009-12-01 01:20:13 +00:00
bool braceMatch ( ) ;
2009-04-24 23:34:47 +00:00
void activateNextDoc ( bool direction ) ;
2016-06-05 18:29:21 +00:00
void activateDoc ( size_t pos ) ;
2009-04-24 23:34:47 +00:00
void updateStatusBar ( ) ;
2010-09-19 01:27:41 +00:00
size_t getSelectedCharNumber ( UniMode ) ;
size_t getCurrentDocCharCount ( UniMode u ) ;
2016-06-05 18:29:21 +00:00
size_t getSelectedAreas ( ) ;
2009-10-04 13:13:45 +00:00
size_t getSelectedBytes ( ) ;
bool isFormatUnicode ( UniMode ) ;
int getBOMSize ( UniMode ) ;
2009-04-24 23:34:47 +00:00
void showAutoComp ( ) ;
void autoCompFromCurrentFile ( bool autoInsert = true ) ;
void showFunctionComp ( ) ;
2013-10-10 23:05:50 +00:00
void showPathCompletion ( ) ;
2009-04-24 23:34:47 +00:00
2010-03-05 00:15:06 +00:00
//void changeStyleCtrlsLang(HWND hDlg, int *idArray, const char **translatedText);
2013-05-11 20:55:09 +00:00
bool replaceInOpenedFiles ( ) ;
2009-04-24 23:34:47 +00:00
bool findInOpenedFiles ( ) ;
bool findInCurrentFile ( ) ;
2015-05-31 20:40:07 +00:00
void getMatchedFileNames ( const TCHAR * dir , const std : : vector < generic_string > & patterns , std : : vector < generic_string > & fileNames , bool isRecursive , bool isInHiddenDir ) ;
2009-04-24 23:34:47 +00:00
void doSynScorll ( HWND hW ) ;
2009-09-04 00:10:01 +00:00
void setWorkingDir ( const TCHAR * dir ) ;
2015-06-01 16:47:24 +00:00
bool str2Cliboard ( const generic_string & str2cpy ) ;
2009-04-24 23:34:47 +00:00
bool getIntegralDockingData ( tTbData & dockData , int & iCont , bool & isVisible ) ;
2009-09-04 00:10:01 +00:00
int getLangFromMenuName ( const TCHAR * langName ) ;
generic_string getLangFromMenu ( const Buffer * buf ) ;
2009-04-24 23:34:47 +00:00
2015-05-27 23:22:28 +00:00
generic_string exts2Filters ( generic_string exts ) const ;
2009-09-22 21:30:29 +00:00
int setFileOpenSaveDlgFilters ( FileDialog & fDlg , int langType = - 1 ) ;
2009-09-04 00:10:01 +00:00
Style * getStyleFromName ( const TCHAR * styleName ) ;
2009-04-24 23:34:47 +00:00
bool dumpFiles ( const TCHAR * outdir , const TCHAR * fileprefix = TEXT ( " " ) ) ; //helper func
void drawTabbarColoursFromStylerArray ( ) ;
2018-07-02 18:48:40 +00:00
void loadCommandlineParams ( const TCHAR * commandLine , const CmdLineParams * pCmdParams )
{
const CmdLineParamsDTO dto = CmdLineParamsDTO : : FromCmdLineParams ( * pCmdParams ) ;
loadCommandlineParams ( commandLine , & dto ) ;
}
void loadCommandlineParams ( const TCHAR * commandLine , const CmdLineParamsDTO * pCmdParams ) ;
2009-09-04 00:10:01 +00:00
bool noOpenedDoc ( ) const ;
2009-11-15 17:01:52 +00:00
bool goToPreviousIndicator ( int indicID2Search , bool isWrap = true ) const ;
bool goToNextIndicator ( int indicID2Search , bool isWrap = true ) const ;
2010-09-25 17:04:44 +00:00
int wordCount ( ) ;
2015-07-15 12:09:31 +00:00
2012-08-25 19:23:16 +00:00
void wsTabConvert ( spaceTab whichWay ) ;
2010-12-05 19:33:48 +00:00
void doTrim ( trimOp whichPart ) ;
2012-11-24 20:14:52 +00:00
void removeEmptyLine ( bool isBlankContained ) ;
2011-04-13 07:08:51 +00:00
void launchAnsiCharPanel ( ) ;
2011-04-20 21:45:18 +00:00
void launchClipboardHistoryPanel ( ) ;
2011-05-19 21:19:05 +00:00
void launchFileSwitcherPanel ( ) ;
2011-09-25 01:33:34 +00:00
void launchProjectPanel ( int cmdID , ProjectPanel * * pProjPanel , int panelID ) ;
2012-01-30 00:00:50 +00:00
void launchDocMap ( ) ;
2012-11-24 20:14:52 +00:00
void launchFunctionList ( ) ;
2016-02-02 18:06:23 +00:00
void launchFileBrowser ( const std : : vector < generic_string > & folders ) ;
2012-01-01 19:29:31 +00:00
void showAllQuotes ( ) const ;
static DWORD WINAPI threadTextPlayer ( void * text2display ) ;
static DWORD WINAPI threadTextTroller ( void * params ) ;
static int getRandomAction ( int ranNum ) ;
static bool deleteBack ( ScintillaEditView * pCurrentView , BufferID targetBufID ) ;
static bool deleteForward ( ScintillaEditView * pCurrentView , BufferID targetBufID ) ;
static bool selectBack ( ScintillaEditView * pCurrentView , BufferID targetBufID ) ;
2015-07-15 12:09:31 +00:00
static int getRandomNumber ( int rangeMax = - 1 )
{
2012-01-01 19:29:31 +00:00
int randomNumber = rand ( ) ;
if ( rangeMax = = - 1 )
return randomNumber ;
return ( rand ( ) % rangeMax ) ;
2015-07-15 12:09:31 +00:00
}
2014-03-27 01:30:31 +00:00
static DWORD WINAPI backupDocument ( void * params ) ;
2016-04-24 03:29:05 +00:00
static DWORD WINAPI monitorFileOnChange ( void * params ) ;
struct MonitorInfo final {
2016-05-11 00:18:04 +00:00
MonitorInfo ( Buffer * buf , HWND nppHandle ) :
_buffer ( buf ) , _nppHandle ( nppHandle ) { } ;
2016-04-24 03:29:05 +00:00
Buffer * _buffer = nullptr ;
2016-05-11 00:18:04 +00:00
HWND _nppHandle = nullptr ;
2016-04-24 03:29:05 +00:00
} ;
2018-10-03 13:53:30 +00:00
void monitoringStartOrStopAndUpdateUI ( Buffer * pBuf , bool isStarting ) ;
2009-04-24 23:34:47 +00:00
} ;
2010-03-26 00:22:14 +00:00