Skip to content

Commit d88714e

Browse files
committed
Cell renderer demo now working with three columns, editable text and spin box
1 parent e6019c6 commit d88714e

File tree

3 files changed

+23
-49
lines changed

3 files changed

+23
-49
lines changed

10a-Cell-renderer-text.pl

+23-49
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
use strict;
44
use warnings;
5-
use diagnostics;
6-
use feature ':5.14';
5+
use feature ':5.10';
76
use Gtk3 '-init';
87
use Glib qw/TRUE FALSE/;
9-
use Data::Dumper;
108

119
my $window = Gtk3::Window->new('toplevel');
1210
$window->set_title("Cell Renderer Example");
@@ -15,69 +13,45 @@
1513
$window->set_border_width(5);
1614
$window->signal_connect (delete_event => sub { Gtk3->main_quit });
1715

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');
2118
$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' );
2420
my $tree = Gtk3::TreeView->new($data);
2521

2622
my $spinner = Gtk3::CellRendererSpin->new;
27-
$spinner->signal_connect( edited => \&on_amount_edited, $data );
2823
$spinner->set_property( editable => TRUE );
29-
3024
my $adj = Gtk3::Adjustment->new( 0, 0, 100, 1, 10, 0 );
3125
$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);
3229

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);
3532

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);
3838

3939
$window->add($tree);
40-
4140
$window->show_all;
4241
Gtk3->main;
4342

4443
sub on_amount_edited {
45-
my ( $widget, $path, $value, $store ) = @_;
46-
44+
my ( $widget, $path, $value, $model ) = @_;
4745
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) );
5148
}
5249

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+
}
5356

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()
8257

83-
=cut

Perl Gtk3 Tutorial.odt

-268 Bytes
Binary file not shown.

Perl Gtk3 Tutorial.pdf

-20.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)