Provided by: erlang-manpages_25.3.2.8+dfsg-1ubuntu4.4_all bug

NAME

       wxTextCtrl - Functions for wxTextCtrl class

DESCRIPTION

       A text control allows text to be displayed and edited.

       It  may  be single line or multi-line. Notice that a lot of methods of the text controls are found in the
       base wxTextEntry (not implemented in wx) class which is a common base  class  for  wxTextCtrl  and  other
       controls using a single line text entry field (e.g. wxComboBox).

       Styles

       This class supports the following styles:

       wxTextCtrl Text Format

       The  multiline  text  controls always store the text as a sequence of lines separated by '\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
       getInsertionPoint/1 or getSelection/1 can not be used as indices into the string returned  by  getValue/1
       as they're going to be slightly off for platforms using "\\r\\n" as separator (as Windows does).

       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 getRange/3. And  the  indices  themselves  can  only  be
       passed to other methods, for example setInsertionPoint/2 or setSelection/3.

       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. This  problem  doesn't
       arise  for  single-line platforms however where the indices in the control do correspond to the positions
       in the value string.

       wxTextCtrl Positions and Coordinates

       It is possible to use either linear positions, i.e. roughly (but not always exactly, as explained in  the
       previous  section)  the  index  of the character in the text contained in the control or X-Y coordinates,
       i.e. column and line of the character when  working  with  this  class  and  it  provides  the  functions
       positionToXY/2 and xYToPosition/3 to convert between the two.

       Additionally,  a  position  in  the  control  can  be  converted  to  its  coordinates  in  pixels  using
       PositionToCoords() (not implemented in wx) which can be useful to e.g. show a popup menu near  the  given
       character.  And,  in  the  other  direction,  HitTest()  (not  implemented in wx) can be used to find the
       character under, or near, the given pixel coordinates.

       To be more precise, positions actually refer to the  gaps  between  characters  and  not  the  characters
       themselves.  Thus, position 0 is the one before the very first character in the control and so is a valid
       position even when the control is empty. And if the control contains a single character, it has two valid
       positions: 0 before this character and 1 - after it. This, when the documentation  of  various  functions
       mentions  "invalid  position", it doesn't consider the position just after the last character of the line
       to be invalid, only the positions beyond that one (e.g. 2 and greater in the  single  character  example)
       are actually invalid.

       wxTextCtrl Styles.

       Multi-line  text  controls  support  styling,  i.e.  provide  a  possibility  to set colours and font for
       individual characters in it (note that under Windows wxTE_RICH style is required for style  support).  To
       use  the  styles you can either call setDefaultStyle/2 before inserting the text or call setStyle/4 later
       to change the style of the text already in the control (the first solution is much more efficient).

       In either case, if the style doesn't specify some of the attributes (for example you only want to set the
       text colour but without changing the font nor the text background), the values of the default style  will
       be used for them. If there is no default style, the attributes of the text control itself are used.

       So  the  following  code  correctly  describes what it does: the second call to setDefaultStyle/2 doesn't
       change the text foreground colour (which stays red) while the last  one  doesn't  change  the  background
       colour (which stays grey):

       wxTextCtrl and C++ Streams

       This class multiply-inherits from std::streambuf (except for some really old compilers using non-standard
       iostream library), allowing code such as the following:

       Note  that  even if your build of wxWidgets doesn't support this (the symbol wxHAS_TEXT_WINDOW_STREAM has
       value of 0 then) you can still use wxTextCtrl itself in a stream-like manner:

       However the possibility to create a std::ostream associated with wxTextCtrl may be useful if you need  to
       redirect the output of a function taking a std::ostream as parameter to a text control.

       Another  commonly  requested  need  is to redirect std::cout to the text control. This may be done in the
       following way:

       But wxWidgets provides a convenient class to make it even simpler so instead you may just do

       See wxStreamToTextRedirector (not implemented in wx) for more details.

       Event Handling.

       The following commands are processed by  default  event  handlers  in  wxTextCtrl:  wxID_CUT,  wxID_COPY,
       wxID_PASTE,  wxID_UNDO, wxID_REDO. The associated UI update events are also processed automatically, when
       the control has the focus.

       See: create/4, wxValidator (not implemented in wx)

       This class is derived (and can use functions) from: wxControl wxWindow wxEvtHandler

       wxWidgets docs: wxTextCtrl

EVENTS

       Event types emitted from this class: command_text_updated, command_text_enter, text_maxlen

DATA TYPES

       wxTextCtrl() = wx:wx_object()

EXPORTS

       new() -> wxTextCtrl()

              Default ctor.

       new(Parent, Id) -> wxTextCtrl()

              Types:

                 Parent = wxWindow:wxWindow()
                 Id = integer()

       new(Parent, Id, Options :: [Option]) -> wxTextCtrl()

              Types:

                 Parent = wxWindow:wxWindow()
                 Id = integer()
                 Option =
                     {value, unicode:chardata()} |
                     {pos, {X :: integer(), Y :: integer()}} |
                     {size, {W :: integer(), H :: integer()}} |
                     {style, integer()} |
                     {validator, wx:wx_object()}

              Constructor, creating and showing a text control.

              Remark: The horizontal scrollbar (wxHSCROLL style flag) will only be created for  multi-line  text
              controls.  Without a horizontal scrollbar, text lines that don't fit in the control's size will be
              wrapped (but no newline character is inserted). Single  line  controls  don't  have  a  horizontal
              scrollbar, the text is automatically scrolled so that the insertion point is always visible.

              See: create/4, wxValidator (not implemented in wx)

       destroy(This :: wxTextCtrl()) -> ok

              Destructor, destroying the text control.

       appendText(This, Text) -> ok

              Types:

                 This = wxTextCtrl()
                 Text = unicode:chardata()

              Appends the text to the end of the text control.

              Remark: After the text is appended, the insertion point will be at the end of the text control. If
              this   behaviour   is   not   desired,   the   programmer   should   use  getInsertionPoint/1  and
              setInsertionPoint/2.

              See: writeText/2

       canCopy(This) -> boolean()

              Types:

                 This = wxTextCtrl()

              Returns true if the selection can be copied to the clipboard.

       canCut(This) -> boolean()

              Types:

                 This = wxTextCtrl()

              Returns true if the selection can be cut to the clipboard.

       canPaste(This) -> boolean()

              Types:

                 This = wxTextCtrl()

              Returns 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  true  if  the  control  is
              editable, false otherwise.

       canRedo(This) -> boolean()

              Types:

                 This = wxTextCtrl()

              Returns true if there is a redo facility available and the last operation can be redone.

       canUndo(This) -> boolean()

              Types:

                 This = wxTextCtrl()

              Returns true if there is an undo facility available and the last operation can be undone.

       clear(This) -> ok

              Types:

                 This = wxTextCtrl()

              Clears the text in the control.

              Note  that this function will generate a wxEVT_TEXT event, i.e. its effect is identical to calling
              SetValue("").

       copy(This) -> ok

              Types:

                 This = wxTextCtrl()

              Copies the selected text to the clipboard.

       create(This, Parent, Id) -> boolean()

              Types:

                 This = wxTextCtrl()
                 Parent = wxWindow:wxWindow()
                 Id = integer()

       create(This, Parent, Id, Options :: [Option]) -> boolean()

              Types:

                 This = wxTextCtrl()
                 Parent = wxWindow:wxWindow()
                 Id = integer()
                 Option =
                     {value, unicode:chardata()} |
                     {pos, {X :: integer(), Y :: integer()}} |
                     {size, {W :: integer(), H :: integer()}} |
                     {style, integer()} |
                     {validator, wx:wx_object()}

              Creates the text control for two-step construction.

              This method should be called if the default constructor was used for  the  control  creation.  Its
              parameters have the same meaning as for the non-default constructor.

       cut(This) -> ok

              Types:

                 This = wxTextCtrl()

              Copies the selected text to the clipboard and removes it from the control.

       discardEdits(This) -> ok

              Types:

                 This = wxTextCtrl()

              Resets the internal modified flag as if the current changes had been saved.

       changeValue(This, Value) -> ok

              Types:

                 This = wxTextCtrl()
                 Value = unicode:chardata()

              Sets the new text control value.

              It  also  marks  the  control  as  not-modified  which  means that IsModified() would return false
              immediately after the call to changeValue/2.

              The insertion point is set to the start of the control (i.e. position 0) by this function.

              This functions does not generate the wxEVT_TEXT event but otherwise is identical to setValue/2.

              See overview_events_prog for more information.

              Since: 2.7.1

       emulateKeyPress(This, Event) -> boolean()

              Types:

                 This = wxTextCtrl()
                 Event = wxKeyEvent:wxKeyEvent()

              This function inserts into the control the character which would have been inserted if  the  given
              key event had occurred in the text control.

              The  event  object  should  be  the  same  as the one passed to EVT_KEY_DOWN handler previously by
              wxWidgets. Please note that this function doesn't currently work correctly for all keys under  any
              platform but MSW.

              Return: true if the event resulted in a change to the control, false otherwise.

       getDefaultStyle(This) -> wxTextAttr:wxTextAttr()

              Types:

                 This = wxTextCtrl()

              Returns the style currently used for the new text.

              See: setDefaultStyle/2

       getInsertionPoint(This) -> integer()

              Types:

                 This = wxTextCtrl()

              Returns the insertion point, or cursor, position.

              This  is  defined  as the zero based index of the character position to the right of the insertion
              point. For example, if the insertion point is at the end of the single-line text  control,  it  is
              equal to getLastPosition/1.

              Notice  that  insertion  position  is,  in  general, different from the index of the character the
              cursor position at in the string returned by getValue/1. While this is always  the  case  for  the
              single  line controls, multi-line controls can use two characters "\\r\\n" as line separator (this
              is notably the case under MSW) meaning that indices in the control and its string value are offset
              by 1 for every line.

              Hence to correctly get the character at the current cursor  position,  taking  into  account  that
              there can be none if the cursor is at the end of the string, you could do the following:

       getLastPosition(This) -> integer()

              Types:

                 This = wxTextCtrl()

              Returns  the  zero  based  index  of  the last position in the text control, which is equal to the
              number of characters in the control.

       getLineLength(This, LineNo) -> integer()

              Types:

                 This = wxTextCtrl()
                 LineNo = integer()

              Gets the length of the specified line, not including any trailing newline character(s).

              Return: The length of the line, or -1 if lineNo was invalid.

       getLineText(This, LineNo) -> unicode:charlist()

              Types:

                 This = wxTextCtrl()
                 LineNo = integer()

              Returns the contents of a given line in the text  control,  not  including  any  trailing  newline
              character(s).

              Return: The contents of the line.

       getNumberOfLines(This) -> integer()

              Types:

                 This = wxTextCtrl()

              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. Because of this
              discrepancy, it is not recommended to use this function.

              Remark: Note that even empty text controls have one  line  (where  the  insertion  point  is),  so
              getNumberOfLines/1 never returns 0.

       getRange(This, From, To) -> unicode:charlist()

              Types:

                 This = wxTextCtrl()
                 From = To = integer()

              Returns the string containing the text starting in the positions from and up to to in the control.

              The positions must have been returned by another wxTextCtrl method. Please note that the positions
              in  a  multiline  wxTextCtrl do not correspond to the indices in the string returned by getValue/1
              because of the different new line representations (CR or CR LF) and so this method should be  used
              to obtain the correct results instead of extracting parts of the entire value. It may also be more
              efficient, especially if the control contains a lot of data.

       getSelection(This) -> {From :: integer(), To :: integer()}

              Types:

                 This = wxTextCtrl()

              Gets the current selection span.

              If  the  returned  values are equal, there was no selection. Please note that the indices returned
              may be used with the other wxTextCtrl methods but don't necessarily represent the correct  indices
              into the string returned by getValue/1 for multiline controls under Windows (at least,) you should
              use getStringSelection/1 to get the selected text.

       getStringSelection(This) -> unicode:charlist()

              Types:

                 This = wxTextCtrl()

              Gets the text currently selected in the control.

              If there is no selection, the returned string is empty.

       getStyle(This, Position, Style) -> boolean()

              Types:

                 This = wxTextCtrl()
                 Position = integer()
                 Style = wxTextAttr:wxTextAttr()

              Returns the style at this position in the text control.

              Not all platforms support this function.

              Return:  true  on  success, false if an error occurred (this may also mean that the styles are not
              supported under this platform).

              See: setStyle/4, wxTextAttr

       getValue(This) -> unicode:charlist()

              Types:

                 This = wxTextCtrl()

              Gets the contents of the control.

              Notice that for a multiline  text  control,  the  lines  will  be  separated  by  (Unix-style)  \n
              characters, even under Windows where they are separated by a \r\n sequence in the native control.

       isEditable(This) -> boolean()

              Types:

                 This = wxTextCtrl()

              Returns true if the controls contents may be edited by user (note that it always can be changed by
              the program).

              In  other words, this functions returns true if the control hasn't been put in read-only mode by a
              previous call to setEditable/2.

       isModified(This) -> boolean()

              Types:

                 This = wxTextCtrl()

              Returns true if the text has been modified by user.

              Note that calling setValue/2 doesn't make the control modified.

              See: markDirty/1

       isMultiLine(This) -> boolean()

              Types:

                 This = wxTextCtrl()

              Returns true if this is a multi line edit control and false otherwise.

              See: isSingleLine/1

       isSingleLine(This) -> boolean()

              Types:

                 This = wxTextCtrl()

              Returns true if this is a single line edit control and false otherwise.

              See: isSingleLine/1, isMultiLine/1

       loadFile(This, Filename) -> boolean()

              Types:

                 This = wxTextCtrl()
                 Filename = unicode:chardata()

       loadFile(This, Filename, Options :: [Option]) -> boolean()

              Types:

                 This = wxTextCtrl()
                 Filename = unicode:chardata()
                 Option = {fileType, integer()}

              Loads and displays the named file, if it exists.

              Return: true if successful, false otherwise.

       markDirty(This) -> ok

              Types:

                 This = wxTextCtrl()

              Mark text as modified (dirty).

              See: isModified/1

       paste(This) -> ok

              Types:

                 This = wxTextCtrl()

              Pastes text from the clipboard to the text item.

       positionToXY(This, Pos) -> Result

              Types:

                 Result = {Res :: boolean(), X :: integer(), Y :: integer()}
                 This = wxTextCtrl()
                 Pos = integer()

              Converts given position to a zero-based column, line number pair.

              Return: true on success, false on failure (most likely due to a too large position parameter).

              See: xYToPosition/3

       redo(This) -> ok

              Types:

                 This = wxTextCtrl()

              If there is a redo facility and the last operation can be redone, redoes the last operation.

              Does nothing if there is no redo facility.

       remove(This, From, To) -> ok

              Types:

                 This = wxTextCtrl()
                 From = To = integer()

              Removes the text starting at the first given position up to (but not including) the  character  at
              the last position.

              This function puts the current insertion point position at to as a side effect.

       replace(This, From, To, Value) -> ok

              Types:

                 This = wxTextCtrl()
                 From = To = integer()
                 Value = unicode:chardata()

              Replaces  the  text  starting at the first position up to (but not including) the character at the
              last position with the given text.

              This function puts the current insertion point position at to as a side effect.

       saveFile(This) -> boolean()

              Types:

                 This = wxTextCtrl()

       saveFile(This, Options :: [Option]) -> boolean()

              Types:

                 This = wxTextCtrl()
                 Option = {file, unicode:chardata()} | {fileType, integer()}

              Saves the contents of the control in a text file.

              Return: true if the operation was successful, false otherwise.

       setDefaultStyle(This, Style) -> boolean()

              Types:

                 This = wxTextCtrl()
                 Style = wxTextAttr:wxTextAttr()

              Changes the default style to use for the new text which is going to be added to the control.

              This applies both to the text added programmatically using writeText/2 or appendText/2 and to  the
              text entered by the user interactively.

              If  either  of  the  font, foreground, or background colour is not set in style, the values of the
              previous default style are used for them. If the previous default style didn't set  them  neither,
              the global font or colours of the text control itself are used as fall back.

              However  if  the  style  parameter is the default wxTextAttr, then the default style is just reset
              (instead of being combined with the new style which wouldn't change it at all).

              Return: true on success, false if an error occurred (this may also mean that the  styles  are  not
              supported under this platform).

              See: getDefaultStyle/1

       setEditable(This, Editable) -> ok

              Types:

                 This = wxTextCtrl()
                 Editable = boolean()

              Makes the text item editable or read-only, overriding the wxTE_READONLY flag.

              See: isEditable/1

       setInsertionPoint(This, Pos) -> ok

              Types:

                 This = wxTextCtrl()
                 Pos = integer()

              Sets the insertion point at the given position.

       setInsertionPointEnd(This) -> ok

              Types:

                 This = wxTextCtrl()

              Sets the insertion point at the end of the text control.

              This is equivalent to calling setInsertionPoint/2 with getLastPosition/1 argument.

       setMaxLength(This, Len) -> ok

              Types:

                 This = wxTextCtrl()
                 Len = integer()

              This function sets the maximum number of characters the user can enter into the control.

              In  other  words, it allows limiting the text value length to len not counting the terminating NUL
              character.

              If len is 0, the previously set max length limit, if any, is discarded and the user may  enter  as
              much  text as the underlying native text control widget supports (typically at least 32Kb). If the
              user tries to enter more characters into the text control when it already  is  filled  up  to  the
              maximal  length,  a  wxEVT_TEXT_MAXLEN event is sent to notify the program about it (giving it the
              possibility to show an explanatory message, for example) and the extra input is discarded.

              Note that in wxGTK this function may only be used with single line text controls.

       setSelection(This, From, To) -> ok

              Types:

                 This = wxTextCtrl()
                 From = To = integer()

              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.

              Notice that the insertion point will be moved to from by this function.

              See: SelectAll() (not implemented in wx)

       setStyle(This, Start, End, Style) -> boolean()

              Types:

                 This = wxTextCtrl()
                 Start = End = integer()
                 Style = wxTextAttr:wxTextAttr()

              Changes the style of the given range.

              If  any  attribute  within style is not set, the corresponding attribute from getDefaultStyle/1 is
              used.

              Return: true on success, false if an error occurred (this may also mean that the  styles  are  not
              supported under this platform).

              See: getStyle/3, wxTextAttr

       setValue(This, Value) -> ok

              Types:

                 This = wxTextCtrl()
                 Value = unicode:chardata()

              Sets the new text control value.

              It  also  marks  the  control  as  not-modified  which  means that IsModified() would return false
              immediately after the call to setValue/2.

              The insertion point is set to the start of the control (i.e. position 0) by this  function  unless
              the control value doesn't change at all, in which case the insertion point is left at its original
              position.

              Note  that,  unlike  most  other functions changing the controls values, this function generates a
              wxEVT_TEXT event. To avoid this you can use changeValue/2 instead.

       showPosition(This, Pos) -> ok

              Types:

                 This = wxTextCtrl()
                 Pos = integer()

              Makes the line containing the given position visible.

       undo(This) -> ok

              Types:

                 This = wxTextCtrl()

              If there is an undo facility and the last operation can be undone, undoes the last operation.

              Does nothing if there is no undo facility.

       writeText(This, Text) -> ok

              Types:

                 This = wxTextCtrl()
                 Text = unicode:chardata()

              Writes the text into the text control at the current insertion position.

              Remark: Newlines in the text string are the only control characters allowed, and they  will  cause
              appropriate  line breaks. See operator<<() and appendText/2 for more convenient ways of writing to
              the window. After the write operation, the insertion point will be at  the  end  of  the  inserted
              text,  so  subsequent  write  operations  will be appended. To append text after the user may have
              interacted with the control, call setInsertionPointEnd/1 before writing.

       xYToPosition(This, X, Y) -> integer()

              Types:

                 This = wxTextCtrl()
                 X = Y = integer()

              Converts the given zero based column and line number to a position.

              Return: The position value, or -1 if x or y was invalid.

wxWidgets team.                                    wx 2.2.2.1                                   wxTextCtrl(3erl)