diff options
Diffstat (limited to 'drakpxelinux.pl')
-rw-r--r-- | drakpxelinux.pl | 56 |
1 files changed, 34 insertions, 22 deletions
diff --git a/drakpxelinux.pl b/drakpxelinux.pl index f023404..a42f733 100644 --- a/drakpxelinux.pl +++ b/drakpxelinux.pl @@ -342,7 +342,7 @@ sub test_similar_label { # dialog box to edit a PXE entry sub edit_box_item { - my ($_widget, $treeview) = @_; + my ($_widget, $treeview, $pxelinux_conf) = @_; $::isWizard = 0; my $model = $treeview->get_model; my $selection = $treeview->get_selection; @@ -849,18 +849,24 @@ sub create_profiles_list() { $profiles->set_headers_visible(1); $profiles->get_selection->set_mode('browse'); $profiles->get_selection->signal_connect(changed => sub { - my ($models, $iter) = $_[0]->get_selected or return; - ($config_file, $help_file) = network::pxe::get_pxelinux_profile_path($models->get($iter, 0), 'boot'); - profile_selected($models->get($iter, 0)); + my $pxelinux_conf = get_pxelinux_conf_from_profile(); + update_treeview($pxelinux_conf); }); return $profiles; } my $profiles = create_profiles_list; my $systems = create_systems_list; - my $log_text = gtknew('TextView'); +sub get_pxelinux_conf_from_profile() { + my $model_profiles = $profiles->get_model; + my $iter = $profiles->get_selection->get_selected; + ($config_file, $help_file) = network::pxe::get_pxelinux_profile_path($model_profiles->get($iter, 0), 'boot'); + my $pxelinux_conf = profile_selected($model_profiles->get($iter, 0)); + return $pxelinux_conf; +} + sub system_entry_set_profile { my ($entry, $profile) = @_; $entry->[2] = $profile || N("None") } sub system_entry_set_installed { my ($entry, $state) = @_; $entry->[1] = $state } @@ -931,7 +937,6 @@ our $treeview = Gtk2::TreeView->new_with_model($model); sub profile_selected { my ($profile) = @_; - $model->clear; if ($profile eq 'default') { ($config_file, $help_file) = ($network::pxe::pxelinux_config_file, $network::pxe::pxelinux_help_file); } else { @@ -941,12 +946,16 @@ sub profile_selected { print "----- $config_file $help_file\n"; undef $pxelinux_conf; } - print Dumper($pxelinux_conf); my $pxelinux_conf = network::pxe::read_pxelinux_conf($config_file, $help_file); - set_pxelinux_entry_at_iter($model, $model->append, $_) foreach (@{$pxelinux_conf->{entries}}); return $pxelinux_conf; } +sub update_treeview { + my ($pxelinux_conf) = @_; + $model->clear; + set_pxelinux_entry_at_iter($model, $model->append, $_) foreach (@{$pxelinux_conf->{entries}}); +} + # check if first launch if (!-f ($network::pxe::pxelinux_client_root . "/drakwizard_pxe")) { @@ -997,9 +1006,9 @@ $treeview->signal_connect(button_press_event => sub { my $selection = $treeview->get_selection; my $iter = $selection->get_selected; if ($iter) { - my $path = $model->get_path($iter); - my $i = ($path->get_indices)[0]; - edit_box_item($model, $treeview) if $event->type eq '2button-press'; + # get pxelinux_conf file + my $pxelinux_conf = get_pxelinux_conf_from_profile(); + edit_box_item($model, $treeview, $pxelinux_conf) if $event->type eq '2button-press'; } }); @@ -1044,18 +1053,21 @@ gtkpack($w->{window}, 0, gtknew('VBox', spacing => 1, children => [ 0, gtknew('HButtonBox', layout => 'start', children => [ 0, gtksignal_connect(set_help_tip(Gtk2::Button->new(N("Add PXE entry")), 'addpxe'), clicked => sub { - eval { wizard_add_entry($model, $treeview) }; - my $err = $@; - $::WizardWindow->destroy if defined $::WizardWindow; - undef $::WizardWindow; - if ($err && $err !~ /wizcancel/) { - err_dialog(N("Error"), N("The PXE entry wizard has unexpectedly failed:") . "\n\n" . $err); - } - }), - 0, gtksignal_connect(set_help_tip(Gtk2::Button->new(N("Remove")), 'removepxe'), clicked => sub { remove_item($model, $treeview) }), + my $pxelinux_conf = get_pxelinux_conf_from_profile(); + eval { wizard_add_entry($model, $treeview, $pxelinux_conf) }; + my $err = $@; + $::WizardWindow->destroy if defined $::WizardWindow; + undef $::WizardWindow; + if ($err && $err !~ /wizcancel/) { + err_dialog(N("Error"), N("The PXE entry wizard has unexpectedly failed:") . "\n\n" . $err); + } + }), + 0, gtksignal_connect(set_help_tip(Gtk2::Button->new(N("Remove")), 'removepxe'), clicked => sub { + my $pxelinux_conf = get_pxelinux_conf_from_profile(); + remove_item($model, $treeview, $pxelinux_conf) }), 0, gtksignal_connect(set_help_tip(Gtk2::Button->new(N("Edit")), 'editb'), clicked => sub { - edit_box_item($model, $treeview) }), - + my $pxelinux_conf = get_pxelinux_conf_from_profile(); + edit_box_item($model, $treeview, $pxelinux_conf) }), #gtknew('Label', text => N("Default boot:")), #1, $labelscombo, ] |