release 1.14pre0
[descalc.git] / 15_menu.pm
diff --git a/15_menu.pm b/15_menu.pm
deleted file mode 100644 (file)
index 9ae8c03..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-# menu for DCT, by Shiar
-
-# 1.11.0 200410282200 - display-specific code in evals
-# 1.10.4 200410151900 - remove explicit call to redraw on error
-# 1.10.3 200410150030 - add quit at F10 in main menu (after running other modules)
-#                     - don't show undefined menu entries (skippable)
-# 1.10.2 200410122345 - addmenu() function to add submenus
-# 1.10.1 200410122210 - @menus global; unit+math items added in those modules
-# 1.09.1 200410112150 - everything related to menus moved here
-# 1.06.1 200409152332 - moved @menus from 1.6 main
-
-#todo: merge basics back into main; i/o functions in display modules
-#      (menu can also be disabled at this level, without too high cost)
-#todo: always remember parent menus (so no need to store back-item (0)
-#      and ability to show higher levels)
-#todo: also store menu hash (to add additional items to a specific submenu)
-
-use strict;
-use warnings;
-
-my %falias = (
-       "\033"                         =>  0, # esc
-       "\033\117\120"                 =>  1, # f1
-       "\033\133\061\061\176"         =>  1, # f1
-       "\033\133\061\062\176"         =>  2, # f2
-       "\033\133\061\063\176"         =>  3, # f3
-       "\033\133\061\064\176"         =>  4, # f4
-       "\033\117\121"                 =>  2, # f2
-       "\033\117\122"                 =>  3, # f3
-       "\033\117\123"                 =>  4, # f4
-       "\033\133\061\065\176"         =>  5, # f5
-       "\033\133\061\067\176"         =>  6, # f6
-       "\033\133\061\070\176"         =>  7, # f7
-       "\033\133\061\071\176"         =>  8, # f8
-       "\033\133\062\060\176"         =>  9, # f9
-       "\033\133\062\061\176"         => 10, # f10
-       "\033\133\062\063\176"         => 11, # f11/F1
-       "\033\133\062\064\176"         => 12, # f12/F2
-       "\033\133\062\065\176"         => 13, # F3
-       "\033\133\062\066\176"         => 14, # F4
-       "\033\133\062\070\176"         => 15, # F5
-       "\033\133\062\071\176"         => 16, # F6
-       "\033\133\063\061\176"         => 17, # F7
-       "\033\133\063\062\176"         => 18, # F8
-       "\033\133\063\063\176"         => 19, # F9
-       "\033\133\063\064\176"         => 20, # F10
-       "\033\133\062\063\073\062\176" => 21, # F11
-       "\033\133\062\064\073\062\176" => 22, # F12
-       "\033\061"                     =>  1, # alt+1
-       "\033\062"                     =>  2, # alt+2
-       "\033\063"                     =>  3, # alt+3
-       "\033\064"                     =>  4, # alt+4
-       "\033\065"                     =>  5, # alt+5
-       "\033\066"                     =>  6, # alt+6
-       "\033\067"                     =>  7, # alt+7
-       "\033\070"                     =>  8, # alt+8
-       "\033\071"                     =>  9, # alt+9
-       "\033\060"                     => 10, # alt+0
-); # %falias
-
-#our @menus = ([qw(refresh quit)]);
-our @menus = (
-       [qw(refresh prog> mode>1)], # main
-       [qw(main>0 number_format angle_measure coord_system)], #1 mode
-); # @menus
-
-sub addmenu {
-       my $parent = shift;
-       push @menus, ["$parent->[0]>$parent->[1]"];  # create new menu
-       my $menuthis = $#menus;
-       push @{$menus[$parent->[1]]}, shift(@_).">$menuthis";  # link from parent
-       ref $_ ? addmenu([$_->[0], $menuthis], @$_)  # add subsubmenu
-               : push @{$menus[$menuthis]}, $_ for @_;  # add menu items
-       return $menuthis;
-} # addmenu
-
-#my @menu = [];
-our @menu;
-our $menumin = 0;
-
-push @{$hook{init}}, sub {
-       $menus[0][10] = "quit";
-       @menu = @{$menus[0]};
-       $set{height}--;  # make space for menubar
-       $set{menushow} = int($set{width}/(4+$set{width}/20))+1  # menu items to show simultaneously
-               unless defined $set{menushow};
-}; # init
-
-my %show = (
-       curses => q{
-               clrtoeol($set{height}+2, 1);
-               my $nr = -1;
-               for (grep exists $menu[$_], $menumin+1..$menumin+$set{menushow}) {
-                       $nr++;
-                       next unless defined $menu[$_];
-                       my $sub = (my $s = $menu[$_]) =~ s/>\d+$//;
-                       addstr($set{height}+2, $set{width}/$set{menushow}*$nr, $_);
-                       attron(A_REVERSE);
-                       addstr($s);
-                       attroff(A_REVERSE);
-                       addch('>') if $sub;  # indicate submenu
-               } # display menu txts
-       },
-       stdout => q{
-               my $nr = -1;
-               for (grep exists $menu[$_], $menumin+1..$menumin+$set{menushow}) {
-                       $nr++;
-                       next unless defined $menu[$_];
-                       my $sub = (my $s = $menu[$_]) =~ s/>\d+$//;
-                       print " $_:$s";
-                       print ">" if $sub;  # indicate submenu
-               } # display menu txts
-               print "\n> ";
-       },
-);
-
-sub showmenu() {
-       eval $_ if local $_ = $show{$::modules{disp}{name}};
-} # showmenu
-
-$action{more} = [-1, sub {
-       $menumin += $set{menushow};
-       $menumin = 0 if $menumin>=$#menu;
-       showmenu();
-}]; # tab
-
-push @{$hook{refresh}}, sub {
-       showmenu();
-}; # refresh
-
-unshift @{$hook{precmd}}, sub {
-       return unless exists $falias{$_};  # not a function key
-       return if $_ = $menu[$falias{$_}];  # execute found menu item instead
-       error("no such menu entry");
-       return 1;
-}; # precmd
-
-push @{$hook{precmd}}, sub {
-       return unless />(\d+)$/;
-       @menu = @{$menus[$1]};  # go to submenu
-       $menumin = 0;  # reset to first item
-       showmenu();  # redraw
-       return 1;
-}; # precmd
-
-return {
-       author  => "Shiar",
-       title   => "menu",
-       version => "1.11",
-};
-