TextEditor - basic unstructured text editing
SYNOPSIS
#include <InterViews/texteditor.h>
DESCRIPTION
A TextEditor is an interactor that provides an interactive
interface for simple text editing of a TextBuffer. TextE-
ditor uses an editing model based on a single current
selection. Editing operations operate on the text in the
selection, alter the position or size of the selection, or
scroll the display to view other parts of the text.
TextEditor interprets a perspective for interactive
scrolling using a scroller.
TextEditor does not provide a default set of keyboard
bindings. You can implement the key bindings you desire
by subclassing and redefining the Handle operation or by
handling keyboard events in an entirely separate class.
PUBLIC OPERATIONS
TextEditor(int rows, int cols, int tabsize, int highlight)
~TextEditor()
Create or destroy an instance of TextEditor. The
natural size of a TextEditor is specified by rows
and columns. The TextEditor will be tall enough to
display rows lines of text in the current font, and
it will be wide enough to display columns charac-
ters. For proportionally-spaced fonts, the width
of the character 'n' is taken to be representative.
Tab characters in the text are expanded to multi-
ples of tabsize character widths. The current
selection highlighted with the text style high-
light.
void Edit(TextBuffer*, int index = 0)
Specify the text buffer to edit. A text buffer
must be specified before the TextEditor is dis-
played. The optional index parameter specifies the
initial selection point. If necessary, the TextEd-
itor is scrolled so that the selection point is
visible.
int Dot()
int Mark()
The current selection is bounded by two indices
into the text buffer. By convention these indices
are called dot and mark. Dot is the position at
which text will be inserted and deleted. Mark
locates the end of the selection that moves as the
selection is modified. When the selection is empty
(an insertion point), dot and mark are equal.
void DeleteText(int count)
void DeleteSelection()
Edit the text buffer at the current selection.
InsertText inserts count characters from string
after dot. The selection becomes an insertion
point following the newly inserted text. Delete-
Text deletes count characters at dot. If count is
positive, the characters following dot are deleted;
if count is negative the characters before dot are
deleted. The selection becomes an insertion point
in the place of the deleted text. DeleteSelection
deletes the text between dot and mark, changing the
selection to an insertion point.
void BackwardCharacter(int count)
void ForwardCharacter(int count)
void BackwardLine(int count)
void ForwardLine(int count)
void BackwardWord(int count)
void ForwardWord(int count)
void BackwardPage(int count)
void ForwardPage(int count)
Move the current selection forward or backward by
the specified number of the specified units. The
default movement is one unit. The selection is not
moved before the beginning of after the end of the
text.
void BeginningOfLine()
void EndOfLine()
void BeginningOfWord()
void EndOfWord()
void BeginningOfSelection()
void EndOfSelection()
void BeginningOfText()
void EndOfText()
Move the current selection forwards or backwards to
the specified feature of the text.
void ScrollToSelection(boolean always = false)
void SetScrollAlignment(Alignment)
Alignment GetScrollAlignment()
ScrollToSelction scrolls the display so that dot
will be visible. If dot is currently visible and
always is false, no scrolling takes place; if dot
is not visible or always is true, the display is
scrolled so that dot will be positioned as close as
possible to the position specified by SetScrol-
lAlignment. GetScrollAlignment returns the current
scroll alignment. The default alignment is Center.
void ScrollToView(Coord x, Coord y)
ScrollToView scrolls the display so that the text
currently at the position (x, y) will be visible.
If the specified point is currently visible, no
scrolling takes place. ScrollBy specifies an
amount by which to scroll the display. Positive
values scroll the display upwards and to the right.
In each case, the final position of the display is
limited so that some text will be visible.
void GrabScroll(Event&)
void RateScroll(Event&)
Initiate grab scrolling or rate scrolling. Once
called, GrabScroll (RateScroll) polls the current
mouse position as long as the middle (right) button
is pressed. As GrabScroll polls, it scrolls the
text to follow the mouse position, making it appear
as though the user is dragging the text itself.
Each time RateScroll polls the mouse, it scrolls
the text by an amount corresponding to the differ-
ential between the current and initial mouse posi-
tions. This creates the illusion of a joystick
interface: the further away the mouse is from its
initial position, the greater the scrolling incre-
ment and the faster the text appears to scroll;
scrolling slows down, stops, and reverses direction
as the user drags the mouse back towards and past
the initial position.
void Select(int dot)
void Select(int dot, int mark)
void SelectMore(int mark)
void SelectAll()
Modify the current selection in terms of text
indices. With a single parameter, Select moves
both dot and mark to the specified index. With two
parameters, dot and mark can be controlled indepen-
dently. SelectMore leaves dot unchanged and moves
mark. SelectAll sets dot to the end of the text
and mark to the beginning.
int Locate(Coord x, Coord y)
Return the text index most closely matching the
point (x, y).
SEE ALSO
Interactor(2I), TextBuffer(3I)
Man(1) output converted with
man2html