// This is the SIP interface definition for TQextScintilla.
//
// Copyright (c) 2007
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyTQt.
// 
// This copy of PyTQt 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.
// 
// PyTQt 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
// PyTQt; see the file LICENSE.  If not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


// The documentation is in the main documentation file because SIP isn't clever
// enough to handle the resulting %Timeline complexity.


class TQextScintilla : TQextScintillaBase
{
%TypeHeaderCode
#include <tqextscintilla.h>
%End

public:
	enum {
		AiMaintain,
		AiOpening,
		AiClosing
	};

	enum AutoCompletionSource {
		AcsDocument,
		AcsAPIs,
%If (TQScintilla_1_7 -)
		AcsAll,
%End
	};

	enum BraceMatch {
		NoBraceMatch,
		StrictBraceMatch,
		SloppyBraceMatch
	};

%If (TQScintilla_1_4 -)
	enum EdgeMode {
		EdgeNone,
		EdgeLine,
		EdgeBackground
	};
%End

	enum EolMode {
		EolWindows,
		EolUnix,
		EolMac
	};

	enum FoldStyle {
		NoFoldStyle,
		PlainFoldStyle,
		CircledFoldStyle,
		BoxedFoldStyle,
		CircledTreeFoldStyle,
		BoxedTreeFoldStyle
	};

	enum MarkerSymbol {
		Circle,
		Rectangle,
		RightTriangle,
		SmallRectangle,
		RightArrow,
		Invisible,
		DownTriangle,
		Minus,
		Plus,
		VerticalLine,
		BottomLeftCorner,
		LeftSideSplitter,
		BoxedPlus,
		BoxedPlusConnected,
		BoxedMinus,
		BoxedMinusConnected,
		RoundedBottomLeftCorner,
		LeftSideRoundedSplitter,
		CircledPlus,
		CircledPlusConnected,
		CircledMinus,
		CircledMinusConnected,
		Background,
		ThreeDots,
		ThreeRightArrows
	};

	enum WhitespaceVisibility {
		WsInvisible,
		WsVisible,
		WsVisibleAfterIndent
	};

	enum WrapMode {
		WrapNone,
		WrapWord,
%If (TQScintilla_1_7 -)
		WrapCharacter,
%End
	};

%If (TQScintilla_1_7 -)
	enum WrapVisualFlag {
		WrapFlagNone,
		WrapFlagByText,
		WrapFlagByBorder,
	};
%End

	TQextScintilla(TQWidget * /TransferThis/ = 0,const char * = 0,
		      WFlags = 0);

	bool autoCompletionCaseSensitivity();
%If (TQScintilla_1_7 -)
	bool autoCompletionFillupsEnabled();
%End
	bool autoCompletionReplaceWord();
	bool autoCompletionShowSingle();
	AutoCompletionSource autoCompletionSource() const;
	int autoCompletionThreshold() const;
	bool autoIndent() const;
	bool backspaceUnindents();
	void beginUndoAction();
	BraceMatch braceMatching() const;
	int callTipsVisible() const;
%If (TQScintilla_1_7 -)
	void cancelList();
%End
	void clearRegisteredImages();
	void convertEols(EolMode);
%If (TQScintilla_1_3 -)
	TQextScintillaDocument document();
%End
	void endUndoAction();

%If (TQScintilla_1_4 -)
	TQColor edgeColor();
	int edgeColumn();
	EdgeMode edgeMode();
%End

	EolMode eolMode();
	bool eolVisibility();

%If (TQScintilla_1_7 -)
	TQColor color() const;
	TQColor paper() const;
%End

%If (TQScintilla_1_6 -)
	virtual bool findFirst(const TQString &,bool,bool,bool,bool,bool = 1,
			       int = -1,int = -1,bool = 1);
%End
%If (- TQScintilla_1_6)
	virtual bool findFirst(const TQString &,bool,bool,bool,bool,bool = 1,
			       int = -1,int = -1);
%End
	virtual bool findNext();

%If (TQScintilla_1_7 -)
	int firstVisibleLine();
%End

	FoldStyle folding() const;

	void getCursorPosition(int *,int *);
	void getSelection(int *,int *,int *,int *);
	bool hasSelectedText();

	int indentation(int);
	bool indentationGuides();
	bool indentationsUseTabs();
	int indentationWidth();

%If (TQScintilla_1_7 -)
	bool isCallTipActive();
	bool isListActive();
%End
	bool isModified();
	bool isReadOnly();
	bool isRedoAvailable();
	bool isUndoAvailable();
	bool isUtf8();
	int lineAt(const TQPoint &);
	int lineLength(int);
	int lines();
	int length();
%If (TQScintilla_1_7 -)
	TQextScintillaLexer *lexer() const;
%End

	bool marginLineNumbers(int);
	int marginMarkerMask(int);
	bool marginSensitivity(int);
	int marginWidth(int);

	int markerDefine(MarkerSymbol,int = -1);
	int markerDefine(char,int = -1);
	int markerDefine(const TQPixmap *,int = -1);
	int markerAdd(int,int);
	unsigned markersAtLine(int);
	void markerDelete(int,int = -1);
	void markerDeleteAll(int = -1);
	void markerDeleteHandle(int);
	int markerLine(int);
	int markerFindNext(int,unsigned);
	int markerFindPrevious(int,unsigned);
%If (TQScintilla_1_3 -)
	virtual void recolor(int = 0,int = -1);
%End
	void registerImage(int,const TQPixmap *);
	virtual void replace(const TQString &);
	void resetFoldMarginColors();
	void setFoldMarginColors(const TQColor &,const TQColor &);

	void setAutoCompletionAPIs(TQextScintillaAPIs * = 0);
	void setAutoCompletionFillups(const char *);
%If (TQScintilla_1_7 -)
	void setAutoCompletionFillupsEnabled(bool);
	void setAutoCompletionStartCharacters(const char *);
%End

	void setCallTipsAPIs(TQextScintillaAPIs * = 0);
	void setCallTipsBackgroundColor(const TQColor &);
	void setCallTipsForegroundColor(const TQColor &);
	void setCallTipsHighlightColor(const TQColor &);
	void setCallTipsVisible(int);

%If (TQScintilla_1_3 -)
	void setDocument(const TQextScintillaDocument &);
%End

%If (TQScintilla_1_4 -)
	void setEdgeColor(const TQColor &);
	void setEdgeColumn(int);
	void setEdgeMode(EdgeMode);
%End

%If (TQScintilla_1_7 -)
	virtual void setFont(const TQFont &);
%End

	void setMarkerBackgroundColor(const TQColor &,int = -1);
	void setMarkerForegroundColor(const TQColor &,int = -1);

	void setMatchedBraceBackgroundColor(const TQColor &);
	void setMatchedBraceForegroundColor(const TQColor &);
	void setUnmatchedBraceBackgroundColor(const TQColor &);
	void setUnmatchedBraceForegroundColor(const TQColor &);

%If (TQScintilla_1_7 -)
	void setWrapVisualFlags(WrapVisualFlag,
		WrapVisualFlag = TQextScintilla::WrapFlagNone, int = 0);
%End

	TQString selectedText();
%If (TQScintilla_1_7 -)
	void showUserList(int, const TQStringList &);
%End
	TQextScintillaCommandSet *standardCommands() const;
	bool tabIndents();
	int tabWidth();
	TQString text();
	TQString text(int);
%If (TQScintilla_1_7 -)
	int textHeight(int);
%End
	WhitespaceVisibility whitespaceVisibility();
%If (TQScintilla_1_4 -)
	WrapMode wrapMode();
%End

public slots:
	virtual void append(const TQString &);
%If (TQScintilla_1_7 -)
	virtual void autoCompleteFromAll();
%End
	virtual void autoCompleteFromAPIs();
	virtual void autoCompleteFromDocument();
	virtual void callTip();
	virtual void clear();
	virtual void copy();
	virtual void cut();

	virtual void ensureCursorVisible();
	virtual void ensureLineVisible(int);
%If (TQScintilla_1_7 -)
	virtual void foldAll(bool = 0);
%End
%If (- TQScintilla_1_7)
	virtual void foldAll();
%End
	virtual void foldLine(int);
	virtual void indent(int);
%If (TQScintilla_1_4 -)
	virtual void insert(const TQString &);
%End
	virtual void insertAt(const TQString &,int,int);
	virtual void moveToMatchingBrace();
	virtual void paste();
	virtual void redo();
	virtual void removeSelectedText();
%If (TQScintilla_1_4 -)
	virtual void resetSelectionBackgroundColor();
	virtual void resetSelectionForegroundColor();
%End
	virtual void selectAll(bool = 1);
	virtual void selectToMatchingBrace();

	virtual void setAutoCompletionCaseSensitivity(bool);
	virtual void setAutoCompletionReplaceWord(bool);
	virtual void setAutoCompletionShowSingle(bool);
	virtual void setAutoCompletionSource(AutoCompletionSource);
	virtual void setAutoCompletionThreshold(int);
	virtual void setAutoIndent(bool);
	virtual void setBraceMatching(BraceMatch);
	virtual void setBackspaceUnindents(bool);
%If (TQScintilla_1_3 -)
	virtual void setCaretForegroundColor(const TQColor &);
	virtual void setCaretLineBackgroundColor(const TQColor &);
	virtual void setCaretLineVisible(bool);
	virtual void setCaretWidth(int);
%End
%If (TQScintilla_1_7 -)
	virtual void setColor(const TQColor &);
%End
	virtual void setCursorPosition(int,int);
	virtual void setEolMode(EolMode);
	virtual void setEolVisibility(bool);
	virtual void setFolding(FoldStyle);

	virtual void setIndentation(int,int);
	virtual void setIndentationGuides(bool);
	virtual void setIndentationGuidesBackgroundColor(const TQColor &);
	virtual void setIndentationGuidesForegroundColor(const TQColor &);
	virtual void setIndentationsUseTabs(bool);
	virtual void setIndentationWidth(int);

	virtual void setLexer(TQextScintillaLexer * = 0);

	virtual void setMarginsBackgroundColor(const TQColor &);
	virtual void setMarginsFont(const TQFont &);
	virtual void setMarginsForegroundColor(const TQColor &);

	virtual void setMarginLineNumbers(int,bool);
	virtual void setMarginMarkerMask(int,int);
	virtual void setMarginSensitivity(int,bool);
	virtual void setMarginWidth(int,int);
	virtual void setMarginWidth(int,const TQString &);

	virtual void setModified(bool);
%If (TQScintilla_1_7 -)
	virtual void setPaper(const TQColor &);
%End
	virtual void setReadOnly(bool);
	virtual void setSelection(int,int,int,int);
%If (TQScintilla_1_3 -)
	virtual void setSelectionBackgroundColor(const TQColor &);
	virtual void setSelectionForegroundColor(const TQColor &);
%End
	virtual void setTabIndents(bool);
	virtual void setTabWidth(int);
	virtual void setText(const TQString &);
	virtual void setUtf8(bool);
	virtual void setWhitespaceVisibility(WhitespaceVisibility);
%If (TQScintilla_1_4 -)
	virtual void setWrapMode(WrapMode);
%End

	virtual void undo();
	virtual void unindent(int);

	virtual void zoomIn(int);
	virtual void zoomIn();
	virtual void zoomOut(int);
	virtual void zoomOut();
	virtual void zoomTo(int);

signals:
	void cursorPositionChanged(int,int);
	void copyAvailable(bool);
	void marginClicked(int,int,TQt::ButtonState);
	void modificationAttempted();
	void modificationChanged(bool);
	void selectionChanged();
	void textChanged();
%If (TQScintilla_1_7 -)
	void userListActivated(int, const TQString &);
%End

private:
	TQextScintilla(const TQextScintilla &);

};
