xref: /MusicPlayer2/scintilla/src/ScintillaBase.h (revision f9763b28e6d019e8b836e436b68c871dc5256bb4)
18af74909SZhong Yang // Scintilla source code edit control
28af74909SZhong Yang /** @file ScintillaBase.h
38af74909SZhong Yang  ** Defines an enhanced subclass of Editor with calltips, autocomplete and context menu.
48af74909SZhong Yang  **/
58af74909SZhong Yang // Copyright 1998-2002 by Neil Hodgson <[email protected]>
68af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed.
78af74909SZhong Yang 
88af74909SZhong Yang #ifndef SCINTILLABASE_H
98af74909SZhong Yang #define SCINTILLABASE_H
108af74909SZhong Yang 
118af74909SZhong Yang namespace Scintilla {
128af74909SZhong Yang 
138af74909SZhong Yang class LexState;
148af74909SZhong Yang /**
158af74909SZhong Yang  */
168af74909SZhong Yang class ScintillaBase : public Editor, IListBoxDelegate {
178af74909SZhong Yang protected:
188af74909SZhong Yang 	/** Enumeration of commands and child windows. */
198af74909SZhong Yang 	enum {
208af74909SZhong Yang 		idCallTip=1,
218af74909SZhong Yang 		idAutoComplete=2,
228af74909SZhong Yang 
238af74909SZhong Yang 		idcmdUndo=10,
248af74909SZhong Yang 		idcmdRedo=11,
258af74909SZhong Yang 		idcmdCut=12,
268af74909SZhong Yang 		idcmdCopy=13,
278af74909SZhong Yang 		idcmdPaste=14,
288af74909SZhong Yang 		idcmdDelete=15,
298af74909SZhong Yang 		idcmdSelectAll=16
308af74909SZhong Yang 	};
318af74909SZhong Yang 
328af74909SZhong Yang 	int displayPopupMenu;
33*f9763b28Slrisora     std::map<std::wstring, std::wstring>* menuStringTable = nullptr;
348af74909SZhong Yang 	Menu popup;
358af74909SZhong Yang 	AutoComplete ac;
368af74909SZhong Yang 
378af74909SZhong Yang 	CallTip ct;
388af74909SZhong Yang 
398af74909SZhong Yang 	int listType;			///< 0 is an autocomplete list
408af74909SZhong Yang 	int maxListWidth;		/// Maximum width of list, in average character widths
418af74909SZhong Yang 	int multiAutoCMode; /// Mode for autocompleting when multiple selections are present
428af74909SZhong Yang 
438af74909SZhong Yang 	LexState *DocumentLexState();
448af74909SZhong Yang 	void SetLexer(uptr_t wParam);
458af74909SZhong Yang 	void SetLexerLanguage(const char *languageName);
468af74909SZhong Yang 	void Colourise(int start, int end);
478af74909SZhong Yang 
488af74909SZhong Yang 	ScintillaBase();
498af74909SZhong Yang 	// Deleted so ScintillaBase objects can not be copied.
508af74909SZhong Yang 	ScintillaBase(const ScintillaBase &) = delete;
518af74909SZhong Yang 	ScintillaBase(ScintillaBase &&) = delete;
528af74909SZhong Yang 	ScintillaBase &operator=(const ScintillaBase &) = delete;
538af74909SZhong Yang 	ScintillaBase &operator=(ScintillaBase &&) = delete;
548af74909SZhong Yang 	// ~ScintillaBase() in public section
Initialise()558af74909SZhong Yang 	void Initialise() override {}
568af74909SZhong Yang 	void Finalise() override;
578af74909SZhong Yang 
588af74909SZhong Yang 	[[deprecated]]
598af74909SZhong Yang 	// This method is deprecated, use InsertCharacter instead. The treatAsDBCS parameter is no longer used.
608af74909SZhong Yang 	virtual void AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS=false);
618af74909SZhong Yang 
628af74909SZhong Yang 	void InsertCharacter(std::string_view sv, CharacterSource charSource) override;
638af74909SZhong Yang 	void Command(int cmdId);
648af74909SZhong Yang 	void CancelModes() override;
658af74909SZhong Yang 	int KeyCommand(unsigned int iMessage) override;
668af74909SZhong Yang 
678af74909SZhong Yang 	void AutoCompleteInsert(Sci::Position startPos, Sci::Position removeLen, const char *text, Sci::Position textLen);
688af74909SZhong Yang 	void AutoCompleteStart(Sci::Position lenEntered, const char *list);
698af74909SZhong Yang 	void AutoCompleteCancel();
708af74909SZhong Yang 	void AutoCompleteMove(int delta);
718af74909SZhong Yang 	int AutoCompleteGetCurrent() const;
728af74909SZhong Yang 	int AutoCompleteGetCurrentText(char *buffer) const;
738af74909SZhong Yang 	void AutoCompleteCharacterAdded(char ch);
748af74909SZhong Yang 	void AutoCompleteCharacterDeleted();
758af74909SZhong Yang 	void AutoCompleteCompleted(char ch, unsigned int completionMethod);
768af74909SZhong Yang 	void AutoCompleteMoveToCurrentWord();
778af74909SZhong Yang 	void AutoCompleteSelection();
788af74909SZhong Yang 	void ListNotify(ListBoxEvent *plbe) override;
798af74909SZhong Yang 
808af74909SZhong Yang 	void CallTipClick();
818af74909SZhong Yang 	void CallTipShow(Point pt, const char *defn);
828af74909SZhong Yang 	virtual void CreateCallTipWindow(PRectangle rc) = 0;
838af74909SZhong Yang 
84*f9763b28Slrisora 	virtual void AddToPopUp(const wchar_t *label, int cmd=0, bool enabled=true) = 0;
858af74909SZhong Yang 	bool ShouldDisplayPopup(Point ptInWindowCoordinates) const;
868af74909SZhong Yang 	void ContextMenu(Point pt);
878af74909SZhong Yang 
888af74909SZhong Yang 	void ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers) override;
898af74909SZhong Yang 	void RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers) override;
908af74909SZhong Yang 
918af74909SZhong Yang 	void NotifyStyleToNeeded(Sci::Position endStyleNeeded) override;
928af74909SZhong Yang 	void NotifyLexerChanged(Document *doc, void *userData) override;
938af74909SZhong Yang 
948af74909SZhong Yang public:
958af74909SZhong Yang 	~ScintillaBase() override;
968af74909SZhong Yang 
978af74909SZhong Yang 	// Public so scintilla_send_message can use it
988af74909SZhong Yang 	sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
998af74909SZhong Yang };
1008af74909SZhong Yang 
1018af74909SZhong Yang }
1028af74909SZhong Yang 
1038af74909SZhong Yang #endif
104