// This module defines the "official" high-level API of the TQt port of // Scintilla. // // Copyright (c) 2006 // Riverbank Computing Limited // // This file is part of TQScintilla. // // This copy of TQScintilla 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, or (at your option) any // later version. // // TQScintilla is supplied 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 // TQScintilla; see the file LICENSE. If not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef TQEXTSCINTILLA_H #define TQEXTSCINTILLA_H #include #include #include #include #include class QextScintillaLexer; class QextScintillaAPIs; class QextScintillaCommandSet; //! \brief The QextScintilla class implements a higher level, more TQt-like, //! API to the Scintilla editor widget. //! //! QextScintilla implements methods, signals and slots similar to those found //! in other TQt editor classes. It also provides a higher level interface to //! features specific to Scintilla such as syntax styling, call tips, //! auto-indenting and auto-completion than that provided by QextScintillaBase. //! //! The API is modelled on TQTextEdit - a method of the same name should behave //! in the same way. class TQEXTSCINTILLA_EXPORT QextScintilla : public QextScintillaBase { Q_OBJECT TQ_OBJECT public: //! This enum defines the different auto-indentation styles. enum { //! A line is automatically indented to match the previous //! line. AiMaintain = 0x01, //! If the language supported by the current lexer has a //! specific start of block character (e.g. { in C++), then a //! line that begins with that character is indented as well as //! the lines that make up the block. It may be logically ored //! with AiClosing. AiOpening = 0x02, //! If the language supported by the current lexer has a //! specific end of block character (e.g. } in C++), then a //! line that begins with that character is indented as well as //! the lines that make up the block. It may be logically ored //! with AiOpening. AiClosing = 0x04 }; //! This enum defines the different sources for auto-completion lists. enum AutoCompletionSource { //! The source is the current document. AcsDocument, //! The source is any installed APIs. AcsAPIs, //! The source is all available sources. AcsAll }; //! This enum defines the different brace matching modes. The //! character pairs {}, [] and () are treated as braces. The Python //! lexer will also match a : with the end of the corresponding //! indented block. enum BraceMatch { //! Brace matching is disabled. NoBraceMatch, //! Brace matching is enabled for a brace immediately before //! the current position. StrictBraceMatch, //! Brace matching is enabled for a brace immediately before or //! after the current position. SloppyBraceMatch }; //! This enum defines the different edge modes for long lines. enum EdgeMode { //! Long lines are not marked. EdgeNone = EDGE_NONE, //! A vertical line is drawn at the column set by //! setEdgeColumn(). This is recommended for monospace fonts. EdgeLine = EDGE_LINE, //! The background color of characters after the column limit //! is changed to the color set by setEdgeColor(). This is //! recommended for proportional fonts. EdgeBackground = EDGE_BACKGROUND }; //! This enum defines the different end-of-line modes. enum EolMode { //! A carriage return/line feed as used on Windows systems. EolWindows = SC_EOL_CRLF, //! A line feed as used on Unix systems. EolUnix = SC_EOL_LF, //! A carriage return as used on Mac systems. EolMac = SC_EOL_CR }; //! This enum defines the different styles for the folding margin. enum FoldStyle { //! Folding is disabled. NoFoldStyle, //! Plain folding style using plus and minus symbols. PlainFoldStyle, //! Circled folding style using circled plus and minus symbols. CircledFoldStyle, //! Boxed folding style using boxed plus and minus symbols. BoxedFoldStyle, //! Circled tree style using a flattened tree with circled plus //! and minus symbols and rounded corners. CircledTreeFoldStyle, //! Boxed tree style using a flattened tree with boxed plus and //! minus symbols and right-angled corners. BoxedTreeFoldStyle }; //! This enum defines the different pre-defined marker symbols. enum MarkerSymbol { //! A circle. Circle = SC_MARK_CIRCLE, //! A rectangle. Rectangle = SC_MARK_ROUNDRECT, //! A triangle pointing to the right. RightTriangle = SC_MARK_ARROW, //! A smaller rectangle. SmallRectangle = SC_MARK_SMALLRECT, //! An arrow pointing to the right. RightArrow = SC_MARK_SHORTARROW, //! An invisible marker that allows code to track the movement //! of lines. Invisible = SC_MARK_EMPTY, //! A triangle pointing down. DownTriangle = SC_MARK_ARROWDOWN, //! A drawn minus sign. Minus = SC_MARK_MINUS, //! A drawn plus sign. Plus = SC_MARK_PLUS, //! A vertical line drawn in the background colour. VerticalLine = SC_MARK_VLINE, //! A bottom left corner drawn in the background colour. BottomLeftCorner = SC_MARK_LCORNER, //! A vertical line with a centre right horizontal line drawn //! in the background colour. LeftSideSplitter = SC_MARK_TCORNER, //! A drawn plus sign in a box. BoxedPlus = SC_MARK_BOXPLUS, //! A drawn plus sign in a connected box. BoxedPlusConnected = SC_MARK_BOXPLUSCONNECTED, //! A drawn minus sign in a box. BoxedMinus = SC_MARK_BOXMINUS, //! A drawn minus sign in a connected box. BoxedMinusConnected = SC_MARK_BOXMINUSCONNECTED, //! A rounded bottom left corner drawn in the background //! colour. RoundedBottomLeftCorner = SC_MARK_LCORNERCURVE, //! A vertical line with a centre right curved line drawn in //! the background colour. LeftSideRoundedSplitter = SC_MARK_TCORNERCURVE, //! A drawn plus sign in a circle. CircledPlus = SC_MARK_CIRCLEPLUS, //! A drawn plus sign in a connected box. CircledPlusConnected = SC_MARK_CIRCLEPLUSCONNECTED, //! A drawn minus sign in a circle. CircledMinus = SC_MARK_CIRCLEMINUS, //! A drawn minus sign in a connected circle. CircledMinusConnected = SC_MARK_CIRCLEMINUSCONNECTED, //! No symbol is drawn but the line of text is drawn with the //! same background colour. Background = SC_MARK_BACKGROUND, //! Three drawn dots. ThreeDots = SC_MARK_DOTDOTDOT, //! Three drawn arrows pointing right. ThreeRightArrows = SC_MARK_ARROWS }; //! This enum defines the different whitespace visibility modes. When //! whitespace is visible spaces are displayed as small centred dots //! and tabs are displayed as light arrows pointing to the right. enum WhitespaceVisibility { //! Whitespace is invisible. WsInvisible = SCWS_INVISIBLE, //! Whitespace is always visible. WsVisible = SCWS_VISIBLEALWAYS, //! Whitespace is visible after the whitespace used for //! indentation. WsVisibleAfterIndent = SCWS_VISIBLEAFTERINDENT }; //! This enum defines the different line wrap modes. enum WrapMode { //! Lines are not wrapped. WrapNone = SC_WRAP_NONE, //! Lines are wrapped at word boundaries. WrapWord = SC_WRAP_WORD, //! Lines are wrapped at character boundaries. WrapCharacter = SC_WRAP_CHAR }; //! This enum defines the different line wrap visual flags. enum WrapVisualFlag { //! No wrap flag is displayed. WrapFlagNone, //! A wrap flag is displayed by the text. WrapFlagByText, //! A wrap flag is displayed by the border. WrapFlagByBorder }; //! Construct an empty QextScintilla with parent \a parent, name \a //! name, and widget flags \a f. QextScintilla(TQWidget *parent = 0,const char *name = 0,WFlags f = 0); //! Destroys the QextScintilla instance. virtual ~QextScintilla(); //! Returns TRUE if auto-completion lists are case sensitive. //! //! \sa setAutoCompletionCaseSensitivity() bool autoCompletionCaseSensitivity(); //! Returns true if auto-completion fill-up characters are enabled. //! //! \sa setAutoCompletionFillups(), setAutoCompletionFillupsEnabled() bool autoCompletionFillupsEnabled(); //! Returns TRUE if the rest of the word to the right of the current //! cursor is removed when an item from an auto-completion list is //! selected. //! //! \sa setAutoCompletionReplaceWord() bool autoCompletionReplaceWord(); //! Returns TRUE if the only item in an auto-completion list with a //! single entry is automatically used and the list not displayed. //! //! \sa setAutoCompletionShowSingle() bool autoCompletionShowSingle(); //! Returns the current source for the auto-completion list when it is //! being displayed automatically as the user types. //! //! \sa setAutoCompletionSource() AutoCompletionSource autoCompletionSource() const {return acSource;} //! Returns the current threshold for the automatic display of the //! auto-completion list as the user types. //! //! \sa setAutoCompletionThreshold() int autoCompletionThreshold() const {return acThresh;} //! Returns TRUE if auto-indentation is enabled. //! //! \sa setAutoIndent() bool autoIndent() const {return autoInd;} //! Returns TRUE if the backspace key unindents a line instead of //! deleting a character. The default is FALSE. //! //! \sa setBackspaceUnindents(), tabIndents(), setTabIndents() bool backspaceUnindents(); //! Mark the beginning of a sequence of actions that can be undone by //! a single call to undo(). //! //! \sa endUndoAction(), undo() void beginUndoAction(); //! Returns the brace matching mode. //! //! \sa setBraceMatching() BraceMatch braceMatching() const {return braceMode;} //! Returns the maximum number of call tips that are displayed. //! //! \sa setCallTipsVisible() int callTipsVisible() const {return maxCallTips;} //! Cancel any current auto-completion or user defined list. void cancelList(); //! Clear all registered images. //! //! \sa registerImage() void clearRegisteredImages(); //! All the lines of the text have their end-of-lines converted to mode //! \a mode. //! //! \sa eolMode(), setEolMode() void convertEols(EolMode mode); //! Returns the widget's text (ie. foreground) colour. //! //! \sa setColor() TQColor color() const; //! Returns the attached document. //! //! \sa setDocument() QextScintillaDocument document() {return doc;} //! Mark the end of a sequence of actions that can be undone by a //! single call to undo(). //! //! \sa beginUndoAction(), undo() void endUndoAction(); //! Returns the color of the marker used to show that a line has //! exceeded the length set by setEdgeColumn(). //! //! \sa setEdgeColor(), \sa setEdgeColumn TQColor edgeColor(); //! Returns the number of the column after which lines are considered //! to be long. //! //! \sa setEdgeColumn() int edgeColumn(); //! Returns the edge mode which determines how long lines are marked. //! //! \sa setEdgeMode() EdgeMode edgeMode(); //! Returns the end-of-line mode. //! //! \sa setEolMode() EolMode eolMode(); //! Returns the visibility of end-of-lines. //! //! \sa setEolVisibility() bool eolVisibility(); //! Find the next occurrence of the string \a expr and return TRUE if //! \a expr was found, otherwise returns FALSE. If \a expr is found it //! becomes the current selection. //! //! If \a re is TRUE then \a expr is interpreted as a regular //! expression rather than a simple string. //! //! If \a cs is TRUE then the search is case sensitive. //! //! If \a wo is TRUE then the search looks for whole word matches only, //! otherwise it searches for any matching text. //! //! If \a wrap is TRUE then the search wraps around the end of the //! text. //! //! If \a forward is TRUE (the default) then the search is forward from //! the starting position to the end of the text, otherwise it is //! backwards to the beginning of the text. //! //! If either \a line or \a index are negative (the default) then the //! search begins from the current cursor position. Otherwise the //! search begins at position \a index of line \a line. //! //! If \a show is TRUE (the default) then any text found is made //! visible (ie. it is unfolded). //! //! \sa findNext(), replace() virtual bool findFirst(const TQString &expr,bool re,bool cs,bool wo, bool wrap,bool forward = TRUE,int line = -1, int index = -1,bool show = TRUE); //! Find the next occurence of the string found using findFirst(). //! //! \sa findFirst(), replace() virtual bool findNext(); //! Returns the number of the first visible line. int firstVisibleLine(); //! Returns the current folding style. //! //! \sa setFolding() FoldStyle folding() const {return fold;} //! Sets \a *line and \a *index to the line and index of the cursor. //! //! \sa setCursorPosition() void getCursorPosition(int *line,int *index); //! If there is a selection, \a *lineFrom is set to the line number in //! which the selection begins and \a *lineTo is set to the line number //! in which the selection ends. (They could be the same.) //! \a *indexFrom is set to the index at which the selection begins //! within \a *lineFrom, and \a *indexTo is set to the index at which //! the selection ends within \a *lineTo. If there is no selection, //! \a *lineFrom, \a *indexFrom, \a *lineTo and \a *indexTo are all set //! to -1. //! //! \sa setSelection() void getSelection(int *lineFrom,int *indexFrom, int *lineTo,int *indexTo); //! Returns TRUE if some text is selected. //! //! \sa selectedText() bool hasSelectedText() const {return selText;} //! Returns the number of characters that line \a line is indented by. //! //! \sa setIndentation() int indentation(int line); //! Returns TRUE if the display of indentation guides is enabled. //! //! \sa setIndentationGuides() bool indentationGuides(); //! Returns TRUE if indentations are created using tabs and spaces, //! rather than just spaces. The default is TRUE. //! //! \sa setIndentationsUseTabs() bool indentationsUseTabs(); //! Returns the indentation width in characters. The default is 0 //! which means that the value returned by tabWidth() is actually used. //! //! \sa setIndentationWidth(), tabWidth() int indentationWidth(); //! Returns TRUE if a call tip is currently active. bool isCallTipActive(); //! Returns TRUE if an auto-completion or user defined list is //! currently active. bool isListActive(); //! Returns TRUE if the text has been modified. //! //! \sa setModified(), modificationChanged() bool isModified(); //! Returns TRUE if the text edit is read-only. //! //! \sa setReadOnly() bool isReadOnly(); //! Returns TRUE if there is something that can be redone. //! //! \sa redo() bool isRedoAvailable(); //! Returns TRUE if there is something that can be undone. //! //! \sa undo() bool isUndoAvailable(); //! Returns TRUE if text is interpreted as being UTF8 encoded. The //! default is to interpret the text as Latin1 encoded. //! //! \sa setUtf8() bool isUtf8(); //! Returns the line which is at position \a pos or -1 if there is no //! line at that position. int lineAt(const TQPoint &pos); //! Returns the length of line \a line or -1 if there is no such line. int lineLength(int line); //! Returns the number of lines of text. int lines(); //! Returns the length of the text edit's text. int length(); //! Returns the current language lexer used to style text. If it is 0 then //! syntax styling is disabled. //! //! \sa setLexer() QextScintillaLexer *lexer() const; //! Returns TRUE if line numbers are enabled for margin \a margin. //! //! \sa setMarginLineNumbers(), QextScintillaBase::SCI_GETMARGINTYPEN bool marginLineNumbers(int margin); //! Returns the marker mask of margin \a margin. //! //! \sa setMarginMask(), QextScintillaMarker, //! QextScintillaBase::SCI_GETMARGINMASKN int marginMarkerMask(int margin); //! Returns TRUE if margin \a margin is sensitive to mouse clicks. //! //! \sa setMarginSensitivity(), marginClicked(), //! QextScintillaBase::SCI_GETMARGINTYPEN bool marginSensitivity(int margin); //! Returns the width in pixels of margin \a margin. //! //! \sa setMarginWidth(), QextScintillaBase::SCI_GETMARGINWIDTHN int marginWidth(int margin); //! Define a marker using the symbol \a sym with the marker number //! \a mnr. If \a mnr is -1 then the marker number is automatically //! allocated. The marker number is returned or -1 if the marker //! number was already allocated or too many markers have been defined. //! //! Markers are small geometric symbols and character used, for //! example, to indicate the current line or, in debuggers, to indicate //! breakpoints. If a margin has a width of 0 then its markers are not //! drawn, but their background colours affect the background colour of //! the corresponding line of text. //! //! There may be up to 32 markers defined and each line of text has a //! set of these markers associated with it. Markers are drawn //! according to their numerical identifier. Markers try to move with //! their text by tracking where the start of their line moves to. For //! example, when a line is deleted its markers are added to previous //! line's markers. //! //! Each marker is identified by a marker number. Each instance of a //! marker is identified by a marker handle. int markerDefine(MarkerSymbol sym,int mnr = -1); //! Define a marker using the character \a ch with the marker number //! \a mnr. If \a mnr is -1 then the marker number is automatically //! allocated. The marker number is returned or -1 if the marker //! number was already allocated or too many markers have been defined. int markerDefine(char ch,int mnr = -1); //! Define a marker using a copy of the pixmap \a pm with the marker //! number \a mnr. If \a mnr is -1 then the marker number is //! automatically allocated. The marker number is returned or -1 if //! the marker number was already allocated or too many markers have //! been defined. int markerDefine(const TQPixmap *pm,int mnr = -1); //! Add a marker number \a mnr to line number \a linenr. A handle for //! the marker is returned which can be used to track the marker's //! position, or -1 if the \a mnr was invalid. //! //! \sa markerDelete(), markerDeleteAll(), markerDeleteHandle() int markerAdd(int linenr,int mnr); //! Returns the 32 bit mask of marker numbers at line number \a linenr. //! //! \sa markerAdd() unsigned markersAtLine(int linenr); //! Delete all markers with the marker number \a mnr in the line //! \a linenr. If \a mnr is -1 then delete all markers from line //! \a linenr. //! //! \sa markerAdd(), markerDeleteAll(), markerDeleteHandle() void markerDelete(int linenr,int mnr = -1); //! Delete the all markers with the marker number \a mnr. If \a mnr is //! -1 then delete all markers. //! //! \sa markerAdd(), markerDelete(), markerDeleteHandle() void markerDeleteAll(int mnr = -1); //! Delete the the marker instance with the marker handle \a mhandle. //! //! \sa markerAdd(), markerDelete(), markerDeleteAll() void markerDeleteHandle(int mhandle); //! Return the line number that contains the marker instance with the //! marker handle \a mhandle. int markerLine(int mhandle); //! Return the number of the next line to contain at least one marker //! from a 32 bit mask of markers. \a linenr is the line number to //! start the search from. \a mask is the mask of markers to search //! for. //! //! \sa markerFindPrevious() int markerFindNext(int linenr,unsigned mask); //! Return the number of the previous line to contain at least one //! marker from a 32 bit mask of markers. \a linenr is the line number //! to start the search from. \a mask is the mask of markers to search //! for. //! //! \sa markerFindNext() int markerFindPrevious(int linenr,unsigned mask); //! Returns the widget's paper (ie. background) colour. //! //! \sa setPaper() TQColor paper() const; //! Recolours the document between the \a start and \a end positions. //! \a start defaults to the start of the document and \a end defaults //! to the end of the document. virtual void recolor(int start = 0,int end = -1); //! Register an image \a pm with ID \a id. Registered images can be //! displayed in auto-completion lists. //! //! \sa clearRegisteredImages(), QextScintillaAPIs void registerImage(int id,const TQPixmap *pm); //! Replace the current selection, set by a previous call to //! findFirst() or findNext(), with \a replaceStr. //! //! \sa findFirst(), findNext() virtual void replace(const TQString &replaceStr); //! Reset the fold margin colours to their defaults. //! //! \sa setFoldMarginColors() void resetFoldMarginColors(); //! The fold margin may be drawn as a one pixel sized checkerboard //! pattern of two colours, \a fore and \a back. //! //! \sa resetFoldMarginColors() void setFoldMarginColors(const TQColor &fore,const TQColor &back); //! Sets the APIs used for auto-completion to \a apis. If \a apis is 0 //! then any existing APIs are removed. //! //! \sa autoCompleteFromAPIs(), setCallTipsAPIs() void setAutoCompletionAPIs(QextScintillaAPIs *apis = 0); //! A fill-up character is one that, when entered while an //! auto-completion list is being displayed, causes the currently //! selected item from the list to be added to the text followed by the //! fill-up character. \a fillups is the set of fill-up characters. //! The default is that no fill-up characters are set, although a lexer may //! set its own. Explicitly setting the fill-up characters using this //! method automatically enables their use. //! //! \sa autoCompletionFillupsEnabled(), setAutoCompletionFillupsEnabled() void setAutoCompletionFillups(const char *fillups); //! Enable the use of fill-up characters, either those explicitly set or //! those set by a lexer. By default, fill-up characters are disabled. //! //! \sa autoCompletionFillupsEnabled(), setAutoCompletionFillups() void setAutoCompletionFillupsEnabled(bool enabled); //! A start character is one that, when entered, causes the //! auto-completion list to be displayed. If a language lexer has been //! set then this is ignored and the lexer defines the start //! characters. The default is that no start characters are set. //! //! \sa setAutoCompletionThreshold() void setAutoCompletionStartCharacters(const char *start); //! Sets the APIs used for call tips to \a apis. If \a apis is 0 then //! then call tips are disabled. //! //! \sa setAutoCompletionAPIs() void setCallTipsAPIs(QextScintillaAPIs *apis = 0); //! Set the background colour of call tips to \a col. The default is //! white. void setCallTipsBackgroundColor(const TQColor &col); //! Set the foreground colour of call tips to \a col. The default is //! mid-gray. void setCallTipsForegroundColor(const TQColor &col); //! Set the highlighted colour of call tip text to \a col. The default //! is dark blue. void setCallTipsHighlightColor(const TQColor &col); //! Set the maximum number of call tips that are displayed to \a nr. //! If the maximum number is 0 then all applicable call tips are //! displayed. If the maximum number is -1 then one call tip will be //! displayed with up and down arrows that allow the use to scroll //! through the full list. The default is -1. //! //! \sa callTipsVisible() void setCallTipsVisible(int nr); //! Attach the document \a document, replacing the currently attached //! document. //! //! \sa document() void setDocument(const QextScintillaDocument &document); //! Set the color of the marker used to show that a line has exceeded //! the length set by setEdgeColumn(). //! //! \sa edgeColor(), \sa setEdgeColumn void setEdgeColor(const TQColor &col); //! Set the number of the column after which lines are considered to be //! long. //! //! \sa edgeColumn() void setEdgeColumn(int colnr); //! Set the edge mode which determines how long lines are marked. //! //! \sa edgeMode() void setEdgeMode(EdgeMode mode); //! Set the default font. This has no effect if a language lexer has been //! set. virtual void setFont(const TQFont &f); //! Set the background colour, including the alpha component, of marker //! \a mnr to \a col. If \a mnr is -1 then the colour of all markers //! is set. The default is white. //! //! \sa setMarkerForegroundColor() void setMarkerBackgroundColor(const TQColor &col,int mnr = -1); //! Set the foreground colour of marker \a mnr to \a col. If \a mnr is //! -1 then the colour of all markers is set. The default is black. //! //! \sa setMarkerBackgroundColor() void setMarkerForegroundColor(const TQColor &col,int mnr = -1); //! Set the background colour used to display matched braces to \a col. //! The default is white. //! //! \sa setMatchedBraceForegroundColor() void setMatchedBraceBackgroundColor(const TQColor &col); //! Set the foreground colour used to display matched braces to \a col. //! The default is red. //! //! \sa setMatchedBraceBackgroundColor() void setMatchedBraceForegroundColor(const TQColor &col); //! Set the background colour used to display unmatched braces to //! \a col. The default is white. //! //! \sa setUnmatchedBraceForegroundColor() void setUnmatchedBraceBackgroundColor(const TQColor &col); //! Set the foreground colour used to display unmatched braces to //! \a col. The default is blue. //! //! \sa setUnmatchedBraceBackgroundColor() void setUnmatchedBraceForegroundColor(const TQColor &col); //! Set the visual flags displayed when a line is wrapped. \a eflag //! determines if and where the flag at the end of a line is displayed. //! \a sflag determines if and where the flag at the start of a line is //! displayed. \a sindent is the number of characters a wrapped line //! is indented by. By default no visual flags are displayed. void setWrapVisualFlags(WrapVisualFlag eflag, WrapVisualFlag sflag = WrapFlagNone, int sindent = 0); //! Returns the selected text or an empty string if there is no //! currently selected text. //! //! \sa hasSelectedText() TQString selectedText(); //! Displays a user defined list which can be interacted with like an //! auto-completion list. \a id is an identifier for the list which //! is passed as an argument to the userListActivated() signal and must //! be at least 1. \a list is the text with which the list is //! populated. //! //! \sa cancelList(), isListActive(), userListActivated() void showUserList(int id, const TQStringList &list); //! The standard command set is returned. QextScintillaCommandSet *standardCommands() const {return stdCmds;} //! Returns TRUE if the tab key indents a line instead of inserting a //! tab character. The default is TRUE. //! //! \sa setTabIndents(), backspaceUnindents(), setBackspaceUnindents() bool tabIndents(); //! Returns the tab width in characters. The default is 8. //! //! \sa setTabWidth() int tabWidth(); //! Returns the text edit's text. //! //! \sa setText() TQString text(); //! \overload //! //! Returns the text of line \a line. //! //! \sa setText() TQString text(int line); //! Returns the height in pixels of the text in line number \a linenr. int textHeight(int linenr); //! Returns the visibility of whitespace. //! //! \sa setWhitespaceVisibility() WhitespaceVisibility whitespaceVisibility(); //! Returns the line wrap mode. //! //! \sa setWrapMode() WrapMode wrapMode(); public slots: //! Appends the text \a text to the end of the text edit. Note that //! the undo/redo history is cleared by this function. virtual void append(const TQString &text); //! Display an auto-completion list based on any installed APIs, the //! current contents of the document and the characters immediately to //! the left of the cursor. //! //! \sa autoCompleteFromAPIs(), autoCompleteFromDocument() virtual void autoCompleteFromAll(); //! Display an auto-completion list based on any installed APIs and the //! characters immediately to the left of the cursor. //! //! \sa autoCompleteFromAll(), autoCompleteFromDocument(), //! setAutoCompletionAPIs() virtual void autoCompleteFromAPIs(); //! Display an auto-completion list based on the current contents of //! the document and the characters immediately to the left of the //! cursor. //! //! \sa autoCompleteFromAll(), autoCompleteFromAPIs() virtual void autoCompleteFromDocument(); //! Display a call tip based on the the characters immediately to the //! left of the cursor. virtual void callTip(); //! Deletes all the text in the text edit. virtual void clear(); //! Copies any selected text to the clipboard. //! //! \sa copyAvailable(), cut(), paste() virtual void copy(); //! Copies any selected text to the clipboard and then deletes the //! text. //! //! \sa copy(), paste() virtual void cut(); //! Ensures that the cursor is visible. virtual void ensureCursorVisible(); //! Ensures that the line number \a line is visible. virtual void ensureLineVisible(int line); //! If any lines are currently folded then they are all unfolded. //! Otherwise all lines are folded. This has the same effect as //! clicking in the fold margin with the shift and control keys //! pressed. If \a children is not set (the default) then only the top //! level fold points are affected, otherwise the state of all fold //! points are changed. virtual void foldAll(bool children = FALSE); //! If the line \a line is folded then it is unfolded. Otherwise it is //! folded. This has the same effect as clicking in the fold margin. virtual void foldLine(int line); //! Increases the indentation of line \a line by an indentation width. //! //! \sa unindent() virtual void indent(int line); //! Insert the text \a text at the current position. virtual void insert(const TQString &text); //! Insert the text \a text in the line \a line at the position //! \a index. virtual void insertAt(const TQString &text,int line,int index); //! If the cursor is either side of a brace character then move it to //! the position of the corresponding brace. virtual void moveToMatchingBrace(); //! Pastes any text from the clipboard into the text edit at the //! current cursor position. //! //! \sa copy(), cut() virtual void paste(); //! Redo the last change or sequence of changes. //! //! \sa isRedoAvailable() virtual void redo(); //! Removes any selected text. virtual void removeSelectedText(); //! Resets the background colour of selected text to the default. //! //! \sa setSelectionBackgroundColor(), resetSelectionForegroundColor() virtual void resetSelectionBackgroundColor(); //! Resets the foreground colour of selected text to the default. //! //! \sa setSelectionForegroundColor(), resetSelectionBackgroundColor() virtual void resetSelectionForegroundColor(); //! If \a select is TRUE (the default) then all the text is selected. //! If \a select is FALSE then any currently selected text is //! deselected. virtual void selectAll(bool select = TRUE); //! If the cursor is either side of a brace character then move it to //! the position of the corresponding brace and select the text between //! the braces. virtual void selectToMatchingBrace(); //! If \a cs is TRUE then auto-completion lists are case sensitive. //! The default is TRUE. //! //! \sa autoCompletionCaseSensitivity() virtual void setAutoCompletionCaseSensitivity(bool cs); //! If \a replace is TRUE then when an item from an auto-completion //! list is selected, the rest of the word to the right of the current //! cursor is removed. The default is FALSE. //! //! \sa autoCompletionReplaceWord() virtual void setAutoCompletionReplaceWord(bool replace); //! If \a single is TRUE then when there is only a single entry in an //! auto-completion list it is automatically used and the list is not //! displayed. This only has an effect when auto-completion is //! explicitly requested (using autoCompleteFromAPIs() and //! autoCompleteFromDocument()) and has no effect when auto-completion //! is triggered as the user types. The default is FALSE. //! //! \sa autoCompletionShowSingle() virtual void setAutoCompletionShowSingle(bool single); //! Sets the source for the auto-completion list when it is being //! displayed automatically as the user types to \a source. The //! default is AcsDocument. //! //! \sa autoCompletionSource() virtual void setAutoCompletionSource(AutoCompletionSource source); //! Sets the threshold for the automatic display of the auto-completion //! list as the user types to \a thresh. The threshold is the number //! of characters that the user must type before the list is displayed. //! If the threshold is less than or equal to 0 then the list is //! disabled. The default is -1. //! //! \sa autoCompletionThreshold(), setAutoCompletionStartCharacters() virtual void setAutoCompletionThreshold(int thresh); //! If \a autoindent is TRUE then auto-indentation is enabled. The //! default is FALSE. //! //! \sa autoIndent() virtual void setAutoIndent(bool autoindent); //! Sets the brace matching mode to \a bm. The default is //! NoBraceMatching. //! //! \sa braceMatching() virtual void setBraceMatching(BraceMatch bm); //! If \a deindent is TRUE then the backspace key will unindent a line //! rather then delete a character. //! //! \sa backspaceUnindents(), tabIndents(), setTabIndents() virtual void setBackspaceUnindents(bool unindent); //! Sets the foreground colour of the caret to \a col. virtual void setCaretForegroundColor(const TQColor &col); //! Sets the background colour, including the alpha component, of the //! line containing the caret to \a col. //! //! \sa setCaretLineVisible() virtual void setCaretLineBackgroundColor(const TQColor &col); //! Enables or disables, according to \a enable, the background color //! of the line containing the caret. //! //! \sa setCaretLineBackgroundColor() virtual void setCaretLineVisible(bool enable); //! Sets the width of the caret to \a width pixels. A \a width of 0 //! makes the caret invisible. virtual void setCaretWidth(int width); //! The widget's text (ie. foreground) colour is set to \a c. This has no //! effect if a language lexer has been set. //! //! \sa color() virtual void setColor(const TQColor &c); //! Sets the cursor to the line \a line at the position \a index. //! //! \sa getCursorPosition() virtual void setCursorPosition(int line,int index); //! Sets the end-of-line mode to \a mode. The default is the //! platform's natural mode. //! //! \sa eolMode() virtual void setEolMode(EolMode mode); //! If \a visible is TRUE then end-of-lines are made visible. The //! default is that they are invisible. //! //! \sa eolVisibility() virtual void setEolVisibility(bool visible); //! Sets the folding style for margin 2 to \a fold. The default is //! NoFoldStyle (ie. folding is disabled). //! //! \sa folding() virtual void setFolding(FoldStyle fold); //! Sets the indentation of line \a to \a indentation characters. //! //! \sa indentation() virtual void setIndentation(int line,int indentation); //! Enables or disables, according to \a enable, this display of //! indentation guides. //! //! \sa indentationGuides() virtual void setIndentationGuides(bool enable); //! Set the background colour of indentation guides to \a col. //! //! \sa setIndentationGuidesForegroundColor() virtual void setIndentationGuidesBackgroundColor(const TQColor &col); //! Set the foreground colour of indentation guides to \a col. //! //! \sa setIndentationGuidesBackgroundColor() virtual void setIndentationGuidesForegroundColor(const TQColor &col); //! If \a tabs is TRUE then indentations are created using tabs and //! spaces, rather than just spaces. //! //! \sa indentationsUseTabs() virtual void setIndentationsUseTabs(bool tabs); //! Sets the indentation width to \a width characters. If \a width is //! 0 then the value returned by tabWidth() is used. //! //! \sa indentationWidth(), tabWidth() virtual void setIndentationWidth(int width); //! Sets the specific language lexer used to style text to \a lexer. If //! \a lexer is 0 then syntax styling is disabled. //! //! \sa lexer() virtual void setLexer(QextScintillaLexer *lexer = 0); //! Set the background colour of all margins to \a col. The default is //! a gray. //! //! \sa setMarginsForegroundColor() virtual void setMarginsBackgroundColor(const TQColor &col); //! Set the font used in all margins to \a f. virtual void setMarginsFont(const TQFont &f); //! Set the foreground colour of all margins to \a col. The default is //! black. //! //! \sa setMarginsBackgroundColor() virtual void setMarginsForegroundColor(const TQColor &col); //! Enables or disables, according to \a lnrs, the display of line //! numbers in margin \a margin. //! //! \sa marginLineNumbers(), QextScintillaBase::SCI_SETMARGINTYPEN virtual void setMarginLineNumbers(int margin,bool lnrs); //! Sets the marker mask of margin \a margin to \a mask. Only those //! markers whose bit is set in the mask are displayed in the margin. //! //! \sa marginMarkerMask(), QextScintillaMarker, //! QextScintillaBase::SCI_SETMARGINMASKN virtual void setMarginMarkerMask(int margin,int mask); //! Enables or disables, according to \a sens, the sensitivity of //! margin \a margin to mouse clicks. If the user clicks in a //! sensitive margin the marginClicked() signal is emitted. //! //! \sa marginSensitivity(), marginClicked(), //! QextScintillaBase::SCI_SETMARGINSENSITIVEN virtual void setMarginSensitivity(int margin,bool sens); //! Sets the width of margin \a margin to \a width pixels. If the //! width of a margin is 0 then it is not displayed. //! //! \sa marginWidth(), QextScintillaBase::SCI_SETMARGINWIDTHN virtual void setMarginWidth(int margin,int width); //! Sets the width of margin \a margin so that it is wide enough to //! display \a s in the current margin font. //! //! \sa marginWidth(), QextScintillaBase::SCI_SETMARGINWIDTHN virtual void setMarginWidth(int margin,const TQString &s); //! Sets the modified state of the text edit to \a m. Note that it is //! only possible to clear the modified state (where \a m is FALSE). //! Attempts to set the modified state (where \a m is TRUE) are //! ignored. //! //! \sa isModified(), modificationChanged() virtual void setModified(bool m); //! The widget's paper (ie. background) colour is set to \a c. This has no //! effect if a language lexer has been set. //! //! \sa paper() virtual void setPaper(const TQColor &c); //! Sets the read-only state of the text edit to \a ro. //! //! \sa isReadOnly() virtual void setReadOnly(bool ro); //! Sets the selection which starts at position \a indexFrom in line //! \a lineFrom and ends at position \a indexTo in line \a lineTo. The //! cursor is moved to the end of the selection. //! //! \sa getSelection() virtual void setSelection(int lineFrom,int indexFrom, int lineTo,int indexTo); //! Sets the background colour, including the alpha component, of //! selected text to \a col. //! //! \sa resetSelectionBackgroundColor(), setSelectionForegroundColor() virtual void setSelectionBackgroundColor(const TQColor &col); //! Sets the foreground colour of selected text to \a col. //! //! \sa resetSelectionForegroundColor(), setSelectionBackgroundColor() virtual void setSelectionForegroundColor(const TQColor &col); //! If \a indent is TRUE then the tab key will indent a line rather //! then insert a tab character. //! //! \sa tabIndents(), backspaceUnindents(), setBackspaceUnindents() virtual void setTabIndents(bool indent); //! Sets the tab width to \a width characters. //! //! \sa tabWidth() virtual void setTabWidth(int width); //! Replaces all of the current text with \a text. Note that the //! undo/redo history is cleared by this function. //! //! \sa text() virtual void setText(const TQString &text); //! Sets the current text encoding. If \a cp is TRUE then UTF8 is //! used, otherwise Latin1 is used. //! //! \sa isUtf8() virtual void setUtf8(bool cp); //! Sets the visibility of whitespace to mode \a mode. The default is //! that whitespace is invisible. //! //! \sa whitespaceVisibility() virtual void setWhitespaceVisibility(WhitespaceVisibility mode); //! Sets the line wrap mode to mode \a mode. The default is that lines //! are not wrapped. //! //! \sa wrapMode() virtual void setWrapMode(WrapMode mode); //! Undo the last change or sequence of changes. //! //! Scintilla has multiple level undo and redo. It will continue to //! record undoable actions until memory runs out. Sequences of //! typing or deleting are compressed into single actions to make it //! easier to undo and redo at a sensible level of detail. Sequences //! of actions can be combined into actions that are undone as a unit. //! These sequences occur between calls to beginUndoAction() and //! endUndoAction(). These sequences can be nested and only the top //! level sequences are undone as units. //! //! \sa beginUndoAction(), endUndoAction(), isUndoAvailable() virtual void undo(); //! Decreases the indentation of line \a line by an indentation width. //! //! \sa indent() virtual void unindent(int line); //! Zooms in on the text by by making the base font size \a range //! points larger and recalculating all font sizes. //! //! \sa zoomOut(), zoomTo() virtual void zoomIn(int range); //! \overload //! //! Zooms in on the text by by making the base font size one point //! larger and recalculating all font sizes. virtual void zoomIn(); //! Zooms out on the text by by making the base font size \a range //! points smaller and recalculating all font sizes. //! //! \sa zoomIn(), zoomTo() virtual void zoomOut(int range); //! \overload //! //! Zooms out on the text by by making the base font size one point //! larger and recalculating all font sizes. virtual void zoomOut(); //! Zooms the text by making the base font size \a size points and //! recalculating all font sizes. //! //! \sa zoomIn(), zoomOut() virtual void zoomTo(int size); signals: //! This signal is emitted whenever the cursor position changes. //! \a line contains the line number and \a pos contains the //! character position within the line. void cursorPositionChanged(int line,int pos); //! This signal is emitted whenever text is selected or de-selected. //! \a yes is TRUE if text has been selected and FALSE if text has been //! deselected. If \a yes is TRUE then copy() can be used to copy the //! selection to the clipboard. If \a yes is FALSE then copy() does //! nothing. //! //! \sa copy(), selectionChanged() void copyAvailable(bool yes); //! This signal is emitted whenever the user clicks on a sensitive //! margin. \a margin is the margin. \a line is the number of the //! line where the user clicked. \a state is the state of the modifier //! keys (ShiftButton, ControlButton and AltButton) when the user //! clicked. //! //! \sa marginSensitivity(), setMarginSensitivity() void marginClicked(int margin,int line,TQt::ButtonState state); //! This signal is emitted whenever the user attempts to modify //! read-only text. //! //! \sa isReadOnly(), setReadOnly() void modificationAttempted(); //! This signal is emitted whenever the modification state of the text //! changes. \a m is TRUE if the text has been modified. //! //! \sa isModified(), setModified() void modificationChanged(bool m); //! This signal is emitted whenever the selection changes. //! //! \sa copyAvailable() void selectionChanged(); //! This signal is emitted whenever the text in the text edit changes. void textChanged(); //! This signal is emitted when an item in a user defined list is //! activated (selected). \a id is the list identifier. \a string is //! the text of the item. //! //! \sa showUserList() void userListActivated(int id, const TQString &string); private slots: void handleCallTipClick(int dir); void handleCharAdded(int charadded); void handleMarginClick(int pos,int margin,int modifiers); void handleModified(int pos,int mtype,const char *text,int len, int added,int line,int foldNow,int foldPrev); void handlePropertyChange(const char *prop,const char *val); void handleSavePointReached(); void handleSavePointLeft(); void handleSelectionChanged(bool yes); void handleUserListSelection(const char *text, int id); void handleStyleColorChange(const TQColor &c,int style); void handleStyleEolFillChange(bool eolfill,int style); void handleStyleFontChange(const TQFont &f,int style); void handleStylePaperChange(const TQColor &c,int style); void handleUpdateUI(); private: enum IndentState { isNone, isKeywordStart, isBlockStart, isBlockEnd }; void maintainIndentation(char ch,long pos); void autoIndentation(char ch,long pos); void autoIndentLine(long pos,int line,int indent); int blockIndent(int line); IndentState getIndentState(int line); bool rangeIsWhitespace(long spos,long epos); int findStyledWord(const char *text,int style,const char *words); void checkMarker(int &mnr); long posFromLineIndex(int line,int index); void lineIndexFromPos(long pos,int *line,int *index); int currentIndent(); int indentWidth(); bool doFind(); long simpleFind(); void foldClick(int lineClick,int bstate); void foldChanged(int line,int levelNow,int levelPrev); void foldExpand(int &line,bool doExpand,bool force = FALSE, int visLevels = 0,int level = -1); void setFoldMarker(int marknr,int mark = SC_MARK_EMPTY); TQString convertText(const char *s); void setStylesFont(const TQFont &f,int style); void braceMatch(); bool findMatchingBrace(long &brace,long &other,BraceMatch mode); long checkBrace(long pos,int brace_style,bool &colonMode); void gotoMatchingBrace(bool select); void startAutoCompletion(AutoCompletionSource acs, bool checkThresh, bool single); bool isAutoCStartChar(char ch) const; bool currentCharInWord(); bool isWordChar(char ch) const; bool ensureRW(); struct FindState { FindState() : inProgress(0) {} bool inProgress; TQString expr; bool wrap; bool forward; int flags; long startpos; long endpos; bool show; }; FindState findState; unsigned allocatedMarkers; long oldPos; bool selText; FoldStyle fold; bool autoInd; BraceMatch braceMode; AutoCompletionSource acSource; int acThresh; const char *acStart; QextScintillaAPIs *acAPIs; QextScintillaAPIs *ctAPIs; int maxCallTips; bool showSingle; long ctpos; TQGuardedPtr lex; QextScintillaCommandSet *stdCmds; QextScintillaDocument doc; bool modified; TQColor nl_text_colour; TQColor nl_paper_colour; TQFont nl_font; bool explicit_fillups; bool fillups_enabled; TQCString saved_fillups; #if defined(TQ_DISABLE_COPY) QextScintilla(const QextScintilla &); QextScintilla &operator=(const QextScintilla &); #endif }; #endif