App-ConMenu

 view release on metacpan or  search on metacpan

lib/App/ConMenu.pm  view on Meta::CPAN

}

sub printMenu {
    my $self = shift;
    my $menuItemsUnsorted = $self->{'menu'}->[0];
    my @menuItems = sort { {$a} cmp {$b} } keys(%$menuItemsUnsorted);
    $self->{menuItems} = \@menuItems;
    cls();
    my $i=1;
    my @menuItemsNumerical = map { '['. $i++.'] '.$_ } @menuItems;
    say join("\n", @menuItemsNumerical);
    say 'Choose a menu item by pressing the corresponding number';
    say 'q to exit';
}

sub waitForInput {
    my $self = shift;
    my $selection = <>;
    if ($selection =~ /[0-9]+/){
        if ($selection  > scalar ($self->{menuItems}) or $selection < 1 ){
            say 'Error no such menu item';
            exit;
        }
    } else {
        exit;
    }
    my $menuItems = $self->{menuItems};
    $self->execute($self->{menu}->[0]->{$menuItems->[$selection -1]})
}

# create a default file to get people going.

scripts/m.pl  view on Meta::CPAN

my $menu = App::ConMenu->new();
my $homeDir = File::HomeDir->my_home;
my $filePrefix = '.'; #.filename for unix type systems
if ($^O eq 'MSWin32') {
    $filePrefix = '_'; # _filename for windows.
}
my $fullFileName = File::Spec->catfile($homeDir, $filePrefix.'con_menu.yml') ;

#offer to create a default file
if (! -e $fullFileName ) {
   say 'The Yaml menu file does not exist in your home dir. ';
   say 'Would you like me to create it ? (Y/N)';
   my $selection = <>;
   chomp($selection);
   if (uc($selection) eq 'Y' ) {
       $menu->createDefaultFile($fullFileName);
       say ' File created at '.$fullFileName.' edit to add your entries';
   }
   exit;
}
$menu->{fileName} = $fullFileName;
$menu->loadMenuFile();
$menu->printMenu();
$menu->waitForInput();



( run in 0.715 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )