Config-Model-CursesUI
view release on metacpan or search on metacpan
lib/Config/Model/CursesUI.pm view on Meta::CPAN
my $inst = $leaf->instance ;
no warnings "uninitialized";
my $value = $leaf->fetch(check => 'no') ;
$win -> add ( undef, 'Label', -text => "current value: ",
'-x' => $x, '-y' => $y ) ;
my $display_value = defined $value ? $value : '<undef>' ;
my $cur_win =
$win -> add ( undef, 'Label', -text => $display_value ,
-bg => 'yellow',
-width => $width || 35 ,
'-x' => $x + 15, '-y' => $y++ ) ;
my @items = ();
if (defined $leaf->upstream_default) {
push @items, "upstream_default value: " . $leaf->upstream_default ;
}
elsif (defined $leaf->fetch_standard) {
push @items, "default value: " . $leaf->fetch_standard ;
}
my $m = $leaf->mandatory ;
push @items, "is mandatory: ".($m ? 'yes':'no') if defined $m;
my @minmax ;
foreach my $what (qw/min max/) {
my $v = $leaf->$what() ;
push @minmax, "$what: $v" if defined $v;
}
push @items, join(', ',@minmax) if @minmax ;
$win -> add ( undef, 'Label',
'-x' => $x, '-y' => $y,
'-text' => join("\n",@items),
) ;
my $help =
$win -> add ( undef, 'TextViewer',
'-x' => $x ,
'-y' => $y + scalar @items ,
-width => $width || 35,
'-title' => 'Help on value',
@help_settings ) ;
return ($value, $cur_win, $help) ;
}
sub create_menu {
my $self = shift ;
$self->{cui}->delete('menu') ;
my $file_menu = [
{ -label => 'Quit',
-value => sub { exit(0) ;}
},
];
my $menu = [ { -label => 'File', -submenu => $file_menu }, ];
$self->{cui}->add('menu', 'Menubar', -menu => $menu);
}
sub create_config_menu {
my ($self,$label) = @_ ;
$self->{cui}->delete('menu') ;
my $file_menu
= [
{ -label => 'Commit config' ,
-value => sub {$self->store_config($label)} },
{ -label => 'Go back to config root',
-value => $self->{start_config}},
{ -label => 'Reset config' ,
-value => sub {$self->reset_config($label)} },
{
-label => 'Abort config', -value => $self->{start_all} },
];
my @menu_data = ( ['View', 'std',' tree' ],
['View Audit', 'audit','tree' ],
['Tabular View', 'std', 'tabular'],
['Tabular View Audit', 'audit','tabular'],
) ;
my @nav_menu ;
foreach my $i (@menu_data) {
my $sub = sub {
$self->display_view_list(
$self->{displayed_object} || $self->{root},
$i->[1],$i->[2]
) ;
};
push @nav_menu , {-label => $i->[0], -value => $sub } ;
}
my $menu = [
{
-label => 'File', -submenu => $file_menu },
{
-label => 'Navigate', -submenu => \@nav_menu }
];
$self->{cui}->add('menu', 'Menubar', -menu => $menu);
}
sub add_std_button_with_help {
my ($self,$win,$node,$element,@buttons) = @_ ;
my $help = $self->show_node_element_help($node,$element) ;
unshift @buttons, { -label => '< More help >',
-onpress => sub{$self->{cui}->dialog($help);}
}
if $help ;
$self->add_std_button($win,$node,$element,@buttons) ;
}
sub add_std_button {
my ($self,$win,$node,$element,@buttons) = @_ ;
my $up = defined $node ? sub {$self->scan('node',$node);}
: $self->{start_config} ;
unshift @buttons,
{ -label => '< Back >',
-onpress => sub {$self->back}
},
{
-label => '< Up >',
-onpress => $up
},
{
-label => '< Reset >',
-onpress => sub {$self->reset_screen ;}
},
{
-label => '< Top >',
-onpress => $self->{start_config}
} ;
$win->add (undef, 'Buttonbox',
'-y' => $win->canvasheight-1 ,
-buttonalignment => 'middle',
-buttons => \@buttons,
-selected => $#buttons, # select last button
) ;
}
##### explore with Searcher
sub display_all_elements {
my ($self,$root) = @_;
unless (defined $self->{searcher}) {
$self->{searcher} = $root->searcher ;
}
my $searcher = $self->{searcher} ;
my $win = $self->set_center_window("Search for an element");
( run in 0.610 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )