diff options
| author | Joshua Peek <josh@joshpeek.com> | 2012-08-20 08:36:10 -0700 |
|---|---|---|
| committer | Joshua Peek <josh@joshpeek.com> | 2012-08-20 08:36:10 -0700 |
| commit | b8711f8ccf6945226b82997cc29a13f5dcbc60ea (patch) | |
| tree | e840c9795f40d3420f0dc0cac177c08a95c2f34d /samples | |
| parent | a41f40a30eb2e94e83abddc90149ba25090b2861 (diff) | |
| parent | 34aaab19b29b8fb7155c97ed4d3f39a4eb08fb93 (diff) | |
Merge pull request #228 from github/cpp-samples
Add more C++ samples
Diffstat (limited to 'samples')
| -rw-r--r-- | samples/C++/qscicommand.h | 415 | ||||
| -rw-r--r-- | samples/C++/qsciprinter.h | 116 |
2 files changed, 531 insertions, 0 deletions
diff --git a/samples/C++/qscicommand.h b/samples/C++/qscicommand.h new file mode 100644 index 0000000..f8ecbc8 --- /dev/null +++ b/samples/C++/qscicommand.h @@ -0,0 +1,415 @@ +// 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 diff --git a/samples/C++/qsciprinter.h b/samples/C++/qsciprinter.h new file mode 100644 index 0000000..f30d645 --- /dev/null +++ b/samples/C++/qsciprinter.h @@ -0,0 +1,116 @@ +// This module defines interface to the QsciPrinter 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 QSCIPRINTER_H +#define QSCIPRINTER_H + +#ifdef __APPLE__ +extern "C++" { +#endif + +#include <qprinter.h> + +#include <Qsci/qsciglobal.h> +#include <Qsci/qsciscintilla.h> + + +QT_BEGIN_NAMESPACE +class QRect; +class QPainter; +QT_END_NAMESPACE + +class QsciScintillaBase; + + +//! \brief The QsciPrinter class is a sub-class of the Qt QPrinter class that +//! is able to print the text of a Scintilla document. +//! +//! The class can be further sub-classed to alter to layout of the text, adding +//! headers and footers for example. +class QSCINTILLA_EXPORT QsciPrinter : public QPrinter +{ +public: + //! Constructs a printer paint device with mode \a mode. + QsciPrinter(PrinterMode mode = ScreenResolution); + + //! Destroys the QsciPrinter instance. + virtual ~QsciPrinter(); + + //! Format a page, by adding headers and footers for example, before the + //! document text is drawn on it. \a painter is the painter to be used to + //! add customised text and graphics. \a drawing is true if the page is + //! actually being drawn rather than being sized. \a painter drawing + //! methods must only be called when \a drawing is true. \a area is the + //! area of the page that will be used to draw the text. This should be + //! modified if it is necessary to reserve space for any customised text or + //! graphics. By default the area is relative to the printable area of the + //! page. Use QPrinter::setFullPage() because calling printRange() if you + //! want to try and print over the whole page. \a pagenr is the number of + //! the page. The first page is numbered 1. + virtual void formatPage(QPainter &painter, bool drawing, QRect &area, + int pagenr); + + //! Return the number of points to add to each font when printing. + //! + //! \sa setMagnification() + int magnification() const {return mag;} + + //! Sets the number of points to add to each font when printing to \a + //! magnification. + //! + //! \sa magnification() + virtual void setMagnification(int magnification); + + //! Print a range of lines from the Scintilla instance \a qsb. \a from is + //! the first line to print and a negative value signifies the first line + //! of text. \a to is the last line to print and a negative value + //! signifies the last line of text. true is returned if there was no + //! error. + virtual int printRange(QsciScintillaBase *qsb, int from = -1, int to = -1); + + //! Return the line wrap mode used when printing. The default is + //! QsciScintilla::WrapWord. + //! + //! \sa setWrapMode() + QsciScintilla::WrapMode wrapMode() const {return wrap;} + + //! Sets the line wrap mode used when printing to \a wmode. + //! + //! \sa wrapMode() + virtual void setWrapMode(QsciScintilla::WrapMode wmode); + +private: + int mag; + QsciScintilla::WrapMode wrap; + + QsciPrinter(const QsciPrinter &); + QsciPrinter &operator=(const QsciPrinter &); +}; + +#ifdef __APPLE__ +} +#endif + +#endif |
