// 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.
/**
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
{
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.
*/
void SetTabs(const wxArrayInt& tabs);
/**
- Sets the text foreground colout.
+ Sets the text foreground colour.
*/
void SetTextColour(const wxColour& colText);
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
/**
Assignment from a wxTextAttr object.
*/
- void operator operator=(const wxTextAttr& attr);
+ void operator=(const wxTextAttr& attr);
};
@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.
@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)}
/**
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;
*/
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.
@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.