]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/text.tex
added and documented wxDEFINE_SCOPED_PTR_TYPE; improved docs a bit
[wxWidgets.git] / docs / latex / wx / text.tex
index 1e7459ff47ea19cc03e1346b845dd2fa56551d4f..7e2751726ac73e334fdc759516e51729d5180cc7 100644 (file)
@@ -2,9 +2,13 @@
 
 \section{\class{wxTextAttr}}\label{wxtextattr}
 
-wxTextAttr represents the attributes, or style, for a range of text in a\rtfsp
+wxTextAttr represents the character and paragraph attributes, or style, for a range of text in a\rtfsp
 \helpref{wxTextCtrl}{wxtextctrl}.
 
+When setting up a wxTextAttr object, pass a bitlist mask to SetFlags to indicate
+which style elements should be changed. As a convenience, when you call a
+setter such as SetFont, the relevant bit will be set.
+
 \wxheading{Derived from}
 
 No base class
@@ -13,60 +17,184 @@ No base class
 
 <wx/textctrl.h>
 
+\wxheading{Constants}
+
+The following values can be passed to SetAlignment to determine
+paragraph alignment.
+
+{\small
+\begin{verbatim}
+enum wxTextAttrAlignment
+{
+    wxTEXT_ALIGNMENT_DEFAULT,
+    wxTEXT_ALIGNMENT_LEFT,
+    wxTEXT_ALIGNMENT_CENTRE,
+    wxTEXT_ALIGNMENT_CENTER = wxTEXT_ALIGNMENT_CENTRE,
+    wxTEXT_ALIGNMENT_RIGHT,
+    wxTEXT_ALIGNMENT_JUSTIFIED
+};
+\end{verbatim}
+}
+
+These values are passed in a bitlist to SetFlags to determine
+what attributes will be considered when setting the attributes
+for a text control.
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_TEXT_COLOUR             0x0001
+#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x0002
+#define wxTEXT_ATTR_FONT_FACE               0x0004
+#define wxTEXT_ATTR_FONT_SIZE               0x0008
+#define wxTEXT_ATTR_FONT_WEIGHT             0x0010
+#define wxTEXT_ATTR_FONT_ITALIC             0x0020
+#define wxTEXT_ATTR_FONT_UNDERLINE          0x0040
+#define wxTEXT_ATTR_FONT \
+  wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT \
+| wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE
+#define wxTEXT_ATTR_ALIGNMENT               0x0080
+#define wxTEXT_ATTR_LEFT_INDENT             0x0100
+#define wxTEXT_ATTR_RIGHT_INDENT            0x0200
+#define wxTEXT_ATTR_TABS                    0x0400
+\end{verbatim}
+}
+
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 \membersection{wxTextAttr::wxTextAttr}\label{wxtextattrctor}
 
 \func{}{wxTextAttr}{\void}
 
-\func{}{wxTextAttr}{\param{const wxColour\& }{colText}, \param{const wxColour\& }{colBack = wxNullColour}, \param{const wxFont\& }{font = wxNullFont}}
+\func{}{wxTextAttr}{\param{const wxColour\& }{colText}, \param{const wxColour\& }{colBack = wxNullColour},
+ \param{const wxFont\& }{font = wxNullFont}, \param{wxTextAttrAlignment }{alignment = wxTEXT\_ALIGNMENT\_DEFAULT}}
 
-The constructors initialize one or more of the text foreground and background
-colours and font. The values not initialized in the constructor can be set
+The constructors initialize one or more of the text foreground colour, background
+colour, font, and alignment. The values not initialized in the constructor can be set
 later, otherwise \helpref{wxTextCtrl::SetStyle}{wxtextctrlsetstyle} will use
 the default values for them.
 
-\membersection{wxTextAttr::GetBackgroundColour}
+\membersection{wxTextAttr::GetAlignment}\label{wxtextattrgetalignment}
+
+\constfunc{wxTextAttrAlignment}{GetAlignment}{\void}
+
+Returns the paragraph alignment.
+
+\membersection{wxTextAttr::GetBackgroundColour}\label{wxtextattrgetbackgroundcolour}
 
 \constfunc{const wxColour\&}{GetBackgroundColour}{\void}
 
 Return the background colour specified by this attribute.
 
-\membersection{wxTextAttr::GetFont}
+\membersection{wxTextAttr::GetFont}\label{wxtextattrgetfont}
 
 \constfunc{const wxFont\&}{GetFont}{\void}
 
 Return the text font specified by this attribute.
 
-\membersection{wxTextAttr::GetTextColour}
+\membersection{wxTextAttr::GetLeftIndent}\label{wxtextattrgetleftindent}
+
+\constfunc{int}{GetLeftIndent}{\void}
+
+Returns the left indent in tenths of a millimetre.
+
+\membersection{wxTextAttr::GetRightIndent}\label{wxtextattrgetrightindent}
+
+\constfunc{int}{GetRightIndent}{\void}
+
+Returns the right indent in tenths of a millimetre.
+
+\membersection{wxTextAttr::GetTabs}\label{wxtextattrgettabs}
+
+\constfunc{const wxArrayInt\&}{GetTabs}{\void}
+
+Returns the array of integers representing the tab stops. Each
+array element specifies the tab stop in tenths of a millimetre.
+
+\membersection{wxTextAttr::GetTextColour}\label{wxtextattrgettextcolour}
 
 \constfunc{const wxColour\&}{GetTextColour}{\void}
 
 Return the text colour specified by this attribute.
 
-\membersection{wxTextAttr::HasBackgroundColour}
+\membersection{wxTextAttr::HasBackgroundColour}\label{wxtextattrhasbackgroundcolour}
 
 \constfunc{bool}{HasBackgroundColour}{\void}
 
-Returns {\tt TRUE} if this style specifies the background colour to use.
+Returns {\tt true} if this style specifies the background colour to use.
 
-\membersection{wxTextAttr::HasFont}
+\membersection{wxTextAttr::HasFont}\label{wxtextattrhasfont}
 
 \constfunc{bool}{HasFont}{\void}
 
-Returns {\tt TRUE} if this style specifies the font to use.
+Returns {\tt true} if this style specifies the font to use.
 
-\membersection{wxTextAttr::HasTextColour}
+\membersection{wxTextAttr::HasTextColour}\label{wxtextattrhastextcolour}
 
 \constfunc{bool}{HasTextColour}{\void}
 
-Returns {\tt TRUE} if this style specifies the foreground colour to use.
+Returns {\tt true} if this style specifies the foreground colour to use.
 
-\membersection{wxTextAttr::IsDefault}
+\membersection{wxTextAttr::GetFlags}\label{wxtextattrgetflags}
+
+\func{long}{GetFlags}{\void}
+
+Returns a bitlist indicating which attributes will be set.
+
+\membersection{wxTextAttr::IsDefault}\label{wxtextattrisdefault}
 
 \constfunc{bool}{IsDefault}{\void}
 
-Returns {\tt TRUE} if this style specifies any non-default attributes.
+Returns {\tt true} if this style specifies any non-default attributes.
+
+\membersection{wxTextAttr::SetAlignment}\label{wxtextattrsetalignment}
+
+\func{void}{SetAlignment}{\param{wxTextAttrAlignment}{ alignment}}
+
+Sets the paragraph alignment.
+
+\membersection{wxTextAttr::SetBackgroundColour}\label{wxtextattrsetbackgroundcolour}
+
+\func{void}{SetBackgroundColour}{\param{const wxColour\& }{colour}}
+
+Sets the background colour.
+
+\membersection{wxTextAttr::SetFlags}\label{wxtextattrsetflags}
+
+\func{void}{SetFlags}{\param{long}{ flags}}
+
+Pass a bitlist indicating which attributes will be set.
+
+\membersection{wxTextAttr::SetFont}\label{wxtextattrsetfont}
+
+\func{void}{SetFont}{\param{const wxFont\&}{ font}}
+
+Sets the text font.
+
+\membersection{wxTextAttr::SetLeftIndent}\label{wxtextattrsetleftindent}
+
+\func{void}{SetLeftIndent}{\param{int }{indent}}
+
+Sets the left indent in tenths of a millimetre.
+
+\membersection{wxTextAttr::SetRightIndent}\label{wxtextattrsetrightindent}
+
+\func{void}{SetRightIndent}{\param{int }{indent}}
+
+Sets the right indent in tenths of a millimetre.
+
+\membersection{wxTextAttr::SetTabs}\label{wxtextattrsettabs}
+
+\func{void}{SetTabs}{\param{const wxArrayInt\&}{ tabs}}
+
+Sets the array of integers representing the tab stops. Each
+array element specifies the tab stop in tenths of a millimetre.
+
+\membersection{wxTextAttr::SetTextColour}\label{wxtextattrsettextcolour}
+
+\func{void}{SetTextColour}{\param{const wxColour\& }{colour}}
+
+Sets the text colour.
+
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%% wxTextCtrl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -92,8 +220,8 @@ streambuf\\
 \twocolwidtha{5cm}
 \begin{twocollist}\itemsep=0pt
 \twocolitem{\windowstyle{wxTE\_PROCESS\_ENTER}}{The control will generate
-the message wxEVENT\_TYPE\_TEXT\_ENTER\_COMMAND (otherwise pressing <Enter> is
-either processed internally by the control or used for navigation between
+the message wxEVENT\_TYPE\_TEXT\_ENTER\_COMMAND (otherwise pressing Enter key
+is either processed internally by the control or used for navigation between
 dialog controls).}
 \twocolitem{\windowstyle{wxTE\_PROCESS\_TAB}}{The control will receive
 EVT\_CHAR messages for TAB pressed - normally, TAB is used for passing to the
@@ -113,15 +241,42 @@ under Win32 only and requires wxTE\_RICH.}
 \twocolitem{\windowstyle{wxTE\_NOHIDESEL}}{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. It doesn't do anything under other platforms.}
-\twocolitem{\windowstyle{wxHSCROLL}}{A horizontal scrollbar will be created. No effect under GTK+.}
+\twocolitem{\windowstyle{wxHSCROLL}}{A horizontal scrollbar will be created and
+used, so that text won't be wrapped. No effect under GTK+.}
+\twocolitem{\windowstyle{wxTE\_LEFT}}{The text in the control will be left-justified (default).}
+\twocolitem{\windowstyle{wxTE\_CENTRE}}{The text in the control will be centered.}
+\twocolitem{\windowstyle{wxTE\_RIGHT}}{The text in the control will be right-justified.}
 \twocolitem{\windowstyle{wxTE\_DONTWRAP}}{Same as {\tt wxHSCROLL} style.}
-\twocolitem{\windowstyle{wxTE\_LINEWRAP}}{Wrap the lines too long to be shown entirely at any position (wxUniv only currently)}
-\twocolitem{\windowstyle{wxTE\_WORDWRAP}}{Wrap the lines too long to be shown entirely at word boundaries only (wxUniv only currently)}
+\twocolitem{\windowstyle{wxTE\_LINEWRAP}}{Wrap the lines too long to be shown entirely at any position (wxUniv only currently).}
+\twocolitem{\windowstyle{wxTE\_WORDWRAP}}{Wrap the lines too long to be shown entirely at word boundaries only (wxUniv only currently).}
 \end{twocollist}
 
 See also \helpref{window styles overview}{windowstyles} and
 \helpref{wxTextCtrl::wxTextCtrl}{wxtextctrlconstr}.
 
+\wxheading{wxTextCtrl text format}
+
+The multiline text controls always store the text as a sequence of lines
+separated by {\tt $\backslash$n} characters, i.e. in the Unix text format even
+on non-Unix platforms. This allows the user code to ignore the differences
+between the platforms but at a price: the indices in the control such as those
+returned by \helpref{GetInsertionPoint}{wxtextctrlgetinsertionpoint} or 
+\helpref{GetSelection}{wxtextctrlgetselection} can {\bf not} be used as
+indices into the string returned by \helpref{GetValue}{wxtextctrlgetvalue} as
+they're going to be slightly off for platforms using 
+{\tt $\backslash$r$\backslash$n} as separator (as Windows does), for example.
+
+Instead, if you need to obtain a substring between the $2$ indices obtained
+from the control with the help of the functions mentioned above, you should
+use \helpref{GetRange}{wxtextctrlgetrange}. And the indices themselves can
+only be passed to other methods, for example 
+\helpref{SetInsertionPoint}{wxtextctrlsetinsertionpoint} or 
+\helpref{SetSelection}{wxtextctrlsetselection}.
+
+To summarize: never use the indices returned by (multiline) wxTextCtrl as
+indices into the string it contains, but only as arguments to be passed back
+to the other wxTextCtrl methods.
+
 \wxheading{wxTextCtrl styles}
 
 Multi-line text controls support the styles, i.e. provide a possibility to set
@@ -243,7 +398,8 @@ generated when the text changes. Notice that this event will always be sent
 when the text controls contents changes - whether this is due to user input or
 comes from the program itself (for example, if SetValue() is called)}
 \twocolitem{{\bf EVT\_TEXT\_ENTER(id, func)}}{Respond to a wxEVT\_COMMAND\_TEXT\_ENTER event,
-generated when enter is pressed in a single-line text control.}
+generated when enter is pressed in a text control (which must have
+wxTE\_PROCESS\_ENTER style for this event to be generated).}
 \twocolitem{{\bf EVT\_TEXT\_URL(id, func)}}{A mouse event occured over an URL
 in the text control (Win32 only)}
 \twocolitem{{\bf EVT\_TEXT\_MAXLEN(id, func)}}{User tried to enter more text
@@ -331,34 +487,34 @@ the programmer should use \helpref{GetInsertionPoint}{wxtextctrlgetinsertionpoin
 
 \func{virtual bool}{CanCopy}{\void}
 
-Returns {\tt TRUE} if the selection can be copied to the clipboard.
+Returns {\tt true} if the selection can be copied to the clipboard.
 
 \membersection{wxTextCtrl::CanCut}\label{wxtextctrlcancut}
 
 \func{virtual bool}{CanCut}{\void}
 
-Returns {\tt TRUE} if the selection can be cut to the clipboard.
+Returns {\tt true} if the selection can be cut to the clipboard.
 
 \membersection{wxTextCtrl::CanPaste}\label{wxtextctrlcanpaste}
 
 \func{virtual bool}{CanPaste}{\void}
 
-Returns {\tt TRUE} if the contents of the clipboard can be pasted into the
+Returns {\tt true} if the contents of the clipboard can be pasted into the
 text control. On some platforms (Motif, GTK) this is an approximation
-and returns {\tt TRUE} if the control is editable, {\tt FALSE} otherwise.
+and returns {\tt true} if the control is editable, {\tt false} otherwise.
 
 \membersection{wxTextCtrl::CanRedo}\label{wxtextctrlcanredo}
 
 \func{virtual bool}{CanRedo}{\void}
 
-Returns {\tt TRUE} if there is a redo facility available and the last operation
+Returns {\tt true} if there is a redo facility available and the last operation
 can be redone.
 
 \membersection{wxTextCtrl::CanUndo}\label{wxtextctrlcanundo}
 
 \func{virtual bool}{CanUndo}{\void}
 
-Returns {\tt TRUE} if there is an undo facility available and the last operation
+Returns {\tt true} if there is an undo facility available and the last operation
 can be undone.
 
 \membersection{wxTextCtrl::Clear}\label{wxtextctrlclear}
@@ -367,6 +523,9 @@ can be undone.
 
 Clears the text in the control.
 
+Note that this function will generate a {\tt wxEVT\_COMMAND\_TEXT\_UPDATED}
+event.
+
 \membersection{wxTextCtrl::Copy}\label{wxtextctrlcopy}
 
 \func{virtual void}{Copy}{\void}
@@ -404,9 +563,12 @@ inserted if the given key event had occured in the text control. The
 {\it event} object should be the same as the one passed to {\tt EVT\_KEY\_DOWN}
 handler previously by wxWindows.
 
+Please note that this function doesn't currently work correctly for all keys
+under any platform but MSW.
+
 \wxheading{Return value}
 
-{\tt TRUE} if the event resulted in a change to the control, {\tt FALSE}
+{\tt true} if the event resulted in a change to the control, {\tt false}
 otherwise.
 
 \membersection{wxTextCtrl::GetDefaultStyle}\label{wxtextctrlgetdefaultstyle}
@@ -543,19 +705,36 @@ consisting of the from and to values.}
 Gets the text currently selected in the control. If there is no selection, the
 returned string is empty.
 
+\membersection{wxTextCtrl::GetStyle}\label{wxtextctrlgetstyle}
+
+\func{bool}{GetStyle}{\param{long }{position}, \param{wxTextAttr\& }{style}}
+
+Returns the style at this position in the text control. Not all platforms
+support this function.
+
+\wxheading{Return value}
+
+{\tt true} on success, {\tt false} if an error occured - it may also mean that
+the styles are not supported under this platform.
+
+\wxheading{See also}
+
+\helpref{wxTextCtrl::SetStyle}{wxtextctrlsetstyle}, \helpref{wxTextAttr}{wxtextattr}
+
 \membersection{wxTextCtrl::GetValue}\label{wxtextctrlgetvalue}
 
 \constfunc{wxString}{GetValue}{\void}
 
 Gets the contents of the control. Notice that for a multiline text control,
-the lines will be separated by (Unix-style) $\backslash$n characters, even under
-Windows where they are separated by a $\backslash$r$\backslash$n sequence in the native control.
+the lines will be separated by (Unix-style) $\backslash$n characters, even
+under Windows where they are separated by a $\backslash$r$\backslash$n
+sequence in the native control.
 
 \membersection{wxTextCtrl::IsEditable}\label{wxtextctrliseditable}
 
 \constfunc{bool}{IsEditable}{\void}
 
-Returns {\tt TRUE} if the controls contents may be edited by user (note that it
+Returns {\tt true} if the controls contents may be edited by user (note that it
 always can be changed by the program), i.e. if the control hasn't been put in
 read-only mode by a previous call to 
 \helpref{SetEditable}{wxtextctrlseteditable}.
@@ -564,14 +743,14 @@ read-only mode by a previous call to
 
 \constfunc{bool}{IsModified}{\void}
 
-Returns {\tt TRUE} if the text has been modified by user. Note that calling 
+Returns {\tt true} if the text has been modified by user. Note that calling 
 \helpref{SetValue}{wxtextctrlsetvalue} doesn't make the control modified.
 
 \membersection{wxTextCtrl::IsMultiLine}\label{wxtextctrlismultiline}
 
 \constfunc{bool}{IsMultiLine}{\void}
 
-Returns {\tt TRUE} if this is a multi line edit control and {\tt FALSE}
+Returns {\tt true} if this is a multi line edit control and {\tt false}
 otherwise.
 
 \wxheading{See also}
@@ -582,7 +761,7 @@ otherwise.
 
 \constfunc{bool}{IsSingleLine}{\void}
 
-Returns {\tt TRUE} if this is a single line edit control and {\tt FALSE}
+Returns {\tt true} if this is a single line edit control and {\tt false}
 otherwise.
 
 \wxheading{See also}
@@ -601,7 +780,7 @@ Loads and displays the named file, if it exists.
 
 \wxheading{Return value}
 
-{\tt TRUE} if successful, {\tt FALSE} otherwise.
+{\tt true} if successful, {\tt false} otherwise.
 
 % VZ: commenting this out as: (a) the docs are wrong (you can't replace
 %     anything), (b) wxTextCtrl doesn't have any OnChar() anyhow
@@ -674,7 +853,7 @@ Converts given position to a zero-based column, line number pair.
 
 \wxheading{Return value}
 
-{\tt TRUE} on success, {\tt FALSE} on failure (most likely due to a too large position
+{\tt true} on success, {\tt false} on failure (most likely due to a too large position
 parameter).
 
 \wxheading{See also}
@@ -735,7 +914,7 @@ Saves the contents of the control in a text file.
 
 \wxheading{Return value}
 
-{\tt TRUE} if the operation was successful, {\tt FALSE} otherwise.
+{\tt true} if the operation was successful, {\tt false} otherwise.
 
 \membersection{wxTextCtrl::SetDefaultStyle}\label{wxtextctrlsetdefaultstyle}
 
@@ -760,7 +939,7 @@ wouldn't change it at all).
 
 \wxheading{Return value}
 
-{\tt TRUE} on success, {\tt FALSE} if an error occured - may also mean that
+{\tt true} on success, {\tt false} if an error occured - may also mean that
 the styles are not supported under this platform.
 
 \wxheading{See also}
@@ -775,7 +954,7 @@ Makes the text item editable or read-only, overriding the {\bf wxTE\_READONLY} f
 
 \wxheading{Parameters}
 
-\docparam{editable}{If {\tt TRUE}, the control is editable. If {\tt FALSE}, the control is read-only.}
+\docparam{editable}{If {\tt true}, the control is editable. If {\tt false}, the control is read-only.}
 
 \wxheading{See also}
 
@@ -826,7 +1005,9 @@ Only implemented in wxMSW/wxGTK starting with wxWindows 2.3.2.
 
 \func{virtual void}{SetSelection}{\param{long}{ from}, \param{long}{ to}}
 
-Selects the text starting at the first position up to (but not including) the character at the last position.
+Selects the text starting at the first position up to (but not including) the
+character at the last position. If both parameters are equal to $-1$ all text
+in the control is selected.
 
 \wxheading{Parameters}
 
@@ -838,31 +1019,37 @@ Selects the text starting at the first position up to (but not including) the ch
 
 \func{bool}{SetStyle}{\param{long }{start}, \param{long }{end}, \param{const wxTextAttr\& }{style}}
 
-Changes the style of the selection. If either of the font, foreground, or
-background colour is not set in {\it style}, the values of\rtfsp
-\helpref{GetDefaultStyle()}{wxtextctrlgetdefaultstyle} are used.
+Changes the style of the given range. If any attribute within {\it style} is
+not set, the correspondign attribute from \helpref{GetDefaultStyle()}{wxtextctrlgetdefaultstyle} is used.
 
 \wxheading{Parameters}
 
-\docparam{start}{The start of selection to change.}
+\docparam{start}{The start of the range to change.}
 
-\docparam{end}{The end of selection to change.}
+\docparam{end}{The end of the range to change.}
 
-\docparam{style}{The new style for the selection.}
+\docparam{style}{The new style for the range.}
 
 \wxheading{Return value}
 
-{\tt TRUE} on success, {\tt FALSE} if an error occured - may also mean that
+{\tt true} on success, {\tt false} if an error occured - it may also mean that
 the styles are not supported under this platform.
 
+\wxheading{See also}
+
+\helpref{wxTextCtrl::GetStyle}{wxtextctrlgetstyle}, \helpref{wxTextAttr}{wxtextattr}
+
 \membersection{wxTextCtrl::SetValue}\label{wxtextctrlsetvalue}
 
 \func{virtual void}{SetValue}{\param{const wxString\& }{ value}}
 
 Sets the text value and marks the control as not-modified (which means that 
-\helpref{IsModified}{wxtextctrlismodified} would return {\tt FALSE} immediately
+\helpref{IsModified}{wxtextctrlismodified} would return {\tt false} immediately
 after the call to SetValue).
 
+Note that this function will generate a {\tt wxEVT\_COMMAND\_TEXT\_UPDATED}
+event.
+
 \wxheading{Parameters}
 
 \docparam{value}{The new value to set. It may contain newline characters if the text control is multi-line.}