# Return the number of lines in
# the widget's content.
return ....
}
sub getline_at_ypos($;) {
my $this = shift;
my $ypos = shift;
# Return the content on the line
# where ypos = $ypos
return ....
}
DESCRIPTION
Using Curses::UI::Searchable, you can add 'less'-like
search capabilities to your widget.
To make your widget searchable using this class,
your widget should meet the following requirements:
* make it a descendant of Curses::UI::Searchable
All methods for searching are in Curses::UI::Searchable.
By making your class a descendant of this class, these
methods are automatically inherited.
* -ypos data member
The current vertical position in the widget should be
identified by $this->{-ypos}. This y-position is the
index of the line of content. Here's an example for
a Listbox widget.
Your widget class should have a method number_of_lines,
which returns the total number of lines in the widget's
content. So in the example above, this method would
return the value 3.
* method: getline_at_ypos ( YPOS )
Your widget class should have a method getline_at_ypos,
which returns the line of content at -ypos YPOS.
So in the example above, this method would return
the value ``Two'' for YPOS = 1.
* method: layout_content ( )
The search routines will set the -ypos of your widget if a
match is found for the given search string. Your layout_content
routine should make sure that the line of content at -ypos
will be made visible if the draw method is called.
* method: draw ( )
If the search routines find a match, $this->{-search_highlight}
will be set to the -ypos for the line on which the match
was found. If no match was found $this->{-search_highlight}
will be undefined. If you want a matching line to be highlighted,
in your widget, you can use this data member to do so
(an example of a widget that uses this option is the
Curses::UI::TextViewer widget).
* bindings for searchroutines
There are two search routines. These are search_forward and
search_backward. These have to be called in order to
display the search prompt. The best way to do this is by
creating bindings for them. Here's an example which will
make '/' a forward search and '?' a backward search:
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.