1 //////////////////////////////////////////////////////////////////////////// 
   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. 
  12 // Created:     13-Jan-2000 
  14 // Copyright:   (c) 2000 by Total Control Software 
  15 // Licence:     wxWindows license 
  16 ///////////////////////////////////////////////////////////////////////////// 
  21 #include "wx/tokenzr.h" 
  22 #include "wx/mstream.h" 
  26 #include "wx/stc/stc.h" 
  27 #include "ScintillaWX.h" 
  29 //---------------------------------------------------------------------- 
  31 const wxChar
* wxSTCNameStr 
= wxT("stcwindow"); 
  37 #define MAKELONG(a, b) ((a) | ((b) << 16)) 
  40 static long wxColourAsLong(const wxColour
& co
) { 
  41     return (((long)co
.Blue()  << 16) | 
  42             ((long)co
.Green() <<  8) | 
  46 static wxColour 
wxColourFromLong(long c
) { 
  48     clr
.Set((unsigned char)(c 
& 0xff), 
  49             (unsigned char)((c 
>> 8) & 0xff), 
  50             (unsigned char)((c 
>> 16) & 0xff)); 
  55 static wxColour 
wxColourFromSpec(const wxString
& spec
) { 
  56     // spec should be a colour name or "#RRGGBB" 
  57     if (spec
.GetChar(0) == wxT('#')) { 
  59         long red
, green
, blue
; 
  60         red 
= green 
= blue 
= 0; 
  61         spec
.Mid(1,2).ToLong(&red
,   16); 
  62         spec
.Mid(3,2).ToLong(&green
, 16); 
  63         spec
.Mid(5,2).ToLong(&blue
,  16); 
  64         return wxColour((unsigned char)red
, 
  69         return wxColour(spec
); 
  72 //---------------------------------------------------------------------- 
  74 DEFINE_EVENT_TYPE( wxEVT_STC_CHANGE 
) 
  75 DEFINE_EVENT_TYPE( wxEVT_STC_STYLENEEDED 
) 
  76 DEFINE_EVENT_TYPE( wxEVT_STC_CHARADDED 
) 
  77 DEFINE_EVENT_TYPE( wxEVT_STC_SAVEPOINTREACHED 
) 
  78 DEFINE_EVENT_TYPE( wxEVT_STC_SAVEPOINTLEFT 
) 
  79 DEFINE_EVENT_TYPE( wxEVT_STC_ROMODIFYATTEMPT 
) 
  80 DEFINE_EVENT_TYPE( wxEVT_STC_KEY 
) 
  81 DEFINE_EVENT_TYPE( wxEVT_STC_DOUBLECLICK 
) 
  82 DEFINE_EVENT_TYPE( wxEVT_STC_UPDATEUI 
) 
  83 DEFINE_EVENT_TYPE( wxEVT_STC_MODIFIED 
) 
  84 DEFINE_EVENT_TYPE( wxEVT_STC_MACRORECORD 
) 
  85 DEFINE_EVENT_TYPE( wxEVT_STC_MARGINCLICK 
) 
  86 DEFINE_EVENT_TYPE( wxEVT_STC_NEEDSHOWN 
) 
  87 DEFINE_EVENT_TYPE( wxEVT_STC_PAINTED 
) 
  88 DEFINE_EVENT_TYPE( wxEVT_STC_USERLISTSELECTION 
) 
  89 DEFINE_EVENT_TYPE( wxEVT_STC_URIDROPPED 
) 
  90 DEFINE_EVENT_TYPE( wxEVT_STC_DWELLSTART 
) 
  91 DEFINE_EVENT_TYPE( wxEVT_STC_DWELLEND 
) 
  92 DEFINE_EVENT_TYPE( wxEVT_STC_START_DRAG 
) 
  93 DEFINE_EVENT_TYPE( wxEVT_STC_DRAG_OVER 
) 
  94 DEFINE_EVENT_TYPE( wxEVT_STC_DO_DROP 
) 
  95 DEFINE_EVENT_TYPE( wxEVT_STC_ZOOM 
) 
  96 DEFINE_EVENT_TYPE( wxEVT_STC_HOTSPOT_CLICK 
) 
  97 DEFINE_EVENT_TYPE( wxEVT_STC_HOTSPOT_DCLICK 
) 
  98 DEFINE_EVENT_TYPE( wxEVT_STC_CALLTIP_CLICK 
) 
  99 DEFINE_EVENT_TYPE( wxEVT_STC_AUTOCOMP_SELECTION 
)     
 103 BEGIN_EVENT_TABLE(wxStyledTextCtrl
, wxControl
) 
 104     EVT_PAINT                   (wxStyledTextCtrl::OnPaint
) 
 105     EVT_SCROLLWIN               (wxStyledTextCtrl::OnScrollWin
) 
 106     EVT_SCROLL                  (wxStyledTextCtrl::OnScroll
) 
 107     EVT_SIZE                    (wxStyledTextCtrl::OnSize
) 
 108     EVT_LEFT_DOWN               (wxStyledTextCtrl::OnMouseLeftDown
) 
 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
) 
 116     EVT_CONTEXT_MENU            (wxStyledTextCtrl::OnContextMenu
) 
 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
) 
 131 IMPLEMENT_CLASS(wxStyledTextCtrl
, wxControl
) 
 132 IMPLEMENT_DYNAMIC_CLASS(wxStyledTextEvent
, wxCommandEvent
) 
 135 // forces the linking of the lexer modules 
 136 int Scintilla_LinkLexers(); 
 139 //---------------------------------------------------------------------- 
 140 // Constructor and Destructor 
 142 wxStyledTextCtrl::wxStyledTextCtrl(wxWindow 
*parent
, 
 147                                    const wxString
& name
) 
 150     Create(parent
, id
, pos
, size
, style
, name
); 
 154 bool wxStyledTextCtrl::Create(wxWindow 
*parent
, 
 159                               const wxString
& name
) 
 162     style 
|= wxVSCROLL 
| wxHSCROLL
; 
 164     if (!wxControl::Create(parent
, id
, pos
, size
, 
 165                            style 
| wxWANTS_CHARS 
| wxCLIP_CHILDREN
, 
 166                            wxDefaultValidator
, name
)) 
 170     Scintilla_LinkLexers(); 
 172     m_swx 
= new ScintillaWX(this); 
 174     m_lastKeyDownConsumed 
= false; 
 178     // Put Scintilla into unicode (UTF-8) mode 
 179     SetCodePage(wxSTC_CP_UTF8
); 
 182     SetBestFittingSize(size
); 
 184     // Reduces flicker on GTK+/X11 
 185     SetBackgroundStyle(wxBG_STYLE_CUSTOM
); 
 190 wxStyledTextCtrl::~wxStyledTextCtrl() { 
 195 //---------------------------------------------------------------------- 
 197 long wxStyledTextCtrl::SendMsg(int msg
, long wp
, long lp
) { 
 199     return m_swx
->WndProc(msg
, wp
, lp
); 
 202 //---------------------------------------------------------------------- 
 204 // Set the vertical scrollbar to use instead of the ont that's built-in. 
 205 void wxStyledTextCtrl::SetVScrollBar(wxScrollBar
* bar
)  { 
 208         // ensure that the built-in scrollbar is not visible 
 209         SetScrollbar(wxVERTICAL
, 0, 0, 0); 
 214 // Set the horizontal scrollbar to use instead of the ont that's built-in. 
 215 void wxStyledTextCtrl::SetHScrollBar(wxScrollBar
* bar
)  { 
 218         // ensure that the built-in scrollbar is not visible 
 219         SetScrollbar(wxHORIZONTAL
, 0, 0, 0); 
 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. 
 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
); 
 235 // Add array of cells to document. 
 236 void wxStyledTextCtrl::AddStyledText(const wxMemoryBuffer
& data
) { 
 237                           SendMsg(2002, data
.GetDataLen(), (long)data
.GetData()); 
 240 // Insert string at a position. 
 241 void wxStyledTextCtrl::InsertText(int pos
, const wxString
& text
) { 
 242     SendMsg(2003, pos
, (long)(const char*)wx2stc(text
)); 
 245 // Delete all text in the document. 
 246 void wxStyledTextCtrl::ClearAll() { 
 250 // Set all style bytes to 0, remove all folding information. 
 251 void wxStyledTextCtrl::ClearDocumentStyle() { 
 255 // Returns the number of characters in the document. 
 256 int wxStyledTextCtrl::GetLength() { 
 257     return SendMsg(2006, 0, 0); 
 260 // Returns the character byte at the position. 
 261 int wxStyledTextCtrl::GetCharAt(int pos
) { 
 262          return (unsigned char)SendMsg(2007, pos
, 0); 
 265 // Returns the position of the caret. 
 266 int wxStyledTextCtrl::GetCurrentPos() { 
 267     return SendMsg(2008, 0, 0); 
 270 // Returns the position of the opposite end of the selection to the caret. 
 271 int wxStyledTextCtrl::GetAnchor() { 
 272     return SendMsg(2009, 0, 0); 
 275 // Returns the style byte at the position. 
 276 int wxStyledTextCtrl::GetStyleAt(int pos
) { 
 277          return (unsigned char)SendMsg(2010, pos
, 0); 
 280 // Redoes the next action on the undo history. 
 281 void wxStyledTextCtrl::Redo() { 
 285 // Choose between collecting actions into the undo 
 286 // history and discarding them. 
 287 void wxStyledTextCtrl::SetUndoCollection(bool collectUndo
) { 
 288     SendMsg(2012, collectUndo
, 0); 
 291 // Select all the text in the document. 
 292 void wxStyledTextCtrl::SelectAll() { 
 296 // Remember the current position in the undo history as the position 
 297 // at which the document was saved. 
 298 void wxStyledTextCtrl::SetSavePoint() { 
 302 // Retrieve a buffer of cells. 
 303 wxMemoryBuffer 
wxStyledTextCtrl::GetStyledText(int startPos
, int endPos
) { 
 305         if (endPos 
< startPos
) { 
 310         int len 
= endPos 
- startPos
; 
 311         if (!len
) return buf
; 
 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
); 
 321 // Are there any redoable actions in the undo history? 
 322 bool wxStyledTextCtrl::CanRedo() { 
 323     return SendMsg(2016, 0, 0) != 0; 
 326 // Retrieve the line number at which a particular marker is located. 
 327 int wxStyledTextCtrl::MarkerLineFromHandle(int handle
) { 
 328     return SendMsg(2017, handle
, 0); 
 332 void wxStyledTextCtrl::MarkerDeleteHandle(int handle
) { 
 333     SendMsg(2018, handle
, 0); 
 336 // Is undo history being collected? 
 337 bool wxStyledTextCtrl::GetUndoCollection() { 
 338     return SendMsg(2019, 0, 0) != 0; 
 341 // Are white space characters currently visible? 
 342 // Returns one of SCWS_* constants. 
 343 int wxStyledTextCtrl::GetViewWhiteSpace() { 
 344     return SendMsg(2020, 0, 0); 
 347 // Make white space characters invisible, always visible or visible outside indentation. 
 348 void wxStyledTextCtrl::SetViewWhiteSpace(int viewWS
) { 
 349     SendMsg(2021, viewWS
, 0); 
 352 // Find the position from a point within the window. 
 353 int wxStyledTextCtrl::PositionFromPoint(wxPoint pt
) { 
 354         return SendMsg(2022, pt
.x
, pt
.y
); 
 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
); 
 363 // Set caret to start of a line and ensure it is visible. 
 364 void wxStyledTextCtrl::GotoLine(int line
) { 
 365     SendMsg(2024, line
, 0); 
 368 // Set caret to a position and ensure it is visible. 
 369 void wxStyledTextCtrl::GotoPos(int pos
) { 
 370     SendMsg(2025, pos
, 0); 
 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); 
 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()); 
 384             if (linePos
)  *linePos 
= 0; 
 385             return wxEmptyString
; 
 388         wxMemoryBuffer 
mbuf(len
+1); 
 389         char* buf 
= (char*)mbuf
.GetWriteBuf(len
+1); 
 391         int pos 
= SendMsg(2027, len
+1, (long)buf
); 
 392         mbuf
.UngetWriteBuf(len
); 
 394         if (linePos
)  *linePos 
= pos
; 
 398 // Retrieve the position of the last correctly styled character. 
 399 int wxStyledTextCtrl::GetEndStyled() { 
 400     return SendMsg(2028, 0, 0); 
 403 // Convert all line endings in the document to one mode. 
 404 void wxStyledTextCtrl::ConvertEOLs(int eolMode
) { 
 405     SendMsg(2029, eolMode
, 0); 
 408 // Retrieve the current end of line mode - one of CRLF, CR, or LF. 
 409 int wxStyledTextCtrl::GetEOLMode() { 
 410     return SendMsg(2030, 0, 0); 
 413 // Set the current end of line mode. 
 414 void wxStyledTextCtrl::SetEOLMode(int eolMode
) { 
 415     SendMsg(2031, eolMode
, 0); 
 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
); 
 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
); 
 430 // Is drawing done first into a buffer or direct to the screen? 
 431 bool wxStyledTextCtrl::GetBufferedDraw() { 
 432     return SendMsg(2034, 0, 0) != 0; 
 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); 
 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); 
 446 // Retrieve the visible size of a tab. 
 447 int wxStyledTextCtrl::GetTabWidth() { 
 448     return SendMsg(2121, 0, 0); 
 451 // Set the code page used to interpret the bytes of the document as characters. 
 452 void wxStyledTextCtrl::SetCodePage(int codePage
) { 
 454     wxASSERT_MSG(codePage 
== wxSTC_CP_UTF8
, 
 455                  wxT("Only wxSTC_CP_UTF8 may be used when wxUSE_UNICODE is on.")); 
 457     wxASSERT_MSG(codePage 
!= wxSTC_CP_UTF8
, 
 458                  wxT("wxSTC_CP_UTF8 may not be used when wxUSE_UNICODE is off.")); 
 460     SendMsg(2037, codePage
); 
 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
) { 
 469                 SendMsg(2040, markerNumber
, markerSymbol
); 
 471                     MarkerSetForeground(markerNumber
, foreground
); 
 473                     MarkerSetBackground(markerNumber
, background
); 
 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
)); 
 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
)); 
 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
); 
 491 // Delete a marker from a line. 
 492 void wxStyledTextCtrl::MarkerDelete(int line
, int markerNumber
) { 
 493     SendMsg(2044, line
, markerNumber
); 
 496 // Delete all markers with a particular number from all lines. 
 497 void wxStyledTextCtrl::MarkerDeleteAll(int markerNumber
) { 
 498     SendMsg(2045, markerNumber
, 0); 
 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); 
 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
); 
 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
); 
 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(); 
 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
); 
 528         SendMsg(2049, markerNumber
, (long)buff
); 
 533 // Add a set of markers to a line. 
 534 void wxStyledTextCtrl::MarkerAddSet(int line
, int set
) { 
 535     SendMsg(2466, line
, set
); 
 538 // Set a margin to be either numeric or symbolic. 
 539 void wxStyledTextCtrl::SetMarginType(int margin
, int marginType
) { 
 540     SendMsg(2240, margin
, marginType
); 
 543 // Retrieve the type of a margin. 
 544 int wxStyledTextCtrl::GetMarginType(int margin
) { 
 545     return SendMsg(2241, margin
, 0); 
 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
); 
 553 // Retrieve the width of a margin in pixels. 
 554 int wxStyledTextCtrl::GetMarginWidth(int margin
) { 
 555     return SendMsg(2243, margin
, 0); 
 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
); 
 563 // Retrieve the marker mask of a margin. 
 564 int wxStyledTextCtrl::GetMarginMask(int margin
) { 
 565     return SendMsg(2245, margin
, 0); 
 568 // Make a margin sensitive or insensitive to mouse clicks. 
 569 void wxStyledTextCtrl::SetMarginSensitive(int margin
, bool sensitive
) { 
 570     SendMsg(2246, margin
, sensitive
); 
 573 // Retrieve the mouse click sensitivity of a margin. 
 574 bool wxStyledTextCtrl::GetMarginSensitive(int margin
) { 
 575     return SendMsg(2247, margin
, 0) != 0; 
 578 // Clear all the styles and make equivalent to the global default style. 
 579 void wxStyledTextCtrl::StyleClearAll() { 
 583 // Set the foreground colour of a style. 
 584 void wxStyledTextCtrl::StyleSetForeground(int style
, const wxColour
& fore
) { 
 585     SendMsg(2051, style
, wxColourAsLong(fore
)); 
 588 // Set the background colour of a style. 
 589 void wxStyledTextCtrl::StyleSetBackground(int style
, const wxColour
& back
) { 
 590     SendMsg(2052, style
, wxColourAsLong(back
)); 
 593 // Set a style to be bold or not. 
 594 void wxStyledTextCtrl::StyleSetBold(int style
, bool bold
) { 
 595     SendMsg(2053, style
, bold
); 
 598 // Set a style to be italic or not. 
 599 void wxStyledTextCtrl::StyleSetItalic(int style
, bool italic
) { 
 600     SendMsg(2054, style
, italic
); 
 603 // Set the size of characters of a style. 
 604 void wxStyledTextCtrl::StyleSetSize(int style
, int sizePoints
) { 
 605     SendMsg(2055, style
, sizePoints
); 
 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
)); 
 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
); 
 618 // Reset the default style to its state at startup 
 619 void wxStyledTextCtrl::StyleResetDefault() { 
 623 // Set a style to be underlined or not. 
 624 void wxStyledTextCtrl::StyleSetUnderline(int style
, bool underline
) { 
 625     SendMsg(2059, style
, underline
); 
 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
); 
 633 // Set a style to be a hotspot or not. 
 634 void wxStyledTextCtrl::StyleSetHotSpot(int style
, bool hotspot
) { 
 635     SendMsg(2409, style
, hotspot
); 
 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
)); 
 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
)); 
 648 // Set the foreground colour of the caret. 
 649 void wxStyledTextCtrl::SetCaretForeground(const wxColour
& fore
) { 
 650     SendMsg(2069, wxColourAsLong(fore
), 0); 
 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
); 
 658 // When key+modifier combination km is pressed do nothing. 
 659 void wxStyledTextCtrl::CmdKeyClear(int key
, int modifiers
) { 
 660          SendMsg(2071, MAKELONG(key
, modifiers
)); 
 663 // Drop all key mappings. 
 664 void wxStyledTextCtrl::CmdKeyClearAll() { 
 668 // Set the styles for a segment of the document. 
 669 void wxStyledTextCtrl::SetStyleBytes(int length
, char* styleBytes
) { 
 670         SendMsg(2073, length
, (long)styleBytes
); 
 673 // Set a style to be visible or not. 
 674 void wxStyledTextCtrl::StyleSetVisible(int style
, bool visible
) { 
 675     SendMsg(2074, style
, visible
); 
 678 // Get the time in milliseconds that the caret is on and off. 
 679 int wxStyledTextCtrl::GetCaretPeriod() { 
 680     return SendMsg(2075, 0, 0); 
 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); 
 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
)); 
 694 // Start a sequence of actions that is undone and redone as a unit. 
 696 void wxStyledTextCtrl::BeginUndoAction() { 
 700 // End a sequence of actions that is undone and redone as a unit. 
 701 void wxStyledTextCtrl::EndUndoAction() { 
 705 // Set an indicator to plain, squiggle or TT. 
 706 void wxStyledTextCtrl::IndicatorSetStyle(int indic
, int style
) { 
 707     SendMsg(2080, indic
, style
); 
 710 // Retrieve the style of an indicator. 
 711 int wxStyledTextCtrl::IndicatorGetStyle(int indic
) { 
 712     return SendMsg(2081, indic
, 0); 
 715 // Set the foreground colour of an indicator. 
 716 void wxStyledTextCtrl::IndicatorSetForeground(int indic
, const wxColour
& fore
) { 
 717     SendMsg(2082, indic
, wxColourAsLong(fore
)); 
 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
); 
 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
)); 
 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
)); 
 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); 
 743 // Retrieve number of bits in style bytes used to hold the lexical state. 
 744 int wxStyledTextCtrl::GetStyleBits() { 
 745     return SendMsg(2091, 0, 0); 
 748 // Used to hold extra styling information for each line. 
 749 void wxStyledTextCtrl::SetLineState(int line
, int state
) { 
 750     SendMsg(2092, line
, state
); 
 753 // Retrieve the extra styling information for a line. 
 754 int wxStyledTextCtrl::GetLineState(int line
) { 
 755     return SendMsg(2093, line
, 0); 
 758 // Retrieve the last line number that has line state. 
 759 int wxStyledTextCtrl::GetMaxLineState() { 
 760     return SendMsg(2094, 0, 0); 
 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; 
 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); 
 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
); 
 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); 
 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
); 
 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
)); 
 797 // Remove the auto-completion list from the screen. 
 798 void wxStyledTextCtrl::AutoCompCancel() { 
 802 // Is there an auto-completion list visible? 
 803 bool wxStyledTextCtrl::AutoCompActive() { 
 804     return SendMsg(2102, 0, 0) != 0; 
 807 // Retrieve the position of the caret when the auto-completion list was displayed. 
 808 int wxStyledTextCtrl::AutoCompPosStart() { 
 809     return SendMsg(2103, 0, 0); 
 812 // User has selected an item so remove the list and insert the selection. 
 813 void wxStyledTextCtrl::AutoCompComplete() { 
 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
)); 
 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); 
 828 // Retrieve the auto-completion list separator character. 
 829 int wxStyledTextCtrl::AutoCompGetSeparator() { 
 830     return SendMsg(2107, 0, 0); 
 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
)); 
 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); 
 844 // Retrieve whether auto-completion cancelled by backspacing before start. 
 845 bool wxStyledTextCtrl::AutoCompGetCancelAtStart() { 
 846     return SendMsg(2111, 0, 0) != 0; 
 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
)); 
 855 // Should a single item auto-completion list automatically choose the item. 
 856 void wxStyledTextCtrl::AutoCompSetChooseSingle(bool chooseSingle
) { 
 857     SendMsg(2113, chooseSingle
, 0); 
 860 // Retrieve whether a single item auto-completion list automatically choose the item. 
 861 bool wxStyledTextCtrl::AutoCompGetChooseSingle() { 
 862     return SendMsg(2114, 0, 0) != 0; 
 865 // Set whether case is significant when performing auto-completion searches. 
 866 void wxStyledTextCtrl::AutoCompSetIgnoreCase(bool ignoreCase
) { 
 867     SendMsg(2115, ignoreCase
, 0); 
 870 // Retrieve state of ignore case flag. 
 871 bool wxStyledTextCtrl::AutoCompGetIgnoreCase() { 
 872     return SendMsg(2116, 0, 0) != 0; 
 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
)); 
 880 // Set whether or not autocompletion is hidden automatically when nothing matches. 
 881 void wxStyledTextCtrl::AutoCompSetAutoHide(bool autoHide
) { 
 882     SendMsg(2118, autoHide
, 0); 
 885 // Retrieve whether or not autocompletion is hidden automatically when nothing matches. 
 886 bool wxStyledTextCtrl::AutoCompGetAutoHide() { 
 887     return SendMsg(2119, 0, 0) != 0; 
 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); 
 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; 
 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(); 
 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
); 
 914         SendMsg(2405, type
, (long)buff
); 
 919 // Clear all the registered images. 
 920 void wxStyledTextCtrl::ClearRegisteredImages() { 
 924 // Retrieve the auto-completion list type-separator character. 
 925 int wxStyledTextCtrl::AutoCompGetTypeSeparator() { 
 926     return SendMsg(2285, 0, 0); 
 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); 
 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); 
 941 // Get the maximum width, in characters, of auto-completion and user lists. 
 942 int wxStyledTextCtrl::AutoCompGetMaxWidth() { 
 943     return SendMsg(2209, 0, 0); 
 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); 
 952 // Set the maximum height, in rows, of auto-completion and user lists. 
 953 int wxStyledTextCtrl::AutoCompGetMaxHeight() { 
 954     return SendMsg(2211, 0, 0); 
 957 // Set the number of spaces used for one level of indentation. 
 958 void wxStyledTextCtrl::SetIndent(int indentSize
) { 
 959     SendMsg(2122, indentSize
, 0); 
 962 // Retrieve indentation size. 
 963 int wxStyledTextCtrl::GetIndent() { 
 964     return SendMsg(2123, 0, 0); 
 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); 
 973 // Retrieve whether tabs will be used in indentation. 
 974 bool wxStyledTextCtrl::GetUseTabs() { 
 975     return SendMsg(2125, 0, 0) != 0; 
 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
); 
 983 // Retrieve the number of columns that a line is indented. 
 984 int wxStyledTextCtrl::GetLineIndentation(int line
) { 
 985     return SendMsg(2127, line
, 0); 
 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); 
 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); 
 998 // Show or hide the horizontal scroll bar. 
 999 void wxStyledTextCtrl::SetUseHorizontalScrollBar(bool show
) { 
1000     SendMsg(2130, show
, 0); 
1003 // Is the horizontal scroll bar visible? 
1004 bool wxStyledTextCtrl::GetUseHorizontalScrollBar() { 
1005     return SendMsg(2131, 0, 0) != 0; 
1008 // Show or hide indentation guides. 
1009 void wxStyledTextCtrl::SetIndentationGuides(bool show
) { 
1010     SendMsg(2132, show
, 0); 
1013 // Are the indentation guides visible? 
1014 bool wxStyledTextCtrl::GetIndentationGuides() { 
1015     return SendMsg(2133, 0, 0) != 0; 
1018 // Set the highlighted indentation guide column. 
1019 // 0 = no highlighted guide. 
1020 void wxStyledTextCtrl::SetHighlightGuide(int column
) { 
1021     SendMsg(2134, column
, 0); 
1024 // Get the highlighted indentation guide column. 
1025 int wxStyledTextCtrl::GetHighlightGuide() { 
1026     return SendMsg(2135, 0, 0); 
1029 // Get the position after the last visible characters on a line. 
1030 int wxStyledTextCtrl::GetLineEndPosition(int line
) { 
1031     return SendMsg(2136, line
, 0); 
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); 
1039 // Get the foreground colour of the caret. 
1040 wxColour 
wxStyledTextCtrl::GetCaretForeground() { 
1041     long c 
= SendMsg(2138, 0, 0); 
1042     return wxColourFromLong(c
); 
1045 // In read-only mode? 
1046 bool wxStyledTextCtrl::GetReadOnly() { 
1047     return SendMsg(2140, 0, 0) != 0; 
1050 // Sets the position of the caret. 
1051 void wxStyledTextCtrl::SetCurrentPos(int pos
) { 
1052     SendMsg(2141, pos
, 0); 
1055 // Sets the position that starts the selection - this becomes the anchor. 
1056 void wxStyledTextCtrl::SetSelectionStart(int pos
) { 
1057     SendMsg(2142, pos
, 0); 
1060 // Returns the position at the start of the selection. 
1061 int wxStyledTextCtrl::GetSelectionStart() { 
1062     return SendMsg(2143, 0, 0); 
1065 // Sets the position that ends the selection - this becomes the currentPosition. 
1066 void wxStyledTextCtrl::SetSelectionEnd(int pos
) { 
1067     SendMsg(2144, pos
, 0); 
1070 // Returns the position at the end of the selection. 
1071 int wxStyledTextCtrl::GetSelectionEnd() { 
1072     return SendMsg(2145, 0, 0); 
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); 
1080 // Returns the print magnification. 
1081 int wxStyledTextCtrl::GetPrintMagnification() { 
1082     return SendMsg(2147, 0, 0); 
1085 // Modify colours when printing for clearer printed text. 
1086 void wxStyledTextCtrl::SetPrintColourMode(int mode
) { 
1087     SendMsg(2148, mode
, 0); 
1090 // Returns the print colour mode. 
1091 int wxStyledTextCtrl::GetPrintColourMode() { 
1092     return SendMsg(2149, 0, 0); 
1095 // Find some text in the document. 
1096 int wxStyledTextCtrl::FindText(int minPos
, int maxPos
, 
1097                const wxString
& text
, 
1100             ft
.chrg
.cpMin 
= minPos
; 
1101             ft
.chrg
.cpMax 
= maxPos
; 
1102             wxWX2MBbuf buf 
= (wxWX2MBbuf
)wx2stc(text
); 
1103             ft
.lpstrText 
= (char*)(const char*)buf
; 
1105             return SendMsg(2150, flags
, (long)&ft
); 
1108 // On Windows, will draw the document into a display context such as a printer. 
1109  int wxStyledTextCtrl::FormatRange(bool   doDraw
, 
1118              if (endPos 
< startPos
) { 
1119                  int temp 
= startPos
; 
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
; 
1136              return SendMsg(2151, doDraw
, (long)&fr
); 
1139 // Retrieve the display line at the top of the display. 
1140 int wxStyledTextCtrl::GetFirstVisibleLine() { 
1141     return SendMsg(2152, 0, 0); 
1144 // Retrieve the contents of a line. 
1145 wxString 
wxStyledTextCtrl::GetLine(int line
) { 
1146          int len 
= LineLength(line
); 
1147          if (!len
) return wxEmptyString
; 
1149          wxMemoryBuffer 
mbuf(len
+1); 
1150          char* buf 
= (char*)mbuf
.GetWriteBuf(len
+1); 
1151          SendMsg(2153, line
, (long)buf
); 
1152          mbuf
.UngetWriteBuf(len
); 
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); 
1162 // Sets the size in pixels of the left margin. 
1163 void wxStyledTextCtrl::SetMarginLeft(int pixelWidth
) { 
1164     SendMsg(2155, 0, pixelWidth
); 
1167 // Returns the size in pixels of the left margin. 
1168 int wxStyledTextCtrl::GetMarginLeft() { 
1169     return SendMsg(2156, 0, 0); 
1172 // Sets the size in pixels of the right margin. 
1173 void wxStyledTextCtrl::SetMarginRight(int pixelWidth
) { 
1174     SendMsg(2157, 0, pixelWidth
); 
1177 // Returns the size in pixels of the right margin. 
1178 int wxStyledTextCtrl::GetMarginRight() { 
1179     return SendMsg(2158, 0, 0); 
1182 // Is the document different from when it was last saved? 
1183 bool wxStyledTextCtrl::GetModify() { 
1184     return SendMsg(2159, 0, 0) != 0; 
1187 // Select a range of text. 
1188 void wxStyledTextCtrl::SetSelection(int start
, int end
) { 
1189     SendMsg(2160, start
, end
); 
1192 // Retrieve the selected text. 
1193 wxString 
wxStyledTextCtrl::GetSelectedText() { 
1197          GetSelection(&start
, &end
); 
1198          int   len  
= end 
- start
; 
1199          if (!len
) return wxEmptyString
; 
1201          wxMemoryBuffer 
mbuf(len
+2); 
1202          char* buf 
= (char*)mbuf
.GetWriteBuf(len
+1); 
1203          SendMsg(2161, 0, (long)buf
); 
1204          mbuf
.UngetWriteBuf(len
); 
1209 // Retrieve a range of text. 
1210 wxString 
wxStyledTextCtrl::GetTextRange(int startPos
, int endPos
) { 
1211          if (endPos 
< startPos
) { 
1212              int temp 
= startPos
; 
1216          int   len  
= endPos 
- startPos
; 
1217          if (!len
) return wxEmptyString
; 
1218          wxMemoryBuffer 
mbuf(len
+1); 
1219          char* buf 
= (char*)mbuf
.GetWriteBuf(len
); 
1222          tr
.chrg
.cpMin 
= startPos
; 
1223          tr
.chrg
.cpMax 
= endPos
; 
1224          SendMsg(2162, 0, (long)&tr
); 
1225          mbuf
.UngetWriteBuf(len
); 
1230 // Draw the selection in normal style or with selection highlighted. 
1231 void wxStyledTextCtrl::HideSelection(bool normal
) { 
1232     SendMsg(2163, normal
, 0); 
1235 // Retrieve the line containing a position. 
1236 int wxStyledTextCtrl::LineFromPosition(int pos
) { 
1237     return SendMsg(2166, pos
, 0); 
1240 // Retrieve the position at the start of a line. 
1241 int wxStyledTextCtrl::PositionFromLine(int line
) { 
1242     return SendMsg(2167, line
, 0); 
1245 // Scroll horizontally and vertically. 
1246 void wxStyledTextCtrl::LineScroll(int columns
, int lines
) { 
1247     SendMsg(2168, columns
, lines
); 
1250 // Ensure the caret is visible. 
1251 void wxStyledTextCtrl::EnsureCaretVisible() { 
1252     SendMsg(2169, 0, 0); 
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
)); 
1260 // Set to read only or read write. 
1261 void wxStyledTextCtrl::SetReadOnly(bool readOnly
) { 
1262     SendMsg(2171, readOnly
, 0); 
1265 // Will a paste succeed? 
1266 bool wxStyledTextCtrl::CanPaste() { 
1267     return SendMsg(2173, 0, 0) != 0; 
1270 // Are there any undoable actions in the undo history? 
1271 bool wxStyledTextCtrl::CanUndo() { 
1272     return SendMsg(2174, 0, 0) != 0; 
1275 // Delete the undo history. 
1276 void wxStyledTextCtrl::EmptyUndoBuffer() { 
1277     SendMsg(2175, 0, 0); 
1280 // Undo one action in the undo history. 
1281 void wxStyledTextCtrl::Undo() { 
1282     SendMsg(2176, 0, 0); 
1285 // Cut the selection to the clipboard. 
1286 void wxStyledTextCtrl::Cut() { 
1287     SendMsg(2177, 0, 0); 
1290 // Copy the selection to the clipboard. 
1291 void wxStyledTextCtrl::Copy() { 
1292     SendMsg(2178, 0, 0); 
1295 // Paste the contents of the clipboard into the document replacing the selection. 
1296 void wxStyledTextCtrl::Paste() { 
1297     SendMsg(2179, 0, 0); 
1300 // Clear the selection. 
1301 void wxStyledTextCtrl::Clear() { 
1302     SendMsg(2180, 0, 0); 
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
)); 
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
); 
1321 // Retrieve the number of characters in the document. 
1322 int wxStyledTextCtrl::GetTextLength() { 
1323     return SendMsg(2183, 0, 0); 
1326 // Set to overtype (true) or insert mode. 
1327 void wxStyledTextCtrl::SetOvertype(bool overtype
) { 
1328     SendMsg(2186, overtype
, 0); 
1331 // Returns true if overtype mode is active otherwise false is returned. 
1332 bool wxStyledTextCtrl::GetOvertype() { 
1333     return SendMsg(2187, 0, 0) != 0; 
1336 // Set the width of the insert mode caret. 
1337 void wxStyledTextCtrl::SetCaretWidth(int pixelWidth
) { 
1338     SendMsg(2188, pixelWidth
, 0); 
1341 // Returns the width of the insert mode caret. 
1342 int wxStyledTextCtrl::GetCaretWidth() { 
1343     return SendMsg(2189, 0, 0); 
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); 
1352 // Get the position that starts the target. 
1353 int wxStyledTextCtrl::GetTargetStart() { 
1354     return SendMsg(2191, 0, 0); 
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); 
1363 // Get the position that ends the target. 
1364 int wxStyledTextCtrl::GetTargetEnd() { 
1365     return SendMsg(2193, 0, 0); 
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. 
1372      int wxStyledTextCtrl::ReplaceTarget(const wxString
& text
) { 
1373          wxWX2MBbuf buf 
= (wxWX2MBbuf
)wx2stc(text
); 
1374          return SendMsg(2194, strlen(buf
), (long)(const char*)buf
); 
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. 
1384      int wxStyledTextCtrl::ReplaceTargetRE(const wxString
& text
) { 
1385          wxWX2MBbuf buf 
= (wxWX2MBbuf
)wx2stc(text
); 
1386          return SendMsg(2195, strlen(buf
), (long)(const char*)buf
); 
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. 
1393      int wxStyledTextCtrl::SearchInTarget(const wxString
& text
) { 
1394          wxWX2MBbuf buf 
= (wxWX2MBbuf
)wx2stc(text
); 
1395          return SendMsg(2197, strlen(buf
), (long)(const char*)buf
); 
1398 // Set the search flags used by SearchInTarget. 
1399 void wxStyledTextCtrl::SetSearchFlags(int flags
) { 
1400     SendMsg(2198, flags
, 0); 
1403 // Get the search flags used by SearchInTarget. 
1404 int wxStyledTextCtrl::GetSearchFlags() { 
1405     return SendMsg(2199, 0, 0); 
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
)); 
1413 // Remove the call tip from the screen. 
1414 void wxStyledTextCtrl::CallTipCancel() { 
1415     SendMsg(2201, 0, 0); 
1418 // Is there an active call tip? 
1419 bool wxStyledTextCtrl::CallTipActive() { 
1420     return SendMsg(2202, 0, 0) != 0; 
1423 // Retrieve the position where the caret was before displaying the call tip. 
1424 int wxStyledTextCtrl::CallTipPosAtStart() { 
1425     return SendMsg(2203, 0, 0); 
1428 // Highlight a segment of the definition. 
1429 void wxStyledTextCtrl::CallTipSetHighlight(int start
, int end
) { 
1430     SendMsg(2204, start
, end
); 
1433 // Set the background colour for the call tip. 
1434 void wxStyledTextCtrl::CallTipSetBackground(const wxColour
& back
) { 
1435     SendMsg(2205, wxColourAsLong(back
), 0); 
1438 // Set the foreground colour for the call tip. 
1439 void wxStyledTextCtrl::CallTipSetForeground(const wxColour
& fore
) { 
1440     SendMsg(2206, wxColourAsLong(fore
), 0); 
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); 
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); 
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); 
1458 // The number of display lines needed to wrap a document line 
1459 int wxStyledTextCtrl::WrapCount(int line
) { 
1460     return SendMsg(2235, line
, 0); 
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
); 
1470 // Retrieve the fold level of a line. 
1471 int wxStyledTextCtrl::GetFoldLevel(int line
) { 
1472     return SendMsg(2223, line
, 0); 
1475 // Find the last child line of a header line. 
1476 int wxStyledTextCtrl::GetLastChild(int line
, int level
) { 
1477     return SendMsg(2224, line
, level
); 
1480 // Find the parent line of a child line. 
1481 int wxStyledTextCtrl::GetFoldParent(int line
) { 
1482     return SendMsg(2225, line
, 0); 
1485 // Make a range of lines visible. 
1486 void wxStyledTextCtrl::ShowLines(int lineStart
, int lineEnd
) { 
1487     SendMsg(2226, lineStart
, lineEnd
); 
1490 // Make a range of lines invisible. 
1491 void wxStyledTextCtrl::HideLines(int lineStart
, int lineEnd
) { 
1492     SendMsg(2227, lineStart
, lineEnd
); 
1495 // Is a line visible? 
1496 bool wxStyledTextCtrl::GetLineVisible(int line
) { 
1497     return SendMsg(2228, line
, 0) != 0; 
1500 // Show the children of a header line. 
1501 void wxStyledTextCtrl::SetFoldExpanded(int line
, bool expanded
) { 
1502     SendMsg(2229, line
, expanded
); 
1505 // Is a header line expanded? 
1506 bool wxStyledTextCtrl::GetFoldExpanded(int line
) { 
1507     return SendMsg(2230, line
, 0) != 0; 
1510 // Switch a header line between expanded and contracted. 
1511 void wxStyledTextCtrl::ToggleFold(int line
) { 
1512     SendMsg(2231, line
, 0); 
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); 
1520 // Set some style options for folding. 
1521 void wxStyledTextCtrl::SetFoldFlags(int flags
) { 
1522     SendMsg(2233, flags
, 0); 
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); 
1531 // Sets whether a tab pressed when caret is within indentation indents. 
1532 void wxStyledTextCtrl::SetTabIndents(bool tabIndents
) { 
1533     SendMsg(2260, tabIndents
, 0); 
1536 // Does a tab pressed when caret is within indentation indent? 
1537 bool wxStyledTextCtrl::GetTabIndents() { 
1538     return SendMsg(2261, 0, 0) != 0; 
1541 // Sets whether a backspace pressed when caret is within indentation unindents. 
1542 void wxStyledTextCtrl::SetBackSpaceUnIndents(bool bsUnIndents
) { 
1543     SendMsg(2262, bsUnIndents
, 0); 
1546 // Does a backspace pressed when caret is within indentation unindent? 
1547 bool wxStyledTextCtrl::GetBackSpaceUnIndents() { 
1548     return SendMsg(2263, 0, 0) != 0; 
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); 
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); 
1561 // Get position of start of word. 
1562 int wxStyledTextCtrl::WordStartPosition(int pos
, bool onlyWordCharacters
) { 
1563     return SendMsg(2266, pos
, onlyWordCharacters
); 
1566 // Get position of end of word. 
1567 int wxStyledTextCtrl::WordEndPosition(int pos
, bool onlyWordCharacters
) { 
1568     return SendMsg(2267, pos
, onlyWordCharacters
); 
1571 // Sets whether text is word wrapped. 
1572 void wxStyledTextCtrl::SetWrapMode(int mode
) { 
1573     SendMsg(2268, mode
, 0); 
1576 // Retrieve whether text is word wrapped. 
1577 int wxStyledTextCtrl::GetWrapMode() { 
1578     return SendMsg(2269, 0, 0); 
1581 // Set the display mode of visual flags for wrapped lines. 
1582 void wxStyledTextCtrl::SetWrapVisualFlags(int wrapVisualFlags
) { 
1583     SendMsg(2460, wrapVisualFlags
, 0); 
1586 // Retrive the display mode of visual flags for wrapped lines. 
1587 int wxStyledTextCtrl::GetWrapVisualFlags() { 
1588     return SendMsg(2461, 0, 0); 
1591 // Set the location of visual flags for wrapped lines. 
1592 void wxStyledTextCtrl::SetWrapVisualFlagsLocation(int wrapVisualFlagsLocation
) { 
1593     SendMsg(2462, wrapVisualFlagsLocation
, 0); 
1596 // Retrive the location of visual flags for wrapped lines. 
1597 int wxStyledTextCtrl::GetWrapVisualFlagsLocation() { 
1598     return SendMsg(2463, 0, 0); 
1601 // Set the start indent for wrapped lines. 
1602 void wxStyledTextCtrl::SetWrapStartIndent(int indent
) { 
1603     SendMsg(2464, indent
, 0); 
1606 // Retrive the start indent for wrapped lines. 
1607 int wxStyledTextCtrl::GetWrapStartIndent() { 
1608     return SendMsg(2465, 0, 0); 
1611 // Sets the degree of caching of layout information. 
1612 void wxStyledTextCtrl::SetLayoutCache(int mode
) { 
1613     SendMsg(2272, mode
, 0); 
1616 // Retrieve the degree of caching of layout information. 
1617 int wxStyledTextCtrl::GetLayoutCache() { 
1618     return SendMsg(2273, 0, 0); 
1621 // Sets the document width assumed for scrolling. 
1622 void wxStyledTextCtrl::SetScrollWidth(int pixelWidth
) { 
1623     SendMsg(2274, pixelWidth
, 0); 
1626 // Retrieve the document width assumed for scrolling. 
1627 int wxStyledTextCtrl::GetScrollWidth() { 
1628     return SendMsg(2275, 0, 0); 
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
)); 
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); 
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; 
1651 // Retrieve the height of a particular line of text in pixels. 
1652 int wxStyledTextCtrl::TextHeight(int line
) { 
1653     return SendMsg(2279, line
, 0); 
1656 // Show or hide the vertical scroll bar. 
1657 void wxStyledTextCtrl::SetUseVerticalScrollBar(bool show
) { 
1658     SendMsg(2280, show
, 0); 
1661 // Is the vertical scroll bar visible? 
1662 bool wxStyledTextCtrl::GetUseVerticalScrollBar() { 
1663     return SendMsg(2281, 0, 0) != 0; 
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
); 
1672 // Is drawing done in two phases with backgrounds drawn before foregrounds? 
1673 bool wxStyledTextCtrl::GetTwoPhaseDraw() { 
1674     return SendMsg(2283, 0, 0) != 0; 
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); 
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); 
1688 // Join the lines in the target. 
1689 void wxStyledTextCtrl::LinesJoin() { 
1690     SendMsg(2288, 0, 0); 
1693 // Split the lines in the target into lines that are less wide than pixelWidth 
1695 void wxStyledTextCtrl::LinesSplit(int pixelWidth
) { 
1696     SendMsg(2289, pixelWidth
, 0); 
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
)); 
1703 void wxStyledTextCtrl::SetFoldMarginHiColour(bool useSetting
, const wxColour
& fore
) { 
1704     SendMsg(2291, useSetting
, wxColourAsLong(fore
)); 
1707 // Move caret down one line. 
1708 void wxStyledTextCtrl::LineDown() { 
1709     SendMsg(2300, 0, 0); 
1712 // Move caret down one line extending selection to new caret position. 
1713 void wxStyledTextCtrl::LineDownExtend() { 
1714     SendMsg(2301, 0, 0); 
1717 // Move caret up one line. 
1718 void wxStyledTextCtrl::LineUp() { 
1719     SendMsg(2302, 0, 0); 
1722 // Move caret up one line extending selection to new caret position. 
1723 void wxStyledTextCtrl::LineUpExtend() { 
1724     SendMsg(2303, 0, 0); 
1727 // Move caret left one character. 
1728 void wxStyledTextCtrl::CharLeft() { 
1729     SendMsg(2304, 0, 0); 
1732 // Move caret left one character extending selection to new caret position. 
1733 void wxStyledTextCtrl::CharLeftExtend() { 
1734     SendMsg(2305, 0, 0); 
1737 // Move caret right one character. 
1738 void wxStyledTextCtrl::CharRight() { 
1739     SendMsg(2306, 0, 0); 
1742 // Move caret right one character extending selection to new caret position. 
1743 void wxStyledTextCtrl::CharRightExtend() { 
1744     SendMsg(2307, 0, 0); 
1747 // Move caret left one word. 
1748 void wxStyledTextCtrl::WordLeft() { 
1749     SendMsg(2308, 0, 0); 
1752 // Move caret left one word extending selection to new caret position. 
1753 void wxStyledTextCtrl::WordLeftExtend() { 
1754     SendMsg(2309, 0, 0); 
1757 // Move caret right one word. 
1758 void wxStyledTextCtrl::WordRight() { 
1759     SendMsg(2310, 0, 0); 
1762 // Move caret right one word extending selection to new caret position. 
1763 void wxStyledTextCtrl::WordRightExtend() { 
1764     SendMsg(2311, 0, 0); 
1767 // Move caret to first position on line. 
1768 void wxStyledTextCtrl::Home() { 
1769     SendMsg(2312, 0, 0); 
1772 // Move caret to first position on line extending selection to new caret position. 
1773 void wxStyledTextCtrl::HomeExtend() { 
1774     SendMsg(2313, 0, 0); 
1777 // Move caret to last position on line. 
1778 void wxStyledTextCtrl::LineEnd() { 
1779     SendMsg(2314, 0, 0); 
1782 // Move caret to last position on line extending selection to new caret position. 
1783 void wxStyledTextCtrl::LineEndExtend() { 
1784     SendMsg(2315, 0, 0); 
1787 // Move caret to first position in document. 
1788 void wxStyledTextCtrl::DocumentStart() { 
1789     SendMsg(2316, 0, 0); 
1792 // Move caret to first position in document extending selection to new caret position. 
1793 void wxStyledTextCtrl::DocumentStartExtend() { 
1794     SendMsg(2317, 0, 0); 
1797 // Move caret to last position in document. 
1798 void wxStyledTextCtrl::DocumentEnd() { 
1799     SendMsg(2318, 0, 0); 
1802 // Move caret to last position in document extending selection to new caret position. 
1803 void wxStyledTextCtrl::DocumentEndExtend() { 
1804     SendMsg(2319, 0, 0); 
1807 // Move caret one page up. 
1808 void wxStyledTextCtrl::PageUp() { 
1809     SendMsg(2320, 0, 0); 
1812 // Move caret one page up extending selection to new caret position. 
1813 void wxStyledTextCtrl::PageUpExtend() { 
1814     SendMsg(2321, 0, 0); 
1817 // Move caret one page down. 
1818 void wxStyledTextCtrl::PageDown() { 
1819     SendMsg(2322, 0, 0); 
1822 // Move caret one page down extending selection to new caret position. 
1823 void wxStyledTextCtrl::PageDownExtend() { 
1824     SendMsg(2323, 0, 0); 
1827 // Switch from insert to overtype mode or the reverse. 
1828 void wxStyledTextCtrl::EditToggleOvertype() { 
1829     SendMsg(2324, 0, 0); 
1832 // Cancel any modes such as call tip or auto-completion list display. 
1833 void wxStyledTextCtrl::Cancel() { 
1834     SendMsg(2325, 0, 0); 
1837 // Delete the selection or if no selection, the character before the caret. 
1838 void wxStyledTextCtrl::DeleteBack() { 
1839     SendMsg(2326, 0, 0); 
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); 
1848 // Dedent the selected lines. 
1849 void wxStyledTextCtrl::BackTab() { 
1850     SendMsg(2328, 0, 0); 
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); 
1858 // Insert a Form Feed character. 
1859 void wxStyledTextCtrl::FormFeed() { 
1860     SendMsg(2330, 0, 0); 
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); 
1869 // Like VCHome but extending selection to new caret position. 
1870 void wxStyledTextCtrl::VCHomeExtend() { 
1871     SendMsg(2332, 0, 0); 
1874 // Magnify the displayed text by increasing the sizes by 1 point. 
1875 void wxStyledTextCtrl::ZoomIn() { 
1876     SendMsg(2333, 0, 0); 
1879 // Make the displayed text smaller by decreasing the sizes by 1 point. 
1880 void wxStyledTextCtrl::ZoomOut() { 
1881     SendMsg(2334, 0, 0); 
1884 // Delete the word to the left of the caret. 
1885 void wxStyledTextCtrl::DelWordLeft() { 
1886     SendMsg(2335, 0, 0); 
1889 // Delete the word to the right of the caret. 
1890 void wxStyledTextCtrl::DelWordRight() { 
1891     SendMsg(2336, 0, 0); 
1894 // Cut the line containing the caret. 
1895 void wxStyledTextCtrl::LineCut() { 
1896     SendMsg(2337, 0, 0); 
1899 // Delete the line containing the caret. 
1900 void wxStyledTextCtrl::LineDelete() { 
1901     SendMsg(2338, 0, 0); 
1904 // Switch the current line with the previous. 
1905 void wxStyledTextCtrl::LineTranspose() { 
1906     SendMsg(2339, 0, 0); 
1909 // Duplicate the current line. 
1910 void wxStyledTextCtrl::LineDuplicate() { 
1911     SendMsg(2404, 0, 0); 
1914 // Transform the selection to lower case. 
1915 void wxStyledTextCtrl::LowerCase() { 
1916     SendMsg(2340, 0, 0); 
1919 // Transform the selection to upper case. 
1920 void wxStyledTextCtrl::UpperCase() { 
1921     SendMsg(2341, 0, 0); 
1924 // Scroll the document down, keeping the caret visible. 
1925 void wxStyledTextCtrl::LineScrollDown() { 
1926     SendMsg(2342, 0, 0); 
1929 // Scroll the document up, keeping the caret visible. 
1930 void wxStyledTextCtrl::LineScrollUp() { 
1931     SendMsg(2343, 0, 0); 
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); 
1940 // Move caret to first position on display line. 
1941 void wxStyledTextCtrl::HomeDisplay() { 
1942     SendMsg(2345, 0, 0); 
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); 
1951 // Move caret to last position on display line. 
1952 void wxStyledTextCtrl::LineEndDisplay() { 
1953     SendMsg(2347, 0, 0); 
1956 // Move caret to last position on display line extending selection to new 
1958 void wxStyledTextCtrl::LineEndDisplayExtend() { 
1959     SendMsg(2348, 0, 0); 
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); 
1970 void wxStyledTextCtrl::HomeWrapExtend() { 
1971     SendMsg(2450, 0, 0); 
1973 void wxStyledTextCtrl::LineEndWrap() { 
1974     SendMsg(2451, 0, 0); 
1976 void wxStyledTextCtrl::LineEndWrapExtend() { 
1977     SendMsg(2452, 0, 0); 
1979 void wxStyledTextCtrl::VCHomeWrap() { 
1980     SendMsg(2453, 0, 0); 
1982 void wxStyledTextCtrl::VCHomeWrapExtend() { 
1983     SendMsg(2454, 0, 0); 
1986 // Copy the line containing the caret. 
1987 void wxStyledTextCtrl::LineCopy() { 
1988     SendMsg(2455, 0, 0); 
1991 // Move the caret inside current view if it's not there already. 
1992 void wxStyledTextCtrl::MoveCaretInsideView() { 
1993     SendMsg(2401, 0, 0); 
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); 
2001 // Highlight the characters at two positions. 
2002 void wxStyledTextCtrl::BraceHighlight(int pos1
, int pos2
) { 
2003     SendMsg(2351, pos1
, pos2
); 
2006 // Highlight the character at a position indicating there is no matching brace. 
2007 void wxStyledTextCtrl::BraceBadLight(int pos
) { 
2008     SendMsg(2352, pos
, 0); 
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); 
2016 // Are the end of line characters visible? 
2017 bool wxStyledTextCtrl::GetViewEOL() { 
2018     return SendMsg(2355, 0, 0) != 0; 
2021 // Make the end of line characters visible or invisible. 
2022 void wxStyledTextCtrl::SetViewEOL(bool visible
) { 
2023     SendMsg(2356, visible
, 0); 
2026 // Retrieve a pointer to the document object. 
2027 void* wxStyledTextCtrl::GetDocPointer() { 
2028          return (void*)SendMsg(2357); 
2031 // Change the document object used. 
2032 void wxStyledTextCtrl::SetDocPointer(void* docPointer
) { 
2033          SendMsg(2358, 0, (long)docPointer
); 
2036 // Set which document modification events are sent to the container. 
2037 void wxStyledTextCtrl::SetModEventMask(int mask
) { 
2038     SendMsg(2359, mask
, 0); 
2041 // Retrieve the column number which text should be kept within. 
2042 int wxStyledTextCtrl::GetEdgeColumn() { 
2043     return SendMsg(2360, 0, 0); 
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); 
2052 // Retrieve the edge highlight mode. 
2053 int wxStyledTextCtrl::GetEdgeMode() { 
2054     return SendMsg(2362, 0, 0); 
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); 
2063 // Retrieve the colour used in edge indication. 
2064 wxColour 
wxStyledTextCtrl::GetEdgeColour() { 
2065     long c 
= SendMsg(2364, 0, 0); 
2066     return wxColourFromLong(c
); 
2069 // Change the colour used in edge indication. 
2070 void wxStyledTextCtrl::SetEdgeColour(const wxColour
& edgeColour
) { 
2071     SendMsg(2365, wxColourAsLong(edgeColour
), 0); 
2074 // Sets the current caret position to be the search anchor. 
2075 void wxStyledTextCtrl::SearchAnchor() { 
2076     SendMsg(2366, 0, 0); 
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
)); 
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
)); 
2091 // Retrieves the number of lines completely visible. 
2092 int wxStyledTextCtrl::LinesOnScreen() { 
2093     return SendMsg(2370, 0, 0); 
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); 
2102 // Is the selection rectangular? The alternative is the more common stream selection. 
2103 bool wxStyledTextCtrl::SelectionIsRectangle() { 
2104     return SendMsg(2372, 0, 0) != 0; 
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); 
2113 // Retrieve the zoom level. 
2114 int wxStyledTextCtrl::GetZoom() { 
2115     return SendMsg(2374, 0, 0); 
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); 
2124 // Extend life of document. 
2125 void wxStyledTextCtrl::AddRefDocument(void* docPointer
) { 
2126          SendMsg(2376, 0, (long)docPointer
); 
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
); 
2134 // Get which document modification events are sent to the container. 
2135 int wxStyledTextCtrl::GetModEventMask() { 
2136     return SendMsg(2378, 0, 0); 
2139 // Change internal focus flag. 
2140 void wxStyledTextCtrl::SetSTCFocus(bool focus
) { 
2141     SendMsg(2380, focus
, 0); 
2144 // Get internal focus flag. 
2145 bool wxStyledTextCtrl::GetSTCFocus() { 
2146     return SendMsg(2381, 0, 0) != 0; 
2149 // Change error status - 0 = OK. 
2150 void wxStyledTextCtrl::SetStatus(int statusCode
) { 
2151     SendMsg(2382, statusCode
, 0); 
2154 // Get error status. 
2155 int wxStyledTextCtrl::GetStatus() { 
2156     return SendMsg(2383, 0, 0); 
2159 // Set whether the mouse is captured when its button is pressed. 
2160 void wxStyledTextCtrl::SetMouseDownCaptures(bool captures
) { 
2161     SendMsg(2384, captures
, 0); 
2164 // Get whether mouse gets captured. 
2165 bool wxStyledTextCtrl::GetMouseDownCaptures() { 
2166     return SendMsg(2385, 0, 0) != 0; 
2169 // Sets the cursor to one of the SC_CURSOR* values. 
2170 void wxStyledTextCtrl::SetSTCCursor(int cursorType
) { 
2171     SendMsg(2386, cursorType
, 0); 
2175 int wxStyledTextCtrl::GetSTCCursor() { 
2176     return SendMsg(2387, 0, 0); 
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); 
2185 // Get the way control characters are displayed. 
2186 int wxStyledTextCtrl::GetControlCharSymbol() { 
2187     return SendMsg(2389, 0, 0); 
2190 // Move to the previous change in capitalisation. 
2191 void wxStyledTextCtrl::WordPartLeft() { 
2192     SendMsg(2390, 0, 0); 
2195 // Move to the previous change in capitalisation extending selection 
2196 // to new caret position. 
2197 void wxStyledTextCtrl::WordPartLeftExtend() { 
2198     SendMsg(2391, 0, 0); 
2201 // Move to the change next in capitalisation. 
2202 void wxStyledTextCtrl::WordPartRight() { 
2203     SendMsg(2392, 0, 0); 
2206 // Move to the next change in capitalisation extending selection 
2207 // to new caret position. 
2208 void wxStyledTextCtrl::WordPartRightExtend() { 
2209     SendMsg(2393, 0, 0); 
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
); 
2218 // Delete back from the current position to the start of the line. 
2219 void wxStyledTextCtrl::DelLineLeft() { 
2220     SendMsg(2395, 0, 0); 
2223 // Delete forwards from the current position to the end of the line. 
2224 void wxStyledTextCtrl::DelLineRight() { 
2225     SendMsg(2396, 0, 0); 
2228 // Get and Set the xOffset (ie, horizonal scroll position). 
2229 void wxStyledTextCtrl::SetXOffset(int newOffset
) { 
2230     SendMsg(2397, newOffset
, 0); 
2232 int wxStyledTextCtrl::GetXOffset() { 
2233     return SendMsg(2398, 0, 0); 
2236 // Set the last x chosen value to be the caret x position. 
2237 void wxStyledTextCtrl::ChooseCaretX() { 
2238     SendMsg(2399, 0, 0); 
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
); 
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
); 
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); 
2258 // Is printing line wrapped? 
2259 int wxStyledTextCtrl::GetPrintWrapMode() { 
2260     return SendMsg(2407, 0, 0); 
2263 // Set a fore colour for active hotspots. 
2264 void wxStyledTextCtrl::SetHotspotActiveForeground(bool useSetting
, const wxColour
& fore
) { 
2265     SendMsg(2410, useSetting
, wxColourAsLong(fore
)); 
2268 // Set a back colour for active hotspots. 
2269 void wxStyledTextCtrl::SetHotspotActiveBackground(bool useSetting
, const wxColour
& back
) { 
2270     SendMsg(2411, useSetting
, wxColourAsLong(back
)); 
2273 // Enable / Disable underlining active hotspots. 
2274 void wxStyledTextCtrl::SetHotspotActiveUnderline(bool underline
) { 
2275     SendMsg(2412, underline
, 0); 
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); 
2283 // Move caret between paragraphs (delimited by empty lines). 
2284 void wxStyledTextCtrl::ParaDown() { 
2285     SendMsg(2413, 0, 0); 
2287 void wxStyledTextCtrl::ParaDownExtend() { 
2288     SendMsg(2414, 0, 0); 
2290 void wxStyledTextCtrl::ParaUp() { 
2291     SendMsg(2415, 0, 0); 
2293 void wxStyledTextCtrl::ParaUpExtend() { 
2294     SendMsg(2416, 0, 0); 
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); 
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); 
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
); 
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
)); 
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); 
2325 // Get the mode of the current selection. 
2326 int wxStyledTextCtrl::GetSelectionMode() { 
2327     return SendMsg(2423, 0, 0); 
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); 
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); 
2340 // Move caret down one line, extending rectangular selection to new caret position. 
2341 void wxStyledTextCtrl::LineDownRectExtend() { 
2342     SendMsg(2426, 0, 0); 
2345 // Move caret up one line, extending rectangular selection to new caret position. 
2346 void wxStyledTextCtrl::LineUpRectExtend() { 
2347     SendMsg(2427, 0, 0); 
2350 // Move caret left one character, extending rectangular selection to new caret position. 
2351 void wxStyledTextCtrl::CharLeftRectExtend() { 
2352     SendMsg(2428, 0, 0); 
2355 // Move caret right one character, extending rectangular selection to new caret position. 
2356 void wxStyledTextCtrl::CharRightRectExtend() { 
2357     SendMsg(2429, 0, 0); 
2360 // Move caret to first position on line, extending rectangular selection to new caret position. 
2361 void wxStyledTextCtrl::HomeRectExtend() { 
2362     SendMsg(2430, 0, 0); 
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); 
2372 // Move caret to last position on line, extending rectangular selection to new caret position. 
2373 void wxStyledTextCtrl::LineEndRectExtend() { 
2374     SendMsg(2432, 0, 0); 
2377 // Move caret one page up, extending rectangular selection to new caret position. 
2378 void wxStyledTextCtrl::PageUpRectExtend() { 
2379     SendMsg(2433, 0, 0); 
2382 // Move caret one page down, extending rectangular selection to new caret position. 
2383 void wxStyledTextCtrl::PageDownRectExtend() { 
2384     SendMsg(2434, 0, 0); 
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); 
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); 
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); 
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); 
2407 // Move caret left one word, position cursor at end of word. 
2408 void wxStyledTextCtrl::WordLeftEnd() { 
2409     SendMsg(2439, 0, 0); 
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); 
2417 // Move caret right one word, position cursor at end of word. 
2418 void wxStyledTextCtrl::WordRightEnd() { 
2419     SendMsg(2441, 0, 0); 
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); 
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
)); 
2433 // Reset the set of characters for whitespace and word characters to the defaults. 
2434 void wxStyledTextCtrl::SetCharsDefault() { 
2435     SendMsg(2444, 0, 0); 
2438 // Get currently selected item position in the auto-completion list 
2439 int wxStyledTextCtrl::AutoCompGetCurrent() { 
2440     return SendMsg(2445, 0, 0); 
2443 // Enlarge the document to a particular size of text bytes. 
2444 void wxStyledTextCtrl::Allocate(int bytes
) { 
2445     SendMsg(2446, bytes
, 0); 
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
); 
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; 
2459 // Stop the caret preferred x position changing when the user types. 
2460 void wxStyledTextCtrl::SetCaretSticky(bool useCaretStickyBehaviour
) { 
2461     SendMsg(2458, useCaretStickyBehaviour
, 0); 
2464 // Switch between sticky and non-sticky: meant to be bound to a key. 
2465 void wxStyledTextCtrl::ToggleCaretSticky() { 
2466     SendMsg(2459, 0, 0); 
2469 // Enable/Disable convert-on-paste for line endings 
2470 void wxStyledTextCtrl::SetPasteConvertEndings(bool convert
) { 
2471     SendMsg(2467, convert
, 0); 
2474 // Get convert-on-paste setting 
2475 bool wxStyledTextCtrl::GetPasteConvertEndings() { 
2476     return SendMsg(2468, 0, 0) != 0; 
2479 // Duplicate the selection. If selection empty duplicate the line containing the caret. 
2480 void wxStyledTextCtrl::SelectionDuplicate() { 
2481     SendMsg(2469, 0, 0); 
2484 // Start notifying the container of all key presses and commands. 
2485 void wxStyledTextCtrl::StartRecord() { 
2486     SendMsg(3001, 0, 0); 
2489 // Stop notifying the container of all key presses and commands. 
2490 void wxStyledTextCtrl::StopRecord() { 
2491     SendMsg(3002, 0, 0); 
2494 // Set the lexing language of the document. 
2495 void wxStyledTextCtrl::SetLexer(int lexer
) { 
2496     SendMsg(4001, lexer
, 0); 
2499 // Retrieve the lexing language of the document. 
2500 int wxStyledTextCtrl::GetLexer() { 
2501     return SendMsg(4002, 0, 0); 
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
); 
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
)); 
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
)); 
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
)); 
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
), NULL
); 
2527          if (!len
) return wxEmptyString
; 
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
); 
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
), NULL
); 
2541          if (!len
) return wxEmptyString
; 
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
); 
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); 
2557 // Retrieve the number of bits the current lexer needs for styling. 
2558 int wxStyledTextCtrl::GetStyleBitsNeeded() { 
2559     return SendMsg(4011, 0, 0); 
2562 // END of generated section 
2563 //---------------------------------------------------------------------- 
2566 // Returns the line number of the line with the caret. 
2567 int wxStyledTextCtrl::GetCurrentLine() { 
2568     int line 
= LineFromPosition(GetCurrentPos()); 
2573 // Extract style settings from a spec-string which is composed of one or 
2574 // more of the following comma separated elements: 
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 
2585 void wxStyledTextCtrl::StyleSetSpec(int styleNum
, const wxString
& spec
) { 
2587     wxStringTokenizer 
tkz(spec
, wxT(",")); 
2588     while (tkz
.HasMoreTokens()) { 
2589         wxString token 
= tkz
.GetNextToken(); 
2591         wxString option 
= token
.BeforeFirst(':'); 
2592         wxString val 
= token
.AfterFirst(':'); 
2594         if (option 
== wxT("bold")) 
2595             StyleSetBold(styleNum
, true); 
2597         else if (option 
== wxT("italic")) 
2598             StyleSetItalic(styleNum
, true); 
2600         else if (option 
== wxT("underline")) 
2601             StyleSetUnderline(styleNum
, true); 
2603         else if (option 
== wxT("eol")) 
2604             StyleSetEOLFilled(styleNum
, true); 
2606         else if (option 
== wxT("size")) { 
2608             if (val
.ToLong(&points
)) 
2609                 StyleSetSize(styleNum
, points
); 
2612         else if (option 
== wxT("face")) 
2613             StyleSetFaceName(styleNum
, val
); 
2615         else if (option 
== wxT("fore")) 
2616             StyleSetForeground(styleNum
, wxColourFromSpec(val
)); 
2618         else if (option 
== wxT("back")) 
2619             StyleSetBackground(styleNum
, wxColourFromSpec(val
)); 
2624 // Set style size, face, bold, italic, and underline attributes from 
2625 // a wxFont's attributes. 
2626 void wxStyledTextCtrl::StyleSetFont(int styleNum
, wxFont
& font
) { 
2628     // Ensure that the native font is initialized 
2630     GetTextExtent(wxT("X"), &x
, &y
, NULL
, NULL
, &font
); 
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(); 
2639     StyleSetFontAttr(styleNum
, size
, faceName
, bold
, italic
, under
, encoding
); 
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
, 
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
); 
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
) 
2661     wxFontEncoding encoding
; 
2663     // Translate the Scintilla characterSet to a wxFontEncoding 
2664     switch (characterSet
) { 
2666         case wxSTC_CHARSET_ANSI
: 
2667         case wxSTC_CHARSET_DEFAULT
: 
2668             encoding 
= wxFONTENCODING_DEFAULT
; 
2671         case wxSTC_CHARSET_BALTIC
: 
2672             encoding 
= wxFONTENCODING_ISO8859_13
; 
2675         case wxSTC_CHARSET_CHINESEBIG5
: 
2676             encoding 
= wxFONTENCODING_CP950
; 
2679         case wxSTC_CHARSET_EASTEUROPE
: 
2680             encoding 
= wxFONTENCODING_ISO8859_2
; 
2683         case wxSTC_CHARSET_GB2312
: 
2684             encoding 
= wxFONTENCODING_CP936
; 
2687         case wxSTC_CHARSET_GREEK
: 
2688             encoding 
= wxFONTENCODING_ISO8859_7
; 
2691         case wxSTC_CHARSET_HANGUL
: 
2692             encoding 
= wxFONTENCODING_CP949
; 
2695         case wxSTC_CHARSET_MAC
: 
2696             encoding 
= wxFONTENCODING_DEFAULT
; 
2699         case wxSTC_CHARSET_OEM
: 
2700             encoding 
= wxFONTENCODING_DEFAULT
; 
2703         case wxSTC_CHARSET_RUSSIAN
: 
2704             encoding 
= wxFONTENCODING_KOI8
; 
2707         case wxSTC_CHARSET_SHIFTJIS
: 
2708             encoding 
= wxFONTENCODING_CP932
; 
2711         case wxSTC_CHARSET_SYMBOL
: 
2712             encoding 
= wxFONTENCODING_DEFAULT
; 
2715         case wxSTC_CHARSET_TURKISH
: 
2716             encoding 
= wxFONTENCODING_ISO8859_9
; 
2719         case wxSTC_CHARSET_JOHAB
: 
2720             encoding 
= wxFONTENCODING_DEFAULT
; 
2723         case wxSTC_CHARSET_HEBREW
: 
2724             encoding 
= wxFONTENCODING_ISO8859_8
; 
2727         case wxSTC_CHARSET_ARABIC
: 
2728             encoding 
= wxFONTENCODING_ISO8859_6
; 
2731         case wxSTC_CHARSET_VIETNAMESE
: 
2732             encoding 
= wxFONTENCODING_DEFAULT
; 
2735         case wxSTC_CHARSET_THAI
: 
2736             encoding 
= wxFONTENCODING_ISO8859_11
; 
2739         case wxSTC_CHARSET_CYRILLIC
: 
2740             encoding 
= wxFONTENCODING_ISO8859_5
; 
2743         case wxSTC_CHARSET_8859_15
: 
2744             encoding 
= wxFONTENCODING_ISO8859_15
;; 
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); 
2757 // Set the font encoding to be used by a style. 
2758 void wxStyledTextCtrl::StyleSetFontEncoding(int style
, wxFontEncoding encoding
) 
2760     SendMsg(SCI_STYLESETCHARACTERSET
, style
, encoding
+1); 
2764 // Perform one of the operations defined by the wxSTC_CMD_* constants. 
2765 void wxStyledTextCtrl::CmdKeyExecute(int cmd
) { 
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
); 
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
); 
2782         *endPos 
= SendMsg(SCI_GETSELECTIONEND
); 
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
); 
2793 // Scroll enough to make the given line visible 
2794 void wxStyledTextCtrl::ScrollToLine(int line
) { 
2795     m_swx
->DoScrollToLine(line
); 
2799 // Scroll enough to make the given column visible 
2800 void wxStyledTextCtrl::ScrollToColumn(int column
) { 
2801     m_swx
->DoScrollToColumn(column
); 
2805 bool wxStyledTextCtrl::SaveFile(const wxString
& filename
) 
2807     wxFile 
file(filename
, wxFile::write
); 
2809     if (!file
.IsOpened()) 
2812     bool success 
= file
.Write(GetText(), *wxConvCurrent
); 
2820 bool wxStyledTextCtrl::LoadFile(const wxString
& filename
) 
2822     bool success 
= false; 
2823     wxFile 
file(filename
, wxFile::read
); 
2825     if (file
.IsOpened()) 
2828         // get the file size (assume it is not huge file...) 
2829         ssize_t len 
= (ssize_t
)file
.Length(); 
2834             wxMemoryBuffer 
buffer(len
+1); 
2835             success 
= (file
.Read(buffer
.GetData(), len
) == len
); 
2837                 ((char*)buffer
.GetData())[len
] = 0; 
2838                 contents 
= wxString(buffer
, *wxConvCurrent
, len
); 
2842             success 
= (file
.Read(wxStringBuffer(buffer
, len
), len
) == len
); 
2849                 success 
= true;  // empty file is ok 
2851                 success 
= false; // len == wxInvalidOffset 
2866 #if wxUSE_DRAG_AND_DROP 
2867 wxDragResult 
wxStyledTextCtrl::DoDragOver(wxCoord x
, wxCoord y
, wxDragResult def
) { 
2868         return m_swx
->DoDragOver(x
, y
, def
); 
2872 bool wxStyledTextCtrl::DoDropText(long x
, long y
, const wxString
& data
) { 
2873     return m_swx
->DoDropText(x
, y
, data
); 
2878 void wxStyledTextCtrl::SetUseAntiAliasing(bool useAA
) { 
2879     m_swx
->SetUseAntiAliasing(useAA
); 
2882 bool wxStyledTextCtrl::GetUseAntiAliasing() { 
2883     return m_swx
->GetUseAntiAliasing(); 
2890 void wxStyledTextCtrl::AddTextRaw(const char* text
) 
2892     SendMsg(SCI_ADDTEXT
, strlen(text
), (long)text
); 
2895 void wxStyledTextCtrl::InsertTextRaw(int pos
, const char* text
) 
2897     SendMsg(SCI_INSERTTEXT
, pos
, (long)text
); 
2900 wxCharBuffer 
wxStyledTextCtrl::GetCurLineRaw(int* linePos
) 
2902     int len 
= LineLength(GetCurrentLine()); 
2904         if (linePos
)  *linePos 
= 0; 
2909     wxCharBuffer 
buf(len
); 
2910     int pos 
= SendMsg(SCI_GETCURLINE
, len
, (long)buf
.data()); 
2911     if (linePos
)  *linePos 
= pos
; 
2915 wxCharBuffer 
wxStyledTextCtrl::GetLineRaw(int line
) 
2917     int len 
= LineLength(line
); 
2923     wxCharBuffer 
buf(len
); 
2924     SendMsg(SCI_GETLINE
, line
, (long)buf
.data()); 
2928 wxCharBuffer 
wxStyledTextCtrl::GetSelectedTextRaw() 
2933     GetSelection(&start
, &end
); 
2934     int   len  
= end 
- start
; 
2940     wxCharBuffer 
buf(len
); 
2941     SendMsg(SCI_GETSELTEXT
, 0, (long)buf
.data()); 
2945 wxCharBuffer 
wxStyledTextCtrl::GetTextRangeRaw(int startPos
, int endPos
) 
2947     if (endPos 
< startPos
) { 
2948         int temp 
= startPos
; 
2952     int len  
= endPos 
- startPos
; 
2958     wxCharBuffer 
buf(len
); 
2960     tr
.lpstrText 
= buf
.data(); 
2961     tr
.chrg
.cpMin 
= startPos
; 
2962     tr
.chrg
.cpMax 
= endPos
; 
2963     SendMsg(SCI_GETTEXTRANGE
, 0, (long)&tr
); 
2967 void wxStyledTextCtrl::SetTextRaw(const char* text
) 
2969     SendMsg(SCI_SETTEXT
, 0, (long)text
); 
2972 wxCharBuffer 
wxStyledTextCtrl::GetTextRaw() 
2974     int len  
= GetTextLength(); 
2975     wxCharBuffer 
buf(len
); 
2976     SendMsg(SCI_GETTEXT
, len
, (long)buf
.data()); 
2980 void wxStyledTextCtrl::AppendTextRaw(const char* text
) 
2982     SendMsg(SCI_APPENDTEXT
, strlen(text
), (long)text
); 
2989 //---------------------------------------------------------------------- 
2992 void wxStyledTextCtrl::OnPaint(wxPaintEvent
& WXUNUSED(evt
)) { 
2994     m_swx
->DoPaint(&dc
, GetUpdateRegion().GetBox()); 
2997 void wxStyledTextCtrl::OnScrollWin(wxScrollWinEvent
& evt
) { 
2998     if (evt
.GetOrientation() == wxHORIZONTAL
) 
2999         m_swx
->DoHScroll(evt
.GetEventType(), evt
.GetPosition()); 
3001         m_swx
->DoVScroll(evt
.GetEventType(), evt
.GetPosition()); 
3004 void wxStyledTextCtrl::OnScroll(wxScrollEvent
& evt
) { 
3005     wxScrollBar
* sb 
= wxDynamicCast(evt
.GetEventObject(), wxScrollBar
); 
3007         if (sb
->IsVertical()) 
3008             m_swx
->DoVScroll(evt
.GetEventType(), evt
.GetPosition()); 
3010             m_swx
->DoHScroll(evt
.GetEventType(), evt
.GetPosition()); 
3014 void wxStyledTextCtrl::OnSize(wxSizeEvent
& WXUNUSED(evt
)) { 
3016         wxSize sz 
= GetClientSize(); 
3017         m_swx
->DoSize(sz
.x
, sz
.y
); 
3021 void wxStyledTextCtrl::OnMouseLeftDown(wxMouseEvent
& evt
) { 
3023     wxPoint pt 
= evt
.GetPosition(); 
3024     m_swx
->DoLeftButtonDown(Point(pt
.x
, pt
.y
), m_stopWatch
.Time(), 
3025                       evt
.ShiftDown(), evt
.ControlDown(), evt
.AltDown()); 
3028 void wxStyledTextCtrl::OnMouseMove(wxMouseEvent
& evt
) { 
3029     wxPoint pt 
= evt
.GetPosition(); 
3030     m_swx
->DoLeftButtonMove(Point(pt
.x
, pt
.y
)); 
3033 void wxStyledTextCtrl::OnMouseLeftUp(wxMouseEvent
& evt
) { 
3034     wxPoint pt 
= evt
.GetPosition(); 
3035     m_swx
->DoLeftButtonUp(Point(pt
.x
, pt
.y
), m_stopWatch
.Time(), 
3040 void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent
& evt
) { 
3041     wxPoint pt 
= evt
.GetPosition(); 
3042     m_swx
->DoContextMenu(Point(pt
.x
, pt
.y
)); 
3046 void wxStyledTextCtrl::OnMouseMiddleUp(wxMouseEvent
& evt
) { 
3047     wxPoint pt 
= evt
.GetPosition(); 
3048     m_swx
->DoMiddleButtonUp(Point(pt
.x
, pt
.y
)); 
3051 void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent
& evt
) { 
3052     wxPoint pt 
= evt
.GetPosition(); 
3053     ScreenToClient(&pt
.x
, &pt
.y
); 
3055       Show context menu at event point if it's within the window, 
3056       or at caret location if not 
3058     wxHitTest ht 
= this->HitTest(pt
); 
3059     if (ht 
!= wxHT_WINDOW_INSIDE
) { 
3060         pt 
= this->PointFromPosition(this->GetCurrentPos()); 
3062     m_swx
->DoContextMenu(Point(pt
.x
, pt
.y
)); 
3066 void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent
& evt
) { 
3067     m_swx
->DoMouseWheel(evt
.GetWheelRotation(), 
3068                         evt
.GetWheelDelta(), 
3069                         evt
.GetLinesPerAction(), 
3071                         evt
.IsPageScroll()); 
3075 void wxStyledTextCtrl::OnChar(wxKeyEvent
& evt
) { 
3076     // On (some?) non-US PC keyboards the AltGr key is required to enter some 
3077     // common characters.  It comes to us as both Alt and Ctrl down so we need 
3078     // to let the char through in that case, otherwise if only ctrl or only 
3079     // alt let's skip it. 
3080     bool ctrl 
= evt
.ControlDown(); 
3082     // On the Mac the Alt key is just a modifier key (like Shift) so we need 
3083     // to allow the char events to be processed when Alt is pressed. 
3084     // TODO:  Should we check MetaDown instead in this case? 
3087     bool alt  
= evt
.AltDown(); 
3089     bool skip 
= ((ctrl 
|| alt
) && ! (ctrl 
&& alt
)); 
3091     if (!m_lastKeyDownConsumed 
&& !skip
) { 
3093         int key 
= evt
.GetUnicodeKey(); 
3096         // if the unicode key code is not really a unicode character (it may 
3097         // be a function key or etc., the platforms appear to always give us a 
3098         // small value in this case) then fallback to the ascii key code but 
3099         // don't do anything for function keys or etc. 
3101             key 
= evt
.GetKeyCode(); 
3102             keyOk 
= (key 
<= 127); 
3105             m_swx
->DoAddChar(key
); 
3109         int key 
= evt
.GetKeyCode(); 
3110         if (key 
<= WXK_START 
|| key 
> WXK_COMMAND
) { 
3111             m_swx
->DoAddChar(key
); 
3121 void wxStyledTextCtrl::OnKeyDown(wxKeyEvent
& evt
) { 
3122     int processed 
= m_swx
->DoKeyDown(evt
, &m_lastKeyDownConsumed
); 
3123     if (!processed 
&& !m_lastKeyDownConsumed
) 
3128 void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent
& evt
) { 
3129     m_swx
->DoLoseFocus(); 
3134 void wxStyledTextCtrl::OnGainFocus(wxFocusEvent
& evt
) { 
3135     m_swx
->DoGainFocus(); 
3140 void wxStyledTextCtrl::OnSysColourChanged(wxSysColourChangedEvent
& WXUNUSED(evt
)) { 
3141     m_swx
->DoSysColourChange(); 
3145 void wxStyledTextCtrl::OnEraseBackground(wxEraseEvent
& WXUNUSED(evt
)) { 
3146     // do nothing to help avoid flashing 
3151 void wxStyledTextCtrl::OnMenu(wxCommandEvent
& evt
) { 
3152     m_swx
->DoCommand(evt
.GetId()); 
3156 void wxStyledTextCtrl::OnListBox(wxCommandEvent
& WXUNUSED(evt
)) { 
3157     m_swx
->DoOnListBox(); 
3161 void wxStyledTextCtrl::OnIdle(wxIdleEvent
& evt
) { 
3162     m_swx
->DoOnIdle(evt
); 
3166 wxSize 
wxStyledTextCtrl::DoGetBestSize() const 
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); 
3174 //---------------------------------------------------------------------- 
3175 // Turn notifications from Scintilla into events 
3178 void wxStyledTextCtrl::NotifyChange() { 
3179     wxStyledTextEvent 
evt(wxEVT_STC_CHANGE
, GetId()); 
3180     evt
.SetEventObject(this); 
3181     GetEventHandler()->ProcessEvent(evt
); 
3185 static void SetEventText(wxStyledTextEvent
& evt
, const char* text
, 
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
); 
3194     evt
.SetText(stc2wx(buf
)); 
3198 void wxStyledTextCtrl::NotifyParent(SCNotification
* _scn
) { 
3199     SCNotification
& scn 
= *_scn
; 
3200     wxStyledTextEvent 
evt(0, GetId()); 
3202     evt
.SetEventObject(this); 
3203     evt
.SetPosition(scn
.position
); 
3205     evt
.SetModifiers(scn
.modifiers
); 
3207     switch (scn
.nmhdr
.code
) { 
3208     case SCN_STYLENEEDED
: 
3209         evt
.SetEventType(wxEVT_STC_STYLENEEDED
); 
3213         evt
.SetEventType(wxEVT_STC_CHARADDED
); 
3216     case SCN_SAVEPOINTREACHED
: 
3217         evt
.SetEventType(wxEVT_STC_SAVEPOINTREACHED
); 
3220     case SCN_SAVEPOINTLEFT
: 
3221         evt
.SetEventType(wxEVT_STC_SAVEPOINTLEFT
); 
3224     case SCN_MODIFYATTEMPTRO
: 
3225         evt
.SetEventType(wxEVT_STC_ROMODIFYATTEMPT
); 
3229         evt
.SetEventType(wxEVT_STC_KEY
); 
3232     case SCN_DOUBLECLICK
: 
3233         evt
.SetEventType(wxEVT_STC_DOUBLECLICK
); 
3237         evt
.SetEventType(wxEVT_STC_UPDATEUI
); 
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
); 
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
); 
3258     case SCN_MARGINCLICK
: 
3259         evt
.SetEventType(wxEVT_STC_MARGINCLICK
); 
3260         evt
.SetMargin(scn
.margin
); 
3264         evt
.SetEventType(wxEVT_STC_NEEDSHOWN
); 
3265         evt
.SetLength(scn
.length
); 
3269         evt
.SetEventType(wxEVT_STC_PAINTED
); 
3272     case SCN_USERLISTSELECTION
: 
3273         evt
.SetEventType(wxEVT_STC_USERLISTSELECTION
); 
3274         evt
.SetListType(scn
.listType
); 
3275         SetEventText(evt
, scn
.text
, strlen(scn
.text
)); 
3278     case SCN_URIDROPPED
: 
3279         evt
.SetEventType(wxEVT_STC_URIDROPPED
); 
3280         SetEventText(evt
, scn
.text
, strlen(scn
.text
)); 
3283     case SCN_DWELLSTART
: 
3284         evt
.SetEventType(wxEVT_STC_DWELLSTART
); 
3290         evt
.SetEventType(wxEVT_STC_DWELLEND
); 
3296         evt
.SetEventType(wxEVT_STC_ZOOM
); 
3299     case SCN_HOTSPOTCLICK
: 
3300         evt
.SetEventType(wxEVT_STC_HOTSPOT_CLICK
); 
3303     case SCN_HOTSPOTDOUBLECLICK
: 
3304         evt
.SetEventType(wxEVT_STC_HOTSPOT_DCLICK
); 
3307     case SCN_CALLTIPCLICK
: 
3308         evt
.SetEventType(wxEVT_STC_CALLTIP_CLICK
); 
3311     case SCN_AUTOCSELECTION
: 
3312         evt
.SetEventType(wxEVT_STC_AUTOCOMP_SELECTION
); 
3319     GetEventHandler()->ProcessEvent(evt
); 
3323 //---------------------------------------------------------------------- 
3324 //---------------------------------------------------------------------- 
3325 //---------------------------------------------------------------------- 
3327 wxStyledTextEvent::wxStyledTextEvent(wxEventType commandType
, int id
) 
3328     : wxCommandEvent(commandType
, id
) 
3333     m_modificationType 
= 0; 
3338     m_foldLevelPrev 
= 0; 
3346     m_dragAllowMove 
= false; 
3347 #if wxUSE_DRAG_AND_DROP 
3348     m_dragResult 
= wxDragNone
; 
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; } 
3357 wxStyledTextEvent::wxStyledTextEvent(const wxStyledTextEvent
& event
): 
3358   wxCommandEvent(event
) 
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
; 
3371     m_margin 
=        event
.m_margin
; 
3373     m_message 
=       event
.m_message
; 
3374     m_wParam 
=        event
.m_wParam
; 
3375     m_lParam 
=        event
.m_lParam
; 
3377     m_listType 
=     event
.m_listType
; 
3381     m_dragText 
=     event
.m_dragText
; 
3382     m_dragAllowMove 
=event
.m_dragAllowMove
; 
3383 #if wxUSE_DRAG_AND_DROP 
3384     m_dragResult 
=   event
.m_dragResult
; 
3388 //---------------------------------------------------------------------- 
3389 //----------------------------------------------------------------------