1/////////////////////////////////////////////////////////////////////////////
2// Name:        stc/stc.h
3// Purpose:     interface of wxStyledTextCtrl
4// Author:      wxWidgets team
5// Licence:     wxWindows licence
6/////////////////////////////////////////////////////////////////////////////
7
8/*
9    IMPORTANT: This file is generated by src/stc/gen_iface.py from
10               src/stc/stc.interface.h.in.  Do not edit the file in
11               interface/wx/stc or your changes will be lost.
12*/
13
14
15// STC constants {{{
16
17%(VALUES)s
18
19//}}}
20
21// Commands that can be bound to keystrokes {{{
22
23%(CMDS)s
24
25//}}}
26
27
28
29
30/**
31    @class wxStyledTextCtrl
32
33    A wxWidgets implementation of the Scintilla source code editing component.
34
35    As well as features found in standard text editing components, Scintilla
36    includes features especially useful when editing and debugging source code.
37    These include support for syntax styling, error indicators, code completion
38    and call tips.
39
40    The selection margin can contain markers like those used in debuggers to indicate
41    breakpoints and the current line. Styling choices are more open than with many
42    editors, allowing the use of proportional fonts, bold and italics, multiple
43    foreground and background colours and multiple fonts.
44
45    wxStyledTextCtrl is a 1 to 1 mapping of "raw" scintilla interface, whose
46    documentation can be found in the Scintilla website (http://www.scintilla.org/).
47
48    @beginEventEmissionTable{wxStyledTextEvent}
49    @event{EVT_STC_CHANGE(id, fn)}
50        TOWRITE
51    @event{EVT_STC_STYLENEEDED(id, fn)}
52        TOWRITE
53    @event{EVT_STC_CHARADDED(id, fn)}
54        TOWRITE
55    @event{EVT_STC_SAVEPOINTREACHED(id, fn)}
56        TOWRITE
57    @event{EVT_STC_SAVEPOINTLEFT(id, fn)}
58        TOWRITE
59    @event{EVT_STC_ROMODIFYATTEMPT(id, fn)}
60        TOWRITE
61    @event{EVT_STC_KEY(id, fn)}
62        TOWRITE
63    @event{EVT_STC_DOUBLECLICK(id, fn)}
64        TOWRITE
65    @event{EVT_STC_UPDATEUI(id, fn)}
66        TOWRITE
67    @event{EVT_STC_MODIFIED(id, fn)}
68        TOWRITE
69    @event{EVT_STC_MACRORECORD(id, fn)}
70        TOWRITE
71    @event{EVT_STC_MARGINCLICK(id, fn)}
72        TOWRITE
73    @event{EVT_STC_NEEDSHOWN(id, fn)}
74        TOWRITE
75    @event{EVT_STC_PAINTED(id, fn)}
76        TOWRITE
77    @event{EVT_STC_USERLISTSELECTION(id, fn)}
78        TOWRITE
79    @event{EVT_STC_URIDROPPED(id, fn)}
80        TOWRITE
81    @event{EVT_STC_DWELLSTART(id, fn)}
82        TOWRITE
83    @event{EVT_STC_DWELLEND(id, fn)}
84        TOWRITE
85    @event{EVT_STC_START_DRAG(id, fn)}
86        TOWRITE
87    @event{EVT_STC_DRAG_OVER(id, fn)}
88        TOWRITE
89    @event{EVT_STC_DO_DROP(id, fn)}
90        TOWRITE
91    @event{EVT_STC_ZOOM(id, fn)}
92        TOWRITE
93    @event{EVT_STC_HOTSPOT_CLICK(id, fn)}
94        TOWRITE
95    @event{EVT_STC_HOTSPOT_DCLICK(id, fn)}
96        TOWRITE
97    @event{EVT_STC_CALLTIP_CLICK(id, fn)}
98        TOWRITE
99    @event{EVT_STC_AUTOCOMP_SELECTION(id, fn)}
100        TOWRITE
101    @event{EVT_STC_INDICATOR_CLICK(id, fn)}
102        TOWRITE
103    @event{EVT_STC_INDICATOR_RELEASE(id, fn)}
104        TOWRITE
105    @event{EVT_STC_AUTOCOMP_CANCELLED(id, fn)}
106        TOWRITE
107    @event{EVT_STC_AUTOCOMP_CHAR_DELETED(id, fn)}
108        TOWRITE
109    @event{EVT_STC_HOTSPOT_RELEASE_CLICK(id, fn)}
110        TOWRITE
111    @endEventTable
112
113    @library{wxstc}
114    @category{stc}
115
116    @see wxStyledTextEvent
117*/
118
119class wxStyledTextCtrl : public wxControl, public wxTextEntry
120{
121public:
122
123    /**
124        Ctor.
125    */
126    wxStyledTextCtrl(wxWindow *parent, wxWindowID id=wxID_ANY,
127                     const wxPoint& pos = wxDefaultPosition,
128                     const wxSize& size = wxDefaultSize, long style = 0,
129                     const wxString& name = wxSTCNameStr);
130    /**
131        Default ctor.
132    */
133    wxStyledTextCtrl();
134
135
136    /**
137        Destructor.
138    */
139    ~wxStyledTextCtrl();
140
141    /**
142        Create the UI elements for a STC that was created with the default ctor. (For 2-phase create.)
143    */
144    bool Create(wxWindow *parent, wxWindowID id=wxID_ANY,
145                const wxPoint& pos = wxDefaultPosition,
146                const wxSize& size = wxDefaultSize, long style = 0,
147                const wxString& name = wxSTCNameStr);
148
149
150    // **** Generated methods {{{
151
152%(METHOD_IDEFS)s
153
154    //}}}
155
156
157
158    // **** Manually declared methods
159
160
161    /**
162       Returns the line number of the line with the caret.
163    */
164    int GetCurrentLine();
165
166    /**
167       Extract style settings from a spec-string which is composed of one or
168       more of the following comma separated elements:
169
170          bold                    turns on bold
171          italic                  turns on italics
172          fore:[name or \#RRGGBB]  sets the foreground colour
173          back:[name or \#RRGGBB]  sets the background colour
174          face:[facename]         sets the font face name to use
175          size:[num]              sets the font size in points
176          eol                     turns on eol filling
177          underline               turns on underlining
178    */
179    void StyleSetSpec(int styleNum, const wxString& spec);
180
181
182    /**
183       Get the font of a style.
184    */
185    wxFont StyleGetFont(int style);
186
187
188    /**
189       Set style size, face, bold, italic, and underline attributes from
190       a wxFont's attributes.
191    */
192    void StyleSetFont(int styleNum, wxFont& font);
193
194
195
196    /**
197       Set all font style attributes at once.
198    */
199    void StyleSetFontAttr(int styleNum, int size,
200                          const wxString& faceName,
201                          bool bold, bool italic,
202                          bool underline,
203                          wxFontEncoding encoding=wxFONTENCODING_DEFAULT);
204
205
206    /**
207       Set the character set of the font in a style.  Converts the Scintilla
208       character set values to a wxFontEncoding.
209    */
210    void StyleSetCharacterSet(int style, int characterSet);
211
212    /**
213       Set the font encoding to be used by a style.
214    */
215    void StyleSetFontEncoding(int style, wxFontEncoding encoding);
216
217
218    /**
219       Perform one of the operations defined by the wxSTC_CMD_* constants.
220    */
221    void CmdKeyExecute(int cmd);
222
223
224    /**
225       Set the left and right margin in the edit area, measured in pixels.
226    */
227    void SetMargins(int left, int right);
228
229
230    /**
231       Retrieve the point in the window where a position is displayed.
232    */
233    wxPoint PointFromPosition(int pos);
234
235
236    /**
237       Scroll enough to make the given line visible
238    */
239    void ScrollToLine(int line);
240
241
242    /**
243       Scroll enough to make the given column visible
244    */
245    void ScrollToColumn(int column);
246
247
248    /**
249       Send a message to Scintilla
250    */
251    wxIntPtr SendMsg(int msg, wxUIntPtr wp=0, wxIntPtr lp=0) const;
252
253
254    /**
255       Set the vertical scrollbar to use instead of the ont that's built-in.
256    */
257    void SetVScrollBar(wxScrollBar* bar);
258
259
260    /**
261       Set the horizontal scrollbar to use instead of the ont that's built-in.
262    */
263    void SetHScrollBar(wxScrollBar* bar);
264
265    /**
266       Can be used to prevent the EVT_CHAR handler from adding the char
267    */
268    bool GetLastKeydownProcessed();
269    void SetLastKeydownProcessed(bool val);
270
271    /**
272       Write the contents of the editor to filename
273    */
274    bool SaveFile(const wxString& filename);
275
276    /**
277       Load the contents of filename into the editor
278    */
279    bool LoadFile(const wxString& filename);
280
281    /**
282       Allow for simulating a DnD DragOver
283    */
284    wxDragResult DoDragOver(wxCoord x, wxCoord y, wxDragResult defaultRes);
285
286    /**
287       Allow for simulating a DnD DropText
288    */
289    bool DoDropText(long x, long y, const wxString& data);
290
291    /**
292       Clear annotations from the given line.
293    */
294    void AnnotationClearLine(int line);
295
296
297    /**
298       Add text to the document at current position.
299    */
300    void AddTextRaw(const char* text, int length=-1);
301
302    /**
303       Insert string at a position.
304    */
305    void InsertTextRaw(int pos, const char* text);
306
307    /**
308       Retrieve the text of the line containing the caret.
309       Returns the index of the caret on the line.
310    */
311    wxCharBuffer GetCurLineRaw(int* linePos=NULL);
312
313    /**
314       Retrieve the contents of a line.
315    */
316    wxCharBuffer GetLineRaw(int line);
317
318    /**
319       Retrieve the selected text.
320    */
321    wxCharBuffer GetSelectedTextRaw();
322
323    /**
324       Retrieve a range of text.
325    */
326    wxCharBuffer GetTextRangeRaw(int startPos, int endPos);
327
328    /**
329       Replace the contents of the document with the argument text.
330    */
331    void SetTextRaw(const char* text);
332
333    /**
334       Retrieve all the text in the document.
335    */
336    wxCharBuffer GetTextRaw();
337
338    /**
339       Append a string to the end of the document without changing the selection.
340    */
341    void AppendTextRaw(const char* text, int length=-1);
342
343
344    static wxVersionInfo GetLibraryVersionInfo();
345
346
347
348    // wxTextEntryBase pure virtual methods
349    // ----------------------------------------------
350
351    virtual void WriteText(const wxString& text);
352    virtual void Remove(long from, long to);
353    virtual void Replace(long from, long to, const wxString& text);
354
355    virtual void SetInsertionPoint(long pos);
356    virtual long GetInsertionPoint() const;
357    virtual long GetLastPosition() const;
358
359    virtual void SetSelection(long from, long to);
360    virtual void SelectNone();
361    virtual void GetSelection(long *from, long *to) const;
362
363    virtual bool IsEditable() const;
364    virtual void SetEditable(bool editable);
365
366    // wxTextAreaBase pure virtual methods
367    // ---------------------------------------------
368
369    virtual int GetLineLength(long n) const;
370    virtual wxString GetLineText(long n) const;
371    virtual int GetNumberOfLines() const;
372
373    virtual bool IsModified() const;
374    virtual void MarkDirty();
375    virtual void DiscardEdits();
376
377    virtual bool SetStyle(long start, long end, const wxTextAttr& style);
378    virtual bool GetStyle(long position, wxTextAttr& style);
379    virtual bool SetDefaultStyle(const wxTextAttr& style);
380
381    virtual long XYToPosition(long x, long y) const;
382    virtual bool PositionToXY(long pos, long *x, long *y) const;
383
384    virtual void ShowPosition(long pos);
385
386    virtual wxTextCtrlHitTestResult HitTest(const wxPoint& pt, long *pos) const;
387    virtual wxTextCtrlHitTestResult HitTest(const wxPoint& pt,
388                                            wxTextCoord *col,
389                                            wxTextCoord *row) const;
390};
391
392//----------------------------------------------------------------------
393
394/**
395    @class wxStyledTextEvent
396
397    The type of events sent from wxStyledTextCtrl.
398
399    @todo list styled text ctrl events.
400
401    @library{wxstc}
402    @category{events,stc}
403*/
404
405class wxStyledTextEvent : public wxCommandEvent {
406public:
407    wxStyledTextEvent(wxEventType commandType=0, int id=0);
408    wxStyledTextEvent(const wxStyledTextEvent& event);
409    ~wxStyledTextEvent();
410
411    void SetPosition(int pos);
412    void SetKey(int k);
413    void SetModifiers(int m);
414    void SetModificationType(int t);
415    void SetText(const wxString& t);
416    void SetLength(int len);
417    void SetLinesAdded(int num);
418    void SetLine(int val);
419    void SetFoldLevelNow(int val);
420    void SetFoldLevelPrev(int val);
421    void SetMargin(int val);
422    void SetMessage(int val);
423    void SetWParam(int val);
424    void SetLParam(int val);
425    void SetListType(int val);
426    void SetX(int val);
427    void SetY(int val);
428    void SetToken(int val);
429    void SetAnnotationLinesAdded(int val);
430    void SetUpdated(int val);
431    void SetDragText(const wxString& val);
432    void SetDragFlags(int flags);
433    void SetDragResult(wxDragResult val);
434
435    int  GetPosition() const;
436    int  GetKey()  const;
437    int  GetModifiers() const;
438    int  GetModificationType() const;
439    wxString GetText() const;
440    int  GetLength() const;
441    int  GetLinesAdded() const;
442    int  GetLine() const;
443    int  GetFoldLevelNow() const;
444    int  GetFoldLevelPrev() const;
445    int  GetMargin() const;
446    int  GetMessage() const;
447    int  GetWParam() const;
448    int  GetLParam() const;
449    int  GetListType() const;
450    int  GetX() const;
451    int  GetY() const;
452    int  GetToken() const;
453    int  GetAnnotationsLinesAdded() const;
454    int  GetUpdated() const;
455
456    wxString GetDragText();
457    int GetDragFlags();
458    wxDragResult GetDragResult();
459
460    bool GetShift() const;
461    bool GetControl() const;
462    bool GetAlt() const;
463};
464
465
466
467const wxEventType wxEVT_STC_CHANGE;
468const wxEventType wxEVT_STC_STYLENEEDED;
469const wxEventType wxEVT_STC_CHARADDED;
470const wxEventType wxEVT_STC_SAVEPOINTREACHED;
471const wxEventType wxEVT_STC_SAVEPOINTLEFT;
472const wxEventType wxEVT_STC_ROMODIFYATTEMPT;
473const wxEventType wxEVT_STC_KEY;
474const wxEventType wxEVT_STC_DOUBLECLICK;
475const wxEventType wxEVT_STC_UPDATEUI;
476const wxEventType wxEVT_STC_MODIFIED;
477const wxEventType wxEVT_STC_MACRORECORD;
478const wxEventType wxEVT_STC_MARGINCLICK;
479const wxEventType wxEVT_STC_NEEDSHOWN;
480const wxEventType wxEVT_STC_PAINTED;
481const wxEventType wxEVT_STC_USERLISTSELECTION;
482const wxEventType wxEVT_STC_URIDROPPED;
483const wxEventType wxEVT_STC_DWELLSTART;
484const wxEventType wxEVT_STC_DWELLEND;
485const wxEventType wxEVT_STC_START_DRAG;
486const wxEventType wxEVT_STC_DRAG_OVER;
487const wxEventType wxEVT_STC_DO_DROP;
488const wxEventType wxEVT_STC_ZOOM;
489const wxEventType wxEVT_STC_HOTSPOT_CLICK;
490const wxEventType wxEVT_STC_HOTSPOT_DCLICK;
491const wxEventType wxEVT_STC_CALLTIP_CLICK;
492const wxEventType wxEVT_STC_AUTOCOMP_SELECTION;
493const wxEventType wxEVT_STC_INDICATOR_CLICK;
494const wxEventType wxEVT_STC_INDICATOR_RELEASE;
495const wxEventType wxEVT_STC_AUTOCOMP_CANCELLED;
496const wxEventType wxEVT_STC_AUTOCOMP_CHAR_DELETED;
497const wxEventType wxEVT_STC_HOTSPOT_RELEASE_CLICK;
498