diff options
Diffstat (limited to 'perl-install/standalone')
-rwxr-xr-x | perl-install/standalone/draknet | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/perl-install/standalone/draknet b/perl-install/standalone/draknet index 2903dda79..0454f087e 100755 --- a/perl-install/standalone/draknet +++ b/perl-install/standalone/draknet @@ -259,6 +259,52 @@ $bbox1->add($button_wizard ); my $button_ok = new Gtk::Button "OK"; $button_ok->signal_connect ( clicked => sub { apply(); + my @window_managers = ('kdeinit: kwin', qw(gnome-session icewm wmaker kwm afterstep fvwm fvwm2 fvwm95 mwm twm enlightenment xfce blackbox sawfish)); + my $wm; + foreach (@window_managers) { $wm=$_ if (`pidof "$_"` > 0) }; + my $dialog = new Gtk::Dialog(); + $dialog->set_position(1); + $dialog->vbox->set_border_width(10); + my $label = new Gtk::Label(_(" +Warning: +Applying the changes while running may crash your X environnement.") . + ($wm ? _(" +If you continue, I will shut down your %s environnement", $wm) : "")); + $dialog->vbox->pack_start($label,1,1,20); + my $bbox_dialog = new Gtk::HButtonBox; + $dialog->action_area->add($bbox_dialog); + $bbox_dialog->set_layout(-end); + my $button_ok = new Gtk::Button "OK"; + $button_ok->signal_connect ( clicked => sub { + $label->set("Please Wait... Applying the configuration"); + Gtk->main_iteration while Gtk->events_pending; + system("$prefix/etc/rc.d/init.d/network $_") foreach "stop", "start"; + unless(fork) { + local $_=$wm; + system("kwmcom logout") if /kwm/; + system("dcop kdesktop default logout") if /kwin/; + system("save-session --kill") if /gnome-session/; + system("killall -QUIT icewm") if /icewm/; + open STDIN, "</dev/zero"; + open STDOUT, ">/dev/null"; + open STDERR, ">&STDERR"; + c::setsid(); + exec qw(perl -e), q{ + my $wm = shift; + for (my $nb = 30; $nb && `pidof "$wm"` > 0; $nb--) { sleep 1 } + system("killall X ; killall -15 xdm gdm kdm prefdm") unless `pidof "$wm"` > 0; + }, $_; + } + Gtk->main_quit(); + kill TERM, $CCPID; + }); + $bbox_dialog->add($button_ok ); + my $button_cancel = new Gtk::Button "Cancel"; + $button_cancel->signal_connect ( clicked => sub { Gtk->main_quit(); }); + $bbox_dialog->add($button_cancel); + $dialog->show_all; + Gtk->main(); + $dialog->destroy; quit_global(); }); $bbox1->add($button_ok); @@ -294,11 +340,11 @@ $in->exit(0); sub apply { + $old_profile=$netcnx->{PROFILE} ? $netcnx->{PROFILE} : "default"; netconnect::save_conf('', $netcnx, $netc, $intf); network::configureNetwork2($prefix, $netc, $intf, \&standalone::pkgs_install); $netcnx->{type} =~ /adsl/ or system("/sbin/chkconfig --del adsl 2> /dev/null"); - system("$prefix/etc/rc.d/init.d/network $_") foreach "stop", "start"; $button_apply->set_sensitive(0); } |