summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install')
-rw-r--r--perl-install/standalone/net_applet64
1 files changed, 35 insertions, 29 deletions
diff --git a/perl-install/standalone/net_applet b/perl-install/standalone/net_applet
index 35ff6df67..1166d21d2 100644
--- a/perl-install/standalone/net_applet
+++ b/perl-install/standalone/net_applet
@@ -144,40 +144,46 @@ sub run_net_monitor() {
sub run_drakroam() {
run_program::raw({ detach => 1 }, '/usr/sbin/drakroam') unless is_running('drakroam');
}
+sub generate_wireless_menuitem {
+ my ($net) = @_;
+ $net->{menuitem} = Gtk2::CheckMenuItem->new;
+ $net->{menuitem}->set_draw_as_radio(1);
+ $net->{menuitem}->add(gtkpack_(gtkshow(Gtk2::HBox->new),
+ 1, gtkset_alignment($net->{ssid_label} = Gtk2::Label->new, 0, 0),
+ 0, $net->{keyring_image} = Gtk2::Image->new_from_pixbuf($pixbufs{keyring}),
+ 0, $net->{level_image} = Gtk2::Image->new));
+ $net->{activate} = $net->{menuitem}->signal_connect('activate' => sub {
+ if (exists $net->{id}) {
+ eval { $monitor->select_network($net->{id}) };
+ if ($@) {
+ my $error = $@;
+ err_dialog(N("Error"), N("Unable to select wireless network: %s", $error));
+ }
+ } else {
+ run_drakroam();
+ }
+ checkNetworkForce();
+ });
+ undef $current_state; #- force menu redraw
+}
+sub update_wireless_item {
+ my ($net) = @_;
+ $net->{ssid_label}->set_text($net->{ssid} || "[$_]");
+ $net->{keyring_image}->visible(defined $net->{flags});
+ my $approx_level = 20 + int(min($net->{signal_level}, 80)/20)*20;
+ $net->{level_image}->set_from_pixbuf($pixbufs{link_level}{$approx_level});
+
+ $net->{menuitem}->signal_handler_block($net->{activate});
+ $net->{menuitem}->set_active($net->{current});
+ $net->{menuitem}->signal_handler_unblock($net->{activate});
+}
sub checkWireless() {
my $networks = $monitor->list_wireless;
foreach (keys %$networks) {
my $net = $wireless_networks{$_} ||= {};
put_in_hash($net, $networks->{$_});
- unless (exists $net->{menuitem}) {
- $net->{menuitem} = Gtk2::CheckMenuItem->new;
- $net->{menuitem}->set_draw_as_radio(1);
- $net->{menuitem}->add(gtkpack_(gtkshow(Gtk2::HBox->new),
- 1, gtkset_alignment($net->{ssid_label} = Gtk2::Label->new, 0, 0),
- 0, $net->{keyring_image} = Gtk2::Image->new_from_pixbuf($pixbufs{keyring}),
- 0, $net->{level_image} = Gtk2::Image->new));
- $net->{activate} = $net->{menuitem}->signal_connect('activate' => sub {
- if (exists $net->{id}) {
- eval { $monitor->select_network($net->{id}) };
- if ($@) {
- my $error = $@;
- err_dialog(N("Error"), N("Unable to select wireless network: %s", $error));
- }
- } else {
- run_drakroam();
- }
- checkNetworkForce();
- });
- undef $current_state; #- force menu redraw
- }
- $net->{ssid_label}->set_text($net->{ssid} || "[$_]");
- $net->{keyring_image}->visible(defined $net->{flags});
- my $approx_level = 20 + int(min($net->{signal_level}, 80)/20)*20;
- $net->{level_image}->set_from_pixbuf($pixbufs{link_level}{$approx_level});
-
- $net->{menuitem}->signal_handler_block($net->{activate});
- $net->{menuitem}->set_active($net->{current});
- $net->{menuitem}->signal_handler_unblock($net->{activate});
+ exists $net->{menuitem} or generate_wireless_menuitem($net);
+ update_wireless_item($net);
}
$wireless_networks{$_}{menuitem}->visible(exists $networks->{$_}) foreach keys %wireless_networks;
}