The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

Curses::UI::Searchable (3)
  • >> Curses::UI::Searchable (3) ( Разные man: Библиотечные вызовы )
  •  

    NAME

    Curses::UI::Searchable - Add 'less'-like search abilities to a widget
     
    

    CLASS HIERARCHY

     Curses::UI::Searchable - base class
    
    
     

    SYNOPSIS

        package MyWidget;
    
    

        use Curses::UI::Searchable;
        use vars qw(@ISA);
        @ISA = qw(Curses::UI::Searchable);
    
    

        ....
    
    

        sub new () {
            # Create class instance $this.
            ....
    
    

            $this->set_routine('search-forward', \&search_forward);
            $this->set_binding('search-forward', '/');
            $this->set_routine('search-backward', \&search_backward);
            $this->set_binding('search-backward', '?');
        }
    
    

        sub layout_content() {
            my $this = shift;
    
    

            # Layout your widget's content.
            ....
    
    

            return $this;
        }
    
    

        sub number_of_lines() {
            my $this = shift;
    
    

            # 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.

     -ypos
       |
       v
           +------+
       0   |One   |
       1   |Two   |
       2   |Three |
           +------+
    
    
    * method: number_of_lines ( )
    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->set_routine('search-forward'  , \&search_forward);
        $this->set_binding('search-forward'  , '/');
        $this->set_routine('search-backward' , \&search_backward);
        $this->set_binding('search-backward' , '?');
    
    
     

    SEE ALSO

    Curses::UI,  

    AUTHOR

    Copyright (c) 2001-2002 Maurice Makaay. All rights reserved.

    Maintained by Marcus Thiesen (marcus@cpan.thiesenweb.de)

    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.


     

    Index

    NAME
    CLASS HIERARCHY
    SYNOPSIS
    DESCRIPTION
    SEE ALSO
    AUTHOR


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру