diff options
-rw-r--r-- | drakpxelinux.pl | 56 |
1 files changed, 35 insertions, 21 deletions
diff --git a/drakpxelinux.pl b/drakpxelinux.pl index e029d23..efa187a 100644 --- a/drakpxelinux.pl +++ b/drakpxelinux.pl @@ -43,10 +43,13 @@ use Gtk2::SimpleList; use Gtk2::Helper; use run_program; use IO::Socket; +use Data::Dumper; use constant FALSE => 0; use constant TRUE => 1; +my ($treeview, $model); + # ie of entry menu in PXE: #label linux # KERNEL images/vmlinuz @@ -206,9 +209,13 @@ sub set_pxelinux_entry_at_iter { sub create_model() { # my $model = Gtk2::ListStore->new(("Glib::String") x NUM_COLUMNS); - my $model = Gtk2::ListStore->new("Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String"); - set_pxelinux_entry_at_iter($model, $model->append, $_) foreach @{$pxelinux_conf->{entries}}; - return $model; + my $model = Gtk2::ListStore->new("Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String"); +# set_pxelinux_entry_at_iter($model, $model->append, $_) foreach @{$pxelinux_conf->{entries}}; + return $model; +} + +sub fill_model() { + set_pxelinux_entry_at_iter($model, $model->append, $_) foreach @{$pxelinux_conf->{entries}}; } # wizard to add an entry in PXE menu @@ -813,21 +820,21 @@ my $profiles_conf = network::pxe::read_profiles(); my $systems = Gtk2::SimpleList->new( N("MAC address") => 'text', - N("Installed") => 'bool', - N("System") => 'text', + N("Profil 1") => 'text', + N("Profil 2") => 'text', ); -$systems->get_selection->set_mode('multiple'); +$systems->get_selection->set_mode('single'); $systems->get_model->set_sort_column_id(0, 'ascending'); #- don't let the user modify the "Installed" state $systems->get_column(1)->get_cell_renderers->set_property('mode', 'inert'); -my $profiles = Gtk2::SimpleList->new(undef => 'text'); -$profiles->set_headers_visible(0); +my $profiles = Gtk2::SimpleList->new("Profile name" => 'text'); +$profiles->set_headers_visible(1); $profiles->get_selection->set_mode('browse'); $profiles->get_selection->signal_connect(changed => sub { my ($model, $iter) = $_[0]->get_selected or return; profile_selected($model->get($iter, 0)); - }); + }); my $log_text = gtknew('TextView'); @@ -890,16 +897,24 @@ sub add_profile() { $w->main; } -sub profile_selected { - my ($profile) = @_; - $install_button->set_sensitive(exists $profiles_conf->{profiles}{install}{$profile}); -} - - - ############### # Main Program ############### +# create model +our $model = create_model(); +our $treeview = Gtk2::TreeView->new_with_model($model); + +sub profile_selected { + my ($profile) = @_; + # force type = boot + my $type = "boot"; + my ($config_file, $help_file) = network::pxe::get_pxelinux_profile_path($profile, $type); + print "----- $config_file $help_file\n"; + my $pxelinux_conf = network::pxe::read_pxelinux_conf($config_file, $help_file); + print Dumper($pxelinux_conf); + 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")) { @@ -920,13 +935,12 @@ sub launch_pxe_server() { # disable wizard $::isWizard = 0; -# create model -my $model = create_model(); +profile_selected; my $w = ugtk2->new(N("Drakpxelinux")); #$w->{rwindow}->set_size_request(800, 500) unless $::isEmbedded; -my $treeview = Gtk2::TreeView->new_with_model($model); +#my $treeview = Gtk2::TreeView->new_with_model($model); $treeview->set_rules_hint(TRUE); $treeview->get_selection->set_mode('single'); add_columns($treeview); @@ -980,8 +994,8 @@ gtkpack($w->{window}, 1, gtknew('HBox', spacing => 1, children => [ 1, gtknew('ScrolledWindow', width => 500, height => 300, child => $treeview), 0, gtknew('VBox', children => [ - 0, gtknew('Label', text => N("Profiles")), - 0, gtknew('ScrolledWindow', child => $profiles), + 0, gtknew('Label', text => N("Profiles list")), + 0, gtknew('ScrolledWindow', height => 170, child => $profiles), 0, gtknew('VButtonBox', layout => 'start', children_loose => [ gtksignal_connect(gtknew('Button', text => N("Add profile")), clicked => \&add_profile), gtksignal_connect(gtknew('Button', text => N("Clone profile")), clicked => sub { |