home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / CMDS / memacs400_cmds.lzh / MEMACS400 / CMD / ehelp.cmd < prev    next >
OS/2 REXX Batch file  |  1996-04-25  |  10KB  |  557 lines

  1. store-procedure    init-help
  2.  
  3.     clear-message-line
  4.     print "                [Loading Help System]"
  5.     set %oldscreen $scrname        ;remember the screen we were on
  6.     set %oldmode $modeflag        ;remember the original $modeflag
  7.     set $discmd FALSE
  8.     find-screen "HELP"        ;switch to the help screen
  9.  
  10.     set %oldres $sres
  11.     !if &or &or &or &seq $sres "EGA" &seq $sres "VGA" &seq $sres "CGA40" &seq $sres "VGA12"
  12.         set $sres "CGA"
  13.     !endif
  14.  
  15.      ;remember the original screen size and placement
  16.     set %oldwidth $curwidth
  17.     set %oldlen $pagelen
  18.     set %oldrow $orgrow
  19.     set %oldcol $orgcol
  20.     set %oldmmove $mmove
  21.  
  22.     ;make this screen the proper size for help
  23.     set $orgrow 0
  24.     set $orgcol 0
  25.     set $curwidth 80
  26.     !if ¬ &equ $pagelen 24
  27.         set $pagelen 25
  28.     !endif
  29.     set $mmove 0
  30.  
  31.     set $modeflag FALSE
  32.     set %done FALSE            ;not done with help
  33.     view-file &find ehelp1.txt    ;read in the help file!
  34.     set %helpfile 1            ;mark which help file we are in
  35.     delete-mode "view"        ;don't lock the help file
  36.     sethscreen
  37.     gethscreen "Main Menu"        ;start at the main menu
  38. !endm
  39.  
  40. store-procedure gethscreen %helpscreen    ;switch the current help screen
  41.  
  42. *gethbegin
  43.  
  44.     ;build the window ID line
  45.     1 next-window
  46.     beginning-of-file
  47.     set-mark
  48.     end-of-file
  49.     kill-region
  50.     !if &gre &len $version 5
  51.         insert-string "MicroEMACS version "
  52.     !else
  53.         insert-string "    MicroEMACS version "
  54.     !endif
  55.     insert-string $version
  56.     insert-string "        Help System    "
  57.     insert-string %helpscreen
  58.     beginning-of-line
  59.     unmark-buffer
  60.  
  61.     ;find and display the named helpscreen
  62.     2 next-window
  63.     beginning-of-file
  64.     set %tmp &cat "~n=>" %helpscreen
  65.     !force search-forward %tmp
  66.     !if &seq $status FALSE
  67.         !if &equ %helpfile 1
  68.             view-file &find ehelp2.txt ;read in the help file!
  69.             set %helpfile 2        ;mark which help file we are in
  70.         !else
  71.             view-file &find ehelp1.txt ;read in the help file!
  72.             set %helpfile 1        ;mark which help file we are in
  73.         !endif
  74.         delete-mode "view"        ;don't lock the help file
  75.             
  76.         beginning-of-file
  77.         !force search-forward %tmp
  78.         !if &seq $status FALSE
  79.             set %helpscreen "Main Menu"
  80.             print "          [Attempt to fetch illegal screen]"
  81.             !goto gethbegin
  82.         !endif
  83.     !endif
  84.     1 next-line
  85.     beginning-of-line
  86.     !if &equ $curchar 61
  87.         1 forward-character
  88.         set-mark
  89.         end-of-line
  90.         copy-region
  91.         set %helpscreen $kill
  92.         !goto gethbegin
  93.     !endif
  94.     1 next-line
  95.     beginning-of-line
  96.     1 redraw-display
  97.     update-screen
  98.     set %topline $curline
  99.     set %bottomline &add $curline 20
  100.  
  101.     firstsel    ;position us at the first selection
  102.  
  103. !endm
  104.  
  105. store-procedure sethscreen    ;set up the windows on the help screen
  106.  
  107.     find-screen "HELP"
  108.     delete-other-windows
  109.     beginning-of-file
  110.     split-current-window
  111.     0 resize-window
  112.     add-mode "red"
  113.     add-mode WHITE
  114.     select-buffer "Window ID"
  115.     next-window
  116.     split-current-window
  117.     19 resize-window
  118.     add-mode "blue"
  119.     add-mode WHITE
  120.     next-window
  121.     add-mode "red"
  122.     add-mode WHITE
  123.     beginning-of-file
  124.     !if &les $pagelen 25
  125.         4 next-line
  126.         1 redraw-display
  127.     !endif
  128. !endm
  129.  
  130. store-procedure firstsel    ;position us at the first selection
  131.  
  132.     9 set-mark        ;remember where we started from
  133.     set %endscreen &add $curline 20
  134.     search-forward "< >"    ;look for a selection
  135.     !if &gre $curline %endscreen
  136.  
  137.         ;no selections on this screen!
  138.         9 goto-mark
  139.         set %selflag FALSE
  140.     !else
  141.         2 backward-character
  142.         set %selflag TRUE
  143.         8 set-mark
  144.     !endif
  145.  
  146. !endm
  147.  
  148. store-procedure setsel        ;highlight the current selection
  149.  
  150.     !if &seq %selflag TRUE
  151.         delete-next-character
  152.         insert-string "*"
  153.         backward-character
  154.         unmark-buffer
  155.     !endif
  156. !endm
  157.  
  158. store-procedure clearsel        ;clear the current selection
  159.  
  160.     !if &seq %selflag TRUE
  161.         delete-next-character
  162.         insert-string " "
  163.         backward-character
  164.         unmark-buffer
  165.     !endif
  166. !endm
  167.  
  168. store-procedure nextcmd
  169.  
  170.     !if &seq $pending FALSE
  171.         update-screen
  172.     !endif
  173.  
  174.     set %cmd >cmd
  175.  
  176.     !if &or ¬ &seq $os "UNIX" ¬ &seq %cmd "^C"
  177.         !force set %cmd &bind %cmd
  178.     !else
  179.         !if ¬ $pending
  180.             write-message "FN-"
  181.         !endif
  182.         set %rcchar >key
  183.         set %rcchar &sindex "1234567890!@#$%^&*()" %rcchar
  184.         clear-message-line
  185.         !if &equ %rcchar 0
  186.             set %cmd "nop"
  187.             !return
  188.         !endif
  189.         set %rctmp "FN"
  190.         !if &gre %rcchar 10
  191.             set %rctmp &cat "S-" %rctmp
  192.         !endif
  193.         set %rcchar &mid "12345678901234567890" %rcchar 1
  194.         set %cmd &bind &cat %rctmp %rcchar
  195.     !endif
  196.  
  197.     clear-message-line
  198.  
  199. !endm
  200.  
  201. store-procedure execloop    ;execute a user screen
  202.  
  203.     setsel        ;mark the current selection
  204.     nextcmd        ;get the command
  205.     clearsel    ;clear the selection
  206.     execcmd        ;execute the command
  207.  
  208. !endm
  209.  
  210. store-procedure execcmd        ;execute the current command
  211.  
  212.     !if &seq %cmd &bind "MSm"
  213.         !return
  214.     !endif
  215.  
  216.     !if &seq %cmd "set"
  217.         !if &seq $debug TRUE
  218.             set $debug FALSE
  219.         !else
  220.             set $debug TRUE
  221.         !endif
  222.         !return
  223.     !endif
  224.  
  225.     !if &seq %selflag TRUE
  226.  
  227.         !if &seq %cmd "forward-character"
  228.             forward-selection
  229.             !return
  230.         !endif
  231.  
  232.         !if &seq %cmd "backward-character"
  233.             backward-selection
  234.             !return
  235.         !endif
  236.  
  237.         !if &seq %cmd "next-line"
  238.             next-selection
  239.             !return
  240.         !endif
  241.  
  242.         !if &seq %cmd "previous-line"
  243.             previous-selection
  244.             !return
  245.         !endif
  246.  
  247.         !if &seq %cmd "newline"
  248.             select-this
  249.             !return
  250.         !endif
  251.  
  252.     !endif
  253.  
  254.     !if &seq %cmd "next-page"
  255.         next-hscreen
  256.         !return
  257.     !endif
  258.  
  259.     !if &seq %cmd "newline"
  260.         next-hscreen
  261.         !return
  262.     !endif
  263.  
  264.     !if &seq %cmd "previous-page"
  265.         previous-hscreen
  266.         !return
  267.     !endif
  268.  
  269.     !if &seq %cmd &bind "FN6"
  270.         gethscreen "Index"
  271.         !return
  272.     !endif
  273.  
  274.     !if &seq %cmd "beginning-of-file"
  275.         gethscreen "Main Menu"
  276.         !return
  277.     !endif
  278.  
  279.     !if &seq %cmd "exit-emacs"
  280.         exit-help
  281.         !return
  282.     !endif
  283.  
  284.     !if &seq %cmd &bind "MSa"
  285.         select-mouse
  286.         !return
  287.     !endif
  288.  
  289.     !if &seq %cmd &bind "MSb"
  290.         !return
  291.     !endif
  292.  
  293.     !if &seq %cmd "abort-command"
  294.         print "[Help Aborted right HERE!]"
  295.         stop
  296.     !endif
  297.  
  298.     print "              [Not a legal command at this time]"
  299.  
  300. !endm
  301.  
  302. store-procedure forward-selection
  303.  
  304.     search-forward "< >"
  305.     !if &gre $curline %bottomline
  306.         set $curline %topline
  307.         search-forward "< >"
  308.     !endif
  309.     2 backward-character
  310.     8 set-mark
  311.  
  312. !endm
  313.  
  314. store-procedure backward-selection
  315.  
  316.     search-reverse "< >"
  317.     !if &less $curline %topline
  318.         set $curline %bottomline
  319.         search-reverse "< >"
  320.     !endif
  321.     1 forward-character
  322.     8 set-mark
  323.  
  324. !endm
  325.  
  326. store-procedure next-selection
  327.  
  328.     set %target $curcol
  329.     forward-selection
  330.     !while ¬ &equ %target $curcol
  331.         forward-selection
  332.     !endwhile
  333.  
  334. !endm
  335.  
  336. store-procedure previous-selection
  337.  
  338.     set %target $curcol
  339.     backward-selection
  340.     !while ¬ &equ %target $curcol
  341.         backward-selection
  342.     !endwhile
  343.  
  344. !endm
  345.  
  346. store-procedure select-this    ;select the currently highlighted selection
  347.  
  348.     next-word        ;jump to the beginning of the selection
  349.     7 set-mark        ;mark it so we can come back!
  350.     set-mark
  351.     set %tmpline $curline    ;remember what line we are on
  352.     search-forward "< >"    ;find the beginning of the next selection
  353.     !if ¬ &equ %tmpline $curline
  354.  
  355.         ;we are on a new line, try for a <tab>!
  356.         7 goto-mark
  357.         search-forward "~t"
  358.         !if ¬ &equ %tmpline $curline
  359.  
  360.             ;we are no longer on the same line, select the whole line
  361.             7 goto-mark
  362.             end-of-line
  363.         !else
  364.             ;backup over the tab
  365.             1 backward-character
  366.         !endif
  367.     !else
  368.  
  369.         ;select up to this selection
  370.         4 backward-character
  371.     !endif
  372.  
  373.     ;get the selection
  374.     copy-region
  375.     set %selection &trim $kill
  376. ;    print &cat &cat "[selecting :" %selection ":]"
  377.     gethscreen %selection
  378. !endm
  379.  
  380. store-procedure select-mouse
  381.  
  382.     9 set-mark
  383.     mouse-move-down
  384.  
  385.     set %cmd ""
  386.     !if &and &gre $ypos 20 &less $ypos 24
  387.  
  388.         ; a mouse click on a key in the key window/find the key
  389.         1 forward-character
  390.         !force search-reverse "["
  391.         !if &seq $status FALSE
  392.             search-forward "["
  393.         !else
  394.             1 forward-character
  395.         !endif
  396.         set-mark
  397.         search-forward "]"
  398.         1 backward-character
  399.         copy-region
  400.         2 next-window
  401.         set %cmd $kill
  402.     !else
  403.         ; a mouse click on a key in the text window?/find the key
  404.         set %tmpline $curline    ;remember what line we are on
  405.         set %tmpsline $cwline    ;and at what screen line
  406.         7 set-mark        ;remember where we started from
  407.         1 forward-character
  408.         !force search-reverse "["    ;find the beginning of the next selection
  409.         !if &and &seq $status TRUE &equ %tmpline $curline
  410.  
  411.             1 forward-character
  412.             set-mark
  413.             search-forward "]"
  414.             1 backward-character
  415.             copy-region
  416.             set %cmd $kill
  417.         !else
  418.             7 goto-mark
  419.             %tmpsline redraw-display
  420.             update-screen
  421.         !endif
  422.     !endif
  423.  
  424.     !if ¬ &seq %cmd ""
  425.  
  426.         !if &and &seq %selflag TRUE &seq %cmd "ENTER"
  427.             select-this
  428.             !return
  429.         !endif
  430.  
  431.         !if &seq %cmd "F10" 
  432.             exit-help
  433.             !return
  434.         !endif
  435.  
  436.         !if &seq %cmd "PG UP"
  437.             previous-hscreen
  438.             !return
  439.         !endif
  440.  
  441.         !if &seq %cmd "PG DOWN"
  442.             next-hscreen
  443.             !return
  444.         !endif
  445.  
  446.         !if &seq %cmd "F6"
  447.             gethscreen "Index"
  448.             !return
  449.         !endif
  450.  
  451.         !if &seq %cmd "HOME"
  452.             gethscreen "Main Menu"
  453.             !return
  454.         !endif
  455.     !endif
  456.  
  457.     !if &or &seq %selflag FALSE &or &gre $ypos 24 &equ $ypos 1
  458.         2 next-window
  459.         print "              [Not a legal command at this time]"
  460.         9 goto-mark
  461.         !return
  462.     !endif
  463.  
  464.     3 forward-character
  465.     backward-selection
  466.     select-this
  467.  
  468. !endm
  469.  
  470. store-procedure next-screen
  471.  
  472.     search-reverse "NEXT["
  473.     set-mark
  474.     search-forward "]"
  475.     backward-character
  476.     copy-region
  477.     gethscreen $kill
  478.  
  479. !endm
  480.  
  481. store-procedure next-hscreen
  482.  
  483.     search-reverse "NEXT["
  484.     5 forward-character
  485.     set-mark
  486.     search-forward "]"
  487.     backward-character
  488.     copy-region
  489.     gethscreen $kill
  490.  
  491. !endm
  492.  
  493. store-procedure previous-hscreen
  494.  
  495.     search-reverse "PREV["
  496.     5 forward-character
  497.     set-mark
  498.     search-forward "]"
  499.     backward-character
  500.     copy-region
  501.     gethscreen $kill
  502.  
  503. !endm
  504.  
  505. store-procedure exit-help
  506.  
  507.      ;restore the original screen size and placement
  508.     set $curwidth %oldwidth
  509.     set $pagelen %oldlen
  510.     set $orgrow %oldrow
  511.     set $orgcol %oldcol
  512.     set $mmove %oldmmove
  513.  
  514.     ;switch us to the screen we started on
  515.     find-screen %oldscreen
  516.     set $modeflag %oldmode
  517.  
  518.     ;and put us back in our original screen mode
  519.     !if ¬ &seq $sres %oldres
  520.         set $sres %oldres
  521.     !endif
  522.  
  523.     ;clear out all the buffers and macroes we used
  524.     delete-buffer "[init-help]"
  525.     delete-buffer "[gethscreen]"
  526.     delete-buffer "[sethscreen]"
  527.     delete-buffer "[firstsel]"
  528.     delete-buffer "[setsel]"
  529.     delete-buffer "[clearsel]"
  530.     delete-buffer "[nextcmd]"
  531.     delete-buffer "[forward-selection]"
  532.     delete-buffer "[backward-selection]"
  533.     delete-buffer "[next-selection]"
  534.     delete-buffer "[previous-selection]"
  535.     delete-buffer "[select-this]"
  536.     delete-buffer "[next-screen]"
  537.     delete-buffer "[next-hscreen]"
  538.     delete-buffer "[previous-hscreen]"
  539.     delete-screen HELP
  540.     !force delete-buffer ehelp1.txt
  541.     !force delete-buffer ehelp2.txt
  542.     set $discmd TRUE
  543.     set %done TRUE
  544. !endm
  545.  
  546. ;    Help main program
  547.  
  548. init-help
  549. !while ¬ %done
  550.     execloop
  551. !endwhile
  552.  
  553. delete-buffer "[select-mouse]"
  554. delete-buffer "[execloop]"
  555. delete-buffer "[execcmd]"
  556. delete-buffer "[exit-help]"
  557.