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