#!/usr/bin/perl -w use strict; use warnings; use lib qw( lib examples/lib ); use Gapp; my $m = Gapp::ListStore->new( columns => [qw( Glib::Boolean Glib::String Glib::String Glib::String )] ); my $iter = $m->gobject->append; $m->gobject->set( $iter, 0 => 0, 1 => 60489, 2 => 'Critical', 3 => 'Bug description' ); $m->gobject->set( $iter, 0 => 1, 1 => 60566, 2 => 'Standard', 3 => 'Bug 2' ); $m->gobject->set( $iter, 0 => 0, 1 => 60569, 2 => 'Critical', 3 => 'Antoher bug' ); $m->gobject->set( $iter, 0 => 1, 1 => 60662, 2 => 'Standard', 3 => 'Bugs eveywhere' ); $m->gobject->set( $iter, 0 => 0, 1 => 60783, 2 => 'Critical', 3 => 'Bugs?' ); my $w = Gapp::Window->new( title => 'Gapp Application', content => [ Gapp::VBox->new( content => [ Gapp::TreeView->new( columns => [ [ 'fixed' , 'Fixed?' , 'toggle', 0, undef, ], [ 'bug_number' , 'Bug Number' , 'text', 1, undef], [ 'severity' , 'Severity' , 'text', 2, undef], [ 'description', 'Description', 'text', 3, undef], ], customize => sub { my ( $self, $w ) = @_; $self->find_column( 'fixed' )->renderer->signal_connect( toggled => \&_do_toggled, [ $m, 0 ] ); }, model => $m, ) ] ) ], signal_connect => [ ['delete-event' => sub { Gtk2->main_quit }], ] ); sub _do_toggled { print @_, "\n"; my ( $r, $cell, $path_str, $args ) = @_; my ( $model, $col ) = $args ? @$args : (); my $path = Gtk2::TreePath->new( $path_str ); my $iter = $model->gobject->get_iter( $path ); my ( $value ) = $model->gobject->get( $iter, $col ); $value ^= 1; $model->gobject->set( $iter, $col, $value ); } $w->show_all; Gapp->main;