ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/kgsueme/userlist.pl
Revision: 1.5
Committed: Thu May 20 22:59:55 2004 UTC (20 years ago) by pcg
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.4: +19 -17 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 pcg 1.1 package userlist;
2    
3 pcg 1.5 use Glib::Object::Subclass
4     Gtk2::TreeView;
5 pcg 1.1
6     sub new {
7 pcg 1.5 my ($self, %arg) = @_;
8     $self = $self->Glib::Object::new;
9     $self->{$_} = delete $arg{$_} for keys %arg;
10 pcg 1.1
11 pcg 1.5 $self->signal_connect (destroy => sub { %{$_[0]} = () });
12    
13     $self->set_model ($self->{model} = new Gtk2::ListStore Glib::String, Glib::String, Glib::String, Glib::Int, Glib::String);
14 pcg 1.1 gtk::state $self->{model}, "userlist::model", undef, modelsortorder => [2, 'descending'];
15    
16 pcg 1.5 $self->set (rules_hint => 0, search_column => 1);
17 pcg 1.1
18     my $column = $self->{rlcolumns}[0] =
19     Gtk2::TreeViewColumn->new_with_attributes ("Name", $gtk::text_renderer, text => 0);
20 pcg 1.5 $column->set_sort_column_id (1);
21     $column->set (sizing => 'grow-only');
22     $self->append_column ($column);
23 pcg 1.1
24     my $column = $self->{rlcolumns}[1] =
25 pcg 1.2 Gtk2::TreeViewColumn->new_with_attributes ("Rk", $gtk::text_renderer, text => 2);
26 pcg 1.5 $column->set_sort_column_id (3);
27     $column->set (sizing => 'grow-only');
28     $self->append_column ($column);
29 pcg 1.1
30     my $column = $self->{rlcolumns}[2] =
31 pcg 1.3 Gtk2::TreeViewColumn->new_with_attributes ("Flags", $gtk::text_renderer, text => 4);
32 pcg 1.5 $column->set (resizable => 1);
33     $column->set (sizing => 'grow-only');
34     $self->append_column ($column);
35 pcg 1.1
36 pcg 1.5 $self->signal_connect (row_activated => sub {
37 pcg 1.1 my ($widget, $path, $column) = @_;
38     my $user = $self->{users}{$self->{model}->get ($self->{model}->get_iter ($path), 0)}
39     or return 1;
40     warn "selected user $user\n";
41     1;
42     });
43    
44     $self;
45     }
46    
47     sub update {
48     my ($self, $add, $update, $remove) = @_;
49    
50     my $l = $self->{model};
51    
52     for (@$remove) {
53     $l->remove (delete $_->{iter}) if $_->{iter};
54     }
55    
56     for (@$add, @$update) {
57     $l->set ($_->{iter} ||= $l->append,
58     0, $_->{name},
59 pcg 1.2 1, lc $_->{name},
60     2, $_->rank_string,
61     3, $_->rank,
62 pcg 1.4 4, $_->flags_string);
63 pcg 1.1 }
64     }
65    
66     1;
67    
68