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