xref: /MusicPlayer2/scintilla/src/ScintillaBase.h (revision 8af74909132ed5e696cb05b6689ae4baf14c1c96)
1*8af74909SZhong Yang // Scintilla source code edit control
2*8af74909SZhong Yang /** @file ScintillaBase.h
3*8af74909SZhong Yang  ** Defines an enhanced subclass of Editor with calltips, autocomplete and context menu.
4*8af74909SZhong Yang  **/
5*8af74909SZhong Yang // Copyright 1998-2002 by Neil Hodgson <[email protected]>
6*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed.
7*8af74909SZhong Yang 
8*8af74909SZhong Yang #ifndef SCINTILLABASE_H
9*8af74909SZhong Yang #define SCINTILLABASE_H
10*8af74909SZhong Yang 
11*8af74909SZhong Yang #include <windows.h>
12*8af74909SZhong Yang #include <tchar.h>
13*8af74909SZhong Yang 
14*8af74909SZhong Yang namespace Scintilla {
15*8af74909SZhong Yang 
16*8af74909SZhong Yang class LexState;
17*8af74909SZhong Yang /**
18*8af74909SZhong Yang  */
19*8af74909SZhong Yang class ScintillaBase : public Editor, IListBoxDelegate {
20*8af74909SZhong Yang protected:
21*8af74909SZhong Yang 	/** Enumeration of commands and child windows. */
22*8af74909SZhong Yang 	enum {
23*8af74909SZhong Yang 		idCallTip=1,
24*8af74909SZhong Yang 		idAutoComplete=2,
25*8af74909SZhong Yang 
26*8af74909SZhong Yang 		idcmdUndo=10,
27*8af74909SZhong Yang 		idcmdRedo=11,
28*8af74909SZhong Yang 		idcmdCut=12,
29*8af74909SZhong Yang 		idcmdCopy=13,
30*8af74909SZhong Yang 		idcmdPaste=14,
31*8af74909SZhong Yang 		idcmdDelete=15,
32*8af74909SZhong Yang 		idcmdSelectAll=16
33*8af74909SZhong Yang 	};
34*8af74909SZhong Yang 
35*8af74909SZhong Yang 	int displayPopupMenu;
36*8af74909SZhong Yang 	Menu popup;
37*8af74909SZhong Yang 	AutoComplete ac;
38*8af74909SZhong Yang 
39*8af74909SZhong Yang 	CallTip ct;
40*8af74909SZhong Yang 
41*8af74909SZhong Yang 	int listType;			///< 0 is an autocomplete list
42*8af74909SZhong Yang 	int maxListWidth;		/// Maximum width of list, in average character widths
43*8af74909SZhong Yang 	int multiAutoCMode; /// Mode for autocompleting when multiple selections are present
44*8af74909SZhong Yang 
45*8af74909SZhong Yang 	LexState *DocumentLexState();
46*8af74909SZhong Yang 	void SetLexer(uptr_t wParam);
47*8af74909SZhong Yang 	void SetLexerLanguage(const char *languageName);
48*8af74909SZhong Yang 	void Colourise(int start, int end);
49*8af74909SZhong Yang 
50*8af74909SZhong Yang 	ScintillaBase();
51*8af74909SZhong Yang 	// Deleted so ScintillaBase objects can not be copied.
52*8af74909SZhong Yang 	ScintillaBase(const ScintillaBase &) = delete;
53*8af74909SZhong Yang 	ScintillaBase(ScintillaBase &&) = delete;
54*8af74909SZhong Yang 	ScintillaBase &operator=(const ScintillaBase &) = delete;
55*8af74909SZhong Yang 	ScintillaBase &operator=(ScintillaBase &&) = delete;
56*8af74909SZhong Yang 	// ~ScintillaBase() in public section
57*8af74909SZhong Yang 	void Initialise() override {}
58*8af74909SZhong Yang 	void Finalise() override;
59*8af74909SZhong Yang 
60*8af74909SZhong Yang 	[[deprecated]]
61*8af74909SZhong Yang 	// This method is deprecated, use InsertCharacter instead. The treatAsDBCS parameter is no longer used.
62*8af74909SZhong Yang 	virtual void AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS=false);
63*8af74909SZhong Yang 
64*8af74909SZhong Yang 	void InsertCharacter(std::string_view sv, CharacterSource charSource) override;
65*8af74909SZhong Yang 	void Command(int cmdId);
66*8af74909SZhong Yang 	void CancelModes() override;
67*8af74909SZhong Yang 	int KeyCommand(unsigned int iMessage) override;
68*8af74909SZhong Yang 
69*8af74909SZhong Yang 	void AutoCompleteInsert(Sci::Position startPos, Sci::Position removeLen, const char *text, Sci::Position textLen);
70*8af74909SZhong Yang 	void AutoCompleteStart(Sci::Position lenEntered, const char *list);
71*8af74909SZhong Yang 	void AutoCompleteCancel();
72*8af74909SZhong Yang 	void AutoCompleteMove(int delta);
73*8af74909SZhong Yang 	int AutoCompleteGetCurrent() const;
74*8af74909SZhong Yang 	int AutoCompleteGetCurrentText(char *buffer) const;
75*8af74909SZhong Yang 	void AutoCompleteCharacterAdded(char ch);
76*8af74909SZhong Yang 	void AutoCompleteCharacterDeleted();
77*8af74909SZhong Yang 	void AutoCompleteCompleted(char ch, unsigned int completionMethod);
78*8af74909SZhong Yang 	void AutoCompleteMoveToCurrentWord();
79*8af74909SZhong Yang 	void AutoCompleteSelection();
80*8af74909SZhong Yang 	void ListNotify(ListBoxEvent *plbe) override;
81*8af74909SZhong Yang 
82*8af74909SZhong Yang 	void CallTipClick();
83*8af74909SZhong Yang 	void CallTipShow(Point pt, const char *defn);
84*8af74909SZhong Yang 	virtual void CreateCallTipWindow(PRectangle rc) = 0;
85*8af74909SZhong Yang 
86*8af74909SZhong Yang 	virtual void AddToPopUp(LPCTSTR label, int cmd=0, bool enabled=true) = 0;
87*8af74909SZhong Yang 	bool ShouldDisplayPopup(Point ptInWindowCoordinates) const;
88*8af74909SZhong Yang 	void ContextMenu(Point pt);
89*8af74909SZhong Yang 
90*8af74909SZhong Yang 	void ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers) override;
91*8af74909SZhong Yang 	void RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers) override;
92*8af74909SZhong Yang 
93*8af74909SZhong Yang 	void NotifyStyleToNeeded(Sci::Position endStyleNeeded) override;
94*8af74909SZhong Yang 	void NotifyLexerChanged(Document *doc, void *userData) override;
95*8af74909SZhong Yang 
96*8af74909SZhong Yang public:
97*8af74909SZhong Yang 	~ScintillaBase() override;
98*8af74909SZhong Yang 
99*8af74909SZhong Yang 	// Public so scintilla_send_message can use it
100*8af74909SZhong Yang 	sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
101*8af74909SZhong Yang };
102*8af74909SZhong Yang 
103*8af74909SZhong Yang }
104*8af74909SZhong Yang 
105*8af74909SZhong Yang #endif
106