1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
#!/usr/bin/perl use strict; use warnings; use utf8; use Data::Dumper; use Gtk2 '-init'; use Gtk2::SimpleList; my $window = Gtk2::Window->new; $window->set_title ('SimpleList examples'); $window->signal_connect (delete_event => sub {Gtk2->main_quit; 1}); $window->set_default_size (320, -1); my $hbox = Gtk2::HBox->new; $window->add($hbox); my @data=<DATA>; chomp(@data); my $pixbuf=Gtk2::Gdk::Pixbuf->new_from_xpm_data(@data); ######################################################################## # Eine Tabelle my $slist = Gtk2::SimpleList->new ( 'Double' => 'double', 'Boolean' => 'bool', 'Txt (editierbar)' => 'text', 'Int (editierbar)' => 'int', 'PixelBuffer' => 'pixbuf', ); # Werte hinzufügen @{$slist->{data}} = ( [ 0.1, 0, 'das ist etwas Test Text', 1, $pixbuf ], [ 0.2, 0, 'Das ist etwas Text', 2, $pixbuf ], [ 0.3, 0, 'Das ist Text', 3, $pixbuf ], [ 0.4, 0, 'Das Text', 4, undef ], ); # Mehrfachselektion $slist->get_selection->set_mode ('multiple'); # Nichts selektiert $slist->get_selection->unselect_all; # Spalte 1 und 2 sind editierbar: $slist->set_column_editable (2, 1); $slist->set_column_editable (3, 1); # Simplelist ist ein Treeview Allso kann man auch die Methoden nutzen: $slist->set_rules_hint (1); $slist->set_reorderable (1); map { $_->set_resizable (1) } $slist->get_columns; ######################################################################## # Eine einfach Liste: my $list = Gtk2::SimpleList->new ('Categories' => 'text'); @{$list->{data}} = qw/Maus Ratte Marder Katze Tiger Löwe Bär/; # wenn Zeile selektiert # dann passende Zeile in der anderen Liste Manipulieren $list->signal_connect(row_activated =>sub{ my $pos=$_[1]->to_string(); if(@{$slist->{data}}>$pos) { $slist->{data}->[$pos]->[0]+=1; $slist->{data}->[$_]->[1] = $_==$pos for(0..$#{$slist->{data}}) } }); ######################################################################## my $scrolled = Gtk2::ScrolledWindow->new; $scrolled->set_policy ('automatic', 'automatic'); $scrolled->add($slist); $hbox->pack_start($scrolled, 1, 1, 0); $hbox->pack_start($list, 0, 0, 0); $window->show_all; Gtk2->main; __DATA__ 32 32 2 1 # c None . c #000000 ################################ ################################ #############################..# ###########################...## #########################....### #######################.....#### ####################.......##### ##################........###### ################.........####### ##############..........######## ###########............######### #########.............########## #######..............########### #####...............############ ###................############# #.................############## #.................############## ###................############# #####...............############ #######..............########### #########.............########## ###########............######### ##############..........######## ################.........####### ##################........###### ####################.......##### #######################.....#### #########################....### ###########################...## #############################..# ################################ ################################