1 | package userlist; |
1 | package userlist; |
2 | |
2 | |
3 | use base gtk::widget; |
3 | use Glib::Object::Subclass |
|
|
4 | Gtk2::TreeView; |
4 | |
5 | |
5 | sub new { |
6 | sub new { |
6 | my $class = shift; |
7 | my ($self, %arg) = @_; |
7 | my $self = $class->SUPER::new(@_); |
8 | $self = $self->Glib::Object::new; |
|
|
9 | $self->{$_} = delete $arg{$_} for keys %arg; |
8 | |
10 | |
|
|
11 | $self->signal_connect (destroy => sub { %{$_[0]} = () }); |
|
|
12 | |
9 | $self->{model} = new Gtk2::ListStore Glib::String, Glib::String, Glib::String, Glib::Int, Glib::String; |
13 | $self->set_model ($self->{model} = new Gtk2::ListStore Glib::String, Glib::String, Glib::String, Glib::Int, Glib::String); |
10 | gtk::state $self->{model}, "userlist::model", undef, modelsortorder => [2, 'descending']; |
14 | gtk::state $self->{model}, "userlist::model", undef, modelsortorder => [2, 'descending']; |
11 | |
15 | |
12 | $self->{widget} = new Gtk2::TreeView $self->{model}; |
|
|
13 | |
|
|
14 | $self->{widget}->set (rules_hint => 0, search_column => 1); |
16 | $self->set (rules_hint => 0, search_column => 1); |
15 | |
17 | |
16 | my $column = $self->{rlcolumns}[0] = |
18 | my $column = $self->{rlcolumns}[0] = |
17 | Gtk2::TreeViewColumn->new_with_attributes ("Name", $gtk::text_renderer, text => 0); |
19 | Gtk2::TreeViewColumn->new_with_attributes ("Name", $gtk::text_renderer, text => 0); |
18 | $column->set_sort_column_id(1); |
20 | $column->set_sort_column_id (1); |
19 | $column->set(sizing => 'grow-only'); |
21 | $column->set (sizing => 'grow-only'); |
20 | $self->{widget}->append_column ($column); |
22 | $self->append_column ($column); |
21 | |
23 | |
22 | my $column = $self->{rlcolumns}[1] = |
24 | my $column = $self->{rlcolumns}[1] = |
23 | Gtk2::TreeViewColumn->new_with_attributes ("Rk", $gtk::text_renderer, text => 2); |
25 | Gtk2::TreeViewColumn->new_with_attributes ("Rk", $gtk::text_renderer, text => 2); |
24 | $column->set_sort_column_id(3); |
26 | $column->set_sort_column_id (3); |
25 | $column->set(sizing => 'grow-only'); |
27 | $column->set (sizing => 'grow-only'); |
26 | $self->{widget}->append_column ($column); |
28 | $self->append_column ($column); |
27 | |
29 | |
28 | my $column = $self->{rlcolumns}[2] = |
30 | my $column = $self->{rlcolumns}[2] = |
29 | Gtk2::TreeViewColumn->new_with_attributes ("Flags", $gtk::text_renderer, text => 4); |
31 | Gtk2::TreeViewColumn->new_with_attributes ("Flags", $gtk::text_renderer, text => 4); |
30 | $column->set(resizable => 1); |
32 | $column->set (resizable => 1); |
31 | $column->set(sizing => 'grow-only'); |
33 | $column->set (sizing => 'grow-only'); |
32 | $self->{widget}->append_column ($column); |
34 | $self->append_column ($column); |
33 | |
35 | |
34 | $self->{widget}->signal_connect(row_activated => sub { |
36 | $self->signal_connect (row_activated => sub { |
35 | my ($widget, $path, $column) = @_; |
37 | my ($widget, $path, $column) = @_; |
36 | my $user = $self->{users}{$self->{model}->get ($self->{model}->get_iter ($path), 0)} |
38 | my $user = $self->{users}{$self->{model}->get ($self->{model}->get_iter ($path), 0)} |
37 | or return 1; |
39 | or return 1; |
38 | warn "selected user $user\n"; |
40 | warn "selected user $user\n"; |
39 | 1; |
41 | 1; |