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