Curses::UI::TextEditor is a widget that can be used to create
a couple of different kinds of texteditors. These are:
* multi-line texteditor
This is a multi-line text editor with features like word-wrapping,
maximum textlength and undo.
* single-line texteditor
The texteditor can be created as a single-line editor.
Most of the features of the default texteditor will remain.
Only the multi-line specific options will not be
available (like moving up and down in the text).
* read only texteditor
The texteditor can also be used in read only mode.
In this mode, the texteditor will function as a text
viewer. The user can walk through the text and
search trough it.
See exampes/demo-Curses::UI::TextEditor in the distribution
for a short demo of these.
For an explanation of these standard options, see
Curses::UI::Widget.
WIDGET-SPECIFIC OPTIONS
* -text < TEXT >
This sets the initial text for the widget to TEXT.
* -pos < CURSOR_POSITION >
This sets the initial cursor position for the widget
to CURSOR_POSITION. -pos represents the character index within
-text. By default this option is set to 0.
* -readonly < BOOLEAN >
The texteditor widget will be created as a read only
texteditor (which is also called a textviewer) if
BOOLEAN is true. By default BOOLEAN is false.
* -singleline < BOOLEAN >
The texteditor widget will be created as a single line
texteditor (which is also called a textentry) if
BOOLEAN is true. By default BOOLEAN is false.
* -wrapping < BOOLEAN >
If BOOLEAN is true, the texteditor will have text wrapping
enabled. By default BOOLEAN is false.
* -showlines < BOOLEAN >
If BOOLEAN is set to a true value, each editable line
in the editor will show a line to type on. By default
BOOLEAN is set to false.
* -maxlength < VALUE >
This sets the maximum allowed length of the text to
VALUE. By default VALUE is set to 0,
which means that the text may be infinitely long.
* -maxlines < VALUE >
This sets the maximum allowed number of lines for the text
to SCALAR. By default VALUE is set to 0, which means that
the text may contain an infinite number of lines.
* -password < CHARACTER >
Instead of showing the real text in the widget, every
character of the text will (on the screen) be replaced
by CHARACTER. So creating a standard password field
can be done by setting:
-password => '*'
* -regexp < REGEXP >
If characters are added to the texteditor, the new text
will be matched against REGEXP. If the text does not match,
the change will be denied. This can for example be used to
force digit-only input on the texteditor:
-regexp => '/^\d*$/'
* -undolevels < VALUE >
This option determines how many undolevels should be kept
in memory for the texteditor widget. By default 10 levels
are kept. If this value is set to 0, the number of levels
is infinite.
* -showoverflow < BOOLEAN >
If BOOLEAN is true, the text in the texteditor will be
padded by an overflow character ($) if there is text
outside the screen (like 'pico' does). By default
BOOLEAN is true.
* -showhardreturns < BOOLEAN >
If BOOLEAN is true, hard returns will be made visible
by a diamond character. By default BOOLEAN is false.
* -homeonblur < BOOLEAN >
If BOOLEAN is set to a true value, the cursor will move
to the start of the text if the widget loses focus.
* -toupper < BOOLEAN >
If BOOLEAN is true, all entered text will be converted
to uppercase. By default BOOLEAN is false.
* -tolower < BOOLEAN >
If BOOLEAN is true, all entered text will be converted
to lowercase. By default BOOLEAN is false.
* -onchange < CODEREF >
This sets the onChange event handler for the texteditor widget.
If the text is changed by typing, the code in CODEREF will
be executed. It will get the widget reference as its argument.
* -reverse < BOOLEAN >
Makes the text drawn in reverse font.
METHODS
* new ( OPTIONS )
* layout ( )
* draw ( BOOLEAN )
* focus ( )
* onFocus ( CODEREF )
* onBlur ( CODEREF )
These are standard methods. See Curses::UI::Widget
for an explanation of these.
* text ( [TEXT] )
If TEXT is defined, this will set the text of the widget to TEXT.
To see the change, the widget needs to be redrawn by the draw method.
If TEXT is not defined, this method will return the current contents
of the texteditor.
* get ( )
This method will call text without any arguments, so it
will return the contents of the texteditor.
* onChange ( CODEREF )
This method can be used to set the -onchange event handler
(see above) after initialization of the texteditor.
* set_password_char ( $char )
This method can be used to change the password property. The password
character will be set to $char, or turned off in $char is undef.
DEFAULT BINDINGS
There are different sets of bindings for each mode in which
this widget can be used.
All modes (editor, single line and read only)
* <tab>
Call the 'returreturnn' routine. This will have the widget
loose its focus.
* <cursor-left>, <CTRL+B>
Call the 'cursor-left' routine: move the
cursor one position to the left.
* <cursor-right>, <CTRL+F>
Call the 'cursor-right' routine: move the
cursor one position to the right.
* <cursor-down>, <CTRL+N>
Call the 'cursor-down' routine: move the
cursor one line down.
* <cursor-up>, <CTRL+P>
Call the 'cursor-up' routine: move the
cursor one line up.
* <page-up>
Call the 'cursor-pageup' routine: move the
cursor to the previous page.
* <page-down>
Call the 'cursor-pagedown' routine: move
the cursor to the next page.
* <home>
Call the 'cursor-home' routine: go to the
start of the text.
* <end>
Call the 'cursor-end' routine: go to the
end of the text.
* <CTRL+A>
Call the 'cursor-scrlinestart' routine: move the
cursor to the start of the current line.
* <CTRL+E>
Call the 'cursor-scrlineend' routine: move the
cursor to the end of the current line.
* <CTRL+W>
Call the 'toggle-wrapping' routine: toggle the
-wrapping option of the texteditor.
* <CTRL+R>
Call the 'toggle-showhardreturns' routine: toggle the
-showhardreturns option of the texteditor.
* <CTRL+T>
Call the 'toggle-showoverflow' routine: toggle the
-showoverflow option of the texteditor.
All edit modes (all but read only mode)
* <CTRL+Y>, <CTRL+X>
Call the 'delete-line' routine: Delete the current
line.
* <CTRL+K>
Call the 'delete-till-eol' routine: delete the text
from the current cursor position up to the end of
the current line.
* <CTRL+U>
Call the 'clear-line' routine: clear the
current line and move the cursor to the
start of this line.
* <CTRL+D>
Call the 'delete-character' routine: delete the
character that currently is under the cursor.
* <backspace>
Call the 'backspace' routine: delete the character
this is before the current cursor position.
* <CTRL+Z>
Call the 'undo' routine: undo the last change to
the text, up to -undolevels levels.
* <CTRL+V>
Call the 'paste' routine: this will paste the
last deleted text at the current cursor position.
* <any other key>
Call the 'add-string' routine: the character
will be inserted in the text at the current
cursor position.
Only for the read only mode
* <h>
Call the 'cursor-left' routine: move the
cursor one position to the left.
* <l>
Call the 'cursor-right' routine: move the
cursor one position to the right.
* b<<k>>
Call the 'cursor-up' routine: move the
cursor one line up.
* b<<j>>
Call the 'cursor-down' routine: move the
cursor one line down.
* <space>, <]>
Call the 'cursor-pagedown' routine: move
the cursor to the next page.
* <->, <[>
Call the 'cursor-pageup' routine: move the
cursor to the previous page.
* </>
Call the 'search-forward' routine. This will make a 'less'-like
search system appear in the textviewer. A searchstring can be
entered. After that the user can search for the next occurance
using the 'n' key or the previous occurance using the 'N' key.
* <?>
Call the 'search-backward' routine. This will do the same as
the 'search-forward' routine, only it will search in the
opposite direction.
This package is free software and is provided ``as is'' without express
or implied warranty. It may be used, redistributed and/or modified
under the same terms as perl itself.