123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992 |
- // This module implements the QsciCommandSet class.
- //
- // Copyright (c) 2017 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
- // version 3.0 as published by the Free Software Foundation and appearing in
- // the file LICENSE included in the packaging of this file. Please review the
- // following information to ensure the GNU General Public License version 3.0
- // requirements will be met: http://www.gnu.org/copyleft/gpl.html.
- //
- // If you do not wish to use this file under the terms of the GPL version 3.0
- // then you may purchase a commercial license. For more information contact
- // info@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.
- #include "Qsci/qscicommandset.h"
- #include <QSettings>
- #include "Qsci/qscicommand.h"
- #include "Qsci/qsciscintilla.h"
- #include "Qsci/qsciscintillabase.h"
- // Starting with QScintilla v2.7 the standard OS/X keyboard shortcuts are used
- // where possible. In order to restore the behaviour of earlier versions then
- // #define DONT_USE_OSX_KEYS here or add it to the qmake project (.pro) file.
- #if defined(Q_OS_MAC) && !defined(DONT_USE_OSX_KEYS)
- #define USING_OSX_KEYS
- #else
- #undef USING_OSX_KEYS
- #endif
- // The ctor.
- QsciCommandSet::QsciCommandSet(QsciScintilla *qs) : qsci(qs)
- {
- struct sci_cmd {
- QsciCommand::Command cmd;
- int key;
- int altkey;
- const char *desc;
- };
- static struct sci_cmd cmd_table[] = {
- {
- QsciCommand::LineDown,
- Qt::Key_Down,
- #if defined(USING_OSX_KEYS)
- Qt::Key_N | Qt::META,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand", "Move down one line")
- },
- {
- QsciCommand::LineDownExtend,
- Qt::Key_Down | Qt::SHIFT,
- #if defined(USING_OSX_KEYS)
- Qt::Key_N | Qt::META | Qt::SHIFT,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand", "Extend selection down one line")
- },
- {
- QsciCommand::LineDownRectExtend,
- Qt::Key_Down | Qt::ALT | Qt::SHIFT,
- #if defined(USING_OSX_KEYS)
- Qt::Key_N | Qt::META | Qt::ALT | Qt::SHIFT,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend rectangular selection down one line")
- },
- {
- QsciCommand::LineScrollDown,
- Qt::Key_Down | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Scroll view down one line")
- },
- {
- QsciCommand::LineUp,
- Qt::Key_Up,
- #if defined(USING_OSX_KEYS)
- Qt::Key_P | Qt::META,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand", "Move up one line")
- },
- {
- QsciCommand::LineUpExtend,
- Qt::Key_Up | Qt::SHIFT,
- #if defined(USING_OSX_KEYS)
- Qt::Key_P | Qt::META | Qt::SHIFT,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand", "Extend selection up one line")
- },
- {
- QsciCommand::LineUpRectExtend,
- Qt::Key_Up | Qt::ALT | Qt::SHIFT,
- #if defined(USING_OSX_KEYS)
- Qt::Key_P | Qt::META | Qt::ALT | Qt::SHIFT,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend rectangular selection up one line")
- },
- {
- QsciCommand::LineScrollUp,
- Qt::Key_Up | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Scroll view up one line")
- },
- {
- QsciCommand::ScrollToStart,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Home,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Scroll to start of document")
- },
- {
- QsciCommand::ScrollToEnd,
- #if defined(USING_OSX_KEYS)
- Qt::Key_End,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Scroll to end of document")
- },
- {
- QsciCommand::VerticalCentreCaret,
- #if defined(USING_OSX_KEYS)
- Qt::Key_L | Qt::META,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Scroll vertically to centre current line")
- },
- {
- QsciCommand::ParaDown,
- Qt::Key_BracketRight | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move down one paragraph")
- },
- {
- QsciCommand::ParaDownExtend,
- Qt::Key_BracketRight | Qt::CTRL | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection down one paragraph")
- },
- {
- QsciCommand::ParaUp,
- Qt::Key_BracketLeft | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move up one paragraph")
- },
- {
- QsciCommand::ParaUpExtend,
- Qt::Key_BracketLeft | Qt::CTRL | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection up one paragraph")
- },
- {
- QsciCommand::CharLeft,
- Qt::Key_Left,
- #if defined(USING_OSX_KEYS)
- Qt::Key_B | Qt::META,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand", "Move left one character")
- },
- {
- QsciCommand::CharLeftExtend,
- Qt::Key_Left | Qt::SHIFT,
- #if defined(USING_OSX_KEYS)
- Qt::Key_B | Qt::META | Qt::SHIFT,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection left one character")
- },
- {
- QsciCommand::CharLeftRectExtend,
- Qt::Key_Left | Qt::ALT | Qt::SHIFT,
- #if defined(USING_OSX_KEYS)
- Qt::Key_B | Qt::META | Qt::ALT | Qt::SHIFT,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend rectangular selection left one character")
- },
- {
- QsciCommand::CharRight,
- Qt::Key_Right,
- #if defined(USING_OSX_KEYS)
- Qt::Key_F | Qt::META,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand", "Move right one character")
- },
- {
- QsciCommand::CharRightExtend,
- Qt::Key_Right | Qt::SHIFT,
- #if defined(USING_OSX_KEYS)
- Qt::Key_F | Qt::META | Qt::SHIFT,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection right one character")
- },
- {
- QsciCommand::CharRightRectExtend,
- Qt::Key_Right | Qt::ALT | Qt::SHIFT,
- #if defined(USING_OSX_KEYS)
- Qt::Key_F | Qt::META | Qt::ALT | Qt::SHIFT,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend rectangular selection right one character")
- },
- {
- QsciCommand::WordLeft,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Left | Qt::ALT,
- #else
- Qt::Key_Left | Qt::CTRL,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move left one word")
- },
- {
- QsciCommand::WordLeftExtend,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Left | Qt::ALT | Qt::SHIFT,
- #else
- Qt::Key_Left | Qt::CTRL | Qt::SHIFT,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Extend selection left one word")
- },
- {
- QsciCommand::WordRight,
- #if defined(USING_OSX_KEYS)
- 0,
- #else
- Qt::Key_Right | Qt::CTRL,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move right one word")
- },
- {
- QsciCommand::WordRightExtend,
- Qt::Key_Right | Qt::CTRL | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Extend selection right one word")
- },
- {
- QsciCommand::WordLeftEnd,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move to end of previous word")
- },
- {
- QsciCommand::WordLeftEndExtend,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to end of previous word")
- },
- {
- QsciCommand::WordRightEnd,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Right | Qt::ALT,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move to end of next word")
- },
- {
- QsciCommand::WordRightEndExtend,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Right | Qt::ALT | Qt::SHIFT,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to end of next word")
- },
- {
- QsciCommand::WordPartLeft,
- Qt::Key_Slash | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move left one word part")
- },
- {
- QsciCommand::WordPartLeftExtend,
- Qt::Key_Slash | Qt::CTRL | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection left one word part")
- },
- {
- QsciCommand::WordPartRight,
- Qt::Key_Backslash | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move right one word part")
- },
- {
- QsciCommand::WordPartRightExtend,
- Qt::Key_Backslash | Qt::CTRL | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection right one word part")
- },
- {
- QsciCommand::Home,
- #if defined(USING_OSX_KEYS)
- Qt::Key_A | Qt::META,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move to start of document line")
- },
- {
- QsciCommand::HomeExtend,
- #if defined(USING_OSX_KEYS)
- Qt::Key_A | Qt::META | Qt::SHIFT,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to start of document line")
- },
- {
- QsciCommand::HomeRectExtend,
- #if defined(USING_OSX_KEYS)
- Qt::Key_A | Qt::META | Qt::ALT | Qt::SHIFT,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend rectangular selection to start of document line")
- },
- {
- QsciCommand::HomeDisplay,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Left | Qt::CTRL,
- #else
- Qt::Key_Home | Qt::ALT,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move to start of display line")
- },
- {
- QsciCommand::HomeDisplayExtend,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Left | Qt::CTRL | Qt::SHIFT,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to start of display line")
- },
- {
- QsciCommand::HomeWrap,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Move to start of display or document line")
- },
- {
- QsciCommand::HomeWrapExtend,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to start of display or document line")
- },
- {
- QsciCommand::VCHome,
- #if defined(USING_OSX_KEYS)
- 0,
- #else
- Qt::Key_Home,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Move to first visible character in document line")
- },
- {
- QsciCommand::VCHomeExtend,
- #if defined(USING_OSX_KEYS)
- 0,
- #else
- Qt::Key_Home | Qt::SHIFT,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to first visible character in document line")
- },
- {
- QsciCommand::VCHomeRectExtend,
- #if defined(USING_OSX_KEYS)
- 0,
- #else
- Qt::Key_Home | Qt::ALT | Qt::SHIFT,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend rectangular selection to first visible character in document line")
- },
- {
- QsciCommand::VCHomeWrap,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Move to first visible character of display in document line")
- },
- {
- QsciCommand::VCHomeWrapExtend,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to first visible character in display or document line")
- },
- {
- QsciCommand::LineEnd,
- #if defined(USING_OSX_KEYS)
- Qt::Key_E | Qt::META,
- #else
- Qt::Key_End,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move to end of document line")
- },
- {
- QsciCommand::LineEndExtend,
- #if defined(USING_OSX_KEYS)
- Qt::Key_E | Qt::META | Qt::SHIFT,
- #else
- Qt::Key_End | Qt::SHIFT,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to end of document line")
- },
- {
- QsciCommand::LineEndRectExtend,
- #if defined(USING_OSX_KEYS)
- Qt::Key_E | Qt::META | Qt::ALT | Qt::SHIFT,
- #else
- Qt::Key_End | Qt::ALT | Qt::SHIFT,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend rectangular selection to end of document line")
- },
- {
- QsciCommand::LineEndDisplay,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Right | Qt::CTRL,
- #else
- Qt::Key_End | Qt::ALT,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move to end of display line")
- },
- {
- QsciCommand::LineEndDisplayExtend,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Right | Qt::CTRL | Qt::SHIFT,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to end of display line")
- },
- {
- QsciCommand::LineEndWrap,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Move to end of display or document line")
- },
- {
- QsciCommand::LineEndWrapExtend,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to end of display or document line")
- },
- {
- QsciCommand::DocumentStart,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Up | Qt::CTRL,
- #else
- Qt::Key_Home | Qt::CTRL,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move to start of document")
- },
- {
- QsciCommand::DocumentStartExtend,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Up | Qt::CTRL | Qt::SHIFT,
- #else
- Qt::Key_Home | Qt::CTRL | Qt::SHIFT,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to start of document")
- },
- {
- QsciCommand::DocumentEnd,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Down | Qt::CTRL,
- #else
- Qt::Key_End | Qt::CTRL,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move to end of document")
- },
- {
- QsciCommand::DocumentEndExtend,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Down | Qt::CTRL | Qt::SHIFT,
- #else
- Qt::Key_End | Qt::CTRL | Qt::SHIFT,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend selection to end of document")
- },
- {
- QsciCommand::PageUp,
- Qt::Key_PageUp,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move up one page")
- },
- {
- QsciCommand::PageUpExtend,
- Qt::Key_PageUp | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Extend selection up one page")
- },
- {
- QsciCommand::PageUpRectExtend,
- Qt::Key_PageUp | Qt::ALT | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend rectangular selection up one page")
- },
- {
- QsciCommand::PageDown,
- Qt::Key_PageDown,
- #if defined(USING_OSX_KEYS)
- Qt::Key_V | Qt::META,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand", "Move down one page")
- },
- {
- QsciCommand::PageDownExtend,
- Qt::Key_PageDown | Qt::SHIFT,
- #if defined(USING_OSX_KEYS)
- Qt::Key_V | Qt::META | Qt::SHIFT,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand", "Extend selection down one page")
- },
- {
- QsciCommand::PageDownRectExtend,
- Qt::Key_PageDown | Qt::ALT | Qt::SHIFT,
- #if defined(USING_OSX_KEYS)
- Qt::Key_V | Qt::META | Qt::ALT | Qt::SHIFT,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand",
- "Extend rectangular selection down one page")
- },
- {
- QsciCommand::StutteredPageUp,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Stuttered move up one page")
- },
- {
- QsciCommand::StutteredPageUpExtend,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Stuttered extend selection up one page")
- },
- {
- QsciCommand::StutteredPageDown,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Stuttered move down one page")
- },
- {
- QsciCommand::StutteredPageDownExtend,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Stuttered extend selection down one page")
- },
- {
- QsciCommand::Delete,
- Qt::Key_Delete,
- #if defined(USING_OSX_KEYS)
- Qt::Key_D | Qt::META,
- #else
- 0,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand", "Delete current character")
- },
- {
- QsciCommand::DeleteBack,
- Qt::Key_Backspace,
- #if defined(USING_OSX_KEYS)
- Qt::Key_H | Qt::META,
- #else
- Qt::Key_Backspace | Qt::SHIFT,
- #endif
- QT_TRANSLATE_NOOP("QsciCommand", "Delete previous character")
- },
- {
- QsciCommand::DeleteBackNotLine,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Delete previous character if not at start of line")
- },
- {
- QsciCommand::DeleteWordLeft,
- Qt::Key_Backspace | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Delete word to left")
- },
- {
- QsciCommand::DeleteWordRight,
- Qt::Key_Delete | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Delete word to right")
- },
- {
- QsciCommand::DeleteWordRightEnd,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Delete | Qt::ALT,
- #else
- 0,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Delete right to end of next word")
- },
- {
- QsciCommand::DeleteLineLeft,
- Qt::Key_Backspace | Qt::CTRL | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Delete line to left")
- },
- {
- QsciCommand::DeleteLineRight,
- #if defined(USING_OSX_KEYS)
- Qt::Key_K | Qt::META,
- #else
- Qt::Key_Delete | Qt::CTRL | Qt::SHIFT,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Delete line to right")
- },
- {
- QsciCommand::LineDelete,
- Qt::Key_L | Qt::CTRL | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Delete current line")
- },
- {
- QsciCommand::LineCut,
- Qt::Key_L | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Cut current line")
- },
- {
- QsciCommand::LineCopy,
- Qt::Key_T | Qt::CTRL | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Copy current line")
- },
- {
- QsciCommand::LineTranspose,
- Qt::Key_T | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Transpose current and previous lines")
- },
- {
- QsciCommand::LineDuplicate,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Duplicate the current line")
- },
- {
- QsciCommand::SelectAll,
- Qt::Key_A | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Select all")
- },
- {
- QsciCommand::MoveSelectedLinesUp,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Move selected lines up one line")
- },
- {
- QsciCommand::MoveSelectedLinesDown,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand",
- "Move selected lines down one line")
- },
- {
- QsciCommand::SelectionDuplicate,
- Qt::Key_D | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Duplicate selection")
- },
- {
- QsciCommand::SelectionLowerCase,
- Qt::Key_U | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Convert selection to lower case")
- },
- {
- QsciCommand::SelectionUpperCase,
- Qt::Key_U | Qt::CTRL | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Convert selection to upper case")
- },
- {
- QsciCommand::SelectionCut,
- Qt::Key_X | Qt::CTRL,
- Qt::Key_Delete | Qt::SHIFT,
- QT_TRANSLATE_NOOP("QsciCommand", "Cut selection")
- },
- {
- QsciCommand::SelectionCopy,
- Qt::Key_C | Qt::CTRL,
- Qt::Key_Insert | Qt::CTRL,
- QT_TRANSLATE_NOOP("QsciCommand", "Copy selection")
- },
- {
- QsciCommand::Paste,
- Qt::Key_V | Qt::CTRL,
- Qt::Key_Insert | Qt::SHIFT,
- QT_TRANSLATE_NOOP("QsciCommand", "Paste")
- },
- {
- QsciCommand::EditToggleOvertype,
- Qt::Key_Insert,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Toggle insert/overtype")
- },
- {
- QsciCommand::Newline,
- Qt::Key_Return,
- Qt::Key_Return | Qt::SHIFT,
- QT_TRANSLATE_NOOP("QsciCommand", "Insert newline")
- },
- {
- QsciCommand::Formfeed,
- 0,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Formfeed")
- },
- {
- QsciCommand::Tab,
- Qt::Key_Tab,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Indent one level")
- },
- {
- QsciCommand::Backtab,
- Qt::Key_Tab | Qt::SHIFT,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "De-indent one level")
- },
- {
- QsciCommand::Cancel,
- Qt::Key_Escape,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Cancel")
- },
- {
- QsciCommand::Undo,
- Qt::Key_Z | Qt::CTRL,
- Qt::Key_Backspace | Qt::ALT,
- QT_TRANSLATE_NOOP("QsciCommand", "Undo last command")
- },
- {
- QsciCommand::Redo,
- #if defined(USING_OSX_KEYS)
- Qt::Key_Z | Qt::CTRL | Qt::SHIFT,
- #else
- Qt::Key_Y | Qt::CTRL,
- #endif
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Redo last command")
- },
- {
- QsciCommand::ZoomIn,
- Qt::Key_Plus | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Zoom in")
- },
- {
- QsciCommand::ZoomOut,
- Qt::Key_Minus | Qt::CTRL,
- 0,
- QT_TRANSLATE_NOOP("QsciCommand", "Zoom out")
- },
- };
- // Clear the default map.
- qsci->SendScintilla(QsciScintillaBase::SCI_CLEARALLCMDKEYS);
- // By default control characters don't do anything (rather than insert the
- // control character into the text).
- for (int k = 'A'; k <= 'Z'; ++k)
- qsci->SendScintilla(QsciScintillaBase::SCI_ASSIGNCMDKEY,
- k + (QsciScintillaBase::SCMOD_CTRL << 16),
- QsciScintillaBase::SCI_NULL);
- for (int i = 0; i < sizeof (cmd_table) / sizeof (cmd_table[0]); ++i)
- cmds.append(
- new QsciCommand(qsci, cmd_table[i].cmd, cmd_table[i].key,
- cmd_table[i].altkey, cmd_table[i].desc));
- }
- // The dtor.
- QsciCommandSet::~QsciCommandSet()
- {
- for (int i = 0; i < cmds.count(); ++i)
- delete cmds.at(i);
- }
- // Read the command set from settings.
- bool QsciCommandSet::readSettings(QSettings &qs, const char *prefix)
- {
- bool rc = true;
- QString skey;
- for (int i = 0; i < cmds.count(); ++i)
- {
- QsciCommand *cmd = cmds.at(i);
- skey.sprintf("%s/keymap/c%d/", prefix,
- static_cast<int>(cmd->command()));
- int key;
- bool ok;
- // Read the key.
- ok = qs.contains(skey + "key");
- key = qs.value(skey + "key", 0).toInt();
- if (ok)
- cmd->setKey(key);
- else
- rc = false;
- // Read the alternate key.
- ok = qs.contains(skey + "alt");
- key = qs.value(skey + "alt", 0).toInt();
- if (ok)
- cmd->setAlternateKey(key);
- else
- rc = false;
- }
- return rc;
- }
- // Write the command set to settings.
- bool QsciCommandSet::writeSettings(QSettings &qs, const char *prefix)
- {
- bool rc = true;
- QString skey;
- for (int i = 0; i < cmds.count(); ++i)
- {
- QsciCommand *cmd = cmds.at(i);
- skey.sprintf("%s/keymap/c%d/", prefix,
- static_cast<int>(cmd->command()));
- // Write the key.
- qs.setValue(skey + "key", cmd->key());
- // Write the alternate key.
- qs.setValue(skey + "alt", cmd->key());
- }
- return rc;
- }
- // Clear the key bindings.
- void QsciCommandSet::clearKeys()
- {
- for (int i = 0; i < cmds.count(); ++i)
- cmds.at(i)->setKey(0);
- }
- // Clear the alternate key bindings.
- void QsciCommandSet::clearAlternateKeys()
- {
- for (int i = 0; i < cmds.count(); ++i)
- cmds.at(i)->setAlternateKey(0);
- }
- // Find the command bound to a key.
- QsciCommand *QsciCommandSet::boundTo(int key) const
- {
- for (int i = 0; i < cmds.count(); ++i)
- {
- QsciCommand *cmd = cmds.at(i);
- if (cmd->key() == key || cmd->alternateKey() == key)
- return cmd;
- }
- return 0;
- }
- // Find a command.
- QsciCommand *QsciCommandSet::find(QsciCommand::Command command) const
- {
- for (int i = 0; i < cmds.count(); ++i)
- {
- QsciCommand *cmd = cmds.at(i);
- if (cmd->command() == command)
- return cmd;
- }
- // This should never happen.
- return 0;
- }
|