1 | package roomlist; |
1 | package roomlist; |
2 | |
2 | |
3 | use KGS::Constants; |
3 | use KGS::Constants; |
4 | |
4 | |
5 | use base KGS::Listener::Roomlist; |
5 | use base KGS::Listener::Roomlist; |
6 | use base gtk::widget; |
6 | |
|
|
7 | use Glib::Object::Subclass |
|
|
8 | Gtk2::Window; |
7 | |
9 | |
8 | sub new { |
10 | sub new { |
9 | my $self = shift; |
11 | my $self = shift; |
10 | $self = $self->SUPER::new(@_); |
12 | $self = $self->Glib::Object::new; |
|
|
13 | gtk::state $self, "roomlist::window", undef, window_size => [400, 300]; |
11 | |
14 | |
12 | $self->listen ($self->{conn}); |
15 | $self->listen ($self->{conn}); |
13 | |
16 | |
14 | $self->{widget} = new Gtk2::Window 'toplevel'; |
|
|
15 | $self->{widget}->set_title('KGS Rooms'); |
17 | $self->set_title('KGS Rooms'); |
16 | gtk::state $self->{widget}, "roomlist::window", undef, window_size => [450, 200]; |
|
|
17 | |
18 | |
18 | $self->{widget}->signal_connect(delete_event => sub { $self->{widget}->hide; 1 }); |
19 | $self->signal_connect(delete_event => sub { $self->hide; 1 }); |
19 | |
20 | |
20 | $self->{widget}->add(my $vbox = new Gtk2::VBox); |
21 | $self->add (my $vbox = new Gtk2::VBox); |
21 | |
22 | |
22 | $vbox->pack_start((my $sw = new Gtk2::ScrolledWindow), 1, 1, 0); |
23 | $vbox->pack_start ((my $sw = new Gtk2::ScrolledWindow), 1, 1, 0); |
23 | $sw->set_policy("automatic", "always"); |
24 | $sw->set_policy ("automatic", "always"); |
24 | |
25 | |
25 | $self->{roomlist} = new Gtk2::ListStore Glib::Scalar, Glib::String, Glib::String, Glib::Int, Glib::Int, Glib::Int, Glib::Int; |
26 | $self->{roomlist} = new Gtk2::ListStore Glib::Scalar, Glib::String, Glib::String, Glib::Int, Glib::Int, Glib::Int, Glib::Int; |
26 | gtk::state $self->{roomlist}, "roomlist::model", undef, modelsortorder => [2, 'descending']; |
27 | gtk::state $self->{roomlist}, "roomlist::model", undef, modelsortorder => [2, 'descending']; |
27 | |
28 | |
28 | $sw->add(my $treeview = new Gtk2::TreeView $self->{roomlist}); |
29 | $sw->add(my $treeview = new Gtk2::TreeView $self->{roomlist}); |
… | |
… | |
37 | my $column = $self->{rlcolumns}[$idx] = Gtk2::TreeViewColumn->new_with_attributes ($_, $renderer, text => $idx); |
38 | my $column = $self->{rlcolumns}[$idx] = Gtk2::TreeViewColumn->new_with_attributes ($_, $renderer, text => $idx); |
38 | |
39 | |
39 | $column->set_sort_column_id($idx); |
40 | $column->set_sort_column_id($idx); |
40 | $column->set(resizable => 1, sizing => 'fixed', clickable => 1); |
41 | $column->set(resizable => 1, sizing => 'fixed', clickable => 1); |
41 | gtk::state $column, "roomlist::model::$_", undef, |
42 | gtk::state $column, "roomlist::model::$_", undef, |
42 | column_size => [0, 60, 450, 60, 60, 60, 60]->[$idx]; |
43 | column_size => [0, 60, 250, 50, 40, 25, 25]->[$idx]; |
43 | $treeview->append_column ($column); |
44 | $treeview->append_column ($column); |
44 | |
45 | |
45 | $idx++; |
46 | $idx++; |
46 | } |
47 | } |
47 | |
48 | |