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
 |