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 )