simplelist and custom cell renderers
- From: "Cristóvão B. B. Dalla Costa" <cbraga freedows com>
- To: Gtk-Perl-List <gtk-perl-list gnome org>
- Subject: simplelist and custom cell renderers
- Date: Fri, 24 Sep 2004 09:53:22 -0300
Hello!
I'm building an application which displays a list, using SimpleList, of
modules, each row has the module name and a checkbox which tells whether
to use the module on that row. The catch is that I must use checkboxes
with the 'inconsistent' property to indicate modules that must be forced
due to dependencies.
So at first I created a new column type to display the checkbox with the
inconsistent state base on the data placed on the simplelist:
Gtk2::SimpleList->add_column_type('checkbox3',
type => 'Glib::Scalar',
renderer => 'MyCheckboxCellRenderer',
attr => sub {
my ($treecol, $cell, $model, $iter, $col_num) = @_;
my $val = $model->get ($iter, $col_num);
$cell->set (inconsistent => ($val < 0), active => $val > 0);
}
);
Trouble is, now I couldn't toggle the checkboxes. So I headed off to
create a new cell renderer. I managed to make them togglable, but now I
can't figure out how to change the data back in the list. Actually, I
can't really toggle them properly since I'm using the hack of calling
$simplelist->get_selected_indices to find which row is selected, so I
can toggle only the row that I clicked previously.
There has to be a simpler way, but I can't figure out which of the rows
is being clicked on. How do I find that out?
Here's my code for the cell renderer:
package MyCheckboxCellRenderer;
use strict;
use Gtk2;
use Glib::Object::Subclass
Gtk2::CellRendererToggle::,
signals => { },
properties => [ ];
sub ACTIVATE {
my $self = shift;
my ($cell, $event, $widget, $path, $background_area, $cell_area,
$flags) = @_;
my $idx = ($event->get_selected_indices) [0];
if ($event->{data}->[$idx]->[0] >= 0) { # toggle?
$event->{data}->[$idx]->[0] = ($event->{data}->[$idx]->[0] + 1) % 2;
}
return 1;
}
Thanks in advance!
--
Cristóvão Dalla Costa
cbraga freedows com
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]