From bcc42a7d853f1875fc80b62938fb7eb71586aef8 Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Tue, 21 Aug 2007 23:28:07 +0000 Subject: add per-connection expander --- lib/network/netcenter.pm | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/network/netcenter.pm b/lib/network/netcenter.pm index 521ee28..2e6ad50 100755 --- a/lib/network/netcenter.pm +++ b/lib/network/netcenter.pm @@ -57,15 +57,14 @@ sub main { child => gtknew('VBox', spacing => 5, children_tight => [ map_index { my $cmanager = build_cmanager($in, $net, $w, $pixbufs, $_); - my $box = gtknew('VBox', spacing => 5, children_tight => [ - gtknew('HBox', children => [ + my $head = gtknew('HBox', children => [ 0, gtknew('Image', file => $_->get_type_icon), 0, gtknew('Label', padding => [ 5, 0 ]), 1, gtknew('Label', ellipsize => 'end', alignment => [ 0, 0 ], text_markup => '' . $_->get_description . ''), 0, gtknew('Label', padding => [ 2, 0 ]), 0, $cmanager->{gui}{labels}{interface} = gtknew('Label', alignment => [ 0, 0 ], text_markup => '' . $_->get_interface . ''), - ]), - gtknew('HBox', children => [ + ]); + my $content = gtknew('HBox', children => [ 0, gtknew('Label', padding => [ 5, 0 ]), 1, gtknew('VBox', spacing => 5, children_tight => [ if_($cmanager->{gui}{show_networks}, @@ -94,9 +93,27 @@ sub main { clicked => sub { network::connection_manager::start_connection($cmanager) }), ]), ]), - ]), ]); + + my $expander = gtknew('Expander'); + my $toggle_expand = sub { $expander->get_expanded ? $content->hide : $content->show_all }; + $expander->signal_connect(activate => $toggle_expand); + my $eventbox = gtksignal_connect(Gtk2::EventBox->new, button_press_event => sub { + $_[1]->button == 1 or return; + $toggle_expand->(); + $expander->set_expanded(!$expander->get_expanded); + }); + my $box = gtknew('VBox', spacing => 5, children_tight => [ + gtknew('HBox', children => [ + 0, $expander, + 1, gtkadd($eventbox, $head), + ]), + $content, + ]); + $content->hide; + network::connection_manager::update_on_status_change($cmanager); + ($::i > 0 ? Gtk2::HSeparator->new : ()), $box; } @connections, ])), -- cgit v1.2.1