~ubuntu-branches/ubuntu/wily/apparmor/wily

« back to all changes in this revision

Viewing changes to deprecated/management/profile-editor/src/wxStyledTextCtrl/stc.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2011-04-27 10:38:07 UTC
  • mfrom: (5.1.118 natty)
  • Revision ID: james.westby@ubuntu.com-20110427103807-ym3rhwys6o84ith0
Tags: 2.6.1-2
debian/copyright: clarify for some full organization names.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
////////////////////////////////////////////////////////////////////////////
 
2
// Name:        stc.cpp
 
3
// Purpose:     A wxWidgets implementation of Scintilla.  This class is the
 
4
//              one meant to be used directly by wx applications.  It does not
 
5
//              derive directly from the Scintilla classes, but instead
 
6
//              delegates most things to the real Scintilla class.
 
7
//              This allows the use of Scintilla without polluting the
 
8
//              namespace with all the classes and identifiers from Scintilla.
 
9
//
 
10
// Author:      Robin Dunn
 
11
//
 
12
// Created:     13-Jan-2000
 
13
// Copyright:   (c) 2000 by Total Control Software
 
14
// Licence:     wxWindows license
 
15
/////////////////////////////////////////////////////////////////////////////
 
16
 
 
17
#include <ctype.h>
 
18
 
 
19
#include "wx/wx.h"
 
20
#include "wx/tokenzr.h"
 
21
#include "wx/mstream.h"
 
22
#include "wx/image.h"
 
23
#include "wx/file.h"
 
24
 
 
25
#include "stc.h"
 
26
#include "ScintillaWX.h"
 
27
 
 
28
//----------------------------------------------------------------------
 
29
 
 
30
const wxChar* wxSTCNameStr = wxT("stcwindow");
 
31
 
 
32
#ifdef MAKELONG
 
33
#undef MAKELONG
 
34
#endif
 
35
 
 
36
#define MAKELONG(a, b) ((a) | ((b) << 16))
 
37
 
 
38
 
 
39
static long wxColourAsLong(const wxColour& co) {
 
40
    return (((long)co.Blue()  << 16) |
 
41
            ((long)co.Green() <<  8) |
 
42
            ((long)co.Red()));
 
43
}
 
44
 
 
45
static wxColour wxColourFromLong(long c) {
 
46
    wxColour clr;
 
47
    clr.Set((unsigned char)(c & 0xff),
 
48
            (unsigned char)((c >> 8) & 0xff),
 
49
            (unsigned char)((c >> 16) & 0xff));
 
50
    return clr;
 
51
}
 
52
 
 
53
 
 
54
static wxColour wxColourFromSpec(const wxString& spec) {
 
55
    // spec should be a colour name or "#RRGGBB"
 
56
    if (spec.GetChar(0) == wxT('#')) {
 
57
 
 
58
        long red, green, blue;
 
59
        red = green = blue = 0;
 
60
        spec.Mid(1,2).ToLong(&red,   16);
 
61
        spec.Mid(3,2).ToLong(&green, 16);
 
62
        spec.Mid(5,2).ToLong(&blue,  16);
 
63
        return wxColour((unsigned char)red,
 
64
                        (unsigned char)green,
 
65
                        (unsigned char)blue);
 
66
    }
 
67
    else
 
68
        return wxColour(spec);
 
69
}
 
70
 
 
71
//----------------------------------------------------------------------
 
72
 
 
73
DEFINE_EVENT_TYPE( wxEVT_STC_CHANGE )
 
74
DEFINE_EVENT_TYPE( wxEVT_STC_STYLENEEDED )
 
75
DEFINE_EVENT_TYPE( wxEVT_STC_CHARADDED )
 
76
DEFINE_EVENT_TYPE( wxEVT_STC_SAVEPOINTREACHED )
 
77
DEFINE_EVENT_TYPE( wxEVT_STC_SAVEPOINTLEFT )
 
78
DEFINE_EVENT_TYPE( wxEVT_STC_ROMODIFYATTEMPT )
 
79
DEFINE_EVENT_TYPE( wxEVT_STC_KEY )
 
80
DEFINE_EVENT_TYPE( wxEVT_STC_DOUBLECLICK )
 
81
DEFINE_EVENT_TYPE( wxEVT_STC_UPDATEUI )
 
82
DEFINE_EVENT_TYPE( wxEVT_STC_MODIFIED )
 
83
DEFINE_EVENT_TYPE( wxEVT_STC_MACRORECORD )
 
84
DEFINE_EVENT_TYPE( wxEVT_STC_MARGINCLICK )
 
85
DEFINE_EVENT_TYPE( wxEVT_STC_NEEDSHOWN )
 
86
DEFINE_EVENT_TYPE( wxEVT_STC_PAINTED )
 
87
DEFINE_EVENT_TYPE( wxEVT_STC_USERLISTSELECTION )
 
88
DEFINE_EVENT_TYPE( wxEVT_STC_URIDROPPED )
 
89
DEFINE_EVENT_TYPE( wxEVT_STC_DWELLSTART )
 
90
DEFINE_EVENT_TYPE( wxEVT_STC_DWELLEND )
 
91
DEFINE_EVENT_TYPE( wxEVT_STC_START_DRAG )
 
92
DEFINE_EVENT_TYPE( wxEVT_STC_DRAG_OVER )
 
93
DEFINE_EVENT_TYPE( wxEVT_STC_DO_DROP )
 
94
DEFINE_EVENT_TYPE( wxEVT_STC_ZOOM )
 
95
DEFINE_EVENT_TYPE( wxEVT_STC_HOTSPOT_CLICK )
 
96
DEFINE_EVENT_TYPE( wxEVT_STC_HOTSPOT_DCLICK )
 
97
DEFINE_EVENT_TYPE( wxEVT_STC_CALLTIP_CLICK )
 
98
DEFINE_EVENT_TYPE( wxEVT_STC_AUTOCOMP_SELECTION )    
 
99
 
 
100
 
 
101
 
 
102
BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl)
 
103
    EVT_PAINT                   (wxStyledTextCtrl::OnPaint)
 
104
    EVT_SCROLLWIN               (wxStyledTextCtrl::OnScrollWin)
 
105
    EVT_SCROLL                  (wxStyledTextCtrl::OnScroll)
 
106
    EVT_SIZE                    (wxStyledTextCtrl::OnSize)
 
107
    EVT_LEFT_DOWN               (wxStyledTextCtrl::OnMouseLeftDown)
 
108
    
 
109
    // Let Scintilla see the double click as a second click
 
110
    EVT_LEFT_DCLICK             (wxStyledTextCtrl::OnMouseLeftDown)
 
111
    EVT_MOTION                  (wxStyledTextCtrl::OnMouseMove)
 
112
    EVT_LEFT_UP                 (wxStyledTextCtrl::OnMouseLeftUp)
 
113
#if defined(__WXGTK__) || defined(__WXMAC__)
 
114
    EVT_RIGHT_UP                (wxStyledTextCtrl::OnMouseRightUp)
 
115
#else
 
116
    EVT_CONTEXT_MENU            (wxStyledTextCtrl::OnContextMenu)
 
117
#endif
 
118
    EVT_MOUSEWHEEL              (wxStyledTextCtrl::OnMouseWheel)
 
119
    EVT_MIDDLE_UP               (wxStyledTextCtrl::OnMouseMiddleUp)
 
120
    EVT_CHAR                    (wxStyledTextCtrl::OnChar)
 
121
    EVT_KEY_DOWN                (wxStyledTextCtrl::OnKeyDown)
 
122
    EVT_KILL_FOCUS              (wxStyledTextCtrl::OnLoseFocus)
 
123
    EVT_SET_FOCUS               (wxStyledTextCtrl::OnGainFocus)
 
124
    EVT_SYS_COLOUR_CHANGED      (wxStyledTextCtrl::OnSysColourChanged)
 
125
    EVT_ERASE_BACKGROUND        (wxStyledTextCtrl::OnEraseBackground)
 
126
    EVT_MENU_RANGE              (10, 16, wxStyledTextCtrl::OnMenu)
 
127
    EVT_LISTBOX_DCLICK          (wxID_ANY, wxStyledTextCtrl::OnListBox)
 
128
END_EVENT_TABLE()
 
129
 
 
130
 
 
131
IMPLEMENT_CLASS(wxStyledTextCtrl, wxControl)
 
132
IMPLEMENT_DYNAMIC_CLASS(wxStyledTextEvent, wxCommandEvent)
 
133
 
 
134
#ifdef LINK_LEXERS
 
135
// forces the linking of the lexer modules
 
136
int Scintilla_LinkLexers();
 
137
#endif
 
138
 
 
139
//----------------------------------------------------------------------
 
140
// Constructor and Destructor
 
141
 
 
142
wxStyledTextCtrl::wxStyledTextCtrl(wxWindow *parent,
 
143
                                   wxWindowID id,
 
144
                                   const wxPoint& pos,
 
145
                                   const wxSize& size,
 
146
                                   long style,
 
147
                                   const wxString& name)
 
148
{
 
149
    m_swx = NULL;
 
150
    Create(parent, id, pos, size, style, name);
 
151
}
 
152
 
 
153
 
 
154
bool wxStyledTextCtrl::Create(wxWindow *parent,
 
155
                              wxWindowID id,
 
156
                              const wxPoint& pos,
 
157
                              const wxSize& size,
 
158
                              long style,
 
159
                              const wxString& name)
 
160
{
 
161
#ifdef __WXMAC__
 
162
    style |= wxVSCROLL | wxHSCROLL;
 
163
#endif
 
164
    if (!wxControl::Create(parent, id, pos, size,
 
165
                           style | wxWANTS_CHARS | wxCLIP_CHILDREN,
 
166
                           wxDefaultValidator, name))
 
167
        return false;
 
168
 
 
169
#ifdef LINK_LEXERS
 
170
    Scintilla_LinkLexers();
 
171
#endif
 
172
    m_swx = new ScintillaWX(this);
 
173
    m_stopWatch.Start();
 
174
    m_lastKeyDownConsumed = false;
 
175
    m_vScrollBar = NULL;
 
176
    m_hScrollBar = NULL;
 
177
#if wxUSE_UNICODE
 
178
    // Put Scintilla into unicode (UTF-8) mode
 
179
    SetCodePage(wxSTC_CP_UTF8);
 
180
#endif
 
181
 
 
182
    SetBestFittingSize(size);
 
183
 
 
184
    // Reduces flicker on GTK+/X11
 
185
    SetBackgroundStyle(wxBG_STYLE_CUSTOM);
 
186
    return true;
 
187
}
 
188
 
 
189
 
 
190
wxStyledTextCtrl::~wxStyledTextCtrl() {
 
191
    delete m_swx;
 
192
}
 
193
 
 
194
 
 
195
//----------------------------------------------------------------------
 
196
 
 
197
long wxStyledTextCtrl::SendMsg(int msg, long wp, long lp) {
 
198
 
 
199
    return m_swx->WndProc(msg, wp, lp);
 
200
}
 
201
 
 
202
//----------------------------------------------------------------------
 
203
 
 
204
// Set the vertical scrollbar to use instead of the ont that's built-in.
 
205
void wxStyledTextCtrl::SetVScrollBar(wxScrollBar* bar)  {
 
206
    m_vScrollBar = bar;
 
207
    if (bar != NULL) {
 
208
        // ensure that the built-in scrollbar is not visible
 
209
        SetScrollbar(wxVERTICAL, 0, 0, 0);
 
210
    }
 
211
}
 
212
 
 
213
 
 
214
// Set the horizontal scrollbar to use instead of the ont that's built-in.
 
215
void wxStyledTextCtrl::SetHScrollBar(wxScrollBar* bar)  {
 
216
    m_hScrollBar = bar;
 
217
    if (bar != NULL) {
 
218
        // ensure that the built-in scrollbar is not visible
 
219
        SetScrollbar(wxHORIZONTAL, 0, 0, 0);
 
220
    }
 
221
}
 
222
 
 
223
//----------------------------------------------------------------------
 
224
// BEGIN generated section.  The following code is automatically generated
 
225
//       by gen_iface.py from the contents of Scintilla.iface.  Do not edit
 
226
//       this file.  Edit stc.cpp.in or gen_iface.py instead and regenerate.
 
227
 
 
228
 
 
229
// Add text to the document at current position.
 
230
void wxStyledTextCtrl::AddText(const wxString& text) {
 
231
                    wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
 
232
                    SendMsg(2001, strlen(buf), (long)(const char*)buf);
 
233
}
 
234
 
 
235
// Add array of cells to document.
 
236
void wxStyledTextCtrl::AddStyledText(const wxMemoryBuffer& data) {
 
237
                          SendMsg(2002, data.GetDataLen(), (long)data.GetData());
 
238
}
 
239
 
 
240
// Insert string at a position.
 
241
void wxStyledTextCtrl::InsertText(int pos, const wxString& text) {
 
242
    SendMsg(2003, pos, (long)(const char*)wx2stc(text));
 
243
}
 
244
 
 
245
// Delete all text in the document.
 
246
void wxStyledTextCtrl::ClearAll() {
 
247
    SendMsg(2004, 0, 0);
 
248
}
 
249
 
 
250
// Set all style bytes to 0, remove all folding information.
 
251
void wxStyledTextCtrl::ClearDocumentStyle() {
 
252
    SendMsg(2005, 0, 0);
 
253
}
 
254
 
 
255
// Returns the number of characters in the document.
 
256
int wxStyledTextCtrl::GetLength() {
 
257
    return SendMsg(2006, 0, 0);
 
258
}
 
259
 
 
260
// Returns the character byte at the position.
 
261
int wxStyledTextCtrl::GetCharAt(int pos) {
 
262
         return (unsigned char)SendMsg(2007, pos, 0);
 
263
}
 
264
 
 
265
// Returns the position of the caret.
 
266
int wxStyledTextCtrl::GetCurrentPos() {
 
267
    return SendMsg(2008, 0, 0);
 
268
}
 
269
 
 
270
// Returns the position of the opposite end of the selection to the caret.
 
271
int wxStyledTextCtrl::GetAnchor() {
 
272
    return SendMsg(2009, 0, 0);
 
273
}
 
274
 
 
275
// Returns the style byte at the position.
 
276
int wxStyledTextCtrl::GetStyleAt(int pos) {
 
277
         return (unsigned char)SendMsg(2010, pos, 0);
 
278
}
 
279
 
 
280
// Redoes the next action on the undo history.
 
281
void wxStyledTextCtrl::Redo() {
 
282
    SendMsg(2011, 0, 0);
 
283
}
 
284
 
 
285
// Choose between collecting actions into the undo
 
286
// history and discarding them.
 
287
void wxStyledTextCtrl::SetUndoCollection(bool collectUndo) {
 
288
    SendMsg(2012, collectUndo, 0);
 
289
}
 
290
 
 
291
// Select all the text in the document.
 
292
void wxStyledTextCtrl::SelectAll() {
 
293
    SendMsg(2013, 0, 0);
 
294
}
 
295
 
 
296
// Remember the current position in the undo history as the position
 
297
// at which the document was saved.
 
298
void wxStyledTextCtrl::SetSavePoint() {
 
299
    SendMsg(2014, 0, 0);
 
300
}
 
301
 
 
302
// Retrieve a buffer of cells.
 
303
wxMemoryBuffer wxStyledTextCtrl::GetStyledText(int startPos, int endPos) {
 
304
        wxMemoryBuffer buf;
 
305
        if (endPos < startPos) {
 
306
            int temp = startPos;
 
307
            startPos = endPos;
 
308
            endPos = temp;
 
309
        }
 
310
        int len = endPos - startPos;
 
311
        if (!len) return buf;
 
312
        TextRange tr;
 
313
        tr.lpstrText = (char*)buf.GetWriteBuf(len*2+1);
 
314
        tr.chrg.cpMin = startPos;
 
315
        tr.chrg.cpMax = endPos;
 
316
        len = SendMsg(2015, 0, (long)&tr);
 
317
        buf.UngetWriteBuf(len);
 
318
        return buf;
 
319
}
 
320
 
 
321
// Are there any redoable actions in the undo history?
 
322
bool wxStyledTextCtrl::CanRedo() {
 
323
    return SendMsg(2016, 0, 0) != 0;
 
324
}
 
325
 
 
326
// Retrieve the line number at which a particular marker is located.
 
327
int wxStyledTextCtrl::MarkerLineFromHandle(int handle) {
 
328
    return SendMsg(2017, handle, 0);
 
329
}
 
330
 
 
331
// Delete a marker.
 
332
void wxStyledTextCtrl::MarkerDeleteHandle(int handle) {
 
333
    SendMsg(2018, handle, 0);
 
334
}
 
335
 
 
336
// Is undo history being collected?
 
337
bool wxStyledTextCtrl::GetUndoCollection() {
 
338
    return SendMsg(2019, 0, 0) != 0;
 
339
}
 
340
 
 
341
// Are white space characters currently visible?
 
342
// Returns one of SCWS_* constants.
 
343
int wxStyledTextCtrl::GetViewWhiteSpace() {
 
344
    return SendMsg(2020, 0, 0);
 
345
}
 
346
 
 
347
// Make white space characters invisible, always visible or visible outside indentation.
 
348
void wxStyledTextCtrl::SetViewWhiteSpace(int viewWS) {
 
349
    SendMsg(2021, viewWS, 0);
 
350
}
 
351
 
 
352
// Find the position from a point within the window.
 
353
int wxStyledTextCtrl::PositionFromPoint(wxPoint pt) {
 
354
        return SendMsg(2022, pt.x, pt.y);
 
355
}
 
356
 
 
357
// Find the position from a point within the window but return
 
358
// INVALID_POSITION if not close to text.
 
359
int wxStyledTextCtrl::PositionFromPointClose(int x, int y) {
 
360
    return SendMsg(2023, x, y);
 
361
}
 
362
 
 
363
// Set caret to start of a line and ensure it is visible.
 
364
void wxStyledTextCtrl::GotoLine(int line) {
 
365
    SendMsg(2024, line, 0);
 
366
}
 
367
 
 
368
// Set caret to a position and ensure it is visible.
 
369
void wxStyledTextCtrl::GotoPos(int pos) {
 
370
    SendMsg(2025, pos, 0);
 
371
}
 
372
 
 
373
// Set the selection anchor to a position. The anchor is the opposite
 
374
// end of the selection from the caret.
 
375
void wxStyledTextCtrl::SetAnchor(int posAnchor) {
 
376
    SendMsg(2026, posAnchor, 0);
 
377
}
 
378
 
 
379
// Retrieve the text of the line containing the caret.
 
380
// Returns the index of the caret on the line.
 
381
wxString wxStyledTextCtrl::GetCurLine(int* linePos) {
 
382
        int len = LineLength(GetCurrentLine());
 
383
        if (!len) {
 
384
            if (linePos)  *linePos = 0;
 
385
            return wxEmptyString;
 
386
        }
 
387
 
 
388
        wxMemoryBuffer mbuf(len+1);
 
389
        char* buf = (char*)mbuf.GetWriteBuf(len+1);
 
390
 
 
391
        int pos = SendMsg(2027, len+1, (long)buf);
 
392
        mbuf.UngetWriteBuf(len);
 
393
        mbuf.AppendByte(0);
 
394
        if (linePos)  *linePos = pos;
 
395
        return stc2wx(buf);
 
396
}
 
397
 
 
398
// Retrieve the position of the last correctly styled character.
 
399
int wxStyledTextCtrl::GetEndStyled() {
 
400
    return SendMsg(2028, 0, 0);
 
401
}
 
402
 
 
403
// Convert all line endings in the document to one mode.
 
404
void wxStyledTextCtrl::ConvertEOLs(int eolMode) {
 
405
    SendMsg(2029, eolMode, 0);
 
406
}
 
407
 
 
408
// Retrieve the current end of line mode - one of CRLF, CR, or LF.
 
409
int wxStyledTextCtrl::GetEOLMode() {
 
410
    return SendMsg(2030, 0, 0);
 
411
}
 
412
 
 
413
// Set the current end of line mode.
 
414
void wxStyledTextCtrl::SetEOLMode(int eolMode) {
 
415
    SendMsg(2031, eolMode, 0);
 
416
}
 
417
 
 
418
// Set the current styling position to pos and the styling mask to mask.
 
419
// The styling mask can be used to protect some bits in each styling byte from modification.
 
420
void wxStyledTextCtrl::StartStyling(int pos, int mask) {
 
421
    SendMsg(2032, pos, mask);
 
422
}
 
423
 
 
424
// Change style from current styling position for length characters to a style
 
425
// and move the current styling position to after this newly styled segment.
 
426
void wxStyledTextCtrl::SetStyling(int length, int style) {
 
427
    SendMsg(2033, length, style);
 
428
}
 
429
 
 
430
// Is drawing done first into a buffer or direct to the screen?
 
431
bool wxStyledTextCtrl::GetBufferedDraw() {
 
432
    return SendMsg(2034, 0, 0) != 0;
 
433
}
 
434
 
 
435
// If drawing is buffered then each line of text is drawn into a bitmap buffer
 
436
// before drawing it to the screen to avoid flicker.
 
437
void wxStyledTextCtrl::SetBufferedDraw(bool buffered) {
 
438
    SendMsg(2035, buffered, 0);
 
439
}
 
440
 
 
441
// Change the visible size of a tab to be a multiple of the width of a space character.
 
442
void wxStyledTextCtrl::SetTabWidth(int tabWidth) {
 
443
    SendMsg(2036, tabWidth, 0);
 
444
}
 
445
 
 
446
// Retrieve the visible size of a tab.
 
447
int wxStyledTextCtrl::GetTabWidth() {
 
448
    return SendMsg(2121, 0, 0);
 
449
}
 
450
 
 
451
// Set the code page used to interpret the bytes of the document as characters.
 
452
void wxStyledTextCtrl::SetCodePage(int codePage) {
 
453
#if wxUSE_UNICODE
 
454
    wxASSERT_MSG(codePage == wxSTC_CP_UTF8,
 
455
                 wxT("Only wxSTC_CP_UTF8 may be used when wxUSE_UNICODE is on."));
 
456
#else
 
457
    wxASSERT_MSG(codePage != wxSTC_CP_UTF8,
 
458
                 wxT("wxSTC_CP_UTF8 may not be used when wxUSE_UNICODE is off."));
 
459
#endif
 
460
    SendMsg(2037, codePage);
 
461
}
 
462
 
 
463
// Set the symbol used for a particular marker number,
 
464
// and optionally the fore and background colours.
 
465
void wxStyledTextCtrl::MarkerDefine(int markerNumber, int markerSymbol,
 
466
                const wxColour& foreground,
 
467
                const wxColour& background) {
 
468
 
 
469
                SendMsg(2040, markerNumber, markerSymbol);
 
470
                if (foreground.Ok())
 
471
                    MarkerSetForeground(markerNumber, foreground);
 
472
                if (background.Ok())
 
473
                    MarkerSetBackground(markerNumber, background);
 
474
}
 
475
 
 
476
// Set the foreground colour used for a particular marker number.
 
477
void wxStyledTextCtrl::MarkerSetForeground(int markerNumber, const wxColour& fore) {
 
478
    SendMsg(2041, markerNumber, wxColourAsLong(fore));
 
479
}
 
480
 
 
481
// Set the background colour used for a particular marker number.
 
482
void wxStyledTextCtrl::MarkerSetBackground(int markerNumber, const wxColour& back) {
 
483
    SendMsg(2042, markerNumber, wxColourAsLong(back));
 
484
}
 
485
 
 
486
// Add a marker to a line, returning an ID which can be used to find or delete the marker.
 
487
int wxStyledTextCtrl::MarkerAdd(int line, int markerNumber) {
 
488
    return SendMsg(2043, line, markerNumber);
 
489
}
 
490
 
 
491
// Delete a marker from a line.
 
492
void wxStyledTextCtrl::MarkerDelete(int line, int markerNumber) {
 
493
    SendMsg(2044, line, markerNumber);
 
494
}
 
495
 
 
496
// Delete all markers with a particular number from all lines.
 
497
void wxStyledTextCtrl::MarkerDeleteAll(int markerNumber) {
 
498
    SendMsg(2045, markerNumber, 0);
 
499
}
 
500
 
 
501
// Get a bit mask of all the markers set on a line.
 
502
int wxStyledTextCtrl::MarkerGet(int line) {
 
503
    return SendMsg(2046, line, 0);
 
504
}
 
505
 
 
506
// Find the next line after lineStart that includes a marker in mask.
 
507
int wxStyledTextCtrl::MarkerNext(int lineStart, int markerMask) {
 
508
    return SendMsg(2047, lineStart, markerMask);
 
509
}
 
510
 
 
511
// Find the previous line before lineStart that includes a marker in mask.
 
512
int wxStyledTextCtrl::MarkerPrevious(int lineStart, int markerMask) {
 
513
    return SendMsg(2048, lineStart, markerMask);
 
514
}
 
515
 
 
516
// Define a marker from a bitmap
 
517
void wxStyledTextCtrl::MarkerDefineBitmap(int markerNumber, const wxBitmap& bmp) {
 
518
        // convert bmp to a xpm in a string
 
519
        wxMemoryOutputStream strm;
 
520
        wxImage img = bmp.ConvertToImage();
 
521
        if (img.HasAlpha())
 
522
            img.ConvertAlphaToMask();
 
523
        img.SaveFile(strm, wxBITMAP_TYPE_XPM);
 
524
        size_t len = strm.GetSize();
 
525
        char* buff = new char[len+1];
 
526
        strm.CopyTo(buff, len);
 
527
        buff[len] = 0;
 
528
        SendMsg(2049, markerNumber, (long)buff);
 
529
        delete [] buff;
 
530
        
 
531
}
 
532
 
 
533
// Add a set of markers to a line.
 
534
void wxStyledTextCtrl::MarkerAddSet(int line, int set) {
 
535
    SendMsg(2466, line, set);
 
536
}
 
537
 
 
538
// Set a margin to be either numeric or symbolic.
 
539
void wxStyledTextCtrl::SetMarginType(int margin, int marginType) {
 
540
    SendMsg(2240, margin, marginType);
 
541
}
 
542
 
 
543
// Retrieve the type of a margin.
 
544
int wxStyledTextCtrl::GetMarginType(int margin) {
 
545
    return SendMsg(2241, margin, 0);
 
546
}
 
547
 
 
548
// Set the width of a margin to a width expressed in pixels.
 
549
void wxStyledTextCtrl::SetMarginWidth(int margin, int pixelWidth) {
 
550
    SendMsg(2242, margin, pixelWidth);
 
551
}
 
552
 
 
553
// Retrieve the width of a margin in pixels.
 
554
int wxStyledTextCtrl::GetMarginWidth(int margin) {
 
555
    return SendMsg(2243, margin, 0);
 
556
}
 
557
 
 
558
// Set a mask that determines which markers are displayed in a margin.
 
559
void wxStyledTextCtrl::SetMarginMask(int margin, int mask) {
 
560
    SendMsg(2244, margin, mask);
 
561
}
 
562
 
 
563
// Retrieve the marker mask of a margin.
 
564
int wxStyledTextCtrl::GetMarginMask(int margin) {
 
565
    return SendMsg(2245, margin, 0);
 
566
}
 
567
 
 
568
// Make a margin sensitive or insensitive to mouse clicks.
 
569
void wxStyledTextCtrl::SetMarginSensitive(int margin, bool sensitive) {
 
570
    SendMsg(2246, margin, sensitive);
 
571
}
 
572
 
 
573
// Retrieve the mouse click sensitivity of a margin.
 
574
bool wxStyledTextCtrl::GetMarginSensitive(int margin) {
 
575
    return SendMsg(2247, margin, 0) != 0;
 
576
}
 
577
 
 
578
// Clear all the styles and make equivalent to the global default style.
 
579
void wxStyledTextCtrl::StyleClearAll() {
 
580
    SendMsg(2050, 0, 0);
 
581
}
 
582
 
 
583
// Set the foreground colour of a style.
 
584
void wxStyledTextCtrl::StyleSetForeground(int style, const wxColour& fore) {
 
585
    SendMsg(2051, style, wxColourAsLong(fore));
 
586
}
 
587
 
 
588
// Set the background colour of a style.
 
589
void wxStyledTextCtrl::StyleSetBackground(int style, const wxColour& back) {
 
590
    SendMsg(2052, style, wxColourAsLong(back));
 
591
}
 
592
 
 
593
// Set a style to be bold or not.
 
594
void wxStyledTextCtrl::StyleSetBold(int style, bool bold) {
 
595
    SendMsg(2053, style, bold);
 
596
}
 
597
 
 
598
// Set a style to be italic or not.
 
599
void wxStyledTextCtrl::StyleSetItalic(int style, bool italic) {
 
600
    SendMsg(2054, style, italic);
 
601
}
 
602
 
 
603
// Set the size of characters of a style.
 
604
void wxStyledTextCtrl::StyleSetSize(int style, int sizePoints) {
 
605
    SendMsg(2055, style, sizePoints);
 
606
}
 
607
 
 
608
// Set the font of a style.
 
609
void wxStyledTextCtrl::StyleSetFaceName(int style, const wxString& fontName) {
 
610
    SendMsg(2056, style, (long)(const char*)wx2stc(fontName));
 
611
}
 
612
 
 
613
// Set a style to have its end of line filled or not.
 
614
void wxStyledTextCtrl::StyleSetEOLFilled(int style, bool filled) {
 
615
    SendMsg(2057, style, filled);
 
616
}
 
617
 
 
618
// Reset the default style to its state at startup
 
619
void wxStyledTextCtrl::StyleResetDefault() {
 
620
    SendMsg(2058, 0, 0);
 
621
}
 
622
 
 
623
// Set a style to be underlined or not.
 
624
void wxStyledTextCtrl::StyleSetUnderline(int style, bool underline) {
 
625
    SendMsg(2059, style, underline);
 
626
}
 
627
 
 
628
// Set a style to be mixed case, or to force upper or lower case.
 
629
void wxStyledTextCtrl::StyleSetCase(int style, int caseForce) {
 
630
    SendMsg(2060, style, caseForce);
 
631
}
 
632
 
 
633
// Set a style to be a hotspot or not.
 
634
void wxStyledTextCtrl::StyleSetHotSpot(int style, bool hotspot) {
 
635
    SendMsg(2409, style, hotspot);
 
636
}
 
637
 
 
638
// Set the foreground colour of the selection and whether to use this setting.
 
639
void wxStyledTextCtrl::SetSelForeground(bool useSetting, const wxColour& fore) {
 
640
    SendMsg(2067, useSetting, wxColourAsLong(fore));
 
641
}
 
642
 
 
643
// Set the background colour of the selection and whether to use this setting.
 
644
void wxStyledTextCtrl::SetSelBackground(bool useSetting, const wxColour& back) {
 
645
    SendMsg(2068, useSetting, wxColourAsLong(back));
 
646
}
 
647
 
 
648
// Set the foreground colour of the caret.
 
649
void wxStyledTextCtrl::SetCaretForeground(const wxColour& fore) {
 
650
    SendMsg(2069, wxColourAsLong(fore), 0);
 
651
}
 
652
 
 
653
// When key+modifier combination km is pressed perform msg.
 
654
void wxStyledTextCtrl::CmdKeyAssign(int key, int modifiers, int cmd) {
 
655
         SendMsg(2070, MAKELONG(key, modifiers), cmd);
 
656
}
 
657
 
 
658
// When key+modifier combination km is pressed do nothing.
 
659
void wxStyledTextCtrl::CmdKeyClear(int key, int modifiers) {
 
660
         SendMsg(2071, MAKELONG(key, modifiers));
 
661
}
 
662
 
 
663
// Drop all key mappings.
 
664
void wxStyledTextCtrl::CmdKeyClearAll() {
 
665
    SendMsg(2072, 0, 0);
 
666
}
 
667
 
 
668
// Set the styles for a segment of the document.
 
669
void wxStyledTextCtrl::SetStyleBytes(int length, char* styleBytes) {
 
670
        SendMsg(2073, length, (long)styleBytes);
 
671
}
 
672
 
 
673
// Set a style to be visible or not.
 
674
void wxStyledTextCtrl::StyleSetVisible(int style, bool visible) {
 
675
    SendMsg(2074, style, visible);
 
676
}
 
677
 
 
678
// Get the time in milliseconds that the caret is on and off.
 
679
int wxStyledTextCtrl::GetCaretPeriod() {
 
680
    return SendMsg(2075, 0, 0);
 
681
}
 
682
 
 
683
// Get the time in milliseconds that the caret is on and off. 0 = steady on.
 
684
void wxStyledTextCtrl::SetCaretPeriod(int periodMilliseconds) {
 
685
    SendMsg(2076, periodMilliseconds, 0);
 
686
}
 
687
 
 
688
// Set the set of characters making up words for when moving or selecting by word.
 
689
// First sets deaults like SetCharsDefault.
 
690
void wxStyledTextCtrl::SetWordChars(const wxString& characters) {
 
691
    SendMsg(2077, 0, (long)(const char*)wx2stc(characters));
 
692
}
 
693
 
 
694
// Start a sequence of actions that is undone and redone as a unit.
 
695
// May be nested.
 
696
void wxStyledTextCtrl::BeginUndoAction() {
 
697
    SendMsg(2078, 0, 0);
 
698
}
 
699
 
 
700
// End a sequence of actions that is undone and redone as a unit.
 
701
void wxStyledTextCtrl::EndUndoAction() {
 
702
    SendMsg(2079, 0, 0);
 
703
}
 
704
 
 
705
// Set an indicator to plain, squiggle or TT.
 
706
void wxStyledTextCtrl::IndicatorSetStyle(int indic, int style) {
 
707
    SendMsg(2080, indic, style);
 
708
}
 
709
 
 
710
// Retrieve the style of an indicator.
 
711
int wxStyledTextCtrl::IndicatorGetStyle(int indic) {
 
712
    return SendMsg(2081, indic, 0);
 
713
}
 
714
 
 
715
// Set the foreground colour of an indicator.
 
716
void wxStyledTextCtrl::IndicatorSetForeground(int indic, const wxColour& fore) {
 
717
    SendMsg(2082, indic, wxColourAsLong(fore));
 
718
}
 
719
 
 
720
// Retrieve the foreground colour of an indicator.
 
721
wxColour wxStyledTextCtrl::IndicatorGetForeground(int indic) {
 
722
    long c = SendMsg(2083, indic, 0);
 
723
    return wxColourFromLong(c);
 
724
}
 
725
 
 
726
// Set the foreground colour of all whitespace and whether to use this setting.
 
727
void wxStyledTextCtrl::SetWhitespaceForeground(bool useSetting, const wxColour& fore) {
 
728
    SendMsg(2084, useSetting, wxColourAsLong(fore));
 
729
}
 
730
 
 
731
// Set the background colour of all whitespace and whether to use this setting.
 
732
void wxStyledTextCtrl::SetWhitespaceBackground(bool useSetting, const wxColour& back) {
 
733
    SendMsg(2085, useSetting, wxColourAsLong(back));
 
734
}
 
735
 
 
736
// Divide each styling byte into lexical class bits (default: 5) and indicator
 
737
// bits (default: 3). If a lexer requires more than 32 lexical states, then this
 
738
// is used to expand the possible states.
 
739
void wxStyledTextCtrl::SetStyleBits(int bits) {
 
740
    SendMsg(2090, bits, 0);
 
741
}
 
742
 
 
743
// Retrieve number of bits in style bytes used to hold the lexical state.
 
744
int wxStyledTextCtrl::GetStyleBits() {
 
745
    return SendMsg(2091, 0, 0);
 
746
}
 
747
 
 
748
// Used to hold extra styling information for each line.
 
749
void wxStyledTextCtrl::SetLineState(int line, int state) {
 
750
    SendMsg(2092, line, state);
 
751
}
 
752
 
 
753
// Retrieve the extra styling information for a line.
 
754
int wxStyledTextCtrl::GetLineState(int line) {
 
755
    return SendMsg(2093, line, 0);
 
756
}
 
757
 
 
758
// Retrieve the last line number that has line state.
 
759
int wxStyledTextCtrl::GetMaxLineState() {
 
760
    return SendMsg(2094, 0, 0);
 
761
}
 
762
 
 
763
// Is the background of the line containing the caret in a different colour?
 
764
bool wxStyledTextCtrl::GetCaretLineVisible() {
 
765
    return SendMsg(2095, 0, 0) != 0;
 
766
}
 
767
 
 
768
// Display the background of the line containing the caret in a different colour.
 
769
void wxStyledTextCtrl::SetCaretLineVisible(bool show) {
 
770
    SendMsg(2096, show, 0);
 
771
}
 
772
 
 
773
// Get the colour of the background of the line containing the caret.
 
774
wxColour wxStyledTextCtrl::GetCaretLineBack() {
 
775
    long c = SendMsg(2097, 0, 0);
 
776
    return wxColourFromLong(c);
 
777
}
 
778
 
 
779
// Set the colour of the background of the line containing the caret.
 
780
void wxStyledTextCtrl::SetCaretLineBack(const wxColour& back) {
 
781
    SendMsg(2098, wxColourAsLong(back), 0);
 
782
}
 
783
 
 
784
// Set a style to be changeable or not (read only).
 
785
// Experimental feature, currently buggy.
 
786
void wxStyledTextCtrl::StyleSetChangeable(int style, bool changeable) {
 
787
    SendMsg(2099, style, changeable);
 
788
}
 
789
 
 
790
// Display a auto-completion list.
 
791
// The lenEntered parameter indicates how many characters before
 
792
// the caret should be used to provide context.
 
793
void wxStyledTextCtrl::AutoCompShow(int lenEntered, const wxString& itemList) {
 
794
    SendMsg(2100, lenEntered, (long)(const char*)wx2stc(itemList));
 
795
}
 
796
 
 
797
// Remove the auto-completion list from the screen.
 
798
void wxStyledTextCtrl::AutoCompCancel() {
 
799
    SendMsg(2101, 0, 0);
 
800
}
 
801
 
 
802
// Is there an auto-completion list visible?
 
803
bool wxStyledTextCtrl::AutoCompActive() {
 
804
    return SendMsg(2102, 0, 0) != 0;
 
805
}
 
806
 
 
807
// Retrieve the position of the caret when the auto-completion list was displayed.
 
808
int wxStyledTextCtrl::AutoCompPosStart() {
 
809
    return SendMsg(2103, 0, 0);
 
810
}
 
811
 
 
812
// User has selected an item so remove the list and insert the selection.
 
813
void wxStyledTextCtrl::AutoCompComplete() {
 
814
    SendMsg(2104, 0, 0);
 
815
}
 
816
 
 
817
// Define a set of character that when typed cancel the auto-completion list.
 
818
void wxStyledTextCtrl::AutoCompStops(const wxString& characterSet) {
 
819
    SendMsg(2105, 0, (long)(const char*)wx2stc(characterSet));
 
820
}
 
821
 
 
822
// Change the separator character in the string setting up an auto-completion list.
 
823
// Default is space but can be changed if items contain space.
 
824
void wxStyledTextCtrl::AutoCompSetSeparator(int separatorCharacter) {
 
825
    SendMsg(2106, separatorCharacter, 0);
 
826
}
 
827
 
 
828
// Retrieve the auto-completion list separator character.
 
829
int wxStyledTextCtrl::AutoCompGetSeparator() {
 
830
    return SendMsg(2107, 0, 0);
 
831
}
 
832
 
 
833
// Select the item in the auto-completion list that starts with a string.
 
834
void wxStyledTextCtrl::AutoCompSelect(const wxString& text) {
 
835
    SendMsg(2108, 0, (long)(const char*)wx2stc(text));
 
836
}
 
837
 
 
838
// Should the auto-completion list be cancelled if the user backspaces to a
 
839
// position before where the box was created.
 
840
void wxStyledTextCtrl::AutoCompSetCancelAtStart(bool cancel) {
 
841
    SendMsg(2110, cancel, 0);
 
842
}
 
843
 
 
844
// Retrieve whether auto-completion cancelled by backspacing before start.
 
845
bool wxStyledTextCtrl::AutoCompGetCancelAtStart() {
 
846
    return SendMsg(2111, 0, 0) != 0;
 
847
}
 
848
 
 
849
// Define a set of characters that when typed will cause the autocompletion to
 
850
// choose the selected item.
 
851
void wxStyledTextCtrl::AutoCompSetFillUps(const wxString& characterSet) {
 
852
    SendMsg(2112, 0, (long)(const char*)wx2stc(characterSet));
 
853
}
 
854
 
 
855
// Should a single item auto-completion list automatically choose the item.
 
856
void wxStyledTextCtrl::AutoCompSetChooseSingle(bool chooseSingle) {
 
857
    SendMsg(2113, chooseSingle, 0);
 
858
}
 
859
 
 
860
// Retrieve whether a single item auto-completion list automatically choose the item.
 
861
bool wxStyledTextCtrl::AutoCompGetChooseSingle() {
 
862
    return SendMsg(2114, 0, 0) != 0;
 
863
}
 
864
 
 
865
// Set whether case is significant when performing auto-completion searches.
 
866
void wxStyledTextCtrl::AutoCompSetIgnoreCase(bool ignoreCase) {
 
867
    SendMsg(2115, ignoreCase, 0);
 
868
}
 
869
 
 
870
// Retrieve state of ignore case flag.
 
871
bool wxStyledTextCtrl::AutoCompGetIgnoreCase() {
 
872
    return SendMsg(2116, 0, 0) != 0;
 
873
}
 
874
 
 
875
// Display a list of strings and send notification when user chooses one.
 
876
void wxStyledTextCtrl::UserListShow(int listType, const wxString& itemList) {
 
877
    SendMsg(2117, listType, (long)(const char*)wx2stc(itemList));
 
878
}
 
879
 
 
880
// Set whether or not autocompletion is hidden automatically when nothing matches.
 
881
void wxStyledTextCtrl::AutoCompSetAutoHide(bool autoHide) {
 
882
    SendMsg(2118, autoHide, 0);
 
883
}
 
884
 
 
885
// Retrieve whether or not autocompletion is hidden automatically when nothing matches.
 
886
bool wxStyledTextCtrl::AutoCompGetAutoHide() {
 
887
    return SendMsg(2119, 0, 0) != 0;
 
888
}
 
889
 
 
890
// Set whether or not autocompletion deletes any word characters
 
891
// after the inserted text upon completion.
 
892
void wxStyledTextCtrl::AutoCompSetDropRestOfWord(bool dropRestOfWord) {
 
893
    SendMsg(2270, dropRestOfWord, 0);
 
894
}
 
895
 
 
896
// Retrieve whether or not autocompletion deletes any word characters
 
897
// after the inserted text upon completion.
 
898
bool wxStyledTextCtrl::AutoCompGetDropRestOfWord() {
 
899
    return SendMsg(2271, 0, 0) != 0;
 
900
}
 
901
 
 
902
// Register an image for use in autocompletion lists.
 
903
void wxStyledTextCtrl::RegisterImage(int type, const wxBitmap& bmp) {
 
904
        // convert bmp to a xpm in a string
 
905
        wxMemoryOutputStream strm;
 
906
        wxImage img = bmp.ConvertToImage();
 
907
        if (img.HasAlpha())
 
908
            img.ConvertAlphaToMask();
 
909
        img.SaveFile(strm, wxBITMAP_TYPE_XPM);
 
910
        size_t len = strm.GetSize();
 
911
        char* buff = new char[len+1];
 
912
        strm.CopyTo(buff, len);
 
913
        buff[len] = 0;
 
914
        SendMsg(2405, type, (long)buff);
 
915
        delete [] buff;
 
916
     
 
917
}
 
918
 
 
919
// Clear all the registered images.
 
920
void wxStyledTextCtrl::ClearRegisteredImages() {
 
921
    SendMsg(2408, 0, 0);
 
922
}
 
923
 
 
924
// Retrieve the auto-completion list type-separator character.
 
925
int wxStyledTextCtrl::AutoCompGetTypeSeparator() {
 
926
    return SendMsg(2285, 0, 0);
 
927
}
 
928
 
 
929
// Change the type-separator character in the string setting up an auto-completion list.
 
930
// Default is '?' but can be changed if items contain '?'.
 
931
void wxStyledTextCtrl::AutoCompSetTypeSeparator(int separatorCharacter) {
 
932
    SendMsg(2286, separatorCharacter, 0);
 
933
}
 
934
 
 
935
// Set the maximum width, in characters, of auto-completion and user lists.
 
936
// Set to 0 to autosize to fit longest item, which is the default.
 
937
void wxStyledTextCtrl::AutoCompSetMaxWidth(int characterCount) {
 
938
    SendMsg(2208, characterCount, 0);
 
939
}
 
940
 
 
941
// Get the maximum width, in characters, of auto-completion and user lists.
 
942
int wxStyledTextCtrl::AutoCompGetMaxWidth() {
 
943
    return SendMsg(2209, 0, 0);
 
944
}
 
945
 
 
946
// Set the maximum height, in rows, of auto-completion and user lists.
 
947
// The default is 5 rows.
 
948
void wxStyledTextCtrl::AutoCompSetMaxHeight(int rowCount) {
 
949
    SendMsg(2210, rowCount, 0);
 
950
}
 
951
 
 
952
// Set the maximum height, in rows, of auto-completion and user lists.
 
953
int wxStyledTextCtrl::AutoCompGetMaxHeight() {
 
954
    return SendMsg(2211, 0, 0);
 
955
}
 
956
 
 
957
// Set the number of spaces used for one level of indentation.
 
958
void wxStyledTextCtrl::SetIndent(int indentSize) {
 
959
    SendMsg(2122, indentSize, 0);
 
960
}
 
961
 
 
962
// Retrieve indentation size.
 
963
int wxStyledTextCtrl::GetIndent() {
 
964
    return SendMsg(2123, 0, 0);
 
965
}
 
966
 
 
967
// Indentation will only use space characters if useTabs is false, otherwise
 
968
// it will use a combination of tabs and spaces.
 
969
void wxStyledTextCtrl::SetUseTabs(bool useTabs) {
 
970
    SendMsg(2124, useTabs, 0);
 
971
}
 
972
 
 
973
// Retrieve whether tabs will be used in indentation.
 
974
bool wxStyledTextCtrl::GetUseTabs() {
 
975
    return SendMsg(2125, 0, 0) != 0;
 
976
}
 
977
 
 
978
// Change the indentation of a line to a number of columns.
 
979
void wxStyledTextCtrl::SetLineIndentation(int line, int indentSize) {
 
980
    SendMsg(2126, line, indentSize);
 
981
}
 
982
 
 
983
// Retrieve the number of columns that a line is indented.
 
984
int wxStyledTextCtrl::GetLineIndentation(int line) {
 
985
    return SendMsg(2127, line, 0);
 
986
}
 
987
 
 
988
// Retrieve the position before the first non indentation character on a line.
 
989
int wxStyledTextCtrl::GetLineIndentPosition(int line) {
 
990
    return SendMsg(2128, line, 0);
 
991
}
 
992
 
 
993
// Retrieve the column number of a position, taking tab width into account.
 
994
int wxStyledTextCtrl::GetColumn(int pos) {
 
995
    return SendMsg(2129, pos, 0);
 
996
}
 
997
 
 
998
// Show or hide the horizontal scroll bar.
 
999
void wxStyledTextCtrl::SetUseHorizontalScrollBar(bool show) {
 
1000
    SendMsg(2130, show, 0);
 
1001
}
 
1002
 
 
1003
// Is the horizontal scroll bar visible?
 
1004
bool wxStyledTextCtrl::GetUseHorizontalScrollBar() {
 
1005
    return SendMsg(2131, 0, 0) != 0;
 
1006
}
 
1007
 
 
1008
// Show or hide indentation guides.
 
1009
void wxStyledTextCtrl::SetIndentationGuides(bool show) {
 
1010
    SendMsg(2132, show, 0);
 
1011
}
 
1012
 
 
1013
// Are the indentation guides visible?
 
1014
bool wxStyledTextCtrl::GetIndentationGuides() {
 
1015
    return SendMsg(2133, 0, 0) != 0;
 
1016
}
 
1017
 
 
1018
// Set the highlighted indentation guide column.
 
1019
// 0 = no highlighted guide.
 
1020
void wxStyledTextCtrl::SetHighlightGuide(int column) {
 
1021
    SendMsg(2134, column, 0);
 
1022
}
 
1023
 
 
1024
// Get the highlighted indentation guide column.
 
1025
int wxStyledTextCtrl::GetHighlightGuide() {
 
1026
    return SendMsg(2135, 0, 0);
 
1027
}
 
1028
 
 
1029
// Get the position after the last visible characters on a line.
 
1030
int wxStyledTextCtrl::GetLineEndPosition(int line) {
 
1031
    return SendMsg(2136, line, 0);
 
1032
}
 
1033
 
 
1034
// Get the code page used to interpret the bytes of the document as characters.
 
1035
int wxStyledTextCtrl::GetCodePage() {
 
1036
    return SendMsg(2137, 0, 0);
 
1037
}
 
1038
 
 
1039
// Get the foreground colour of the caret.
 
1040
wxColour wxStyledTextCtrl::GetCaretForeground() {
 
1041
    long c = SendMsg(2138, 0, 0);
 
1042
    return wxColourFromLong(c);
 
1043
}
 
1044
 
 
1045
// In read-only mode?
 
1046
bool wxStyledTextCtrl::GetReadOnly() {
 
1047
    return SendMsg(2140, 0, 0) != 0;
 
1048
}
 
1049
 
 
1050
// Sets the position of the caret.
 
1051
void wxStyledTextCtrl::SetCurrentPos(int pos) {
 
1052
    SendMsg(2141, pos, 0);
 
1053
}
 
1054
 
 
1055
// Sets the position that starts the selection - this becomes the anchor.
 
1056
void wxStyledTextCtrl::SetSelectionStart(int pos) {
 
1057
    SendMsg(2142, pos, 0);
 
1058
}
 
1059
 
 
1060
// Returns the position at the start of the selection.
 
1061
int wxStyledTextCtrl::GetSelectionStart() {
 
1062
    return SendMsg(2143, 0, 0);
 
1063
}
 
1064
 
 
1065
// Sets the position that ends the selection - this becomes the currentPosition.
 
1066
void wxStyledTextCtrl::SetSelectionEnd(int pos) {
 
1067
    SendMsg(2144, pos, 0);
 
1068
}
 
1069
 
 
1070
// Returns the position at the end of the selection.
 
1071
int wxStyledTextCtrl::GetSelectionEnd() {
 
1072
    return SendMsg(2145, 0, 0);
 
1073
}
 
1074
 
 
1075
// Sets the print magnification added to the point size of each style for printing.
 
1076
void wxStyledTextCtrl::SetPrintMagnification(int magnification) {
 
1077
    SendMsg(2146, magnification, 0);
 
1078
}
 
1079
 
 
1080
// Returns the print magnification.
 
1081
int wxStyledTextCtrl::GetPrintMagnification() {
 
1082
    return SendMsg(2147, 0, 0);
 
1083
}
 
1084
 
 
1085
// Modify colours when printing for clearer printed text.
 
1086
void wxStyledTextCtrl::SetPrintColourMode(int mode) {
 
1087
    SendMsg(2148, mode, 0);
 
1088
}
 
1089
 
 
1090
// Returns the print colour mode.
 
1091
int wxStyledTextCtrl::GetPrintColourMode() {
 
1092
    return SendMsg(2149, 0, 0);
 
1093
}
 
1094
 
 
1095
// Find some text in the document.
 
1096
int wxStyledTextCtrl::FindText(int minPos, int maxPos,
 
1097
               const wxString& text,
 
1098
               int flags) {
 
1099
            TextToFind  ft;
 
1100
            ft.chrg.cpMin = minPos;
 
1101
            ft.chrg.cpMax = maxPos;
 
1102
            wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
 
1103
            ft.lpstrText = (char*)(const char*)buf;
 
1104
 
 
1105
            return SendMsg(2150, flags, (long)&ft);
 
1106
}
 
1107
 
 
1108
// On Windows, will draw the document into a display context such as a printer.
 
1109
 int wxStyledTextCtrl::FormatRange(bool   doDraw,
 
1110
                int    startPos,
 
1111
                int    endPos,
 
1112
                wxDC*  draw,
 
1113
                wxDC*  target, 
 
1114
                wxRect renderRect,
 
1115
                wxRect pageRect) {
 
1116
             RangeToFormat fr;
 
1117
 
 
1118
             if (endPos < startPos) {
 
1119
                 int temp = startPos;
 
1120
                 startPos = endPos;
 
1121
                 endPos = temp;
 
1122
             }
 
1123
             fr.hdc = draw;
 
1124
             fr.hdcTarget = target;
 
1125
             fr.rc.top = renderRect.GetTop();
 
1126
             fr.rc.left = renderRect.GetLeft();
 
1127
             fr.rc.right = renderRect.GetRight();
 
1128
             fr.rc.bottom = renderRect.GetBottom();
 
1129
             fr.rcPage.top = pageRect.GetTop();
 
1130
             fr.rcPage.left = pageRect.GetLeft();
 
1131
             fr.rcPage.right = pageRect.GetRight();
 
1132
             fr.rcPage.bottom = pageRect.GetBottom();
 
1133
             fr.chrg.cpMin = startPos;
 
1134
             fr.chrg.cpMax = endPos;
 
1135
 
 
1136
             return SendMsg(2151, doDraw, (long)&fr);
 
1137
}
 
1138
 
 
1139
// Retrieve the display line at the top of the display.
 
1140
int wxStyledTextCtrl::GetFirstVisibleLine() {
 
1141
    return SendMsg(2152, 0, 0);
 
1142
}
 
1143
 
 
1144
// Retrieve the contents of a line.
 
1145
wxString wxStyledTextCtrl::GetLine(int line) {
 
1146
         int len = LineLength(line);
 
1147
         if (!len) return wxEmptyString;
 
1148
 
 
1149
         wxMemoryBuffer mbuf(len+1);
 
1150
         char* buf = (char*)mbuf.GetWriteBuf(len+1);
 
1151
         SendMsg(2153, line, (long)buf);
 
1152
         mbuf.UngetWriteBuf(len);
 
1153
         mbuf.AppendByte(0);
 
1154
         return stc2wx(buf);
 
1155
}
 
1156
 
 
1157
// Returns the number of lines in the document. There is always at least one.
 
1158
int wxStyledTextCtrl::GetLineCount() {
 
1159
    return SendMsg(2154, 0, 0);
 
1160
}
 
1161
 
 
1162
// Sets the size in pixels of the left margin.
 
1163
void wxStyledTextCtrl::SetMarginLeft(int pixelWidth) {
 
1164
    SendMsg(2155, 0, pixelWidth);
 
1165
}
 
1166
 
 
1167
// Returns the size in pixels of the left margin.
 
1168
int wxStyledTextCtrl::GetMarginLeft() {
 
1169
    return SendMsg(2156, 0, 0);
 
1170
}
 
1171
 
 
1172
// Sets the size in pixels of the right margin.
 
1173
void wxStyledTextCtrl::SetMarginRight(int pixelWidth) {
 
1174
    SendMsg(2157, 0, pixelWidth);
 
1175
}
 
1176
 
 
1177
// Returns the size in pixels of the right margin.
 
1178
int wxStyledTextCtrl::GetMarginRight() {
 
1179
    return SendMsg(2158, 0, 0);
 
1180
}
 
1181
 
 
1182
// Is the document different from when it was last saved?
 
1183
bool wxStyledTextCtrl::GetModify() {
 
1184
    return SendMsg(2159, 0, 0) != 0;
 
1185
}
 
1186
 
 
1187
// Select a range of text.
 
1188
void wxStyledTextCtrl::SetSelection(int start, int end) {
 
1189
    SendMsg(2160, start, end);
 
1190
}
 
1191
 
 
1192
// Retrieve the selected text.
 
1193
wxString wxStyledTextCtrl::GetSelectedText() {
 
1194
         int   start;
 
1195
         int   end;
 
1196
 
 
1197
         GetSelection(&start, &end);
 
1198
         int   len  = end - start;
 
1199
         if (!len) return wxEmptyString;
 
1200
 
 
1201
         wxMemoryBuffer mbuf(len+2);
 
1202
         char* buf = (char*)mbuf.GetWriteBuf(len+1);
 
1203
         SendMsg(2161, 0, (long)buf);
 
1204
         mbuf.UngetWriteBuf(len);
 
1205
         mbuf.AppendByte(0);
 
1206
         return stc2wx(buf);
 
1207
}
 
1208
 
 
1209
// Retrieve a range of text.
 
1210
wxString wxStyledTextCtrl::GetTextRange(int startPos, int endPos) {
 
1211
         if (endPos < startPos) {
 
1212
             int temp = startPos;
 
1213
             startPos = endPos;
 
1214
             endPos = temp;
 
1215
         }
 
1216
         int   len  = endPos - startPos;
 
1217
         if (!len) return wxEmptyString;
 
1218
         wxMemoryBuffer mbuf(len+1);
 
1219
         char* buf = (char*)mbuf.GetWriteBuf(len);
 
1220
         TextRange tr;
 
1221
         tr.lpstrText = buf;
 
1222
         tr.chrg.cpMin = startPos;
 
1223
         tr.chrg.cpMax = endPos;
 
1224
         SendMsg(2162, 0, (long)&tr);
 
1225
         mbuf.UngetWriteBuf(len);
 
1226
         mbuf.AppendByte(0);
 
1227
         return stc2wx(buf);
 
1228
}
 
1229
 
 
1230
// Draw the selection in normal style or with selection highlighted.
 
1231
void wxStyledTextCtrl::HideSelection(bool normal) {
 
1232
    SendMsg(2163, normal, 0);
 
1233
}
 
1234
 
 
1235
// Retrieve the line containing a position.
 
1236
int wxStyledTextCtrl::LineFromPosition(int pos) {
 
1237
    return SendMsg(2166, pos, 0);
 
1238
}
 
1239
 
 
1240
// Retrieve the position at the start of a line.
 
1241
int wxStyledTextCtrl::PositionFromLine(int line) {
 
1242
    return SendMsg(2167, line, 0);
 
1243
}
 
1244
 
 
1245
// Scroll horizontally and vertically.
 
1246
void wxStyledTextCtrl::LineScroll(int columns, int lines) {
 
1247
    SendMsg(2168, columns, lines);
 
1248
}
 
1249
 
 
1250
// Ensure the caret is visible.
 
1251
void wxStyledTextCtrl::EnsureCaretVisible() {
 
1252
    SendMsg(2169, 0, 0);
 
1253
}
 
1254
 
 
1255
// Replace the selected text with the argument text.
 
1256
void wxStyledTextCtrl::ReplaceSelection(const wxString& text) {
 
1257
    SendMsg(2170, 0, (long)(const char*)wx2stc(text));
 
1258
}
 
1259
 
 
1260
// Set to read only or read write.
 
1261
void wxStyledTextCtrl::SetReadOnly(bool readOnly) {
 
1262
    SendMsg(2171, readOnly, 0);
 
1263
}
 
1264
 
 
1265
// Will a paste succeed?
 
1266
bool wxStyledTextCtrl::CanPaste() {
 
1267
    return SendMsg(2173, 0, 0) != 0;
 
1268
}
 
1269
 
 
1270
// Are there any undoable actions in the undo history?
 
1271
bool wxStyledTextCtrl::CanUndo() {
 
1272
    return SendMsg(2174, 0, 0) != 0;
 
1273
}
 
1274
 
 
1275
// Delete the undo history.
 
1276
void wxStyledTextCtrl::EmptyUndoBuffer() {
 
1277
    SendMsg(2175, 0, 0);
 
1278
}
 
1279
 
 
1280
// Undo one action in the undo history.
 
1281
void wxStyledTextCtrl::Undo() {
 
1282
    SendMsg(2176, 0, 0);
 
1283
}
 
1284
 
 
1285
// Cut the selection to the clipboard.
 
1286
void wxStyledTextCtrl::Cut() {
 
1287
    SendMsg(2177, 0, 0);
 
1288
}
 
1289
 
 
1290
// Copy the selection to the clipboard.
 
1291
void wxStyledTextCtrl::Copy() {
 
1292
    SendMsg(2178, 0, 0);
 
1293
}
 
1294
 
 
1295
// Paste the contents of the clipboard into the document replacing the selection.
 
1296
void wxStyledTextCtrl::Paste() {
 
1297
    SendMsg(2179, 0, 0);
 
1298
}
 
1299
 
 
1300
// Clear the selection.
 
1301
void wxStyledTextCtrl::Clear() {
 
1302
    SendMsg(2180, 0, 0);
 
1303
}
 
1304
 
 
1305
// Replace the contents of the document with the argument text.
 
1306
void wxStyledTextCtrl::SetText(const wxString& text) {
 
1307
    SendMsg(2181, 0, (long)(const char*)wx2stc(text));
 
1308
}
 
1309
 
 
1310
// Retrieve all the text in the document.
 
1311
wxString wxStyledTextCtrl::GetText() {
 
1312
         int len  = GetTextLength();
 
1313
         wxMemoryBuffer mbuf(len+1);   // leave room for the null...
 
1314
         char* buf = (char*)mbuf.GetWriteBuf(len+1);
 
1315
         SendMsg(2182, len+1, (long)buf);
 
1316
         mbuf.UngetWriteBuf(len);
 
1317
         mbuf.AppendByte(0);
 
1318
         return stc2wx(buf);
 
1319
}
 
1320
 
 
1321
// Retrieve the number of characters in the document.
 
1322
int wxStyledTextCtrl::GetTextLength() {
 
1323
    return SendMsg(2183, 0, 0);
 
1324
}
 
1325
 
 
1326
// Set to overtype (true) or insert mode.
 
1327
void wxStyledTextCtrl::SetOvertype(bool overtype) {
 
1328
    SendMsg(2186, overtype, 0);
 
1329
}
 
1330
 
 
1331
// Returns true if overtype mode is active otherwise false is returned.
 
1332
bool wxStyledTextCtrl::GetOvertype() {
 
1333
    return SendMsg(2187, 0, 0) != 0;
 
1334
}
 
1335
 
 
1336
// Set the width of the insert mode caret.
 
1337
void wxStyledTextCtrl::SetCaretWidth(int pixelWidth) {
 
1338
    SendMsg(2188, pixelWidth, 0);
 
1339
}
 
1340
 
 
1341
// Returns the width of the insert mode caret.
 
1342
int wxStyledTextCtrl::GetCaretWidth() {
 
1343
    return SendMsg(2189, 0, 0);
 
1344
}
 
1345
 
 
1346
// Sets the position that starts the target which is used for updating the
 
1347
// document without affecting the scroll position.
 
1348
void wxStyledTextCtrl::SetTargetStart(int pos) {
 
1349
    SendMsg(2190, pos, 0);
 
1350
}
 
1351
 
 
1352
// Get the position that starts the target.
 
1353
int wxStyledTextCtrl::GetTargetStart() {
 
1354
    return SendMsg(2191, 0, 0);
 
1355
}
 
1356
 
 
1357
// Sets the position that ends the target which is used for updating the
 
1358
// document without affecting the scroll position.
 
1359
void wxStyledTextCtrl::SetTargetEnd(int pos) {
 
1360
    SendMsg(2192, pos, 0);
 
1361
}
 
1362
 
 
1363
// Get the position that ends the target.
 
1364
int wxStyledTextCtrl::GetTargetEnd() {
 
1365
    return SendMsg(2193, 0, 0);
 
1366
}
 
1367
 
 
1368
// Replace the target text with the argument text.
 
1369
// Text is counted so it can contain NULs.
 
1370
// Returns the length of the replacement text.
 
1371
 
 
1372
     int wxStyledTextCtrl::ReplaceTarget(const wxString& text) {
 
1373
         wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
 
1374
         return SendMsg(2194, strlen(buf), (long)(const char*)buf);
 
1375
}
 
1376
 
 
1377
// Replace the target text with the argument text after \d processing.
 
1378
// Text is counted so it can contain NULs.
 
1379
// Looks for \d where d is between 1 and 9 and replaces these with the strings
 
1380
// matched in the last search operation which were surrounded by \( and \).
 
1381
// Returns the length of the replacement text including any change
 
1382
// caused by processing the \d patterns.
 
1383
 
 
1384
     int wxStyledTextCtrl::ReplaceTargetRE(const wxString& text) {
 
1385
         wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
 
1386
         return SendMsg(2195, strlen(buf), (long)(const char*)buf);
 
1387
}
 
1388
 
 
1389
// Search for a counted string in the target and set the target to the found
 
1390
// range. Text is counted so it can contain NULs.
 
1391
// Returns length of range or -1 for failure in which case target is not moved.
 
1392
 
 
1393
     int wxStyledTextCtrl::SearchInTarget(const wxString& text) {
 
1394
         wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
 
1395
         return SendMsg(2197, strlen(buf), (long)(const char*)buf);
 
1396
}
 
1397
 
 
1398
// Set the search flags used by SearchInTarget.
 
1399
void wxStyledTextCtrl::SetSearchFlags(int flags) {
 
1400
    SendMsg(2198, flags, 0);
 
1401
}
 
1402
 
 
1403
// Get the search flags used by SearchInTarget.
 
1404
int wxStyledTextCtrl::GetSearchFlags() {
 
1405
    return SendMsg(2199, 0, 0);
 
1406
}
 
1407
 
 
1408
// Show a call tip containing a definition near position pos.
 
1409
void wxStyledTextCtrl::CallTipShow(int pos, const wxString& definition) {
 
1410
    SendMsg(2200, pos, (long)(const char*)wx2stc(definition));
 
1411
}
 
1412
 
 
1413
// Remove the call tip from the screen.
 
1414
void wxStyledTextCtrl::CallTipCancel() {
 
1415
    SendMsg(2201, 0, 0);
 
1416
}
 
1417
 
 
1418
// Is there an active call tip?
 
1419
bool wxStyledTextCtrl::CallTipActive() {
 
1420
    return SendMsg(2202, 0, 0) != 0;
 
1421
}
 
1422
 
 
1423
// Retrieve the position where the caret was before displaying the call tip.
 
1424
int wxStyledTextCtrl::CallTipPosAtStart() {
 
1425
    return SendMsg(2203, 0, 0);
 
1426
}
 
1427
 
 
1428
// Highlight a segment of the definition.
 
1429
void wxStyledTextCtrl::CallTipSetHighlight(int start, int end) {
 
1430
    SendMsg(2204, start, end);
 
1431
}
 
1432
 
 
1433
// Set the background colour for the call tip.
 
1434
void wxStyledTextCtrl::CallTipSetBackground(const wxColour& back) {
 
1435
    SendMsg(2205, wxColourAsLong(back), 0);
 
1436
}
 
1437
 
 
1438
// Set the foreground colour for the call tip.
 
1439
void wxStyledTextCtrl::CallTipSetForeground(const wxColour& fore) {
 
1440
    SendMsg(2206, wxColourAsLong(fore), 0);
 
1441
}
 
1442
 
 
1443
// Set the foreground colour for the highlighted part of the call tip.
 
1444
void wxStyledTextCtrl::CallTipSetForegroundHighlight(const wxColour& fore) {
 
1445
    SendMsg(2207, wxColourAsLong(fore), 0);
 
1446
}
 
1447
 
 
1448
// Find the display line of a document line taking hidden lines into account.
 
1449
int wxStyledTextCtrl::VisibleFromDocLine(int line) {
 
1450
    return SendMsg(2220, line, 0);
 
1451
}
 
1452
 
 
1453
// Find the document line of a display line taking hidden lines into account.
 
1454
int wxStyledTextCtrl::DocLineFromVisible(int lineDisplay) {
 
1455
    return SendMsg(2221, lineDisplay, 0);
 
1456
}
 
1457
 
 
1458
// The number of display lines needed to wrap a document line
 
1459
int wxStyledTextCtrl::WrapCount(int line) {
 
1460
    return SendMsg(2235, line, 0);
 
1461
}
 
1462
 
 
1463
// Set the fold level of a line.
 
1464
// This encodes an integer level along with flags indicating whether the
 
1465
// line is a header and whether it is effectively white space.
 
1466
void wxStyledTextCtrl::SetFoldLevel(int line, int level) {
 
1467
    SendMsg(2222, line, level);
 
1468
}
 
1469
 
 
1470
// Retrieve the fold level of a line.
 
1471
int wxStyledTextCtrl::GetFoldLevel(int line) {
 
1472
    return SendMsg(2223, line, 0);
 
1473
}
 
1474
 
 
1475
// Find the last child line of a header line.
 
1476
int wxStyledTextCtrl::GetLastChild(int line, int level) {
 
1477
    return SendMsg(2224, line, level);
 
1478
}
 
1479
 
 
1480
// Find the parent line of a child line.
 
1481
int wxStyledTextCtrl::GetFoldParent(int line) {
 
1482
    return SendMsg(2225, line, 0);
 
1483
}
 
1484
 
 
1485
// Make a range of lines visible.
 
1486
void wxStyledTextCtrl::ShowLines(int lineStart, int lineEnd) {
 
1487
    SendMsg(2226, lineStart, lineEnd);
 
1488
}
 
1489
 
 
1490
// Make a range of lines invisible.
 
1491
void wxStyledTextCtrl::HideLines(int lineStart, int lineEnd) {
 
1492
    SendMsg(2227, lineStart, lineEnd);
 
1493
}
 
1494
 
 
1495
// Is a line visible?
 
1496
bool wxStyledTextCtrl::GetLineVisible(int line) {
 
1497
    return SendMsg(2228, line, 0) != 0;
 
1498
}
 
1499
 
 
1500
// Show the children of a header line.
 
1501
void wxStyledTextCtrl::SetFoldExpanded(int line, bool expanded) {
 
1502
    SendMsg(2229, line, expanded);
 
1503
}
 
1504
 
 
1505
// Is a header line expanded?
 
1506
bool wxStyledTextCtrl::GetFoldExpanded(int line) {
 
1507
    return SendMsg(2230, line, 0) != 0;
 
1508
}
 
1509
 
 
1510
// Switch a header line between expanded and contracted.
 
1511
void wxStyledTextCtrl::ToggleFold(int line) {
 
1512
    SendMsg(2231, line, 0);
 
1513
}
 
1514
 
 
1515
// Ensure a particular line is visible by expanding any header line hiding it.
 
1516
void wxStyledTextCtrl::EnsureVisible(int line) {
 
1517
    SendMsg(2232, line, 0);
 
1518
}
 
1519
 
 
1520
// Set some style options for folding.
 
1521
void wxStyledTextCtrl::SetFoldFlags(int flags) {
 
1522
    SendMsg(2233, flags, 0);
 
1523
}
 
1524
 
 
1525
// Ensure a particular line is visible by expanding any header line hiding it.
 
1526
// Use the currently set visibility policy to determine which range to display.
 
1527
void wxStyledTextCtrl::EnsureVisibleEnforcePolicy(int line) {
 
1528
    SendMsg(2234, line, 0);
 
1529
}
 
1530
 
 
1531
// Sets whether a tab pressed when caret is within indentation indents.
 
1532
void wxStyledTextCtrl::SetTabIndents(bool tabIndents) {
 
1533
    SendMsg(2260, tabIndents, 0);
 
1534
}
 
1535
 
 
1536
// Does a tab pressed when caret is within indentation indent?
 
1537
bool wxStyledTextCtrl::GetTabIndents() {
 
1538
    return SendMsg(2261, 0, 0) != 0;
 
1539
}
 
1540
 
 
1541
// Sets whether a backspace pressed when caret is within indentation unindents.
 
1542
void wxStyledTextCtrl::SetBackSpaceUnIndents(bool bsUnIndents) {
 
1543
    SendMsg(2262, bsUnIndents, 0);
 
1544
}
 
1545
 
 
1546
// Does a backspace pressed when caret is within indentation unindent?
 
1547
bool wxStyledTextCtrl::GetBackSpaceUnIndents() {
 
1548
    return SendMsg(2263, 0, 0) != 0;
 
1549
}
 
1550
 
 
1551
// Sets the time the mouse must sit still to generate a mouse dwell event.
 
1552
void wxStyledTextCtrl::SetMouseDwellTime(int periodMilliseconds) {
 
1553
    SendMsg(2264, periodMilliseconds, 0);
 
1554
}
 
1555
 
 
1556
// Retrieve the time the mouse must sit still to generate a mouse dwell event.
 
1557
int wxStyledTextCtrl::GetMouseDwellTime() {
 
1558
    return SendMsg(2265, 0, 0);
 
1559
}
 
1560
 
 
1561
// Get position of start of word.
 
1562
int wxStyledTextCtrl::WordStartPosition(int pos, bool onlyWordCharacters) {
 
1563
    return SendMsg(2266, pos, onlyWordCharacters);
 
1564
}
 
1565
 
 
1566
// Get position of end of word.
 
1567
int wxStyledTextCtrl::WordEndPosition(int pos, bool onlyWordCharacters) {
 
1568
    return SendMsg(2267, pos, onlyWordCharacters);
 
1569
}
 
1570
 
 
1571
// Sets whether text is word wrapped.
 
1572
void wxStyledTextCtrl::SetWrapMode(int mode) {
 
1573
    SendMsg(2268, mode, 0);
 
1574
}
 
1575
 
 
1576
// Retrieve whether text is word wrapped.
 
1577
int wxStyledTextCtrl::GetWrapMode() {
 
1578
    return SendMsg(2269, 0, 0);
 
1579
}
 
1580
 
 
1581
// Set the display mode of visual flags for wrapped lines.
 
1582
void wxStyledTextCtrl::SetWrapVisualFlags(int wrapVisualFlags) {
 
1583
    SendMsg(2460, wrapVisualFlags, 0);
 
1584
}
 
1585
 
 
1586
// Retrive the display mode of visual flags for wrapped lines.
 
1587
int wxStyledTextCtrl::GetWrapVisualFlags() {
 
1588
    return SendMsg(2461, 0, 0);
 
1589
}
 
1590
 
 
1591
// Set the location of visual flags for wrapped lines.
 
1592
void wxStyledTextCtrl::SetWrapVisualFlagsLocation(int wrapVisualFlagsLocation) {
 
1593
    SendMsg(2462, wrapVisualFlagsLocation, 0);
 
1594
}
 
1595
 
 
1596
// Retrive the location of visual flags for wrapped lines.
 
1597
int wxStyledTextCtrl::GetWrapVisualFlagsLocation() {
 
1598
    return SendMsg(2463, 0, 0);
 
1599
}
 
1600
 
 
1601
// Set the start indent for wrapped lines.
 
1602
void wxStyledTextCtrl::SetWrapStartIndent(int indent) {
 
1603
    SendMsg(2464, indent, 0);
 
1604
}
 
1605
 
 
1606
// Retrive the start indent for wrapped lines.
 
1607
int wxStyledTextCtrl::GetWrapStartIndent() {
 
1608
    return SendMsg(2465, 0, 0);
 
1609
}
 
1610
 
 
1611
// Sets the degree of caching of layout information.
 
1612
void wxStyledTextCtrl::SetLayoutCache(int mode) {
 
1613
    SendMsg(2272, mode, 0);
 
1614
}
 
1615
 
 
1616
// Retrieve the degree of caching of layout information.
 
1617
int wxStyledTextCtrl::GetLayoutCache() {
 
1618
    return SendMsg(2273, 0, 0);
 
1619
}
 
1620
 
 
1621
// Sets the document width assumed for scrolling.
 
1622
void wxStyledTextCtrl::SetScrollWidth(int pixelWidth) {
 
1623
    SendMsg(2274, pixelWidth, 0);
 
1624
}
 
1625
 
 
1626
// Retrieve the document width assumed for scrolling.
 
1627
int wxStyledTextCtrl::GetScrollWidth() {
 
1628
    return SendMsg(2275, 0, 0);
 
1629
}
 
1630
 
 
1631
// Measure the pixel width of some text in a particular style.
 
1632
// NUL terminated text argument.
 
1633
// Does not handle tab or control characters.
 
1634
int wxStyledTextCtrl::TextWidth(int style, const wxString& text) {
 
1635
    return SendMsg(2276, style, (long)(const char*)wx2stc(text));
 
1636
}
 
1637
 
 
1638
// Sets the scroll range so that maximum scroll position has
 
1639
// the last line at the bottom of the view (default).
 
1640
// Setting this to false allows scrolling one page below the last line.
 
1641
void wxStyledTextCtrl::SetEndAtLastLine(bool endAtLastLine) {
 
1642
    SendMsg(2277, endAtLastLine, 0);
 
1643
}
 
1644
 
 
1645
// Retrieve whether the maximum scroll position has the last
 
1646
// line at the bottom of the view.
 
1647
bool wxStyledTextCtrl::GetEndAtLastLine() {
 
1648
    return SendMsg(2278, 0, 0) != 0;
 
1649
}
 
1650
 
 
1651
// Retrieve the height of a particular line of text in pixels.
 
1652
int wxStyledTextCtrl::TextHeight(int line) {
 
1653
    return SendMsg(2279, line, 0);
 
1654
}
 
1655
 
 
1656
// Show or hide the vertical scroll bar.
 
1657
void wxStyledTextCtrl::SetUseVerticalScrollBar(bool show) {
 
1658
    SendMsg(2280, show, 0);
 
1659
}
 
1660
 
 
1661
// Is the vertical scroll bar visible?
 
1662
bool wxStyledTextCtrl::GetUseVerticalScrollBar() {
 
1663
    return SendMsg(2281, 0, 0) != 0;
 
1664
}
 
1665
 
 
1666
// Append a string to the end of the document without changing the selection.
 
1667
void wxStyledTextCtrl::AppendText(const wxString& text) {
 
1668
                    wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
 
1669
                    SendMsg(2282, strlen(buf), (long)(const char*)buf);
 
1670
}
 
1671
 
 
1672
// Is drawing done in two phases with backgrounds drawn before foregrounds?
 
1673
bool wxStyledTextCtrl::GetTwoPhaseDraw() {
 
1674
    return SendMsg(2283, 0, 0) != 0;
 
1675
}
 
1676
 
 
1677
// In twoPhaseDraw mode, drawing is performed in two phases, first the background
 
1678
// and then the foreground. This avoids chopping off characters that overlap the next run.
 
1679
void wxStyledTextCtrl::SetTwoPhaseDraw(bool twoPhase) {
 
1680
    SendMsg(2284, twoPhase, 0);
 
1681
}
 
1682
 
 
1683
// Make the target range start and end be the same as the selection range start and end.
 
1684
void wxStyledTextCtrl::TargetFromSelection() {
 
1685
    SendMsg(2287, 0, 0);
 
1686
}
 
1687
 
 
1688
// Join the lines in the target.
 
1689
void wxStyledTextCtrl::LinesJoin() {
 
1690
    SendMsg(2288, 0, 0);
 
1691
}
 
1692
 
 
1693
// Split the lines in the target into lines that are less wide than pixelWidth
 
1694
// where possible.
 
1695
void wxStyledTextCtrl::LinesSplit(int pixelWidth) {
 
1696
    SendMsg(2289, pixelWidth, 0);
 
1697
}
 
1698
 
 
1699
// Set the colours used as a chequerboard pattern in the fold margin
 
1700
void wxStyledTextCtrl::SetFoldMarginColour(bool useSetting, const wxColour& back) {
 
1701
    SendMsg(2290, useSetting, wxColourAsLong(back));
 
1702
}
 
1703
void wxStyledTextCtrl::SetFoldMarginHiColour(bool useSetting, const wxColour& fore) {
 
1704
    SendMsg(2291, useSetting, wxColourAsLong(fore));
 
1705
}
 
1706
 
 
1707
// Move caret down one line.
 
1708
void wxStyledTextCtrl::LineDown() {
 
1709
    SendMsg(2300, 0, 0);
 
1710
}
 
1711
 
 
1712
// Move caret down one line extending selection to new caret position.
 
1713
void wxStyledTextCtrl::LineDownExtend() {
 
1714
    SendMsg(2301, 0, 0);
 
1715
}
 
1716
 
 
1717
// Move caret up one line.
 
1718
void wxStyledTextCtrl::LineUp() {
 
1719
    SendMsg(2302, 0, 0);
 
1720
}
 
1721
 
 
1722
// Move caret up one line extending selection to new caret position.
 
1723
void wxStyledTextCtrl::LineUpExtend() {
 
1724
    SendMsg(2303, 0, 0);
 
1725
}
 
1726
 
 
1727
// Move caret left one character.
 
1728
void wxStyledTextCtrl::CharLeft() {
 
1729
    SendMsg(2304, 0, 0);
 
1730
}
 
1731
 
 
1732
// Move caret left one character extending selection to new caret position.
 
1733
void wxStyledTextCtrl::CharLeftExtend() {
 
1734
    SendMsg(2305, 0, 0);
 
1735
}
 
1736
 
 
1737
// Move caret right one character.
 
1738
void wxStyledTextCtrl::CharRight() {
 
1739
    SendMsg(2306, 0, 0);
 
1740
}
 
1741
 
 
1742
// Move caret right one character extending selection to new caret position.
 
1743
void wxStyledTextCtrl::CharRightExtend() {
 
1744
    SendMsg(2307, 0, 0);
 
1745
}
 
1746
 
 
1747
// Move caret left one word.
 
1748
void wxStyledTextCtrl::WordLeft() {
 
1749
    SendMsg(2308, 0, 0);
 
1750
}
 
1751
 
 
1752
// Move caret left one word extending selection to new caret position.
 
1753
void wxStyledTextCtrl::WordLeftExtend() {
 
1754
    SendMsg(2309, 0, 0);
 
1755
}
 
1756
 
 
1757
// Move caret right one word.
 
1758
void wxStyledTextCtrl::WordRight() {
 
1759
    SendMsg(2310, 0, 0);
 
1760
}
 
1761
 
 
1762
// Move caret right one word extending selection to new caret position.
 
1763
void wxStyledTextCtrl::WordRightExtend() {
 
1764
    SendMsg(2311, 0, 0);
 
1765
}
 
1766
 
 
1767
// Move caret to first position on line.
 
1768
void wxStyledTextCtrl::Home() {
 
1769
    SendMsg(2312, 0, 0);
 
1770
}
 
1771
 
 
1772
// Move caret to first position on line extending selection to new caret position.
 
1773
void wxStyledTextCtrl::HomeExtend() {
 
1774
    SendMsg(2313, 0, 0);
 
1775
}
 
1776
 
 
1777
// Move caret to last position on line.
 
1778
void wxStyledTextCtrl::LineEnd() {
 
1779
    SendMsg(2314, 0, 0);
 
1780
}
 
1781
 
 
1782
// Move caret to last position on line extending selection to new caret position.
 
1783
void wxStyledTextCtrl::LineEndExtend() {
 
1784
    SendMsg(2315, 0, 0);
 
1785
}
 
1786
 
 
1787
// Move caret to first position in document.
 
1788
void wxStyledTextCtrl::DocumentStart() {
 
1789
    SendMsg(2316, 0, 0);
 
1790
}
 
1791
 
 
1792
// Move caret to first position in document extending selection to new caret position.
 
1793
void wxStyledTextCtrl::DocumentStartExtend() {
 
1794
    SendMsg(2317, 0, 0);
 
1795
}
 
1796
 
 
1797
// Move caret to last position in document.
 
1798
void wxStyledTextCtrl::DocumentEnd() {
 
1799
    SendMsg(2318, 0, 0);
 
1800
}
 
1801
 
 
1802
// Move caret to last position in document extending selection to new caret position.
 
1803
void wxStyledTextCtrl::DocumentEndExtend() {
 
1804
    SendMsg(2319, 0, 0);
 
1805
}
 
1806
 
 
1807
// Move caret one page up.
 
1808
void wxStyledTextCtrl::PageUp() {
 
1809
    SendMsg(2320, 0, 0);
 
1810
}
 
1811
 
 
1812
// Move caret one page up extending selection to new caret position.
 
1813
void wxStyledTextCtrl::PageUpExtend() {
 
1814
    SendMsg(2321, 0, 0);
 
1815
}
 
1816
 
 
1817
// Move caret one page down.
 
1818
void wxStyledTextCtrl::PageDown() {
 
1819
    SendMsg(2322, 0, 0);
 
1820
}
 
1821
 
 
1822
// Move caret one page down extending selection to new caret position.
 
1823
void wxStyledTextCtrl::PageDownExtend() {
 
1824
    SendMsg(2323, 0, 0);
 
1825
}
 
1826
 
 
1827
// Switch from insert to overtype mode or the reverse.
 
1828
void wxStyledTextCtrl::EditToggleOvertype() {
 
1829
    SendMsg(2324, 0, 0);
 
1830
}
 
1831
 
 
1832
// Cancel any modes such as call tip or auto-completion list display.
 
1833
void wxStyledTextCtrl::Cancel() {
 
1834
    SendMsg(2325, 0, 0);
 
1835
}
 
1836
 
 
1837
// Delete the selection or if no selection, the character before the caret.
 
1838
void wxStyledTextCtrl::DeleteBack() {
 
1839
    SendMsg(2326, 0, 0);
 
1840
}
 
1841
 
 
1842
// If selection is empty or all on one line replace the selection with a tab character.
 
1843
// If more than one line selected, indent the lines.
 
1844
void wxStyledTextCtrl::Tab() {
 
1845
    SendMsg(2327, 0, 0);
 
1846
}
 
1847
 
 
1848
// Dedent the selected lines.
 
1849
void wxStyledTextCtrl::BackTab() {
 
1850
    SendMsg(2328, 0, 0);
 
1851
}
 
1852
 
 
1853
// Insert a new line, may use a CRLF, CR or LF depending on EOL mode.
 
1854
void wxStyledTextCtrl::NewLine() {
 
1855
    SendMsg(2329, 0, 0);
 
1856
}
 
1857
 
 
1858
// Insert a Form Feed character.
 
1859
void wxStyledTextCtrl::FormFeed() {
 
1860
    SendMsg(2330, 0, 0);
 
1861
}
 
1862
 
 
1863
// Move caret to before first visible character on line.
 
1864
// If already there move to first character on line.
 
1865
void wxStyledTextCtrl::VCHome() {
 
1866
    SendMsg(2331, 0, 0);
 
1867
}
 
1868
 
 
1869
// Like VCHome but extending selection to new caret position.
 
1870
void wxStyledTextCtrl::VCHomeExtend() {
 
1871
    SendMsg(2332, 0, 0);
 
1872
}
 
1873
 
 
1874
// Magnify the displayed text by increasing the sizes by 1 point.
 
1875
void wxStyledTextCtrl::ZoomIn() {
 
1876
    SendMsg(2333, 0, 0);
 
1877
}
 
1878
 
 
1879
// Make the displayed text smaller by decreasing the sizes by 1 point.
 
1880
void wxStyledTextCtrl::ZoomOut() {
 
1881
    SendMsg(2334, 0, 0);
 
1882
}
 
1883
 
 
1884
// Delete the word to the left of the caret.
 
1885
void wxStyledTextCtrl::DelWordLeft() {
 
1886
    SendMsg(2335, 0, 0);
 
1887
}
 
1888
 
 
1889
// Delete the word to the right of the caret.
 
1890
void wxStyledTextCtrl::DelWordRight() {
 
1891
    SendMsg(2336, 0, 0);
 
1892
}
 
1893
 
 
1894
// Cut the line containing the caret.
 
1895
void wxStyledTextCtrl::LineCut() {
 
1896
    SendMsg(2337, 0, 0);
 
1897
}
 
1898
 
 
1899
// Delete the line containing the caret.
 
1900
void wxStyledTextCtrl::LineDelete() {
 
1901
    SendMsg(2338, 0, 0);
 
1902
}
 
1903
 
 
1904
// Switch the current line with the previous.
 
1905
void wxStyledTextCtrl::LineTranspose() {
 
1906
    SendMsg(2339, 0, 0);
 
1907
}
 
1908
 
 
1909
// Duplicate the current line.
 
1910
void wxStyledTextCtrl::LineDuplicate() {
 
1911
    SendMsg(2404, 0, 0);
 
1912
}
 
1913
 
 
1914
// Transform the selection to lower case.
 
1915
void wxStyledTextCtrl::LowerCase() {
 
1916
    SendMsg(2340, 0, 0);
 
1917
}
 
1918
 
 
1919
// Transform the selection to upper case.
 
1920
void wxStyledTextCtrl::UpperCase() {
 
1921
    SendMsg(2341, 0, 0);
 
1922
}
 
1923
 
 
1924
// Scroll the document down, keeping the caret visible.
 
1925
void wxStyledTextCtrl::LineScrollDown() {
 
1926
    SendMsg(2342, 0, 0);
 
1927
}
 
1928
 
 
1929
// Scroll the document up, keeping the caret visible.
 
1930
void wxStyledTextCtrl::LineScrollUp() {
 
1931
    SendMsg(2343, 0, 0);
 
1932
}
 
1933
 
 
1934
// Delete the selection or if no selection, the character before the caret.
 
1935
// Will not delete the character before at the start of a line.
 
1936
void wxStyledTextCtrl::DeleteBackNotLine() {
 
1937
    SendMsg(2344, 0, 0);
 
1938
}
 
1939
 
 
1940
// Move caret to first position on display line.
 
1941
void wxStyledTextCtrl::HomeDisplay() {
 
1942
    SendMsg(2345, 0, 0);
 
1943
}
 
1944
 
 
1945
// Move caret to first position on display line extending selection to
 
1946
// new caret position.
 
1947
void wxStyledTextCtrl::HomeDisplayExtend() {
 
1948
    SendMsg(2346, 0, 0);
 
1949
}
 
1950
 
 
1951
// Move caret to last position on display line.
 
1952
void wxStyledTextCtrl::LineEndDisplay() {
 
1953
    SendMsg(2347, 0, 0);
 
1954
}
 
1955
 
 
1956
// Move caret to last position on display line extending selection to new
 
1957
// caret position.
 
1958
void wxStyledTextCtrl::LineEndDisplayExtend() {
 
1959
    SendMsg(2348, 0, 0);
 
1960
}
 
1961
 
 
1962
// These are like their namesakes Home(Extend)?, LineEnd(Extend)?, VCHome(Extend)?
 
1963
// except they behave differently when word-wrap is enabled:
 
1964
// They go first to the start / end of the display line, like (Home|LineEnd)Display
 
1965
// The difference is that, the cursor is already at the point, it goes on to the start
 
1966
// or end of the document line, as appropriate for (Home|LineEnd|VCHome)(Extend)?.
 
1967
void wxStyledTextCtrl::HomeWrap() {
 
1968
    SendMsg(2349, 0, 0);
 
1969
}
 
1970
void wxStyledTextCtrl::HomeWrapExtend() {
 
1971
    SendMsg(2450, 0, 0);
 
1972
}
 
1973
void wxStyledTextCtrl::LineEndWrap() {
 
1974
    SendMsg(2451, 0, 0);
 
1975
}
 
1976
void wxStyledTextCtrl::LineEndWrapExtend() {
 
1977
    SendMsg(2452, 0, 0);
 
1978
}
 
1979
void wxStyledTextCtrl::VCHomeWrap() {
 
1980
    SendMsg(2453, 0, 0);
 
1981
}
 
1982
void wxStyledTextCtrl::VCHomeWrapExtend() {
 
1983
    SendMsg(2454, 0, 0);
 
1984
}
 
1985
 
 
1986
// Copy the line containing the caret.
 
1987
void wxStyledTextCtrl::LineCopy() {
 
1988
    SendMsg(2455, 0, 0);
 
1989
}
 
1990
 
 
1991
// Move the caret inside current view if it's not there already.
 
1992
void wxStyledTextCtrl::MoveCaretInsideView() {
 
1993
    SendMsg(2401, 0, 0);
 
1994
}
 
1995
 
 
1996
// How many characters are on a line, not including end of line characters?
 
1997
int wxStyledTextCtrl::LineLength(int line) {
 
1998
    return SendMsg(2350, line, 0);
 
1999
}
 
2000
 
 
2001
// Highlight the characters at two positions.
 
2002
void wxStyledTextCtrl::BraceHighlight(int pos1, int pos2) {
 
2003
    SendMsg(2351, pos1, pos2);
 
2004
}
 
2005
 
 
2006
// Highlight the character at a position indicating there is no matching brace.
 
2007
void wxStyledTextCtrl::BraceBadLight(int pos) {
 
2008
    SendMsg(2352, pos, 0);
 
2009
}
 
2010
 
 
2011
// Find the position of a matching brace or INVALID_POSITION if no match.
 
2012
int wxStyledTextCtrl::BraceMatch(int pos) {
 
2013
    return SendMsg(2353, pos, 0);
 
2014
}
 
2015
 
 
2016
// Are the end of line characters visible?
 
2017
bool wxStyledTextCtrl::GetViewEOL() {
 
2018
    return SendMsg(2355, 0, 0) != 0;
 
2019
}
 
2020
 
 
2021
// Make the end of line characters visible or invisible.
 
2022
void wxStyledTextCtrl::SetViewEOL(bool visible) {
 
2023
    SendMsg(2356, visible, 0);
 
2024
}
 
2025
 
 
2026
// Retrieve a pointer to the document object.
 
2027
void* wxStyledTextCtrl::GetDocPointer() {
 
2028
         return (void*)SendMsg(2357);
 
2029
}
 
2030
 
 
2031
// Change the document object used.
 
2032
void wxStyledTextCtrl::SetDocPointer(void* docPointer) {
 
2033
         SendMsg(2358, 0, (long)docPointer);
 
2034
}
 
2035
 
 
2036
// Set which document modification events are sent to the container.
 
2037
void wxStyledTextCtrl::SetModEventMask(int mask) {
 
2038
    SendMsg(2359, mask, 0);
 
2039
}
 
2040
 
 
2041
// Retrieve the column number which text should be kept within.
 
2042
int wxStyledTextCtrl::GetEdgeColumn() {
 
2043
    return SendMsg(2360, 0, 0);
 
2044
}
 
2045
 
 
2046
// Set the column number of the edge.
 
2047
// If text goes past the edge then it is highlighted.
 
2048
void wxStyledTextCtrl::SetEdgeColumn(int column) {
 
2049
    SendMsg(2361, column, 0);
 
2050
}
 
2051
 
 
2052
// Retrieve the edge highlight mode.
 
2053
int wxStyledTextCtrl::GetEdgeMode() {
 
2054
    return SendMsg(2362, 0, 0);
 
2055
}
 
2056
 
 
2057
// The edge may be displayed by a line (EDGE_LINE) or by highlighting text that
 
2058
// goes beyond it (EDGE_BACKGROUND) or not displayed at all (EDGE_NONE).
 
2059
void wxStyledTextCtrl::SetEdgeMode(int mode) {
 
2060
    SendMsg(2363, mode, 0);
 
2061
}
 
2062
 
 
2063
// Retrieve the colour used in edge indication.
 
2064
wxColour wxStyledTextCtrl::GetEdgeColour() {
 
2065
    long c = SendMsg(2364, 0, 0);
 
2066
    return wxColourFromLong(c);
 
2067
}
 
2068
 
 
2069
// Change the colour used in edge indication.
 
2070
void wxStyledTextCtrl::SetEdgeColour(const wxColour& edgeColour) {
 
2071
    SendMsg(2365, wxColourAsLong(edgeColour), 0);
 
2072
}
 
2073
 
 
2074
// Sets the current caret position to be the search anchor.
 
2075
void wxStyledTextCtrl::SearchAnchor() {
 
2076
    SendMsg(2366, 0, 0);
 
2077
}
 
2078
 
 
2079
// Find some text starting at the search anchor.
 
2080
// Does not ensure the selection is visible.
 
2081
int wxStyledTextCtrl::SearchNext(int flags, const wxString& text) {
 
2082
    return SendMsg(2367, flags, (long)(const char*)wx2stc(text));
 
2083
}
 
2084
 
 
2085
// Find some text starting at the search anchor and moving backwards.
 
2086
// Does not ensure the selection is visible.
 
2087
int wxStyledTextCtrl::SearchPrev(int flags, const wxString& text) {
 
2088
    return SendMsg(2368, flags, (long)(const char*)wx2stc(text));
 
2089
}
 
2090
 
 
2091
// Retrieves the number of lines completely visible.
 
2092
int wxStyledTextCtrl::LinesOnScreen() {
 
2093
    return SendMsg(2370, 0, 0);
 
2094
}
 
2095
 
 
2096
// Set whether a pop up menu is displayed automatically when the user presses
 
2097
// the wrong mouse button.
 
2098
void wxStyledTextCtrl::UsePopUp(bool allowPopUp) {
 
2099
    SendMsg(2371, allowPopUp, 0);
 
2100
}
 
2101
 
 
2102
// Is the selection rectangular? The alternative is the more common stream selection.
 
2103
bool wxStyledTextCtrl::SelectionIsRectangle() {
 
2104
    return SendMsg(2372, 0, 0) != 0;
 
2105
}
 
2106
 
 
2107
// Set the zoom level. This number of points is added to the size of all fonts.
 
2108
// It may be positive to magnify or negative to reduce.
 
2109
void wxStyledTextCtrl::SetZoom(int zoom) {
 
2110
    SendMsg(2373, zoom, 0);
 
2111
}
 
2112
 
 
2113
// Retrieve the zoom level.
 
2114
int wxStyledTextCtrl::GetZoom() {
 
2115
    return SendMsg(2374, 0, 0);
 
2116
}
 
2117
 
 
2118
// Create a new document object.
 
2119
// Starts with reference count of 1 and not selected into editor.
 
2120
void* wxStyledTextCtrl::CreateDocument() {
 
2121
         return (void*)SendMsg(2375);
 
2122
}
 
2123
 
 
2124
// Extend life of document.
 
2125
void wxStyledTextCtrl::AddRefDocument(void* docPointer) {
 
2126
         SendMsg(2376, 0, (long)docPointer);
 
2127
}
 
2128
 
 
2129
// Release a reference to the document, deleting document if it fades to black.
 
2130
void wxStyledTextCtrl::ReleaseDocument(void* docPointer) {
 
2131
         SendMsg(2377, 0, (long)docPointer);
 
2132
}
 
2133
 
 
2134
// Get which document modification events are sent to the container.
 
2135
int wxStyledTextCtrl::GetModEventMask() {
 
2136
    return SendMsg(2378, 0, 0);
 
2137
}
 
2138
 
 
2139
// Change internal focus flag.
 
2140
void wxStyledTextCtrl::SetSTCFocus(bool focus) {
 
2141
    SendMsg(2380, focus, 0);
 
2142
}
 
2143
 
 
2144
// Get internal focus flag.
 
2145
bool wxStyledTextCtrl::GetSTCFocus() {
 
2146
    return SendMsg(2381, 0, 0) != 0;
 
2147
}
 
2148
 
 
2149
// Change error status - 0 = OK.
 
2150
void wxStyledTextCtrl::SetStatus(int statusCode) {
 
2151
    SendMsg(2382, statusCode, 0);
 
2152
}
 
2153
 
 
2154
// Get error status.
 
2155
int wxStyledTextCtrl::GetStatus() {
 
2156
    return SendMsg(2383, 0, 0);
 
2157
}
 
2158
 
 
2159
// Set whether the mouse is captured when its button is pressed.
 
2160
void wxStyledTextCtrl::SetMouseDownCaptures(bool captures) {
 
2161
    SendMsg(2384, captures, 0);
 
2162
}
 
2163
 
 
2164
// Get whether mouse gets captured.
 
2165
bool wxStyledTextCtrl::GetMouseDownCaptures() {
 
2166
    return SendMsg(2385, 0, 0) != 0;
 
2167
}
 
2168
 
 
2169
// Sets the cursor to one of the SC_CURSOR* values.
 
2170
void wxStyledTextCtrl::SetSTCCursor(int cursorType) {
 
2171
    SendMsg(2386, cursorType, 0);
 
2172
}
 
2173
 
 
2174
// Get cursor type.
 
2175
int wxStyledTextCtrl::GetSTCCursor() {
 
2176
    return SendMsg(2387, 0, 0);
 
2177
}
 
2178
 
 
2179
// Change the way control characters are displayed:
 
2180
// If symbol is < 32, keep the drawn way, else, use the given character.
 
2181
void wxStyledTextCtrl::SetControlCharSymbol(int symbol) {
 
2182
    SendMsg(2388, symbol, 0);
 
2183
}
 
2184
 
 
2185
// Get the way control characters are displayed.
 
2186
int wxStyledTextCtrl::GetControlCharSymbol() {
 
2187
    return SendMsg(2389, 0, 0);
 
2188
}
 
2189
 
 
2190
// Move to the previous change in capitalisation.
 
2191
void wxStyledTextCtrl::WordPartLeft() {
 
2192
    SendMsg(2390, 0, 0);
 
2193
}
 
2194
 
 
2195
// Move to the previous change in capitalisation extending selection
 
2196
// to new caret position.
 
2197
void wxStyledTextCtrl::WordPartLeftExtend() {
 
2198
    SendMsg(2391, 0, 0);
 
2199
}
 
2200
 
 
2201
// Move to the change next in capitalisation.
 
2202
void wxStyledTextCtrl::WordPartRight() {
 
2203
    SendMsg(2392, 0, 0);
 
2204
}
 
2205
 
 
2206
// Move to the next change in capitalisation extending selection
 
2207
// to new caret position.
 
2208
void wxStyledTextCtrl::WordPartRightExtend() {
 
2209
    SendMsg(2393, 0, 0);
 
2210
}
 
2211
 
 
2212
// Set the way the display area is determined when a particular line
 
2213
// is to be moved to by Find, FindNext, GotoLine, etc.
 
2214
void wxStyledTextCtrl::SetVisiblePolicy(int visiblePolicy, int visibleSlop) {
 
2215
    SendMsg(2394, visiblePolicy, visibleSlop);
 
2216
}
 
2217
 
 
2218
// Delete back from the current position to the start of the line.
 
2219
void wxStyledTextCtrl::DelLineLeft() {
 
2220
    SendMsg(2395, 0, 0);
 
2221
}
 
2222
 
 
2223
// Delete forwards from the current position to the end of the line.
 
2224
void wxStyledTextCtrl::DelLineRight() {
 
2225
    SendMsg(2396, 0, 0);
 
2226
}
 
2227
 
 
2228
// Get and Set the xOffset (ie, horizonal scroll position).
 
2229
void wxStyledTextCtrl::SetXOffset(int newOffset) {
 
2230
    SendMsg(2397, newOffset, 0);
 
2231
}
 
2232
int wxStyledTextCtrl::GetXOffset() {
 
2233
    return SendMsg(2398, 0, 0);
 
2234
}
 
2235
 
 
2236
// Set the last x chosen value to be the caret x position.
 
2237
void wxStyledTextCtrl::ChooseCaretX() {
 
2238
    SendMsg(2399, 0, 0);
 
2239
}
 
2240
 
 
2241
// Set the way the caret is kept visible when going sideway.
 
2242
// The exclusion zone is given in pixels.
 
2243
void wxStyledTextCtrl::SetXCaretPolicy(int caretPolicy, int caretSlop) {
 
2244
    SendMsg(2402, caretPolicy, caretSlop);
 
2245
}
 
2246
 
 
2247
// Set the way the line the caret is on is kept visible.
 
2248
// The exclusion zone is given in lines.
 
2249
void wxStyledTextCtrl::SetYCaretPolicy(int caretPolicy, int caretSlop) {
 
2250
    SendMsg(2403, caretPolicy, caretSlop);
 
2251
}
 
2252
 
 
2253
// Set printing to line wrapped (SC_WRAP_WORD) or not line wrapped (SC_WRAP_NONE).
 
2254
void wxStyledTextCtrl::SetPrintWrapMode(int mode) {
 
2255
    SendMsg(2406, mode, 0);
 
2256
}
 
2257
 
 
2258
// Is printing line wrapped?
 
2259
int wxStyledTextCtrl::GetPrintWrapMode() {
 
2260
    return SendMsg(2407, 0, 0);
 
2261
}
 
2262
 
 
2263
// Set a fore colour for active hotspots.
 
2264
void wxStyledTextCtrl::SetHotspotActiveForeground(bool useSetting, const wxColour& fore) {
 
2265
    SendMsg(2410, useSetting, wxColourAsLong(fore));
 
2266
}
 
2267
 
 
2268
// Set a back colour for active hotspots.
 
2269
void wxStyledTextCtrl::SetHotspotActiveBackground(bool useSetting, const wxColour& back) {
 
2270
    SendMsg(2411, useSetting, wxColourAsLong(back));
 
2271
}
 
2272
 
 
2273
// Enable / Disable underlining active hotspots.
 
2274
void wxStyledTextCtrl::SetHotspotActiveUnderline(bool underline) {
 
2275
    SendMsg(2412, underline, 0);
 
2276
}
 
2277
 
 
2278
// Limit hotspots to single line so hotspots on two lines don't merge.
 
2279
void wxStyledTextCtrl::SetHotspotSingleLine(bool singleLine) {
 
2280
    SendMsg(2421, singleLine, 0);
 
2281
}
 
2282
 
 
2283
// Move caret between paragraphs (delimited by empty lines).
 
2284
void wxStyledTextCtrl::ParaDown() {
 
2285
    SendMsg(2413, 0, 0);
 
2286
}
 
2287
void wxStyledTextCtrl::ParaDownExtend() {
 
2288
    SendMsg(2414, 0, 0);
 
2289
}
 
2290
void wxStyledTextCtrl::ParaUp() {
 
2291
    SendMsg(2415, 0, 0);
 
2292
}
 
2293
void wxStyledTextCtrl::ParaUpExtend() {
 
2294
    SendMsg(2416, 0, 0);
 
2295
}
 
2296
 
 
2297
// Given a valid document position, return the previous position taking code
 
2298
// page into account. Returns 0 if passed 0.
 
2299
int wxStyledTextCtrl::PositionBefore(int pos) {
 
2300
    return SendMsg(2417, pos, 0);
 
2301
}
 
2302
 
 
2303
// Given a valid document position, return the next position taking code
 
2304
// page into account. Maximum value returned is the last position in the document.
 
2305
int wxStyledTextCtrl::PositionAfter(int pos) {
 
2306
    return SendMsg(2418, pos, 0);
 
2307
}
 
2308
 
 
2309
// Copy a range of text to the clipboard. Positions are clipped into the document.
 
2310
void wxStyledTextCtrl::CopyRange(int start, int end) {
 
2311
    SendMsg(2419, start, end);
 
2312
}
 
2313
 
 
2314
// Copy argument text to the clipboard.
 
2315
void wxStyledTextCtrl::CopyText(int length, const wxString& text) {
 
2316
    SendMsg(2420, length, (long)(const char*)wx2stc(text));
 
2317
}
 
2318
 
 
2319
// Set the selection mode to stream (SC_SEL_STREAM) or rectangular (SC_SEL_RECTANGLE) or
 
2320
// by lines (SC_SEL_LINES).
 
2321
void wxStyledTextCtrl::SetSelectionMode(int mode) {
 
2322
    SendMsg(2422, mode, 0);
 
2323
}
 
2324
 
 
2325
// Get the mode of the current selection.
 
2326
int wxStyledTextCtrl::GetSelectionMode() {
 
2327
    return SendMsg(2423, 0, 0);
 
2328
}
 
2329
 
 
2330
// Retrieve the position of the start of the selection at the given line (INVALID_POSITION if no selection on this line).
 
2331
int wxStyledTextCtrl::GetLineSelStartPosition(int line) {
 
2332
    return SendMsg(2424, line, 0);
 
2333
}
 
2334
 
 
2335
// Retrieve the position of the end of the selection at the given line (INVALID_POSITION if no selection on this line).
 
2336
int wxStyledTextCtrl::GetLineSelEndPosition(int line) {
 
2337
    return SendMsg(2425, line, 0);
 
2338
}
 
2339
 
 
2340
// Move caret down one line, extending rectangular selection to new caret position.
 
2341
void wxStyledTextCtrl::LineDownRectExtend() {
 
2342
    SendMsg(2426, 0, 0);
 
2343
}
 
2344
 
 
2345
// Move caret up one line, extending rectangular selection to new caret position.
 
2346
void wxStyledTextCtrl::LineUpRectExtend() {
 
2347
    SendMsg(2427, 0, 0);
 
2348
}
 
2349
 
 
2350
// Move caret left one character, extending rectangular selection to new caret position.
 
2351
void wxStyledTextCtrl::CharLeftRectExtend() {
 
2352
    SendMsg(2428, 0, 0);
 
2353
}
 
2354
 
 
2355
// Move caret right one character, extending rectangular selection to new caret position.
 
2356
void wxStyledTextCtrl::CharRightRectExtend() {
 
2357
    SendMsg(2429, 0, 0);
 
2358
}
 
2359
 
 
2360
// Move caret to first position on line, extending rectangular selection to new caret position.
 
2361
void wxStyledTextCtrl::HomeRectExtend() {
 
2362
    SendMsg(2430, 0, 0);
 
2363
}
 
2364
 
 
2365
// Move caret to before first visible character on line.
 
2366
// If already there move to first character on line.
 
2367
// In either case, extend rectangular selection to new caret position.
 
2368
void wxStyledTextCtrl::VCHomeRectExtend() {
 
2369
    SendMsg(2431, 0, 0);
 
2370
}
 
2371
 
 
2372
// Move caret to last position on line, extending rectangular selection to new caret position.
 
2373
void wxStyledTextCtrl::LineEndRectExtend() {
 
2374
    SendMsg(2432, 0, 0);
 
2375
}
 
2376
 
 
2377
// Move caret one page up, extending rectangular selection to new caret position.
 
2378
void wxStyledTextCtrl::PageUpRectExtend() {
 
2379
    SendMsg(2433, 0, 0);
 
2380
}
 
2381
 
 
2382
// Move caret one page down, extending rectangular selection to new caret position.
 
2383
void wxStyledTextCtrl::PageDownRectExtend() {
 
2384
    SendMsg(2434, 0, 0);
 
2385
}
 
2386
 
 
2387
// Move caret to top of page, or one page up if already at top of page.
 
2388
void wxStyledTextCtrl::StutteredPageUp() {
 
2389
    SendMsg(2435, 0, 0);
 
2390
}
 
2391
 
 
2392
// Move caret to top of page, or one page up if already at top of page, extending selection to new caret position.
 
2393
void wxStyledTextCtrl::StutteredPageUpExtend() {
 
2394
    SendMsg(2436, 0, 0);
 
2395
}
 
2396
 
 
2397
// Move caret to bottom of page, or one page down if already at bottom of page.
 
2398
void wxStyledTextCtrl::StutteredPageDown() {
 
2399
    SendMsg(2437, 0, 0);
 
2400
}
 
2401
 
 
2402
// Move caret to bottom of page, or one page down if already at bottom of page, extending selection to new caret position.
 
2403
void wxStyledTextCtrl::StutteredPageDownExtend() {
 
2404
    SendMsg(2438, 0, 0);
 
2405
}
 
2406
 
 
2407
// Move caret left one word, position cursor at end of word.
 
2408
void wxStyledTextCtrl::WordLeftEnd() {
 
2409
    SendMsg(2439, 0, 0);
 
2410
}
 
2411
 
 
2412
// Move caret left one word, position cursor at end of word, extending selection to new caret position.
 
2413
void wxStyledTextCtrl::WordLeftEndExtend() {
 
2414
    SendMsg(2440, 0, 0);
 
2415
}
 
2416
 
 
2417
// Move caret right one word, position cursor at end of word.
 
2418
void wxStyledTextCtrl::WordRightEnd() {
 
2419
    SendMsg(2441, 0, 0);
 
2420
}
 
2421
 
 
2422
// Move caret right one word, position cursor at end of word, extending selection to new caret position.
 
2423
void wxStyledTextCtrl::WordRightEndExtend() {
 
2424
    SendMsg(2442, 0, 0);
 
2425
}
 
2426
 
 
2427
// Set the set of characters making up whitespace for when moving or selecting by word.
 
2428
// Should be called after SetWordChars.
 
2429
void wxStyledTextCtrl::SetWhitespaceChars(const wxString& characters) {
 
2430
    SendMsg(2443, 0, (long)(const char*)wx2stc(characters));
 
2431
}
 
2432
 
 
2433
// Reset the set of characters for whitespace and word characters to the defaults.
 
2434
void wxStyledTextCtrl::SetCharsDefault() {
 
2435
    SendMsg(2444, 0, 0);
 
2436
}
 
2437
 
 
2438
// Get currently selected item position in the auto-completion list
 
2439
int wxStyledTextCtrl::AutoCompGetCurrent() {
 
2440
    return SendMsg(2445, 0, 0);
 
2441
}
 
2442
 
 
2443
// Enlarge the document to a particular size of text bytes.
 
2444
void wxStyledTextCtrl::Allocate(int bytes) {
 
2445
    SendMsg(2446, bytes, 0);
 
2446
}
 
2447
 
 
2448
// Find the position of a column on a line taking into account tabs and
 
2449
// multi-byte characters. If beyond end of line, return line end position.
 
2450
int wxStyledTextCtrl::FindColumn(int line, int column) {
 
2451
    return SendMsg(2456, line, column);
 
2452
}
 
2453
 
 
2454
// Can the caret preferred x position only be changed by explicit movement commands?
 
2455
bool wxStyledTextCtrl::GetCaretSticky() {
 
2456
    return SendMsg(2457, 0, 0) != 0;
 
2457
}
 
2458
 
 
2459
// Stop the caret preferred x position changing when the user types.
 
2460
void wxStyledTextCtrl::SetCaretSticky(bool useCaretStickyBehaviour) {
 
2461
    SendMsg(2458, useCaretStickyBehaviour, 0);
 
2462
}
 
2463
 
 
2464
// Switch between sticky and non-sticky: meant to be bound to a key.
 
2465
void wxStyledTextCtrl::ToggleCaretSticky() {
 
2466
    SendMsg(2459, 0, 0);
 
2467
}
 
2468
 
 
2469
// Enable/Disable convert-on-paste for line endings
 
2470
void wxStyledTextCtrl::SetPasteConvertEndings(bool convert) {
 
2471
    SendMsg(2467, convert, 0);
 
2472
}
 
2473
 
 
2474
// Get convert-on-paste setting
 
2475
bool wxStyledTextCtrl::GetPasteConvertEndings() {
 
2476
    return SendMsg(2468, 0, 0) != 0;
 
2477
}
 
2478
 
 
2479
// Duplicate the selection. If selection empty duplicate the line containing the caret.
 
2480
void wxStyledTextCtrl::SelectionDuplicate() {
 
2481
    SendMsg(2469, 0, 0);
 
2482
}
 
2483
 
 
2484
// Start notifying the container of all key presses and commands.
 
2485
void wxStyledTextCtrl::StartRecord() {
 
2486
    SendMsg(3001, 0, 0);
 
2487
}
 
2488
 
 
2489
// Stop notifying the container of all key presses and commands.
 
2490
void wxStyledTextCtrl::StopRecord() {
 
2491
    SendMsg(3002, 0, 0);
 
2492
}
 
2493
 
 
2494
// Set the lexing language of the document.
 
2495
void wxStyledTextCtrl::SetLexer(int lexer) {
 
2496
    SendMsg(4001, lexer, 0);
 
2497
}
 
2498
 
 
2499
// Retrieve the lexing language of the document.
 
2500
int wxStyledTextCtrl::GetLexer() {
 
2501
    return SendMsg(4002, 0, 0);
 
2502
}
 
2503
 
 
2504
// Colourise a segment of the document using the current lexing language.
 
2505
void wxStyledTextCtrl::Colourise(int start, int end) {
 
2506
    SendMsg(4003, start, end);
 
2507
}
 
2508
 
 
2509
// Set up a value that may be used by a lexer for some optional feature.
 
2510
void wxStyledTextCtrl::SetProperty(const wxString& key, const wxString& value) {
 
2511
    SendMsg(4004, (long)(const char*)wx2stc(key), (long)(const char*)wx2stc(value));
 
2512
}
 
2513
 
 
2514
// Set up the key words used by the lexer.
 
2515
void wxStyledTextCtrl::SetKeyWords(int keywordSet, const wxString& keyWords) {
 
2516
    SendMsg(4005, keywordSet, (long)(const char*)wx2stc(keyWords));
 
2517
}
 
2518
 
 
2519
// Set the lexing language of the document based on string name.
 
2520
void wxStyledTextCtrl::SetLexerLanguage(const wxString& language) {
 
2521
    SendMsg(4006, 0, (long)(const char*)wx2stc(language));
 
2522
}
 
2523
 
 
2524
// Retrieve a 'property' value previously set with SetProperty.
 
2525
wxString wxStyledTextCtrl::GetProperty(const wxString& key) {
 
2526
         int len = SendMsg(SCI_GETPROPERTY, (long)(const char*)wx2stc(key), (long)NULL);
 
2527
         if (!len) return wxEmptyString;
 
2528
 
 
2529
         wxMemoryBuffer mbuf(len+1);
 
2530
         char* buf = (char*)mbuf.GetWriteBuf(len+1);
 
2531
         SendMsg(4008, (long)(const char*)wx2stc(key), (long)buf);
 
2532
         mbuf.UngetWriteBuf(len);
 
2533
         mbuf.AppendByte(0);
 
2534
         return stc2wx(buf);
 
2535
}
 
2536
 
 
2537
// Retrieve a 'property' value previously set with SetProperty,
 
2538
// with '$()' variable replacement on returned buffer.
 
2539
wxString wxStyledTextCtrl::GetPropertyExpanded(const wxString& key) {
 
2540
         int len = SendMsg(SCI_GETPROPERTYEXPANDED, (long)(const char*)wx2stc(key), (long)NULL);
 
2541
         if (!len) return wxEmptyString;
 
2542
 
 
2543
         wxMemoryBuffer mbuf(len+1);
 
2544
         char* buf = (char*)mbuf.GetWriteBuf(len+1);
 
2545
         SendMsg(4009, (long)(const char*)wx2stc(key), (long)buf);
 
2546
         mbuf.UngetWriteBuf(len);
 
2547
         mbuf.AppendByte(0);
 
2548
         return stc2wx(buf);
 
2549
}
 
2550
 
 
2551
// Retrieve a 'property' value previously set with SetProperty,
 
2552
// interpreted as an int AFTER any '$()' variable replacement.
 
2553
int wxStyledTextCtrl::GetPropertyInt(const wxString& key) {
 
2554
    return SendMsg(4010, (long)(const char*)wx2stc(key), 0);
 
2555
}
 
2556
 
 
2557
// Retrieve the number of bits the current lexer needs for styling.
 
2558
int wxStyledTextCtrl::GetStyleBitsNeeded() {
 
2559
    return SendMsg(4011, 0, 0);
 
2560
}
 
2561
 
 
2562
// END of generated section
 
2563
//----------------------------------------------------------------------
 
2564
 
 
2565
 
 
2566
// Returns the line number of the line with the caret.
 
2567
int wxStyledTextCtrl::GetCurrentLine() {
 
2568
    int line = LineFromPosition(GetCurrentPos());
 
2569
    return line;
 
2570
}
 
2571
 
 
2572
 
 
2573
// Extract style settings from a spec-string which is composed of one or
 
2574
// more of the following comma separated elements:
 
2575
//
 
2576
//      bold                    turns on bold
 
2577
//      italic                  turns on italics
 
2578
//      fore:[name or #RRGGBB]  sets the foreground colour
 
2579
//      back:[name or #RRGGBB]  sets the background colour
 
2580
//      face:[facename]         sets the font face name to use
 
2581
//      size:[num]              sets the font size in points
 
2582
//      eol                     turns on eol filling
 
2583
//      underline               turns on underlining
 
2584
//
 
2585
void wxStyledTextCtrl::StyleSetSpec(int styleNum, const wxString& spec) {
 
2586
 
 
2587
    wxStringTokenizer tkz(spec, wxT(","));
 
2588
    while (tkz.HasMoreTokens()) {
 
2589
        wxString token = tkz.GetNextToken();
 
2590
 
 
2591
        wxString option = token.BeforeFirst(':');
 
2592
        wxString val = token.AfterFirst(':');
 
2593
 
 
2594
        if (option == wxT("bold"))
 
2595
            StyleSetBold(styleNum, true);
 
2596
 
 
2597
        else if (option == wxT("italic"))
 
2598
            StyleSetItalic(styleNum, true);
 
2599
 
 
2600
        else if (option == wxT("underline"))
 
2601
            StyleSetUnderline(styleNum, true);
 
2602
 
 
2603
        else if (option == wxT("eol"))
 
2604
            StyleSetEOLFilled(styleNum, true);
 
2605
 
 
2606
        else if (option == wxT("size")) {
 
2607
            long points;
 
2608
            if (val.ToLong(&points))
 
2609
                StyleSetSize(styleNum, points);
 
2610
        }
 
2611
 
 
2612
        else if (option == wxT("face"))
 
2613
            StyleSetFaceName(styleNum, val);
 
2614
 
 
2615
        else if (option == wxT("fore"))
 
2616
            StyleSetForeground(styleNum, wxColourFromSpec(val));
 
2617
 
 
2618
        else if (option == wxT("back"))
 
2619
            StyleSetBackground(styleNum, wxColourFromSpec(val));
 
2620
    }
 
2621
}
 
2622
 
 
2623
 
 
2624
// Set style size, face, bold, italic, and underline attributes from
 
2625
// a wxFont's attributes.
 
2626
void wxStyledTextCtrl::StyleSetFont(int styleNum, wxFont& font) {
 
2627
#ifdef __WXGTK__
 
2628
    // Ensure that the native font is initialized
 
2629
    int x, y;
 
2630
    GetTextExtent(wxT("X"), &x, &y, NULL, NULL, &font);
 
2631
#endif
 
2632
    int            size     = font.GetPointSize();
 
2633
    wxString       faceName = font.GetFaceName();
 
2634
    bool           bold     = font.GetWeight() == wxBOLD;
 
2635
    bool           italic   = font.GetStyle() != wxNORMAL;
 
2636
    bool           under    = font.GetUnderlined();
 
2637
    wxFontEncoding encoding = font.GetEncoding();
 
2638
    
 
2639
    StyleSetFontAttr(styleNum, size, faceName, bold, italic, under, encoding);
 
2640
}
 
2641
 
 
2642
// Set all font style attributes at once.
 
2643
void wxStyledTextCtrl::StyleSetFontAttr(int styleNum, int size,
 
2644
                                        const wxString& faceName,
 
2645
                                        bool bold, bool italic,
 
2646
                                        bool underline,
 
2647
                                        wxFontEncoding encoding) {
 
2648
    StyleSetSize(styleNum, size);
 
2649
    StyleSetFaceName(styleNum, faceName);
 
2650
    StyleSetBold(styleNum, bold);
 
2651
    StyleSetItalic(styleNum, italic);
 
2652
    StyleSetUnderline(styleNum, underline);
 
2653
    StyleSetFontEncoding(styleNum, encoding);
 
2654
}
 
2655
 
 
2656
 
 
2657
// Set the character set of the font in a style.  Converts the Scintilla
 
2658
// character set values to a wxFontEncoding.
 
2659
void wxStyledTextCtrl::StyleSetCharacterSet(int style, int characterSet)
 
2660
{
 
2661
    wxFontEncoding encoding;
 
2662
 
 
2663
    // Translate the Scintilla characterSet to a wxFontEncoding
 
2664
    switch (characterSet) {
 
2665
        default:
 
2666
        case wxSTC_CHARSET_ANSI:
 
2667
        case wxSTC_CHARSET_DEFAULT:
 
2668
            encoding = wxFONTENCODING_DEFAULT;
 
2669
            break;
 
2670
 
 
2671
        case wxSTC_CHARSET_BALTIC:
 
2672
            encoding = wxFONTENCODING_ISO8859_13;
 
2673
            break;
 
2674
 
 
2675
        case wxSTC_CHARSET_CHINESEBIG5:
 
2676
            encoding = wxFONTENCODING_CP950;
 
2677
            break;
 
2678
 
 
2679
        case wxSTC_CHARSET_EASTEUROPE:
 
2680
            encoding = wxFONTENCODING_ISO8859_2;
 
2681
            break;
 
2682
 
 
2683
        case wxSTC_CHARSET_GB2312:
 
2684
            encoding = wxFONTENCODING_CP936;
 
2685
            break;
 
2686
 
 
2687
        case wxSTC_CHARSET_GREEK:
 
2688
            encoding = wxFONTENCODING_ISO8859_7;
 
2689
            break;
 
2690
 
 
2691
        case wxSTC_CHARSET_HANGUL:
 
2692
            encoding = wxFONTENCODING_CP949;
 
2693
            break;
 
2694
 
 
2695
        case wxSTC_CHARSET_MAC:
 
2696
            encoding = wxFONTENCODING_DEFAULT;
 
2697
            break;
 
2698
 
 
2699
        case wxSTC_CHARSET_OEM:
 
2700
            encoding = wxFONTENCODING_DEFAULT;
 
2701
            break;
 
2702
 
 
2703
        case wxSTC_CHARSET_RUSSIAN:
 
2704
            encoding = wxFONTENCODING_KOI8;
 
2705
            break;
 
2706
 
 
2707
        case wxSTC_CHARSET_SHIFTJIS:
 
2708
            encoding = wxFONTENCODING_CP932;
 
2709
            break;
 
2710
 
 
2711
        case wxSTC_CHARSET_SYMBOL:
 
2712
            encoding = wxFONTENCODING_DEFAULT;
 
2713
            break;
 
2714
 
 
2715
        case wxSTC_CHARSET_TURKISH:
 
2716
            encoding = wxFONTENCODING_ISO8859_9;
 
2717
            break;
 
2718
 
 
2719
        case wxSTC_CHARSET_JOHAB:
 
2720
            encoding = wxFONTENCODING_DEFAULT;
 
2721
            break;
 
2722
 
 
2723
        case wxSTC_CHARSET_HEBREW:
 
2724
            encoding = wxFONTENCODING_ISO8859_8;
 
2725
            break;
 
2726
 
 
2727
        case wxSTC_CHARSET_ARABIC:
 
2728
            encoding = wxFONTENCODING_ISO8859_6;
 
2729
            break;
 
2730
 
 
2731
        case wxSTC_CHARSET_VIETNAMESE:
 
2732
            encoding = wxFONTENCODING_DEFAULT;
 
2733
            break;
 
2734
 
 
2735
        case wxSTC_CHARSET_THAI:
 
2736
            encoding = wxFONTENCODING_ISO8859_11;
 
2737
            break;
 
2738
 
 
2739
        case wxSTC_CHARSET_CYRILLIC:
 
2740
            encoding = wxFONTENCODING_ISO8859_5;
 
2741
            break;
 
2742
                
 
2743
        case wxSTC_CHARSET_8859_15:
 
2744
            encoding = wxFONTENCODING_ISO8859_15;;
 
2745
            break;
 
2746
    }
 
2747
 
 
2748
    // We just have Scintilla track the wxFontEncoding for us.  It gets used
 
2749
    // in Font::Create in PlatWX.cpp.  We add one to the value so that the
 
2750
    // effective wxFONENCODING_DEFAULT == SC_SHARSET_DEFAULT and so when
 
2751
    // Scintilla internally uses SC_CHARSET_DEFAULT we will translate it back
 
2752
    // to wxFONENCODING_DEFAULT in Font::Create.
 
2753
    SendMsg(SCI_STYLESETCHARACTERSET, style, encoding+1);
 
2754
}
 
2755
 
 
2756
 
 
2757
// Set the font encoding to be used by a style.
 
2758
void wxStyledTextCtrl::StyleSetFontEncoding(int style, wxFontEncoding encoding)
 
2759
{
 
2760
    SendMsg(SCI_STYLESETCHARACTERSET, style, encoding+1);
 
2761
}
 
2762
 
 
2763
 
 
2764
// Perform one of the operations defined by the wxSTC_CMD_* constants.
 
2765
void wxStyledTextCtrl::CmdKeyExecute(int cmd) {
 
2766
    SendMsg(cmd);
 
2767
}
 
2768
 
 
2769
 
 
2770
// Set the left and right margin in the edit area, measured in pixels.
 
2771
void wxStyledTextCtrl::SetMargins(int left, int right) {
 
2772
    SetMarginLeft(left);
 
2773
    SetMarginRight(right);
 
2774
}
 
2775
 
 
2776
 
 
2777
// Retrieve the start and end positions of the current selection.
 
2778
void wxStyledTextCtrl::GetSelection(int* startPos, int* endPos) {
 
2779
    if (startPos != NULL)
 
2780
        *startPos = SendMsg(SCI_GETSELECTIONSTART);
 
2781
    if (endPos != NULL)
 
2782
        *endPos = SendMsg(SCI_GETSELECTIONEND);
 
2783
}
 
2784
 
 
2785
 
 
2786
// Retrieve the point in the window where a position is displayed.
 
2787
wxPoint wxStyledTextCtrl::PointFromPosition(int pos) {
 
2788
    int x = SendMsg(SCI_POINTXFROMPOSITION, 0, pos);
 
2789
    int y = SendMsg(SCI_POINTYFROMPOSITION, 0, pos);
 
2790
    return wxPoint(x, y);
 
2791
}
 
2792
 
 
2793
// Scroll enough to make the given line visible
 
2794
void wxStyledTextCtrl::ScrollToLine(int line) {
 
2795
    m_swx->DoScrollToLine(line);
 
2796
}
 
2797
 
 
2798
 
 
2799
// Scroll enough to make the given column visible
 
2800
void wxStyledTextCtrl::ScrollToColumn(int column) {
 
2801
    m_swx->DoScrollToColumn(column);
 
2802
}
 
2803
 
 
2804
 
 
2805
bool wxStyledTextCtrl::SaveFile(const wxString& filename)
 
2806
{
 
2807
    wxFile file(filename, wxFile::write);
 
2808
 
 
2809
    if (!file.IsOpened())
 
2810
        return false;
 
2811
 
 
2812
    bool success = file.Write(GetText(), *wxConvCurrent);
 
2813
 
 
2814
    if (success)
 
2815
        SetSavePoint();
 
2816
 
 
2817
    return success;
 
2818
}
 
2819
 
 
2820
bool wxStyledTextCtrl::LoadFile(const wxString& filename)
 
2821
{
 
2822
    bool success = false;
 
2823
    wxFile file(filename, wxFile::read);
 
2824
 
 
2825
    if (file.IsOpened())
 
2826
    {
 
2827
        wxString contents;
 
2828
        // get the file size (assume it is not huge file...)
 
2829
        ssize_t len = (ssize_t)file.Length();
 
2830
 
 
2831
        if (len > 0)
 
2832
        {
 
2833
#if wxUSE_UNICODE
 
2834
            wxMemoryBuffer buffer(len+1);
 
2835
            success = (file.Read(buffer.GetData(), len) == len);
 
2836
            if (success) {
 
2837
                ((char*)buffer.GetData())[len] = 0;
 
2838
                contents = wxString(buffer, *wxConvCurrent, len);
 
2839
            }
 
2840
#else
 
2841
            wxString buffer;
 
2842
            success = (file.Read(wxStringBuffer(buffer, len), len) == len);
 
2843
            contents = buffer;
 
2844
#endif
 
2845
        }
 
2846
        else
 
2847
        {
 
2848
            if (len == 0)
 
2849
                success = true;  // empty file is ok
 
2850
            else
 
2851
                success = false; // len == wxInvalidOffset
 
2852
        }
 
2853
 
 
2854
        if (success)
 
2855
        {
 
2856
            SetText(contents);
 
2857
            EmptyUndoBuffer();
 
2858
            SetSavePoint();
 
2859
        }
 
2860
    }
 
2861
 
 
2862
    return success;
 
2863
}
 
2864
 
 
2865
 
 
2866
#if wxUSE_DRAG_AND_DROP
 
2867
wxDragResult wxStyledTextCtrl::DoDragOver(wxCoord x, wxCoord y, wxDragResult def) {
 
2868
        return m_swx->DoDragOver(x, y, def);
 
2869
}
 
2870
 
 
2871
 
 
2872
bool wxStyledTextCtrl::DoDropText(long x, long y, const wxString& data) {
 
2873
    return m_swx->DoDropText(x, y, data);
 
2874
}
 
2875
#endif
 
2876
 
 
2877
 
 
2878
void wxStyledTextCtrl::SetUseAntiAliasing(bool useAA) {
 
2879
    m_swx->SetUseAntiAliasing(useAA);
 
2880
}
 
2881
 
 
2882
bool wxStyledTextCtrl::GetUseAntiAliasing() {
 
2883
    return m_swx->GetUseAntiAliasing();
 
2884
}
 
2885
 
 
2886
 
 
2887
 
 
2888
 
 
2889
 
 
2890
void wxStyledTextCtrl::AddTextRaw(const char* text)
 
2891
{
 
2892
    SendMsg(SCI_ADDTEXT, strlen(text), (long)text);
 
2893
}
 
2894
 
 
2895
void wxStyledTextCtrl::InsertTextRaw(int pos, const char* text)
 
2896
{
 
2897
    SendMsg(SCI_INSERTTEXT, pos, (long)text);
 
2898
}
 
2899
 
 
2900
wxCharBuffer wxStyledTextCtrl::GetCurLineRaw(int* linePos)
 
2901
{
 
2902
    int len = LineLength(GetCurrentLine());
 
2903
    if (!len) {
 
2904
        if (linePos)  *linePos = 0;
 
2905
        wxCharBuffer empty;
 
2906
        return empty;
 
2907
    }
 
2908
 
 
2909
    wxCharBuffer buf(len);
 
2910
    int pos = SendMsg(SCI_GETCURLINE, len, (long)buf.data());
 
2911
    if (linePos)  *linePos = pos;
 
2912
    return buf;
 
2913
}
 
2914
 
 
2915
wxCharBuffer wxStyledTextCtrl::GetLineRaw(int line)
 
2916
{
 
2917
    int len = LineLength(line);
 
2918
    if (!len) {
 
2919
        wxCharBuffer empty;
 
2920
        return empty;
 
2921
    }
 
2922
 
 
2923
    wxCharBuffer buf(len);
 
2924
    SendMsg(SCI_GETLINE, line, (long)buf.data());
 
2925
    return buf;
 
2926
}
 
2927
 
 
2928
wxCharBuffer wxStyledTextCtrl::GetSelectedTextRaw()
 
2929
{
 
2930
    int   start;
 
2931
    int   end;
 
2932
 
 
2933
    GetSelection(&start, &end);
 
2934
    int   len  = end - start;
 
2935
    if (!len) {
 
2936
        wxCharBuffer empty;
 
2937
        return empty;
 
2938
    }        
 
2939
 
 
2940
    wxCharBuffer buf(len);
 
2941
    SendMsg(SCI_GETSELTEXT, 0, (long)buf.data());
 
2942
    return buf;
 
2943
}
 
2944
 
 
2945
wxCharBuffer wxStyledTextCtrl::GetTextRangeRaw(int startPos, int endPos)
 
2946
{
 
2947
    if (endPos < startPos) {
 
2948
        int temp = startPos;
 
2949
        startPos = endPos;
 
2950
        endPos = temp;
 
2951
    }
 
2952
    int len  = endPos - startPos;
 
2953
    if (!len) {
 
2954
        wxCharBuffer empty;
 
2955
        return empty;
 
2956
    }        
 
2957
 
 
2958
    wxCharBuffer buf(len);
 
2959
    TextRange tr;
 
2960
    tr.lpstrText = buf.data();
 
2961
    tr.chrg.cpMin = startPos;
 
2962
    tr.chrg.cpMax = endPos;
 
2963
    SendMsg(SCI_GETTEXTRANGE, 0, (long)&tr);
 
2964
    return buf;
 
2965
}
 
2966
 
 
2967
void wxStyledTextCtrl::SetTextRaw(const char* text)
 
2968
{
 
2969
    SendMsg(SCI_SETTEXT, 0, (long)text);
 
2970
}
 
2971
 
 
2972
wxCharBuffer wxStyledTextCtrl::GetTextRaw()
 
2973
{
 
2974
    int len  = GetTextLength();
 
2975
    wxCharBuffer buf(len);
 
2976
    SendMsg(SCI_GETTEXT, len, (long)buf.data());
 
2977
    return buf;
 
2978
}
 
2979
 
 
2980
void wxStyledTextCtrl::AppendTextRaw(const char* text)
 
2981
{
 
2982
    SendMsg(SCI_APPENDTEXT, strlen(text), (long)text);
 
2983
}
 
2984
 
 
2985
 
 
2986
 
 
2987
 
 
2988
 
 
2989
//----------------------------------------------------------------------
 
2990
// Event handlers
 
2991
 
 
2992
void wxStyledTextCtrl::OnPaint(wxPaintEvent& WXUNUSED(evt)) {
 
2993
    wxPaintDC dc(this);
 
2994
    m_swx->DoPaint(&dc, GetUpdateRegion().GetBox());
 
2995
}
 
2996
 
 
2997
void wxStyledTextCtrl::OnScrollWin(wxScrollWinEvent& evt) {
 
2998
    if (evt.GetOrientation() == wxHORIZONTAL)
 
2999
        m_swx->DoHScroll(evt.GetEventType(), evt.GetPosition());
 
3000
    else
 
3001
        m_swx->DoVScroll(evt.GetEventType(), evt.GetPosition());
 
3002
}
 
3003
 
 
3004
void wxStyledTextCtrl::OnScroll(wxScrollEvent& evt) {
 
3005
    wxScrollBar* sb = wxDynamicCast(evt.GetEventObject(), wxScrollBar);
 
3006
    if (sb) {
 
3007
        if (sb->IsVertical())
 
3008
            m_swx->DoVScroll(evt.GetEventType(), evt.GetPosition());
 
3009
        else
 
3010
            m_swx->DoHScroll(evt.GetEventType(), evt.GetPosition());
 
3011
    }
 
3012
}
 
3013
 
 
3014
void wxStyledTextCtrl::OnSize(wxSizeEvent& WXUNUSED(evt)) {
 
3015
    if (m_swx) {
 
3016
        wxSize sz = GetClientSize();
 
3017
        m_swx->DoSize(sz.x, sz.y);
 
3018
    }
 
3019
}
 
3020
 
 
3021
void wxStyledTextCtrl::OnMouseLeftDown(wxMouseEvent& evt) {
 
3022
    SetFocus();
 
3023
    wxPoint pt = evt.GetPosition();
 
3024
    m_swx->DoLeftButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(),
 
3025
                      evt.ShiftDown(), evt.ControlDown(), evt.AltDown());
 
3026
}
 
3027
 
 
3028
 
 
3029
void wxStyledTextCtrl::OnMouseMove(wxMouseEvent& evt) {
 
3030
    wxPoint pt = evt.GetPosition();
 
3031
    m_swx->DoLeftButtonMove(Point(pt.x, pt.y));
 
3032
}
 
3033
 
 
3034
void wxStyledTextCtrl::OnMouseLeftUp(wxMouseEvent& evt) {
 
3035
    wxPoint pt = evt.GetPosition();
 
3036
    m_swx->DoLeftButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(),
 
3037
                      evt.ControlDown());
 
3038
}
 
3039
 
 
3040
 
 
3041
void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) {
 
3042
    wxPoint pt = evt.GetPosition();
 
3043
    m_swx->DoContextMenu(Point(pt.x, pt.y));
 
3044
}
 
3045
 
 
3046
 
 
3047
void wxStyledTextCtrl::OnMouseMiddleUp(wxMouseEvent& evt) {
 
3048
    wxPoint pt = evt.GetPosition();
 
3049
    m_swx->DoMiddleButtonUp(Point(pt.x, pt.y));
 
3050
}
 
3051
 
 
3052
void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent& evt) {
 
3053
    wxPoint pt = evt.GetPosition();
 
3054
    ScreenToClient(&pt.x, &pt.y);
 
3055
    /*
 
3056
      Show context menu at event point if it's within the window,
 
3057
      or at caret location if not
 
3058
    */
 
3059
    wxHitTest ht = this->HitTest(pt);
 
3060
    if (ht != wxHT_WINDOW_INSIDE) {
 
3061
        pt = this->PointFromPosition(this->GetCurrentPos());
 
3062
    }
 
3063
    m_swx->DoContextMenu(Point(pt.x, pt.y));
 
3064
}
 
3065
 
 
3066
 
 
3067
void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) {
 
3068
    m_swx->DoMouseWheel(evt.GetWheelRotation(),
 
3069
                        evt.GetWheelDelta(),
 
3070
                        evt.GetLinesPerAction(),
 
3071
                        evt.ControlDown(),
 
3072
                        evt.IsPageScroll());
 
3073
}
 
3074
 
 
3075
 
 
3076
void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
 
3077
    // On (some?) non-US PC keyboards the AltGr key is required to enter some
 
3078
    // common characters.  It comes to us as both Alt and Ctrl down so we need
 
3079
    // to let the char through in that case, otherwise if only ctrl or only
 
3080
    // alt let's skip it.
 
3081
    bool ctrl = evt.ControlDown();
 
3082
#ifdef __WXMAC__
 
3083
    // On the Mac the Alt key is just a modifier key (like Shift) so we need
 
3084
    // to allow the char events to be processed when Alt is pressed.
 
3085
    // TODO:  Should we check MetaDown instead in this case?
 
3086
    bool alt = false;
 
3087
#else
 
3088
    bool alt  = evt.AltDown();
 
3089
#endif
 
3090
    bool skip = ((ctrl || alt) && ! (ctrl && alt));
 
3091
 
 
3092
    if (!m_lastKeyDownConsumed && !skip) {
 
3093
#if wxUSE_UNICODE
 
3094
        int key = evt.GetUnicodeKey();
 
3095
        bool keyOk = true;
 
3096
 
 
3097
        // if the unicode key code is not really a unicode character (it may
 
3098
        // be a function key or etc., the platforms appear to always give us a
 
3099
        // small value in this case) then fallback to the ascii key code but
 
3100
        // don't do anything for function keys or etc.
 
3101
        if (key <= 127) {
 
3102
            key = evt.GetKeyCode();
 
3103
            keyOk = (key <= 127);
 
3104
        }
 
3105
        if (keyOk) {
 
3106
            m_swx->DoAddChar(key);
 
3107
            return;
 
3108
        }
 
3109
#else
 
3110
        int key = evt.GetKeyCode();
 
3111
        if (key <= WXK_START || key > WXK_COMMAND) {
 
3112
            m_swx->DoAddChar(key);
 
3113
            return;
 
3114
        }
 
3115
#endif
 
3116
    }
 
3117
    
 
3118
    evt.Skip();
 
3119
}
 
3120
 
 
3121
 
 
3122
void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
 
3123
    int processed = m_swx->DoKeyDown(evt, &m_lastKeyDownConsumed);
 
3124
    if (!processed && !m_lastKeyDownConsumed)
 
3125
        evt.Skip();
 
3126
}
 
3127
 
 
3128
 
 
3129
void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
 
3130
    m_swx->DoLoseFocus();
 
3131
    evt.Skip();
 
3132
}
 
3133
 
 
3134
 
 
3135
void wxStyledTextCtrl::OnGainFocus(wxFocusEvent& evt) {
 
3136
    m_swx->DoGainFocus();
 
3137
    evt.Skip();
 
3138
}
 
3139
 
 
3140
 
 
3141
void wxStyledTextCtrl::OnSysColourChanged(wxSysColourChangedEvent& WXUNUSED(evt)) {
 
3142
    m_swx->DoSysColourChange();
 
3143
}
 
3144
 
 
3145
 
 
3146
void wxStyledTextCtrl::OnEraseBackground(wxEraseEvent& WXUNUSED(evt)) {
 
3147
    // do nothing to help avoid flashing
 
3148
}
 
3149
 
 
3150
 
 
3151
 
 
3152
void wxStyledTextCtrl::OnMenu(wxCommandEvent& evt) {
 
3153
    m_swx->DoCommand(evt.GetId());
 
3154
}
 
3155
 
 
3156
void wxStyledTextCtrl::OnListBox(wxCommandEvent& WXUNUSED(evt)) {
 
3157
    m_swx->DoOnListBox();
 
3158
}
 
3159
 
 
3160
 
 
3161
void wxStyledTextCtrl::OnIdle(wxIdleEvent& evt) {
 
3162
    m_swx->DoOnIdle(evt);
 
3163
}
 
3164
 
 
3165
 
 
3166
wxSize wxStyledTextCtrl::DoGetBestSize() const
 
3167
{
 
3168
    // What would be the best size for a wxSTC?
 
3169
    // Just give a reasonable minimum until something else can be figured out.
 
3170
    return wxSize(200,100);
 
3171
}
 
3172
 
 
3173
 
 
3174
//----------------------------------------------------------------------
 
3175
// Turn notifications from Scintilla into events
 
3176
 
 
3177
 
 
3178
void wxStyledTextCtrl::NotifyChange() {
 
3179
    wxStyledTextEvent evt(wxEVT_STC_CHANGE, GetId());
 
3180
    evt.SetEventObject(this);
 
3181
    GetEventHandler()->ProcessEvent(evt);
 
3182
}
 
3183
 
 
3184
 
 
3185
static void SetEventText(wxStyledTextEvent& evt, const char* text,
 
3186
                         size_t length) {
 
3187
    if(!text) return;
 
3188
 
 
3189
    // The unicode conversion MUST have a null byte to terminate the
 
3190
    // string so move it into a buffer first and give it one.
 
3191
    wxMemoryBuffer buf(length+1);
 
3192
    buf.AppendData((void*)text, length);
 
3193
    buf.AppendByte(0);
 
3194
    evt.SetText(stc2wx(buf));
 
3195
}
 
3196
 
 
3197
 
 
3198
void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) {
 
3199
    SCNotification& scn = *_scn;
 
3200
    wxStyledTextEvent evt(0, GetId());
 
3201
 
 
3202
    evt.SetEventObject(this);
 
3203
    evt.SetPosition(scn.position);
 
3204
    evt.SetKey(scn.ch);
 
3205
    evt.SetModifiers(scn.modifiers);
 
3206
 
 
3207
    switch (scn.nmhdr.code) {
 
3208
    case SCN_STYLENEEDED:
 
3209
        evt.SetEventType(wxEVT_STC_STYLENEEDED);
 
3210
        break;
 
3211
 
 
3212
    case SCN_CHARADDED:
 
3213
        evt.SetEventType(wxEVT_STC_CHARADDED);
 
3214
        break;
 
3215
 
 
3216
    case SCN_SAVEPOINTREACHED:
 
3217
        evt.SetEventType(wxEVT_STC_SAVEPOINTREACHED);
 
3218
        break;
 
3219
 
 
3220
    case SCN_SAVEPOINTLEFT:
 
3221
        evt.SetEventType(wxEVT_STC_SAVEPOINTLEFT);
 
3222
        break;
 
3223
 
 
3224
    case SCN_MODIFYATTEMPTRO:
 
3225
        evt.SetEventType(wxEVT_STC_ROMODIFYATTEMPT);
 
3226
        break;
 
3227
 
 
3228
    case SCN_KEY:
 
3229
        evt.SetEventType(wxEVT_STC_KEY);
 
3230
        break;
 
3231
 
 
3232
    case SCN_DOUBLECLICK:
 
3233
        evt.SetEventType(wxEVT_STC_DOUBLECLICK);
 
3234
        break;
 
3235
 
 
3236
    case SCN_UPDATEUI:
 
3237
        evt.SetEventType(wxEVT_STC_UPDATEUI);
 
3238
        break;
 
3239
 
 
3240
    case SCN_MODIFIED:
 
3241
        evt.SetEventType(wxEVT_STC_MODIFIED);
 
3242
        evt.SetModificationType(scn.modificationType);
 
3243
        SetEventText(evt, scn.text, scn.length);
 
3244
        evt.SetLength(scn.length);
 
3245
        evt.SetLinesAdded(scn.linesAdded);
 
3246
        evt.SetLine(scn.line);
 
3247
        evt.SetFoldLevelNow(scn.foldLevelNow);
 
3248
        evt.SetFoldLevelPrev(scn.foldLevelPrev);
 
3249
        break;
 
3250
 
 
3251
    case SCN_MACRORECORD:
 
3252
        evt.SetEventType(wxEVT_STC_MACRORECORD);
 
3253
        evt.SetMessage(scn.message);
 
3254
        evt.SetWParam(scn.wParam);
 
3255
        evt.SetLParam(scn.lParam);
 
3256
        break;
 
3257
 
 
3258
    case SCN_MARGINCLICK:
 
3259
        evt.SetEventType(wxEVT_STC_MARGINCLICK);
 
3260
        evt.SetMargin(scn.margin);
 
3261
        break;
 
3262
 
 
3263
    case SCN_NEEDSHOWN:
 
3264
        evt.SetEventType(wxEVT_STC_NEEDSHOWN);
 
3265
        evt.SetLength(scn.length);
 
3266
        break;
 
3267
 
 
3268
    case SCN_PAINTED:
 
3269
        evt.SetEventType(wxEVT_STC_PAINTED);
 
3270
        break;
 
3271
 
 
3272
    case SCN_USERLISTSELECTION:
 
3273
        evt.SetEventType(wxEVT_STC_USERLISTSELECTION);
 
3274
        evt.SetListType(scn.listType);
 
3275
        SetEventText(evt, scn.text, strlen(scn.text));
 
3276
        break;
 
3277
 
 
3278
    case SCN_URIDROPPED:
 
3279
        evt.SetEventType(wxEVT_STC_URIDROPPED);
 
3280
        SetEventText(evt, scn.text, strlen(scn.text));
 
3281
        break;
 
3282
 
 
3283
    case SCN_DWELLSTART:
 
3284
        evt.SetEventType(wxEVT_STC_DWELLSTART);
 
3285
        evt.SetX(scn.x);
 
3286
        evt.SetY(scn.y);
 
3287
        break;
 
3288
 
 
3289
    case SCN_DWELLEND:
 
3290
        evt.SetEventType(wxEVT_STC_DWELLEND);
 
3291
        evt.SetX(scn.x);
 
3292
        evt.SetY(scn.y);
 
3293
        break;
 
3294
 
 
3295
    case SCN_ZOOM:
 
3296
        evt.SetEventType(wxEVT_STC_ZOOM);
 
3297
        break;
 
3298
 
 
3299
    case SCN_HOTSPOTCLICK:
 
3300
        evt.SetEventType(wxEVT_STC_HOTSPOT_CLICK);
 
3301
        break;
 
3302
 
 
3303
    case SCN_HOTSPOTDOUBLECLICK:
 
3304
        evt.SetEventType(wxEVT_STC_HOTSPOT_DCLICK);
 
3305
        break;
 
3306
 
 
3307
    case SCN_CALLTIPCLICK:
 
3308
        evt.SetEventType(wxEVT_STC_CALLTIP_CLICK);
 
3309
        break;
 
3310
 
 
3311
    case SCN_AUTOCSELECTION:
 
3312
        evt.SetEventType(wxEVT_STC_AUTOCOMP_SELECTION);
 
3313
        break;
 
3314
        
 
3315
    default:
 
3316
        return;
 
3317
    }
 
3318
 
 
3319
    GetEventHandler()->ProcessEvent(evt);
 
3320
}
 
3321
 
 
3322
 
 
3323
//----------------------------------------------------------------------
 
3324
//----------------------------------------------------------------------
 
3325
//----------------------------------------------------------------------
 
3326
 
 
3327
wxStyledTextEvent::wxStyledTextEvent(wxEventType commandType, int id)
 
3328
    : wxCommandEvent(commandType, id)
 
3329
{
 
3330
    m_position = 0;
 
3331
    m_key = 0;
 
3332
    m_modifiers = 0;
 
3333
    m_modificationType = 0;
 
3334
    m_length = 0;
 
3335
    m_linesAdded = 0;
 
3336
    m_line = 0;
 
3337
    m_foldLevelNow = 0;
 
3338
    m_foldLevelPrev = 0;
 
3339
    m_margin = 0;
 
3340
    m_message = 0;
 
3341
    m_wParam = 0;
 
3342
    m_lParam = 0;
 
3343
    m_listType = 0;
 
3344
    m_x = 0;
 
3345
    m_y = 0;
 
3346
    m_dragAllowMove = false;
 
3347
#if wxUSE_DRAG_AND_DROP
 
3348
    m_dragResult = wxDragNone;
 
3349
#endif
 
3350
}
 
3351
 
 
3352
bool wxStyledTextEvent::GetShift() const { return (m_modifiers & SCI_SHIFT) != 0; }
 
3353
bool wxStyledTextEvent::GetControl() const { return (m_modifiers & SCI_CTRL) != 0; }
 
3354
bool wxStyledTextEvent::GetAlt() const { return (m_modifiers & SCI_ALT) != 0; }
 
3355
 
 
3356
 
 
3357
wxStyledTextEvent::wxStyledTextEvent(const wxStyledTextEvent& event):
 
3358
  wxCommandEvent(event)
 
3359
{
 
3360
    m_position =      event.m_position;
 
3361
    m_key =           event.m_key;
 
3362
    m_modifiers =     event.m_modifiers;
 
3363
    m_modificationType = event.m_modificationType;
 
3364
    m_text =          event.m_text;
 
3365
    m_length =        event.m_length;
 
3366
    m_linesAdded =    event.m_linesAdded;
 
3367
    m_line =          event.m_line;
 
3368
    m_foldLevelNow =  event.m_foldLevelNow;
 
3369
    m_foldLevelPrev = event.m_foldLevelPrev;
 
3370
 
 
3371
    m_margin =        event.m_margin;
 
3372
 
 
3373
    m_message =       event.m_message;
 
3374
    m_wParam =        event.m_wParam;
 
3375
    m_lParam =        event.m_lParam;
 
3376
 
 
3377
    m_listType =     event.m_listType;
 
3378
    m_x =            event.m_x;
 
3379
    m_y =            event.m_y;
 
3380
 
 
3381
    m_dragText =     event.m_dragText;
 
3382
    m_dragAllowMove =event.m_dragAllowMove;
 
3383
#if wxUSE_DRAG_AND_DROP
 
3384
    m_dragResult =   event.m_dragResult;
 
3385
#endif
 
3386
}
 
3387
 
 
3388
//----------------------------------------------------------------------
 
3389
//----------------------------------------------------------------------
 
3390
 
 
3391
 
 
3392
 
 
3393
 
 
3394
 
 
3395
 
 
3396
 
 
3397
 
 
3398