mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			416 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			416 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // This defines the interface to the QsciCommand class.
 | |
| //
 | |
| // Copyright (c) 2011 Riverbank Computing Limited <info@riverbankcomputing.com>
 | |
| // 
 | |
| // This file is part of QScintilla.
 | |
| // 
 | |
| // This file may be used under the terms of the GNU General Public
 | |
| // License versions 2.0 or 3.0 as published by the Free Software
 | |
| // Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3
 | |
| // included in the packaging of this file.  Alternatively you may (at
 | |
| // your option) use any later version of the GNU General Public
 | |
| // License if such license has been publicly approved by Riverbank
 | |
| // Computing Limited (or its successors, if any) and the KDE Free Qt
 | |
| // Foundation. In addition, as a special exception, Riverbank gives you
 | |
| // certain additional rights. These rights are described in the Riverbank
 | |
| // GPL Exception version 1.1, which can be found in the file
 | |
| // GPL_EXCEPTION.txt in this package.
 | |
| // 
 | |
| // If you are unsure which license is appropriate for your use, please
 | |
| // contact the sales department at sales@riverbankcomputing.com.
 | |
| // 
 | |
| // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 | |
| // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 | |
| 
 | |
| 
 | |
| #ifndef QSCICOMMAND_H
 | |
| #define QSCICOMMAND_H
 | |
| 
 | |
| #ifdef __APPLE__
 | |
| extern "C++" {
 | |
| #endif
 | |
| 
 | |
| #include <qstring.h>
 | |
| 
 | |
| #include <Qsci/qsciglobal.h>
 | |
| #include <Qsci/qsciscintillabase.h>
 | |
| 
 | |
| 
 | |
| class QsciScintilla;
 | |
| 
 | |
| 
 | |
| //! \brief The QsciCommand class represents an internal editor command that may
 | |
| //! have one or two keys bound to it.
 | |
| //!
 | |
| //! Methods are provided to change the keys bound to the command and to remove
 | |
| //! a key binding.  Each command has a user friendly description of the command
 | |
| //! for use in key mapping dialogs.
 | |
| class QSCINTILLA_EXPORT QsciCommand
 | |
| {
 | |
| public:
 | |
|     //! This enum defines the different commands that can be assigned to a key.
 | |
|     enum Command {
 | |
|         //! Move down one line.
 | |
|         LineDown = QsciScintillaBase::SCI_LINEDOWN,
 | |
| 
 | |
|         //! Extend the selection down one line.
 | |
|         LineDownExtend = QsciScintillaBase::SCI_LINEDOWNEXTEND,
 | |
| 
 | |
|         //! Extend the rectangular selection down one line.
 | |
|         LineDownRectExtend = QsciScintillaBase::SCI_LINEDOWNRECTEXTEND,
 | |
| 
 | |
|         //! Scroll the view down one line.
 | |
|         LineScrollDown = QsciScintillaBase::SCI_LINESCROLLDOWN,
 | |
| 
 | |
|         //! Move up one line.
 | |
|         LineUp = QsciScintillaBase::SCI_LINEUP,
 | |
| 
 | |
|         //! Extend the selection up one line.
 | |
|         LineUpExtend = QsciScintillaBase::SCI_LINEUPEXTEND,
 | |
| 
 | |
|         //! Extend the rectangular selection up one line.
 | |
|         LineUpRectExtend = QsciScintillaBase::SCI_LINEUPRECTEXTEND,
 | |
| 
 | |
|         //! Scroll the view up one line.
 | |
|         LineScrollUp = QsciScintillaBase::SCI_LINESCROLLUP,
 | |
| 
 | |
|         //! Scroll to the start of the document.
 | |
|         ScrollToStart = QsciScintillaBase::SCI_SCROLLTOSTART,
 | |
| 
 | |
|         //! Scroll to the end of the document.
 | |
|         ScrollToEnd = QsciScintillaBase::SCI_SCROLLTOEND,
 | |
| 
 | |
|         //! Scroll vertically to centre the current line.
 | |
|         VerticalCentreCaret = QsciScintillaBase::SCI_VERTICALCENTRECARET,
 | |
| 
 | |
|         //! Move down one paragraph.
 | |
|         ParaDown = QsciScintillaBase::SCI_PARADOWN,
 | |
| 
 | |
|         //! Extend the selection down one paragraph.
 | |
|         ParaDownExtend = QsciScintillaBase::SCI_PARADOWNEXTEND,
 | |
| 
 | |
|         //! Move up one paragraph.
 | |
|         ParaUp = QsciScintillaBase::SCI_PARAUP,
 | |
| 
 | |
|         //! Extend the selection up one paragraph.
 | |
|         ParaUpExtend = QsciScintillaBase::SCI_PARAUPEXTEND,
 | |
| 
 | |
|         //! Move left one character.
 | |
|         CharLeft = QsciScintillaBase::SCI_CHARLEFT,
 | |
| 
 | |
|         //! Extend the selection left one character.
 | |
|         CharLeftExtend = QsciScintillaBase::SCI_CHARLEFTEXTEND,
 | |
| 
 | |
|         //! Extend the rectangular selection left one character.
 | |
|         CharLeftRectExtend = QsciScintillaBase::SCI_CHARLEFTRECTEXTEND,
 | |
| 
 | |
|         //! Move right one character.
 | |
|         CharRight = QsciScintillaBase::SCI_CHARRIGHT,
 | |
| 
 | |
|         //! Extend the selection right one character.
 | |
|         CharRightExtend = QsciScintillaBase::SCI_CHARRIGHTEXTEND,
 | |
| 
 | |
|         //! Extend the rectangular selection right one character.
 | |
|         CharRightRectExtend = QsciScintillaBase::SCI_CHARRIGHTRECTEXTEND,
 | |
| 
 | |
|         //! Move left one word.
 | |
|         WordLeft = QsciScintillaBase::SCI_WORDLEFT,
 | |
| 
 | |
|         //! Extend the selection left one word.
 | |
|         WordLeftExtend = QsciScintillaBase::SCI_WORDLEFTEXTEND,
 | |
| 
 | |
|         //! Move right one word.
 | |
|         WordRight = QsciScintillaBase::SCI_WORDRIGHT,
 | |
| 
 | |
|         //! Extend the selection right one word.
 | |
|         WordRightExtend = QsciScintillaBase::SCI_WORDRIGHTEXTEND,
 | |
| 
 | |
|         //! Move to the end of the previous word.
 | |
|         WordLeftEnd = QsciScintillaBase::SCI_WORDLEFTEND,
 | |
| 
 | |
|         //! Extend the selection to the end of the previous word.
 | |
|         WordLeftEndExtend = QsciScintillaBase::SCI_WORDLEFTENDEXTEND,
 | |
| 
 | |
|         //! Move to the end of the next word.
 | |
|         WordRightEnd = QsciScintillaBase::SCI_WORDRIGHTEND,
 | |
| 
 | |
|         //! Extend the selection to the end of the next word.
 | |
|         WordRightEndExtend = QsciScintillaBase::SCI_WORDRIGHTENDEXTEND,
 | |
| 
 | |
|         //! Move left one word part.
 | |
|         WordPartLeft = QsciScintillaBase::SCI_WORDPARTLEFT,
 | |
| 
 | |
|         //! Extend the selection left one word part.
 | |
|         WordPartLeftExtend = QsciScintillaBase::SCI_WORDPARTLEFTEXTEND,
 | |
| 
 | |
|         //! Move right one word part.
 | |
|         WordPartRight = QsciScintillaBase::SCI_WORDPARTRIGHT,
 | |
| 
 | |
|         //! Extend the selection right one word part.
 | |
|         WordPartRightExtend = QsciScintillaBase::SCI_WORDPARTRIGHTEXTEND,
 | |
| 
 | |
|         //! Move to the start of the document line.
 | |
|         Home = QsciScintillaBase::SCI_HOME,
 | |
| 
 | |
|         //! Extend the selection to the start of the document line.
 | |
|         HomeExtend = QsciScintillaBase::SCI_HOMEEXTEND,
 | |
| 
 | |
|         //! Extend the rectangular selection to the start of the document line.
 | |
|         HomeRectExtend = QsciScintillaBase::SCI_HOMERECTEXTEND,
 | |
| 
 | |
|         //! Move to the start of the displayed line.
 | |
|         HomeDisplay = QsciScintillaBase::SCI_HOMEDISPLAY,
 | |
| 
 | |
|         //! Extend the selection to the start of the displayed line.
 | |
|         HomeDisplayExtend = QsciScintillaBase::SCI_HOMEDISPLAYEXTEND,
 | |
| 
 | |
|         //! Move to the start of the displayed or document line.
 | |
|         HomeWrap = QsciScintillaBase::SCI_HOMEWRAP,
 | |
| 
 | |
|         //! Extend the selection to the start of the displayed or document
 | |
|         //! line.
 | |
|         HomeWrapExtend = QsciScintillaBase::SCI_HOMEWRAPEXTEND,
 | |
| 
 | |
|         //! Move to the first visible character in the document line.
 | |
|         VCHome = QsciScintillaBase::SCI_VCHOME,
 | |
| 
 | |
|         //! Extend the selection to the first visible character in the document
 | |
|         //! line.
 | |
|         VCHomeExtend = QsciScintillaBase::SCI_VCHOMEEXTEND,
 | |
| 
 | |
|         //! Extend the rectangular selection to the first visible character in
 | |
|         //! the document line.
 | |
|         VCHomeRectExtend = QsciScintillaBase::SCI_VCHOMERECTEXTEND,
 | |
| 
 | |
|         //! Move to the first visible character of the displayed or document
 | |
|         //! line.
 | |
|         VCHomeWrap = QsciScintillaBase::SCI_VCHOMEWRAP,
 | |
| 
 | |
|         //! Extend the selection to the first visible character of the
 | |
|         //! displayed or document line.
 | |
|         VCHomeWrapExtend = QsciScintillaBase::SCI_VCHOMEWRAPEXTEND,
 | |
| 
 | |
|         //! Move to the end of the document line.
 | |
|         LineEnd = QsciScintillaBase::SCI_LINEEND,
 | |
| 
 | |
|         //! Extend the selection to the end of the document line.
 | |
|         LineEndExtend = QsciScintillaBase::SCI_LINEENDEXTEND,
 | |
| 
 | |
|         //! Extend the rectangular selection to the end of the document line.
 | |
|         LineEndRectExtend = QsciScintillaBase::SCI_LINEENDRECTEXTEND,
 | |
| 
 | |
|         //! Move to the end of the displayed line.
 | |
|         LineEndDisplay = QsciScintillaBase::SCI_LINEENDDISPLAY,
 | |
| 
 | |
|         //! Extend the selection to the end of the displayed line.
 | |
|         LineEndDisplayExtend = QsciScintillaBase::SCI_LINEENDDISPLAYEXTEND,
 | |
| 
 | |
|         //! Move to the end of the displayed or document line.
 | |
|         LineEndWrap = QsciScintillaBase::SCI_LINEENDWRAP,
 | |
| 
 | |
|         //! Extend the selection to the end of the displayed or document line.
 | |
|         LineEndWrapExtend = QsciScintillaBase::SCI_LINEENDWRAPEXTEND,
 | |
| 
 | |
|         //! Move to the start of the document.
 | |
|         DocumentStart = QsciScintillaBase::SCI_DOCUMENTSTART,
 | |
| 
 | |
|         //! Extend the selection to the start of the document.
 | |
|         DocumentStartExtend = QsciScintillaBase::SCI_DOCUMENTSTARTEXTEND,
 | |
| 
 | |
|         //! Move to the end of the document.
 | |
|         DocumentEnd = QsciScintillaBase::SCI_DOCUMENTEND,
 | |
| 
 | |
|         //! Extend the selection to the end of the document.
 | |
|         DocumentEndExtend = QsciScintillaBase::SCI_DOCUMENTENDEXTEND,
 | |
| 
 | |
|         //! Move up one page.
 | |
|         PageUp = QsciScintillaBase::SCI_PAGEUP,
 | |
| 
 | |
|         //! Extend the selection up one page.
 | |
|         PageUpExtend = QsciScintillaBase::SCI_PAGEUPEXTEND,
 | |
| 
 | |
|         //! Extend the rectangular selection up one page.
 | |
|         PageUpRectExtend = QsciScintillaBase::SCI_PAGEUPRECTEXTEND,
 | |
| 
 | |
|         //! Move down one page.
 | |
|         PageDown = QsciScintillaBase::SCI_PAGEDOWN,
 | |
| 
 | |
|         //! Extend the selection down one page.
 | |
|         PageDownExtend = QsciScintillaBase::SCI_PAGEDOWNEXTEND,
 | |
| 
 | |
|         //! Extend the rectangular selection down one page.
 | |
|         PageDownRectExtend = QsciScintillaBase::SCI_PAGEDOWNRECTEXTEND,
 | |
| 
 | |
|         //! Stuttered move up one page.
 | |
|         StutteredPageUp = QsciScintillaBase::SCI_STUTTEREDPAGEUP,
 | |
| 
 | |
|         //! Stuttered extend the selection up one page.
 | |
|         StutteredPageUpExtend = QsciScintillaBase::SCI_STUTTEREDPAGEUPEXTEND,
 | |
| 
 | |
|         //! Stuttered move down one page.
 | |
|         StutteredPageDown = QsciScintillaBase::SCI_STUTTEREDPAGEDOWN,
 | |
| 
 | |
|         //! Stuttered extend the selection down one page.
 | |
|         StutteredPageDownExtend = QsciScintillaBase::SCI_STUTTEREDPAGEDOWNEXTEND,
 | |
| 
 | |
|         //! Delete the current character.
 | |
|         Delete = QsciScintillaBase::SCI_CLEAR,
 | |
| 
 | |
|         //! Delete the previous character.
 | |
|         DeleteBack = QsciScintillaBase::SCI_DELETEBACK,
 | |
| 
 | |
|         //! Delete the previous character if not at start of line.
 | |
|         DeleteBackNotLine = QsciScintillaBase::SCI_DELETEBACKNOTLINE,
 | |
| 
 | |
|         //! Delete the word to the left.
 | |
|         DeleteWordLeft = QsciScintillaBase::SCI_DELWORDLEFT,
 | |
| 
 | |
|         //! Delete the word to the right.
 | |
|         DeleteWordRight = QsciScintillaBase::SCI_DELWORDRIGHT,
 | |
| 
 | |
|         //! Delete right to the end of the next word.
 | |
|         DeleteWordRightEnd = QsciScintillaBase::SCI_DELWORDRIGHTEND,
 | |
| 
 | |
|         //! Delete the line to the left.
 | |
|         DeleteLineLeft = QsciScintillaBase::SCI_DELLINELEFT,
 | |
| 
 | |
|         //! Delete the line to the right.
 | |
|         DeleteLineRight = QsciScintillaBase::SCI_DELLINERIGHT,
 | |
| 
 | |
|         //! Delete the current line.
 | |
|         LineDelete = QsciScintillaBase::SCI_LINEDELETE,
 | |
| 
 | |
|         //! Cut the current line to the clipboard.
 | |
|         LineCut = QsciScintillaBase::SCI_LINECUT,
 | |
| 
 | |
|         //! Copy the current line to the clipboard.
 | |
|         LineCopy = QsciScintillaBase::SCI_LINECOPY,
 | |
| 
 | |
|         //! Transpose the current and previous lines.
 | |
|         LineTranspose = QsciScintillaBase::SCI_LINETRANSPOSE,
 | |
| 
 | |
|         //! Duplicate the current line.
 | |
|         LineDuplicate = QsciScintillaBase::SCI_LINEDUPLICATE,
 | |
| 
 | |
|         //! Select the whole document.
 | |
|         SelectAll = QsciScintillaBase::SCI_SELECTALL,
 | |
| 
 | |
|         //! Move the selected lines up one line.
 | |
|         MoveSelectedLinesUp = QsciScintillaBase::SCI_MOVESELECTEDLINESUP,
 | |
| 
 | |
|         //! Move the selected lines down one line.
 | |
|         MoveSelectedLinesDown = QsciScintillaBase::SCI_MOVESELECTEDLINESDOWN,
 | |
| 
 | |
|         //! Duplicate the selection.
 | |
|         SelectionDuplicate = QsciScintillaBase::SCI_SELECTIONDUPLICATE,
 | |
| 
 | |
|         //! Convert the selection to lower case.
 | |
|         SelectionLowerCase = QsciScintillaBase::SCI_LOWERCASE,
 | |
| 
 | |
|         //! Convert the selection to upper case.
 | |
|         SelectionUpperCase = QsciScintillaBase::SCI_UPPERCASE,
 | |
| 
 | |
|         //! Cut the selection to the clipboard.
 | |
|         SelectionCut = QsciScintillaBase::SCI_CUT,
 | |
| 
 | |
|         //! Copy the selection to the clipboard.
 | |
|         SelectionCopy = QsciScintillaBase::SCI_COPY,
 | |
| 
 | |
|         //! Paste from the clipboard.
 | |
|         Paste = QsciScintillaBase::SCI_PASTE,
 | |
| 
 | |
|         //! Toggle insert/overtype.
 | |
|         EditToggleOvertype = QsciScintillaBase::SCI_EDITTOGGLEOVERTYPE,
 | |
| 
 | |
|         //! Insert a platform dependent newline.
 | |
|         Newline = QsciScintillaBase::SCI_NEWLINE,
 | |
| 
 | |
|         //! Insert a formfeed.
 | |
|         Formfeed = QsciScintillaBase::SCI_FORMFEED,
 | |
| 
 | |
|         //! Indent one level.
 | |
|         Tab = QsciScintillaBase::SCI_TAB,
 | |
| 
 | |
|         //! De-indent one level.
 | |
|         Backtab = QsciScintillaBase::SCI_BACKTAB,
 | |
| 
 | |
|         //! Cancel any current operation.
 | |
|         Cancel = QsciScintillaBase::SCI_CANCEL,
 | |
| 
 | |
|         //! Undo the last command.
 | |
|         Undo = QsciScintillaBase::SCI_UNDO,
 | |
| 
 | |
|         //! Redo the last command.
 | |
|         Redo = QsciScintillaBase::SCI_REDO,
 | |
| 
 | |
|         //! Zoom in.
 | |
|         ZoomIn = QsciScintillaBase::SCI_ZOOMIN,
 | |
| 
 | |
|         //! Zoom out.
 | |
|         ZoomOut = QsciScintillaBase::SCI_ZOOMOUT,
 | |
|     };
 | |
| 
 | |
|     //! Return the command that will be executed by this instance.
 | |
|     Command command() const {return scicmd;}
 | |
| 
 | |
|     //! Execute the command.
 | |
|     void execute();
 | |
| 
 | |
|     //! Binds the key \a key to the command.  If \a key is 0 then the key
 | |
|     //! binding is removed.  If \a key is invalid then the key binding is
 | |
|     //! unchanged.  Valid keys are any visible or control character or any
 | |
|     //! of \c Key_Down, \c Key_Up, \c Key_Left, \c Key_Right, \c Key_Home,
 | |
|     //! \c Key_End, \c Key_PageUp, \c Key_PageDown, \c Key_Delete,
 | |
|     //! \c Key_Insert, \c Key_Escape, \c Key_Backspace, \c Key_Tab and
 | |
|     //! \c Key_Return.  Keys may be modified with any combination of \c SHIFT,
 | |
|     //! \c CTRL, \c ALT and \c META.
 | |
|     //!
 | |
|     //! \sa key(), setAlternateKey(), validKey()
 | |
|     void setKey(int key);
 | |
| 
 | |
|     //! Binds the alternate key \a altkey to the command.  If \a key is 0
 | |
|     //! then the alternate key binding is removed.
 | |
|     //!
 | |
|     //! \sa alternateKey(), setKey(), validKey()
 | |
|     void setAlternateKey(int altkey);
 | |
| 
 | |
|     //! The key that is currently bound to the command is returned.
 | |
|     //!
 | |
|     //! \sa setKey(), alternateKey()
 | |
|     int key() const {return qkey;}
 | |
| 
 | |
|     //! The alternate key that is currently bound to the command is
 | |
|     //! returned.
 | |
|     //!
 | |
|     //! \sa setAlternateKey(), key()
 | |
|     int alternateKey() const {return qaltkey;}
 | |
| 
 | |
|     //! If the key \a key is valid then true is returned.
 | |
|     static bool validKey(int key);
 | |
| 
 | |
|     //! The user friendly description of the command is returned.
 | |
|     QString description() const;
 | |
| 
 | |
| private:
 | |
|     friend class QsciCommandSet;
 | |
| 
 | |
|     QsciCommand(QsciScintilla *qs, Command cmd, int key, int altkey,
 | |
|             const char *desc);
 | |
| 
 | |
|     void bindKey(int key,int &qk,int &scik);
 | |
| 
 | |
|     QsciScintilla *qsCmd;
 | |
|     Command scicmd;
 | |
|     int qkey, scikey, qaltkey, scialtkey;
 | |
|     const char *descCmd;
 | |
| 
 | |
|     QsciCommand(const QsciCommand &);
 | |
|     QsciCommand &operator=(const QsciCommand &);
 | |
| };
 | |
| 
 | |
| #ifdef __APPLE__
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 |