1999-01-13 22:28:54 +03:00
|
|
|
<HTML><BODY>
|
|
|
|
<HR break>
|
|
|
|
<H2><A name=Fl_Input_>class Fl_Input_</A></H2>
|
|
|
|
<HR>
|
|
|
|
<H3>Class Hierarchy</H3>
|
|
|
|
<UL>
|
|
|
|
<PRE>
|
|
|
|
<A href=Fl_Widget.html#Fl_Widget>Fl_Widget</A>
|
1998-12-29 17:21:17 +03:00
|
|
|
|
|
1999-01-13 22:28:54 +03:00
|
|
|
+----<B>Fl_Input_</B>
|
1998-12-29 17:21:17 +03:00
|
|
|
|
|
1999-12-15 07:58:27 +03:00
|
|
|
+----<A href=Fl_Input.html#Fl_Input>Fl_Input</A>, <A href=Fl_Output.html#Fl_Output>Fl_Output</A>
|
1999-01-13 22:28:54 +03:00
|
|
|
</PRE>
|
|
|
|
</UL>
|
|
|
|
<H3>Include Files</H3>
|
|
|
|
<UL>
|
|
|
|
<PRE>
|
|
|
|
#include <FL/Fl_Input_.H>
|
|
|
|
</PRE>
|
|
|
|
</UL>
|
|
|
|
<H3>Description</H3>
|
|
|
|
This is a virtual base class below <A href=functions.html#Fl_Input><TT>
|
|
|
|
Fl_Input</TT></A>. It has all the same interfaces, but lacks the <TT>
|
|
|
|
handle()</TT> and <TT>draw()</TT> method. You may want to subclass it
|
|
|
|
if you are one of those people who likes to change how the editing keys
|
|
|
|
work.
|
|
|
|
<P>This can act like any of the subclasses of Fl_Input, by setting <TT>
|
|
|
|
type()</TT> to one of the following values: </P>
|
|
|
|
<UL>
|
|
|
|
<PRE>
|
1998-12-29 17:21:17 +03:00
|
|
|
#define FL_NORMAL_INPUT 0
|
|
|
|
#define FL_FLOAT_INPUT 1
|
|
|
|
#define FL_INT_INPUT 2
|
|
|
|
#define FL_MULTILINE_INPUT 4
|
|
|
|
#define FL_SECRET_INPUT 5
|
1999-01-13 22:28:54 +03:00
|
|
|
</PRE>
|
|
|
|
</UL>
|
|
|
|
<H3>Methods</H3>
|
|
|
|
<CENTER>
|
|
|
|
<TABLE width=90%>
|
|
|
|
<TR><TD align=left valign=top>
|
|
|
|
<UL>
|
|
|
|
<LI><A href=#Fl_Input_.Fl_Input_>Fl_Input_</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.~Fl_Input_>~Fl_Input_</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.copy>copy</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.copy_cuts>copy_cuts</A></LI>
|
|
|
|
</UL>
|
|
|
|
</TD><TD align=left valign=top>
|
|
|
|
<UL>
|
|
|
|
<LI><A href=#Fl_Input_.cut>cut</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.drawtext>drawtext</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.handletext>handletext</A></LI>
|
|
|
|
</UL>
|
|
|
|
</TD><TD align=left valign=top>
|
|
|
|
<UL>
|
|
|
|
<LI><A href=#Fl_Input_.insert>insert</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.lineboundary>lineboundary</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.mark>mark</A></LI>
|
|
|
|
</UL>
|
|
|
|
</TD><TD align=left valign=top>
|
|
|
|
<UL>
|
|
|
|
<LI><A href=#Fl_Input_.maybe_do_callback>maybe_do_callback</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.position>position</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.replace>replace</A></LI>
|
|
|
|
</UL>
|
|
|
|
</TD><TD align=left valign=top>
|
|
|
|
<UL>
|
|
|
|
<LI><A href=#Fl_Input_.undo>undo</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.up_down_position>up_down_position</A></LI>
|
|
|
|
<LI><A href=#Fl_Input_.wordboundary>wordboundary</A></LI>
|
|
|
|
</UL>
|
|
|
|
</TD></TR>
|
|
|
|
</TABLE>
|
|
|
|
</CENTER>
|
|
|
|
<H4><A name=Fl_Input_.Fl_Input_>Fl_Input_::Fl_Input_(int x, int y, int
|
|
|
|
w, int h, const char *label = 0)</A></H4>
|
|
|
|
Creates a new <TT>Fl_Input_</TT> widget using the given position,
|
|
|
|
size, and label string. The default boxtype is <TT>FL_DOWN_BOX</TT>.
|
|
|
|
<H4><A name=Fl_Input_.~Fl_Input_>virtual Fl_Input_::~Fl_Input_()</A></H4>
|
|
|
|
The destructor removes the widget and any value associated with it.
|
|
|
|
<H4><A name=Fl_Input_.wordboundary>int Fl_Input_::wordboundary(int i)
|
|
|
|
const</A></H4>
|
|
|
|
Returns true if position <TT>i</TT> is at the start or end of a word.
|
|
|
|
<H4><A name=Fl_Input_.lineboundary>int Fl_Input_::lineboundary(int i)
|
|
|
|
const</A></H4>
|
|
|
|
Returns true if position <TT>i</TT> is at the start or end of a line.
|
|
|
|
<H4><A name=Fl_Input_.drawtext>void Fl_Input_::drawtext(int,int,int,int)</A>
|
|
|
|
</H4>
|
|
|
|
Draw the text in the passed bounding box. If <TT>damage()
|
|
|
|
FL_DAMAGE_ALL</TT> is true, this assummes the area has already been
|
|
|
|
erased to <TT>color()</TT>. Otherwise it does minimal update and
|
|
|
|
erases the area itself.
|
|
|
|
<H4><A name=Fl_Input_.handletext>void Fl_Input_::handletext(int
|
|
|
|
e,int,int,int,int)</A></H4>
|
|
|
|
Default handler for all event types. Your <TT>handle()</TT> method
|
1998-12-29 17:21:17 +03:00
|
|
|
should call this for all events that it does not handle completely.
|
1999-01-13 22:28:54 +03:00
|
|
|
You must pass it the same bounding box as passed to <TT>draw()</TT>.
|
|
|
|
Handles <TT>FL_PUSH</TT>, <TT>FL_DRAG</TT>, <TT>FL_RELEASE</TT> to
|
|
|
|
select text, handles <TT>FL_FOCUS</TT> and <TT>FL_UNFOCUS</TT> to show
|
|
|
|
and hide the cursor.
|
|
|
|
<H4><A name=Fl_Input_.up_down_position>int
|
|
|
|
Fl_Input_::up_down_position(int i, int keepmark=0)</A></H4>
|
|
|
|
Do the correct thing for arrow keys. Sets the position (and mark if <I>
|
|
|
|
keepmark</I> is zero) to somewhere in the same line as <I>i</I>, such
|
|
|
|
that pressing the arrows repeatedly will cause the point to move up and
|
|
|
|
down.
|
|
|
|
<H4><A name=Fl_Input_.maybe_do_callback>void
|
|
|
|
Fl_Input_::maybe_do_callback()</A></H4>
|
|
|
|
Does the callback if <TT>changed()</TT> is true or if <TT>when()
|
|
|
|
FL_WHEN_NOT_CHANGED</TT> is non-zero. You should call this at any
|
|
|
|
point you think you should generate a callback.
|
|
|
|
<H4><A name=Fl_Input_.position>int Fl_Input_::position() const
|
|
|
|
<BR> int Fl_Input_::position(int new_position, int new_mark)
|
|
|
|
<BR> int Fl_Input_::position(int new_position_and_new_mark)</A></H4>
|
|
|
|
The input widget maintains two pointers into the string. The
|
|
|
|
"position" is where the cursor is. The "mark" is the other end of the
|
|
|
|
selected text. If they are equal then there is no selection. Changing
|
|
|
|
this does not affect the clipboard (use <TT>copy()</TT> to do that).
|
|
|
|
<P>Changing these values causes a <TT>redraw()</TT>. The new values
|
|
|
|
are bounds checked. The return value is non-zero if the new position
|
|
|
|
is different than the old one. <TT>position(n)</TT> is the same as <TT>
|
|
|
|
position(n,n)</TT>. <TT>mark(n)</TT> is the same as <TT>
|
|
|
|
position(position(),n)</TT>. </P>
|
|
|
|
<H4><A name=Fl_Input_.mark>int Fl_Input_::mark() const
|
|
|
|
<BR> int Fl_Input_::mark(int new_mark)</A></H4>
|
|
|
|
Gets or sets the current selection mark. <TT>mark(n)</TT> is the same
|
|
|
|
as <TT>position(position(),n)</TT>.
|
|
|
|
<H4><A name=Fl_Input_.replace>int Fl_Input_::replace(int a, int b,
|
|
|
|
const char *insert, int length=0)</A></H4>
|
|
|
|
This call does all editing of the text. It deletes the region between <TT>
|
|
|
|
a</TT> and <TT>b</TT> (either one may be less or equal to the other),
|
|
|
|
and then inserts the string <TT>insert</TT> at that point and leaves
|
|
|
|
the <TT>mark()</TT> and <TT>position()</TT> after the insertion. Does
|
|
|
|
the callback if <TT>when() FL_WHEN_CHANGED</TT> and there is a change.
|
|
|
|
<P>Set <TT>start</TT> and <TT>end</TT> equal to not delete anything.
|
|
|
|
Set <TT>insert</TT> to <TT>NULL</TT> to not insert anything. </P>
|
|
|
|
<P><TT>length</TT> must be zero or <TT>strlen(insert)</TT>, this saves
|
|
|
|
a tiny bit of time if you happen to already know the length of the
|
|
|
|
insertion, or can be used to insert a portion of a string or a string
|
|
|
|
containing nul's. </P>
|
|
|
|
<P><TT>a</TT> and <TT>b</TT> are clamped to the 0..<TT>size()</TT>
|
|
|
|
range, so it is safe to pass any values. </P>
|
|
|
|
<P><TT>cut()</TT> and <TT>insert()</TT> are just inline functions that
|
|
|
|
call <TT>replace()</TT>. </P>
|
|
|
|
<H4><A name=Fl_Input_.cut>int Fl_Input_::cut()
|
|
|
|
<BR> int Fl_Input_::cut(int n)
|
|
|
|
<BR> int Fl_Input_::cut(int a, int b);</A></H4>
|
|
|
|
<TT>Fl_Input_::cut()</TT> deletes the current selection. <TT>cut(n)</TT>
|
|
|
|
deletes <TT>n</TT> characters after the <TT>position()</TT>. <TT>
|
|
|
|
cut(-n)</TT> deletes <TT>n</TT> characters before the <TT>position()</TT>
|
|
|
|
. <TT>cut(a,b)</TT> deletes the characters between offsets <TT>a</TT>
|
|
|
|
and <TT>b</TT>. <TT>A</TT>, <TT>b</TT>, and <TT>n</TT> are all clamped
|
|
|
|
to the size of the string. The mark and point are left where the
|
|
|
|
deleted text was.
|
|
|
|
<P>If you want the data to go into the clipboard, do <TT>
|
|
|
|
Fl_Input_::copy()</TT> before calling <TT>Fl_Input_::cut()</TT>, or do <TT>
|
|
|
|
Fl_Input_::copy_cuts()</TT> afterwards. </P>
|
|
|
|
<H4><A name=Fl_Input_.insert>int Fl_Input_::insert(const char *t,int
|
|
|
|
l=0)</A></H4>
|
|
|
|
Insert the string <TT>t</TT> at the current position, and leave the
|
|
|
|
mark and position after it. If <TT>l</TT> is not zero then it is
|
|
|
|
assummed to be <TT>strlen(t)</TT>.
|
|
|
|
<H4><A name=Fl_Input_.copy>int Fl_Input_::copy()</A></H4>
|
|
|
|
Put the current selection between <TT>mark()</TT> and <TT>position()</TT>
|
|
|
|
into the clipboard. Does not replace the old clipboard contents if <TT>
|
|
|
|
position()</TT> and <TT>mark()</TT> are equal.
|
|
|
|
<H4><A name=Fl_Input_.undo>int Fl_Input_::undo()</A></H4>
|
|
|
|
Does undo of several previous calls to <TT>replace()</TT>. Returns
|
|
|
|
non-zero if any change was made.
|
|
|
|
<H4><A name=Fl_Input_.copy_cuts>int Fl_Input_::copy_cuts()</A></H4>
|
|
|
|
Copy all the previous contiguous cuts from the undo information to the
|
1999-12-15 07:58:27 +03:00
|
|
|
clipboard. This is used to make ^K work. </BODY></HTML>
|