I just finished documenting a nice hack I did this morning:
the module is attached. Let me know your comments.
The module includes an example at the end, just run it as a perl
Here is the module description:

       Gtk::CListModel - A simple data model with Gtk::Clist

               my $model = tie @data, 'Gtk::CListModel',
                       titles => ["Fruit", "Price", "Quantity"];
               # all data manipulation is done on @data now
               push @data, ["Oranges", 5, 16];

               # Create a view (a Gtk::Clist widget) to represent the data
               # Include only some of the data in the view (fruit type and price)
               # Also, do not include fruits that cost more than 6 price units.
               my $clist = $model->create_view('main',
                       titles => ['Fruit', 'Price'],
                       filter => sub {$_[1] > 6? () : @_});

       Gtk::CListModel lets you keep your data in a perl array
       and easily create a numer of different views on that data
       using Gtk::CList widgets.  The views can show only some of
       the columns, or a subset of the data or even munge the
       data with user-defined filters.

       All the data manipulations will be performed on a tied
       array and the changes will be propagated to the views
       created for that data.

       To create the model use `tie':

               my $model = tie @data, 'Gtk::CListModel',
                       titles => ["head1", "head2",...];

       The `titles' attribute should be an array reference with
       the titles of the columns of data. They will be used also
       for the default titles in the views.

       You can also provide the initial data using the `data'
       attribute. Remember that the data elements you insert and
       retreive from the @data array are array references with as
       many items as the columns in the model. The order is the
       one defined by the `titles' attribute.

       Later you can manipulate the @data array with the usual
       perl array operators, push, splice and so on.

       create_view ($name[, %options])
         Create a Gtk::Clist widget that represents the data in
         the model.  The name can be used later to disconnect the
         view from the data.

         Options can be one of the following:

         · titles
           An array reference of the titles of the columns to
           display in the list in the order they should appear in
           the view. The default is the titles specified at the
           model creation.

         · filter
           A function that can manipulate the data just before it
           is inserted in the Gtk::CList. The function will
           receive the data and can either make a copy and modify
           the data or return an empty list. In the latter case
           the data will not be added to the view or, if the
           corresponding row was already present, it will be
           removed from the view.

         · postfilter
           A function that receives the view, the row and the
           data that was just inserted/modified in the view. By
           default all the data is inserted in the views as text.
           This filter can be used to display pixmaps, for
           example or do any other kind of manipulations on the
           Gtk::CList row.


lupus debian org                                     debian/rules
lupus ximian com                             Monkeys do it better

Description: Perl program

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]