From 759e48e8f749513b6116c4f201ad2dbf13505b4d Mon Sep 17 00:00:00 2001 From: Antoine Ginies Date: Wed, 13 Jul 2005 07:00:07 +0000 Subject: add banner, add menu, add ok_cancel_button, remove 'instatn change', add apply button, add require on PXE --- drakpxelinux.pl | 58 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 14 deletions(-) (limited to 'drakpxelinux.pl') diff --git a/drakpxelinux.pl b/drakpxelinux.pl index 743718c..c5d3d91 100644 --- a/drakpxelinux.pl +++ b/drakpxelinux.pl @@ -42,11 +42,9 @@ use ugtk2 qw(:ask :helpers :wrappers :create :dialogs); use constant FALSE => 0; use constant TRUE => 1; +my $in = 'interactive'->vnew('su'); +$in->do_pkgs->ensure_is_installed('pxe', '/usr/sbin/pxe') or return; -unless ($> == 0) { - err_dialog(N("Error!"), N("You are not root. Exiting...")); - die unless $::testing; -} # ie of entry menu in PXE: #label linux @@ -97,10 +95,30 @@ my %help = ( 'wizardsrv' => N("launches a wizard to setup a PXE server"), 'editb' => N("edits the PXE entry selected with a dialog box"), 'removepxe' => N("removes the selected PXE entry"), + 'apply' => N("apply change to configuration file"), 'addpxe' => N("launches a wizard to add a PXE entry "), 'helponline' => N("get help from online documentation"), ); +sub get_items { + my @items = ( + [ "/_File", undef, undef, undef, '', ], + [ "/_File/_Write conf", undef, \&write_conf, 1, '', 'gtk-execute' ], + [ "/_File/_Exit", undef, sub { ugtk2->exit }, 1, '', 'gtk-quit' ], + + [ "/_PXE Server", undef, undef, undef, '', ], + [ "/_PXE Server/_Restart", undef, \&restart_dialog, 1, '', 'gtk-execute' ], + ); + return @items; +} + +sub restart_dialog { + my $cmd = "service pxe restart"; + my $w = $in->wait_message(N("PXE server"), N("Restarting PXE server...")); + run_program::get_stdout($cmd) !~ /unknown|error/ or err_dialog(N("Error!"), N("Error Restarting PXE server")) and return; + undef $w; +} + sub set_help_tip { my ($entry, $key) = @_; gtkset_tip(new Gtk2::Tooltips, $entry, formatAlaTeX($help{$key})); @@ -247,7 +265,7 @@ sub wizard_add_entry { }; push @{$pxelinux_conf->{entries}}, $entry; set_pxelinux_entry_at_iter($model, $model->append, $entry); - write_conf(); +# write_conf(); undef $w; return; }, @@ -295,7 +313,7 @@ sub remove_item { } $model->remove($iter); splice @{$pxelinux_conf->{entries}}, $i, 1; - write_conf(); +# write_conf(); } } @@ -522,7 +540,7 @@ sub edit_box_item { # update value in cells set_pxelinux_entry_at_iter($model, $iter, $entry); $dialog->destroy; - write_conf(); +# write_conf(); network::pxe::add_in_help($entry->{label}, $entry->{info}); }, }, @@ -611,7 +629,7 @@ sub cell_edited { $entry->{option} = $new_text; $model->set($iter, $column, $entry->{option}); } - write_conf(); +# write_conf(); } sub show_help() { info_dialog("help", @@ -803,7 +821,7 @@ $::isWizard = 0; my $model = create_model(); my $window = ugtk2->new("Drakpxelinux $version"); -$window->{rwindow}->set_size_request(800, 400) unless $::isEmbedded; +$window->{rwindow}->set_size_request(800, 500) unless $::isEmbedded; my $W = $window->{window}; $W->signal_connect(delete_event => sub { ugtk2->exit }); @@ -839,15 +857,23 @@ $treeview->signal_connect(button_press_event => sub { } }); +my @items = get_items(); +my $factory = Gtk2::ItemFactory->new('Gtk2::MenuBar', '
', undef); +$factory->create_items('menu', @items); +my $menu = $factory->get_widget('
'); + my $okcancel = create_okcancel({ cancel_clicked => sub { ugtk2->exit }, - ok_clicked => \&write_conf, + ok_clicked => sub { write_conf; ugtk2->exit }, }, ); # main interface $W->add(gtkpack_(Gtk2::VBox->new(0,0), - 1, gtkpack_(gtkset_border_width(Gtk2::HBox->new, 0), + 0, $menu, + if_(!$::isEmbedded, 0, Gtk2::Banner->new('drakgw', N("Drakpxelinux manage your PXE server"))), + if_($::isEmbedded, 0, Gtk2::Label->new("Here you can manage your PXE server.")), + 1, gtkpack_(gtkset_border_width(Gtk2::HBox->new, 3), 1, create_scrolled_window($treeview), 0, gtkpack_(create_vbox('start'), 0, gtksignal_connect(set_help_tip(Gtk2::Button->new(N("Add a PXE entry")), 'addpxe'), clicked => sub { @@ -866,9 +892,13 @@ $W->add(gtkpack_(Gtk2::VBox->new(0,0), 0, gtksignal_connect(set_help_tip(Gtk2::Button->new(N("Edit PXE entry")), 'editb'), clicked => sub { edit_box_item($model, $treeview) } ), - 0, Gtk2::Label->new(N("boot:")), + 0, gtksignal_connect(set_help_tip(Gtk2::Button->new(N("Apply")), 'apply'), clicked => sub { + write_conf } + ), + 0, Gtk2::HSeparator->new, + 0, Gtk2::Label->new(N("Default boot:")), 0, $labelscombo, - 0, Gtk2::HSeparator->new, + 0, Gtk2::HSeparator->new, # create_vbox('end'), 0, gtksignal_connect(set_help_tip(Gtk2::Button->new(N("Reconfigure PXE Server")), 'wizardsrv'), clicked => sub { eval { wizard_pxe_server() }; @@ -882,8 +912,8 @@ $W->add(gtkpack_(Gtk2::VBox->new(0,0), }), 0, gtksignal_connect(new Gtk2::Button(N("Help")), clicked => \&show_help), ), - if_($::isEmbedded, 0, $okcancel), ), + 0, $okcancel, ), ); $W->show_all; -- cgit v1.2.1