|
2 | 2 |
|
3 | 3 | use strict;
|
4 | 4 | use warnings;
|
5 |
| -use diagnostics; |
6 |
| -use feature ':5.14'; |
| 5 | +use feature ':5.10'; |
7 | 6 | use Gtk3 '-init';
|
8 | 7 | use Glib qw/TRUE FALSE/;
|
9 |
| -use Data::Dumper; |
10 | 8 |
|
11 | 9 | my $window = Gtk3::Window->new('toplevel');
|
12 | 10 | $window->set_title("Cell Renderer Example");
|
|
15 | 13 | $window->set_border_width(5);
|
16 | 14 | $window->signal_connect (delete_event => sub { Gtk3->main_quit });
|
17 | 15 |
|
18 |
| -my $data = Gtk3::ListStore->new( 'Glib::Int', 'Glib::String' ); |
19 |
| - |
20 |
| -$data->set( $data->append, 0, 1, 1, 'First bit' ); |
| 16 | +my $data = Gtk3::ListStore->new( 'Glib::Int', 'Glib::String', 'Glib::String' ); |
| 17 | +$data->set( $data->append, 0, 1, 1, 'First bit'); |
21 | 18 | $data->set( $data->append, 0, 2, 1, 'second' );
|
22 |
| -$data->set( $data->append, 0, 3, 1, 'third' ); |
23 |
| - |
| 19 | +$data->set( $data->append, 0, 3, 2, 'third' ); |
24 | 20 | my $tree = Gtk3::TreeView->new($data);
|
25 | 21 |
|
26 | 22 | my $spinner = Gtk3::CellRendererSpin->new;
|
27 |
| -$spinner->signal_connect( edited => \&on_amount_edited, $data ); |
28 | 23 | $spinner->set_property( editable => TRUE );
|
29 |
| - |
30 | 24 | my $adj = Gtk3::Adjustment->new( 0, 0, 100, 1, 10, 0 );
|
31 | 25 | $spinner->set_property( adjustment => $adj );
|
| 26 | +$spinner->signal_connect( edited => \&on_amount_edited, $data ); |
| 27 | +my $col0 = Gtk3::TreeViewColumn->new_with_attributes( 'Number', $spinner, text => 0 ); |
| 28 | +$tree->append_column($col0); |
32 | 29 |
|
33 |
| -my $cs = Gtk3::TreeViewColumn->new_with_attributes( 'Amount', $spinner, text => 0 ); |
34 |
| -$tree->append_column($cs); |
| 30 | +my $col1 = Gtk3::TreeViewColumn->new_with_attributes( 'Text', Gtk3::CellRendererText->new, text => 1 ); |
| 31 | +$tree->append_column($col1); |
35 | 32 |
|
36 |
| -my $ct = Gtk3::TreeViewColumn->new_with_attributes( 'Numbers', Gtk3::CellRendererText->new, text => 1 ); |
37 |
| -$tree->append_column($ct); |
| 33 | +my $ren_text = Gtk3::CellRendererText->new(); |
| 34 | +$ren_text->set_property('editable', TRUE); |
| 35 | +$ren_text->signal_connect (edited => \&cell_edited, $data); |
| 36 | +my $col2 = Gtk3::TreeViewColumn->new_with_attributes( 'Ed Text', $ren_text, text => 2 ); |
| 37 | +$tree->append_column($col2); |
38 | 38 |
|
39 | 39 | $window->add($tree);
|
40 |
| - |
41 | 40 | $window->show_all;
|
42 | 41 | Gtk3->main;
|
43 | 42 |
|
44 | 43 | sub on_amount_edited {
|
45 |
| - my ( $widget, $path, $value, $store ) = @_; |
46 |
| - |
| 44 | + my ( $widget, $path, $value, $model ) = @_; |
47 | 45 | my $path_str = Gtk3::TreePath->new($path);
|
48 |
| - my $iter = $store->get_iter($path_str); |
49 |
| - |
50 |
| - $store->set( $iter, 0, int($value) ); |
| 46 | + my $iter = $model->get_iter($path_str); |
| 47 | + $model->set( $iter, 0, int($value) ); |
51 | 48 | }
|
52 | 49 |
|
| 50 | +sub cell_edited { |
| 51 | + my ($cell, $path, $value, $model) = @_; |
| 52 | + my $path_str = Gtk3::TreePath->new($path); |
| 53 | + my $iter = $model->get_iter($path_str); |
| 54 | + $model->set($iter, 2, $value); |
| 55 | +} |
53 | 56 |
|
54 |
| -=head |
55 |
| -
|
56 |
| -
|
57 |
| -
|
58 |
| - treeview = Gtk.TreeView(model=self.liststore) |
59 |
| -
|
60 |
| - renderer_text = Gtk.CellRendererText() |
61 |
| - column_text = Gtk.TreeViewColumn("Text", renderer_text, text=0) |
62 |
| - treeview.append_column(column_text) |
63 |
| -
|
64 |
| - renderer_editabletext = Gtk.CellRendererText() |
65 |
| - renderer_editabletext.set_property("editable", True) |
66 |
| -
|
67 |
| - column_editabletext = Gtk.TreeViewColumn("Editable Text", |
68 |
| - renderer_editabletext, text=1) |
69 |
| - treeview.append_column(column_editabletext) |
70 |
| -
|
71 |
| - renderer_editabletext.connect("edited", self.text_edited) |
72 |
| -
|
73 |
| - self.add(treeview) |
74 |
| -
|
75 |
| - def text_edited(self, widget, path, text): |
76 |
| - self.liststore[path][1] = text |
77 |
| -
|
78 |
| -win = CellRendererTextWindow() |
79 |
| -win.connect("delete-event", Gtk.main_quit) |
80 |
| -win.show_all() |
81 |
| -Gtk.main() |
82 | 57 |
|
83 |
| -=cut |
0 commit comments