⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editor.h

📁 porting scintilla to qt
💻 H
📖 第 1 页 / 共 2 页
字号:
// Scintilla source code edit control/** @file Editor.h ** Defines the main editor class. **/// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>// The License.txt file describes the conditions under which this software may be distributed.#ifndef EDITOR_H#define EDITOR_H#include "constants.h"#ifdef SCI_NAMESPACEnamespace Scintilla {#endif#include "PositionCache.h"/** */class Caret {public:	bool active;	bool on;	int period;	Caret();};/** */class Timer {public:	bool ticking;	int ticksToWait;	enum {tickSize = 100};	TickerID tickerID;	Timer();};/** */class Idler {public:	bool state;	IdlerID idlerID;	Idler();};/** * Hold a piece of text selected for copying or dragging. * The text is expected to hold a terminating '\0' and this is counted in len. */class SelectionText {public:	char *s;	int len;	bool rectangular;	bool lineCopy;	int codePage;	int characterSet;	SelectionText() : s(0), len(0), rectangular(false), lineCopy(false), codePage(0), characterSet(0) {}	~SelectionText() {		Free();	}	void Free() {		Set(0, 0, 0, 0, false, false);	}	void Set(char *s_, int len_, int codePage_, int characterSet_, bool rectangular_, bool lineCopy_) {		delete []s;		s = s_;		if (s)			len = len_;		else			len = 0;		codePage = codePage_;		characterSet = characterSet_;		rectangular = rectangular_;		lineCopy = lineCopy_;	}	void Copy(const char *s_, int len_, int codePage_, int characterSet_, bool rectangular_, bool lineCopy_) {		delete []s;		s = new char[len_];		if (s) {			len = len_;			for (int i = 0; i < len_; i++) {				s[i] = s_[i];			}		} else {			len = 0;		}		codePage = codePage_;		characterSet = characterSet_;		rectangular = rectangular_;		lineCopy = lineCopy_;	}	void Copy(const SelectionText &other) {		Copy(other.s, other.len, other.codePage, other.characterSet, other.rectangular, other.lineCopy);	}};/** */class _QSTE_DLL_ Editor : public DocWatcher {	// Private so Editor objects can not be copied	Editor(const Editor &) : DocWatcher() {}	Editor &operator=(const Editor &) { return *this; }protected:	// ScintillaBase subclass needs access to much of Editor	/** On GTK+, Scintilla is a container widget holding two scroll bars	 * whereas on Windows there is just one window with both scroll bars turned on. */	Window wMain;	///< The Scintilla parent window	/** Style resources may be expensive to allocate so are cached between uses.	 * When a style attribute is changed, this cache is flushed. */	bool stylesValid;	ViewStyle vs;	Palette palette;	int printMagnification;	int printColourMode;	int printWrapState;	int cursorMode;	int controlCharSymbol;	bool hasFocus;	bool hideSelection;	bool inOverstrike;	int errorStatus;	bool mouseDownCaptures;	/** In bufferedDraw mode, graphics operations are drawn to a pixmap and then copied to	 * the screen. This avoids flashing but is about 30% slower. */	bool bufferedDraw;	/** In twoPhaseDraw mode, drawing is performed in two phases, first the background	* and then the foreground. This avoids chopping off characters that overlap the next run. */	bool twoPhaseDraw;	int xOffset;		///< Horizontal scrolled amount in pixels	int xCaretMargin;	///< Ensure this many pixels visible on both sides of caret	bool horizontalScrollBarVisible;	int scrollWidth;	bool trackLineWidth;	int lineWidthMaxSeen;	bool verticalScrollBarVisible;	bool endAtLastLine;	bool caretSticky;	Surface *pixmapLine;	Surface *pixmapSelMargin;	Surface *pixmapSelPattern;	Surface *pixmapIndentGuide;	Surface *pixmapIndentGuideHighlight;	LineLayoutCache llc;	PositionCache posCache;	KeyMap kmap;	Caret caret;	Timer timer;	Timer autoScrollTimer;	enum { autoScrollDelay = 200 };	Idler idler;	Point lastClick;	unsigned int lastClickTime;	int dwellDelay;	int ticksToDwell;	bool dwelling;	enum { selChar, selWord, selLine } selectionType;	Point ptMouseLast;	enum { ddNone, ddInitial, ddDragging } inDragDrop;	bool dropWentOutside;	int posDrag;	int posDrop;	int lastXChosen;	int lineAnchor;	int originalAnchorPos;	int currentPos;	int anchor;	int targetStart;	int targetEnd;	int searchFlags;	int topLine;	int posTopLine;	int lengthForEncode;	bool needUpdateUI;	Position braces[2];	int bracesMatchStyle;	int highlightGuideColumn;	int theEdge;	enum { notPainting, painting, paintAbandoned } paintState;	PRectangle rcPaint;	bool paintingAllText;	int modEventMask;	SelectionText drag;	enum selTypes { noSel, selStream, selRectangle, selLines };	selTypes selType;	bool moveExtendsSelection;	int xStartSelect;	///< x position of start of rectangular selection	int xEndSelect;		///< x position of end of rectangular selection	bool primarySelection;	int caretXPolicy;	int caretXSlop;	///< Ensure this many pixels visible on both sides of caret	int caretYPolicy;	int caretYSlop;	///< Ensure this many lines visible on both sides of caret	int visiblePolicy;	int visibleSlop;	int searchAnchor;	bool recordingMacro;	int foldFlags;	ContractionState cs;	// Hotspot support	int hsStart;	int hsEnd;	// Wrapping support	enum { eWrapNone, eWrapWord, eWrapChar } wrapState;	enum { wrapLineLarge = 0x7ffffff };	int wrapWidth;	int wrapStart;	int wrapEnd;	int wrapVisualFlags;	int wrapVisualFlagsLocation;	int wrapVisualStartIndent;	int actualWrapVisualStartIndent;	bool convertPastes;	Document *pdoc;	Editor();	virtual ~Editor();	virtual void Initialise() = 0;	virtual void Finalise();	void InvalidateStyleData();	void InvalidateStyleRedraw();	virtual void RefreshColourPalette(Palette &pal, bool want);	void RefreshStyleData();	void DropGraphics();	virtual PRectangle GetClientRectangle();	PRectangle GetTextRectangle();	int LinesOnScreen();	int LinesToScroll();	int MaxScrollPos();	Point LocationFromPosition(int pos);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -