1 // Scintilla source code edit control
2 /** @file ScintillaBase.h
3 ** Defines an enhanced subclass of Editor with calltips, autocomplete and context menu.
5 // Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
6 // The License.txt file describes the conditions under which this software may be distributed.
8 #ifndef SCINTILLABASE_H
9 #define SCINTILLABASE_H
21 class ScintillaBase
: public Editor
{
22 // Private so ScintillaBase objects can not be copied
23 ScintillaBase(const ScintillaBase
&);
24 ScintillaBase
&operator=(const ScintillaBase
&);
27 /** Enumeration of commands and child windows. */
41 bool displayPopupMenu
;
47 int listType
; ///< 0 is an autocomplete list
48 int maxListWidth
; /// Maximum width of list, in average character widths
49 int multiAutoCMode
; /// Mode for autocompleting when multiple selections are present
52 LexState
*DocumentLexState();
53 void SetLexer(uptr_t wParam
);
54 void SetLexerLanguage(const char *languageName
);
55 void Colourise(int start
, int end
);
59 virtual ~ScintillaBase();
60 virtual void Initialise() = 0;
61 virtual void Finalise();
63 virtual void AddCharUTF(char *s
, unsigned int len
, bool treatAsDBCS
=false);
64 void Command(int cmdId
);
65 virtual void CancelModes();
66 virtual int KeyCommand(unsigned int iMessage
);
68 void AutoCompleteInsert(Position startPos
, int removeLen
, const char *text
, int textLen
);
69 void AutoCompleteStart(int lenEntered
, const char *list
);
70 void AutoCompleteCancel();
71 void AutoCompleteMove(int delta
);
72 int AutoCompleteGetCurrent() const;
73 int AutoCompleteGetCurrentText(char *buffer
) const;
74 void AutoCompleteCharacterAdded(char ch
);
75 void AutoCompleteCharacterDeleted();
76 void AutoCompleteCompleted();
77 void AutoCompleteMoveToCurrentWord();
78 static void AutoCompleteDoubleClick(void *p
);
81 void CallTipShow(Point pt
, const char *defn
);
82 virtual void CreateCallTipWindow(PRectangle rc
) = 0;
84 virtual void AddToPopUp(const char *label
, int cmd
=0, bool enabled
=true) = 0;
85 void ContextMenu(Point pt
);
87 virtual void ButtonDownWithModifiers(Point pt
, unsigned int curTime
, int modifiers
);
88 virtual void ButtonDown(Point pt
, unsigned int curTime
, bool shift
, bool ctrl
, bool alt
);
90 void NotifyStyleToNeeded(int endStyleNeeded
);
91 void NotifyLexerChanged(Document
*doc
, void *userData
);
94 // Public so scintilla_send_message can use it
95 virtual sptr_t
WndProc(unsigned int iMessage
, uptr_t wParam
, sptr_t lParam
);