X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d911dc04aea492deb04d00794dc4f59d380ab877..50d4763f1710f6e45ac6af7112d1ce9effe93bc4:/interface/wx/textctrl.h diff --git a/interface/wx/textctrl.h b/interface/wx/textctrl.h index a8178169ea..048cf6564a 100644 --- a/interface/wx/textctrl.h +++ b/interface/wx/textctrl.h @@ -3,9 +3,63 @@ // Purpose: interface of wxTextAttr // Author: wxWidgets team // RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +/** + wxTextCtrl style flags +*/ +#define wxTE_NO_VSCROLL 0x0002 + +#define wxTE_READONLY 0x0010 +#define wxTE_MULTILINE 0x0020 +#define wxTE_PROCESS_TAB 0x0040 + +// alignment flags +#define wxTE_LEFT 0x0000 // 0x0000 +#define wxTE_CENTER wxALIGN_CENTER_HORIZONTAL // 0x0100 +#define wxTE_RIGHT wxALIGN_RIGHT // 0x0200 +#define wxTE_CENTRE wxTE_CENTER + +// this style means to use RICHEDIT control and does something only under wxMSW +// and Win32 and is silently ignored under all other platforms +#define wxTE_RICH 0x0080 + +#define wxTE_PROCESS_ENTER 0x0400 +#define wxTE_PASSWORD 0x0800 + +// automatically detect the URLs and generate the events when mouse is +// moved/clicked over an URL +// +// this is for Win32 richedit and wxGTK2 multiline controls only so far +#define wxTE_AUTO_URL 0x1000 + +// by default, the Windows text control doesn't show the selection when it +// doesn't have focus - use this style to force it to always show it +#define wxTE_NOHIDESEL 0x2000 + +// use wxHSCROLL to not wrap text at all, wxTE_CHARWRAP to wrap it at any +// position and wxTE_WORDWRAP to wrap at words boundary +// +// if no wrapping style is given at all, the control wraps at word boundary +#define wxTE_DONTWRAP wxHSCROLL +#define wxTE_CHARWRAP 0x4000 // wrap at any position +#define wxTE_WORDWRAP 0x0001 // wrap only at words boundaries +#define wxTE_BESTWRAP 0x0000 // this is the default + +// force using RichEdit version 2.0 or 3.0 instead of 1.0 (default) for +// wxTE_RICH controls - can be used together with or instead of wxTE_RICH +#define wxTE_RICH2 0x8000 + + +#define wxTEXT_TYPE_ANY 0 + + +/** + wxTextCoord is a line or row number +*/ +typedef long wxTextCoord; + /** One of the following values can be passed to wxTextAttr::SetAlignment to determine paragraph alignment. @@ -127,7 +181,8 @@ enum wxTextAttrBulletStyle /** Styles for wxTextAttr::SetTextEffects(). They can be combined together as a bitlist. - Of these, only wxTEXT_ATTR_EFFECT_CAPITALS and wxTEXT_ATTR_EFFECT_STRIKETHROUGH are implemented. + Of these, only wxTEXT_ATTR_EFFECT_CAPITALS, wxTEXT_ATTR_EFFECT_STRIKETHROUGH, + wxTEXT_ATTR_EFFECT_SUPERSCRIPT and wxTEXT_ATTR_EFFECT_SUBSCRIPT are implemented. */ enum wxTextAttrEffects { @@ -220,11 +275,6 @@ public: bool Apply(const wxTextAttr& style, const wxTextAttr* compareWith = NULL); - /** - Creates a font from the font attributes. - */ - wxFont CreateFont() const; - /** Copies all defined/valid properties from overlay to current object. */ @@ -796,7 +846,7 @@ public: void SetTabs(const wxArrayInt& tabs); /** - Sets the text foreground colout. + Sets the text foreground colour. */ void SetTextColour(const wxColour& colText); @@ -812,8 +862,8 @@ public: Sets the text effects, a bit list of styles. The ::wxTextAttrEffects enumeration values can be used. - Of these, only wxTEXT_ATTR_EFFECT_CAPITALS and wxTEXT_ATTR_EFFECT_STRIKETHROUGH - are implemented. + Of these, only wxTEXT_ATTR_EFFECT_CAPITALS, wxTEXT_ATTR_EFFECT_STRIKETHROUGH, + wxTEXT_ATTR_EFFECT_SUPERSCRIPT and wxTEXT_ATTR_EFFECT_SUBSCRIPT are implemented. wxTEXT_ATTR_EFFECT_CAPITALS capitalises text when displayed (leaving the case of the actual buffer text unchanged), and wxTEXT_ATTR_EFFECT_STRIKETHROUGH draws @@ -838,7 +888,7 @@ public: /** Assignment from a wxTextAttr object. */ - void operator operator=(const wxTextAttr& attr); + void operator=(const wxTextAttr& attr); }; @@ -854,11 +904,11 @@ public: @beginStyleTable @style{wxTE_PROCESS_ENTER} - The control will generate the event wxEVT_COMMAND_TEXT_ENTER + The control will generate the event @c wxEVT_COMMAND_TEXT_ENTER (otherwise pressing Enter key is either processed internally by the control or used for navigation between dialog controls). @style{wxTE_PROCESS_TAB} - The control will receive wxEVT_CHAR events for TAB pressed - + The control will receive @c wxEVT_CHAR events for TAB pressed - normally, TAB is used for passing to the next control in a dialog instead. For the control created with this style, you can still use Ctrl-Enter to pass to the next control from the keyboard. @@ -1049,14 +1099,14 @@ public: @beginEventEmissionTable{wxCommandEvent} @event{EVT_TEXT(id, func)} - Respond to a wxEVT_COMMAND_TEXT_UPDATED event, generated when the text + Respond to a @c wxEVT_COMMAND_TEXT_UPDATED event, generated when the text changes. Notice that this event will be sent when the text controls contents changes -- whether this is due to user input or comes from the program itself (for example, if wxTextCtrl::SetValue() is called); see wxTextCtrl::ChangeValue() for a function which does not send this event. This event is however not sent during the control creation. @event{EVT_TEXT_ENTER(id, func)} - Respond to a wxEVT_COMMAND_TEXT_ENTER event, generated when enter is + Respond to a @c wxEVT_COMMAND_TEXT_ENTER event, generated when enter is pressed in a text control which must have wxTE_PROCESS_ENTER style for this event to be generated. @event{EVT_TEXT_URL(id, func)} @@ -1197,19 +1247,15 @@ public: /** Returns the number of lines in the text control buffer. + The returned number is the number of logical lines, i.e. just the count + of the number of newline characters in the control + 1, for wxGTK and + wxOSX/Cocoa ports while it is the number of physical lines, i.e. the + count of lines actually shown in the control, in wxMSW and wxOSX/Carbon. + Because of this discrepancy, it is not recommended to use this function. + @remarks Note that even empty text controls have one line (where the insertion point is), so GetNumberOfLines() never returns 0. - For wxGTK using GTK+ 1.2.x and earlier, the number of lines in a - multi-line text control is calculated by actually counting newline - characters in the buffer, i.e. this function returns the number of - logical lines and doesn't depend on whether any of them are wrapped. - For all the other platforms, the number of physical lines in the - control is returned. - Also note that you may wish to avoid using functions that work with - line numbers if you are working with controls that contain large - amounts of text as this function has O(N) complexity for N being - the number of lines. */ virtual int GetNumberOfLines() const; @@ -1226,21 +1272,47 @@ public: */ virtual bool GetStyle(long position, wxTextAttr& style); + //@{ /** This function finds the character at the specified position expressed in pixels. + The two overloads of this method allow to find either the position of + the character, as an index into the text control contents, or its row + and column. + If the return code is not @c wxTE_HT_UNKNOWN the row and column of the - character closest to this position are returned in the @a col and @a - row parameters (unless the pointers are @NULL which is allowed). - Please note that this function is currently only implemented in wxUniv, wxMSW - and wxGTK2 ports. + character closest to this position are returned, otherwise the output + parameters are not modified. + + Please note that this function is currently only implemented in wxUniv, + wxMSW and wxGTK2 ports and always returns @c wxTE_HT_UNKNOWN in the + other ports. + + @beginWxPerlOnly + In wxPerl this function takes only the @a pt argument and + returns a 3-element list (result, col, row). + @endWxPerlOnly + + @param pt + The position of the point to check, in window device coordinates. + @param col + Receives the column of the character at the given position. May be + @NULL. + @param row + Receives the row of the character at the given position. May be + @NULL. + @param pos + Receives the position of the character at the given position. May + be @NULL. @see PositionToXY(), XYToPosition() */ + wxTextCtrlHitTestResult HitTest(const wxPoint& pt, long *pos) const; wxTextCtrlHitTestResult HitTest(const wxPoint& pt, - wxTextCoord col, - wxTextCoord row) const; + wxTextCoord *col, + wxTextCoord *row) const; + //@} /** Returns @true if the text has been modified by user. @@ -1313,10 +1385,37 @@ public: @true on success, @false on failure (most likely due to a too large position parameter). + @beginWxPerlOnly + In wxPerl this function takes only the @a pos argument and + returns a 2-element list (x, y). + @endWxPerlOnly + @see XYToPosition() */ virtual bool PositionToXY(long pos, long* x, long* y) const; + /** + Converts given text position to client coordinates in pixels. + + This function allows to find where is the character at the given + position displayed in the text control. + + @onlyfor{wxmsw,wxgtk}. Additionally, wxGTK only implements this method + for multiline controls and ::wxDefaultPosition is always returned for + the single line ones. + + @param pos + Text position in 0 to GetLastPosition() range (inclusive). + @return + On success returns a wxPoint which contains client coordinates for + the given position in pixels, otherwise returns ::wxDefaultPosition. + + @since 2.9.3 + + @see XYToPosition(), PositionToXY() + */ + wxPoint PositionToCoords(long pos) const; + /** Saves the contents of the control in a text file.