home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / UTILS1 / DMU172.ZIP / DOUGMENU.DOC < prev    next >
Text File  |  1994-02-11  |  35KB  |  794 lines

  1.                     DougMenu Menuing Software
  2.  
  3.                           Version 1.72
  4.  
  5.  
  6.                      Written by Douglas Bell
  7.                         dab6@po.cwru.edu
  8.  
  9.  
  10.  
  11.  
  12.  
  13. Program and Documentation are ■ 1991-1994
  14. See 'Terms of Use' for details.
  15.  
  16.  
  17.  
  18.  
  19. Netware and Novell are registered trademarks of Novell Inc.
  20. MS-DOS is a registered trademark of Microsoft Inc.
  21. PC is a registered trademark of International Business Machines Inc.
  22.  
  23.  
  24.      -------------------------
  25.  
  26. TERMS OF USE for DougMenu v1.72, released on February 11, 1994
  27.  
  28.  
  29. This program is a freeware product and so should be distributed
  30. at no charge, besides that of a reasonable media fee, if
  31. applicable.  
  32. No charge should ever be made for the program itself, or any
  33. program using source code from this program.
  34.  
  35. While users are free to modify DougMenu for their own use,
  36. modified versions of DougMenu are not to be distributed out side
  37. of the business or organization which created or commissioned
  38. them.  The DougMenu package should always be distributed complete
  39. with source and unaltered except when being installed for use at
  40. multiple sites within a business or organization.  Then it is
  41. permitted to install only the files deemed necessary to use the
  42. menu system as long as one complete copy is maintained by the
  43. business or organization.
  44.  
  45. If you have suggestion concerning the further development of
  46. DougMenu, please contact the author concerning any changes you
  47. suggest to the official version.
  48.  
  49. A copy of the most recent version of DougMenu can be mailed to
  50. you for US $10.  Printed Documentation is available for US $25. 
  51. US $5 surcharge for postage outside North America.  One year of
  52. customer support via electronic mail is available for US $35.
  53.  
  54. Send requests, comments, or orders to:
  55. Douglas A. Bell
  56. 1726 Coventry Rd., APT #3
  57. Cleveland Heights, Ohio   44118-1130
  58. USA
  59.  
  60. -or-
  61.  
  62. dab6@po.cwru.edu
  63.  
  64.  
  65. THERE IS NO WARRANTY, EXPRESSED OR IMPLIED, FOR DOUGMENU.  WHILE
  66. THE AUTHOR HAS ATTEMPTED TO PRODUCE AN ERROR FREE PROGRAM, THE
  67. AUTHOR ASSUMES NO RESPONSIBILITY FOR ANY DAMAGE THAT THIS PROGRAM
  68. MIGHT CAUSE.
  69.  
  70. ■ 1991-1994
  71.  
  72.  
  73.  
  74.      -------------------------
  75.  
  76.  
  77. ***** New features in 1.72 *****
  78.  
  79. Multiple server support-
  80.      The commands #if_username and #if_member can now be called
  81.      for a specified server.  e.g.: 
  82.  
  83.           #if_username myserver/me
  84.           #if_member ourserver/somegroup
  85.           #if_username !notmyserver/notme
  86.  
  87.      The server specifier can be left out and the commands will
  88.      work as before.
  89.  
  90. Fixed a mistake in 1.71
  91.      I forgot to include the code to prevent users from using
  92.      ctrl-break or ^C to get out of the menu system.
  93.  
  94. ***** New features in 1.71 *****
  95.  
  96. Large scripts-
  97.      Dougmenu can now read in script files of over 300k in size
  98.      (conventional memory permitting).
  99.  
  100. VLM 1.1 compatibility-
  101.      Dougmenu now works with vlm 1.1.
  102.  
  103. Compatibility paramters-
  104.      DougMenu.exe can now be called with the parameter color or
  105.      mono after the %1 parameter.  These parameters should be
  106.      useful on old AT&T computers where the size of the video
  107.      display was not properly determined by DougMenu's auto-
  108.      detection logic.  The color parameter will force DougMenu to
  109.      use a color text page that is 80x25 in size and starting at
  110.      B800.  The mono parameter will force DougMenu to use a
  111.      monochrome text page that is 80x25 in size which starts at
  112.      B000.
  113.  
  114. Bug Fixes-
  115.      Fixed the bug which wouldn't allow the script to change the
  116.      footer highlight color. 
  117.  
  118. ***** New features planned for DougMenu 2.0 *****
  119.  
  120.      Scrolling windows
  121.      Built-in file browser
  122.      Foreign language support
  123.      Remote and automated configuration tools
  124.  
  125. When will it be available?  I have no idea.  I start to work on
  126. it and then I get frustrated, bored, or some really cool new
  127. video game arrives.  But let me say that I still work on it, but
  128. I no longer pre-announce release dates.
  129.  
  130.  
  131.  
  132.      -------------------------
  133.  
  134.  
  135.  
  136. This document assumes a certain degree of familiarity with MS-DOS
  137. based computing.  It is more intended as a reference for a PC
  138. administrator instead of a neophyte user.
  139.  
  140.  
  141.  
  142.      -------------------------
  143.  
  144.  
  145.  
  146. WHAT IS DOUGMENU?
  147.      DougMenu is intended for use as a stand alone menuing system
  148.      or as a client interface for a PC network using PC
  149.      compatible computers.
  150.  
  151.      DougMenu requires 100k of disk space, 256k free memory, and
  152.      MS-DOS version 3.3 compatibility.
  153.  
  154. FEATURES:
  155.      No memory overhead when launching applications.
  156.      Programmable function keys and hidden 'hot' keys.
  157.      Reads Novell menus scripts with little or no modification.
  158.      Built-in screen saver that won't conflict with TSR programs.
  159.      Can run TSR programs.
  160.      Controlled exiting.
  161.      Security features.
  162.      Full mouse support.
  163.      User input capabilities.
  164.      Support for novell networks.
  165.      Minimal batch file litter.
  166.      Easily customized colors and layouts.
  167.      Small.
  168.      Fast.
  169.      Free!
  170.  
  171. HOW IT WORKS:
  172.      DougMenu requires the use of 3 files:  DOUGMENU.EXE,
  173.      DMENU.BAT and a menu script.  After DougMenu is configured
  174.      for your system and a menu script has been created, type the
  175.      following to start the menu program:
  176.  
  177.      [DRIVE:][PATH] DMENU DRIVE:\[PATH]\MENUSCRIPT[.MNU]
  178.  
  179.      The parameter after DMENU is the path and the name of the
  180.      menu script.  If DougMenu cannot find your menu script, it
  181.      will add ".MNU" to the end of the file name and look for
  182.      that file. Although the .MNU extension is not required, it
  183.      may be helpful for organizing files.
  184.  
  185.      The DMENU.BAT file runs the DougMenu executable.  The
  186.      executable reads in the menu script and uses the script to
  187.      display menus and such.  When an action is selected that
  188.      requires leaving the menu system, the executable makes a
  189.      temporary batch file according to the t environment
  190.      variable.  Once the file is made, DOUGMENU.EXE terminates
  191.      and returns an errorlevel to the DMENU.BAT batch file.  The
  192.      errorlevel determines how to use the temporary batch is
  193.      invoked, or if to exit without using it.  If the temporary
  194.      batch file is going to return to the menu program, the
  195.      temporary batch file is invoked with the "call" command
  196.      which is only found in dos 3.3 and higher to force the
  197.      return.
  198.  
  199.  
  200.      -------------------------
  201.  
  202.  
  203. INSTALLING DOUGMENU:
  204.  
  205.      To install DougMenu, make a directory on a computers fixed
  206.      disk or on a file server and copy the files found in the
  207.      DougMenu distribution zip file into that directory.
  208.      It is permitted to install DougMenu in a minimal operational
  209.      configuration within a business or organization.  See the
  210.      beginning of this document for details.
  211.  
  212. CONFIGURING DOUG MENU:
  213.  
  214.      To configure DougMenu, two lines need to be edited in the file
  215.      named DMENU.BAT.
  216.           Listing of DMENU.BAT:
  217.                @echo off
  218.           *    set t=C:\temp.fil
  219.                :loop
  220.           **   C:\MENU\DOUGMENU.EXE %1
  221.                if errorlevel = 2 %t%
  222.                if errorlevel = 1 goto quit 
  223.                call %t%
  224.                goto loop
  225.                :quit
  226.                set t=
  227.  
  228.      *    -- When DougMenu is run, it will create a small temporary
  229.           batch file called temp.bat.  The t environment variable
  230.           determines the name and path of the temporary batch file.
  231.           The name of the temporary file name should end ".fil" . 
  232.           If you want to put the temporary files on a networked
  233.           drive, read the section concerning network customization
  234.           in the Hints and Tips section.  Also, putting spaces
  235.           between the 't' and the '=' can cause problems with some
  236.           versions of DOS.  So don't use "t = c:\temp.fil", use
  237.           "set t=c:\temp.fil" instead.
  238.  
  239.      **   -- This line should be set to the location of
  240.           DOUGMENU.EXE on your hard drive or networked drive. 
  241.           Optional paramters color or mono can be added after the
  242.           %1 to force a video mode to be selected properly.
  243.  
  244. SUGGESTIONS FOR CUSTOMIZATION OF DMENU.BAT:
  245.      Keep in mind that DMENU.BAT is only a batch file, and can be
  246.      edited into many different working configurations.  Feel free
  247.      to add anything to it which will help your system.  But be
  248.      careful; it is not a good idea to place commands after the
  249.      dougmenu.exe line and before the "if errorlevel" lines because
  250.      this could change the errorlevel settings before the "if
  251.      errorlevel" statements can read it.
  252.  
  253.      If you want to make sure that the user was returned to a
  254.      specific directory after returning from any application, a
  255.      change directory command can be placed after the loop label in
  256.      the DMENU.BAT file.
  257.  
  258.      If you want to broadcast a message when the menu system is
  259.      first started, you can put a dos "type" command followed by a
  260.      "pause" command at the beginning of the DMENU.BAT file to do
  261.      this.
  262.  
  263.  
  264.      -------------------------
  265.  
  266.  
  267. HOW TO WRITE MENU SCRIPTS:
  268.  
  269.      The basic unit of a DougMenu script is the menu structure.  It
  270.      is used to create menu windows when a script is splayed by
  271.      DougMenu.  A menu structure begins with a line whose first
  272.      character is '%'.  Any text after the '%' and before a comma
  273.      or the end of the line is used as the title of the particular
  274.      menu.  The following line would be used to create a menu
  275.      called "My First Menu".
  276.  
  277.      %My First Menu
  278.  
  279.      Non-indented lines which follow the menu title will be
  280.      displayed as visible options in the particular menu.  Indented
  281.      text can be placed after the option names and these lines will
  282.      determine what will happen if the option that they follow is
  283.      chosen.  The lines of indented executable text are normally
  284.      placed into a temporary batch file and then run.  The
  285.      following sample of a menu script illustrates a simple menu
  286.      structure complete will options and actions.
  287.  
  288.      %My First Menu
  289.      My First Option
  290.        echo The first option was chosen
  291.        pause
  292.      Subtitle Option
  293.      Wordperfect
  294.        c:
  295.        cd wp51
  296.        wp.exe
  297.  
  298.      Notice that the second option is not followed by any text. 
  299.      When this is the case, the option will not be selectable and
  300.      the its name will be displayed as a subtitle in the menu
  301.      window when it the menu structure is displayed.
  302.  
  303.      When a script is started, the first menu structure in the
  304.      script will be automatically displayed.  To open more menu
  305.      structures from the first, the executable text of an option
  306.      should contain the name of the menu to be opened after an
  307.      indented '%'.  This is demonstrated below.
  308.  
  309.      %The first menu
  310.      Launch a new menu
  311.        %another menu
  312.      Another Option
  313.        its executable text
  314.  
  315.      %Another Menu
  316.      Its Items
  317.        Executable batch file stuff for them.
  318.  
  319.      This method of opening menu windows can be recursed and/or
  320.      nested up to 10 levels deep.
  321.  
  322.  
  323.      -------------------------
  324.  
  325.  
  326. HINTS AND TIPS:
  327.  
  328. Networking Hazards:
  329.      Temporary Batch files:
  330.           The best thing to do is put the temporary batch files on
  331.           local hard drives or ram drives.  If the temporary files
  332.           are to be placed in a common directory on a networked
  333.           drive, numerous temporary files can coexist if they are
  334.           named according to the connection number, network
  335.           address, or user name.  This can be done by placing the
  336.           distinguishing value into an environment variable, say
  337.           %connection%, when logging into the server and then use
  338.           that variable to define the temporary batch file in
  339.           DMENU.BAT, like this:
  340.  
  341.                set temp=u:\temp\%connection%.fil 
  342.           
  343.      Logging out of a server from inside the menu:
  344.           If the temporary batch files are on a local drive and
  345.           DMENU.BAT is on a networked drive: 
  346.                1)   Use "#logout" followed by "#exit" or
  347.                     "#reboot".
  348.                2)   Use a batch file which logs the user out of
  349.                     the server, but end the option's executable
  350.                     text with "#exit".
  351.                3)   Put DMENU.BAT on some network drive that is
  352.                     visible when not logged into the server, such
  353.                     as the \LOGIN directory.
  354.           If both the temporary batch files and DMENU.BAT are on
  355.           networked drives:
  356.                1)   Use "#logout" followed by "#reboot".
  357.                2)   Put DMENU.BAT and the temporary batch file on
  358.                     some network drive that is visible when not
  359.                     logged into the server, such as the \LOGIN
  360.                     directory.
  361.  
  362. Differences from Novell
  363.  
  364.      Menu x,y positioning parameter order:
  365.           Novell menu orders the menu placement parameters as
  366.           %menu,Y,X and they are offset from the center of the
  367.           menu.  DougMenu uses an X,Y arrangement instead, and
  368.           coordinates determine the offset for the upper left
  369.           corner of the menus.
  370.      String Input
  371.           The Novell menu's system of string input was limited. 
  372.           DougMenu uses the "#ask" command.
  373.      !LOGOUT
  374.           Novell menu uses "!logout" to log a user out of the
  375.           server and exit the program.  It can be replaced with
  376.           "#logout" followed by "#exit" or "#reboot".
  377.  
  378.  
  379.  
  380.  
  381.      -------------------------
  382.  
  383.  
  384. POSITIONING MENUS & CHOOSING MENU COLORS.
  385.  
  386.      %MenuTitle [,<x_position>,<y_position>,<palette_number>]
  387.  
  388.      Parameters can be used after a menu title to change the
  389.      location and the color palette used when displaying a menu
  390.      window.  These parameters are offset from the menu title with
  391.      commas.  To center a menu window with respect to an axis, use
  392.      255 as the placement value.  DougMenu will reposition menu
  393.      windows so that they do not cover the header box and are not
  394.      off the screen.
  395.  
  396.      DougMenu has 10 palettes numbered 0 through 9.  These palettes
  397.      can be redefined with the special external command '#palette'. 
  398.      Palettes 8 and 9 are used for monochrome displays.  If
  399.      DougMenu is run using a monochrome display, it will use these
  400.      two palette and ignore attempt to change the palette.
  401.  
  402. ADVANCED MENU CUSTOMIZATIONS:
  403.  
  404.      The following section lists the names used in the notation of
  405.      the command listing.
  406.  
  407. <string>            a string of characters that can contain
  408.                     environment variables.
  409. <group>             a string that specifically represents a novell
  410.                     user group's name
  411. <username>          a string that specifically represents a novell
  412.                     user's name
  413. <servername/>       a novell fileserver name followed by a /
  414.                     character.
  415. <filename>          a string which is the filename of a dos text
  416.                     file.
  417. <palette_number>    a value between 0-9
  418.  
  419. <foreground_color>  a number from 1 - 15 from the list below.
  420. <background_color>  a number from 0 - 7 from the list below.
  421.  
  422.         0   -   black         8   -   dark grey
  423.         1   -   blue          9   -   lt. blue
  424.         2   -   green         10  -   lt. green
  425.         3   -   cyan          11  -   lt. cyan
  426.         4   -   red           12  -   lt. red
  427.         5   -   magenta       13  -   lt. magenta
  428.         6   -   brown         14  -   yellow
  429.         7   -   lt.grey       15  -   white
  430.  
  431. <key_code>     a number between 0-255 which corresponds to a IBM
  432.                keyboard scan code.
  433.  
  434. <char_code>    a number between 0-255 which corresponds to an IBM
  435.                screen display code.
  436.  
  437. <X_Position>   a number between 0-255 which will determine the
  438.                horizontal position of the upper left corner of a
  439.                DougMenu window.  If it is 255, the window will be
  440.                centered.
  441. <X_Vector>     a number between 0-255 which will determine how far
  442.                a way the next default window will be located from
  443.                the currently opened window.
  444.  
  445.  
  446.      -------------------------
  447.  
  448.  
  449. PARSING COMMANDS:
  450.  
  451.      These commands affect the way that DOUGMENU.EXE reads in the
  452.      menu script when DougMenu is used.  The action of these
  453.      commands depends on their placement within the script.
  454.  
  455. ;comments
  456.           Any text following after a semicolon on one line that is
  457.           not in quotations will be treated as a comment and
  458.           ignored by the parser.  This can cause trouble with the
  459.           dos "path" and "assign" commands.  Use the two following
  460.           commands as a work-around.
  461. #nocomments
  462.           Normally, any characters after a semi-colon in a line
  463.           will be ignored.  Once this command is parsed, semicolons
  464.           will be treated as normal text and not used a comments.
  465. #comments
  466.           This command restores the default behavior of semicolons.
  467. #if <string> [!][=] [<string>]
  468.      three usages:
  469.           #if <string> == <string>
  470.                The parser will continue parsing the menu script if
  471.                the two strings are identical after all environment
  472.                variables are resolved.  Otherwise all text will be
  473.                skipped until the corresponding #endif is found.
  474.           #if <string> != <string>
  475.                As above except the parser will continue parsing
  476.                only if the two string are not equal after the
  477.                environment variables are resolved.
  478.           #if <string>
  479.                Will continue parsing the menu script if the string
  480.                contains any text after all of the environment
  481.                variables are resolved.  Otherwise the parser will
  482.                skip to the corresponding #endif.
  483.      All of these conditions are evaluated as the script is being
  484.      read.  No DougMenu variables created with the #ask command can
  485.      be used.  "#If" statements can be nested up to 255 levels
  486.      deep.
  487. #if_member [!][servername/]<group>
  488.           The parser will continue parsing the menu script if the
  489.           computer is currently logged into a novell server as a
  490.           user who is a member of the specified group.  Otherwise
  491.           all text will be skipped until the corresponding #endif
  492.           is found.  An exclamation point will make the parser
  493.           continue only if the user is not in the group.  A
  494.           combination of a server name and group name can also be
  495.           used in this form: "servername/username".
  496. #if_username [!][servername/]<username>
  497.           The parser will continue parsing the menu script if the
  498.           computer is currently logged into a novell server as the
  499.           user whose name is specified by the username string. 
  500.           Otherwise all text will be skipped until the
  501.           corresponding #endif is found.  An exclamation point will
  502.           cause the parser to continue only if the user is not
  503.           logged in under the specified name.    A combination of
  504.           a server name and group name can also be used in this
  505.           form: "servername/username".
  506. #endif
  507.           This is used to end an #if statement.  If it is
  508.           unnecessary, it will be ignored.
  509. #else
  510.           If the last #if statement failed, this will allow parsing
  511.           to continue from this point on.  If the last #if
  512.           statement passed, then this will make the parser stop
  513.           parsing the script until the next #endif statement is
  514.           found.
  515. #include = <filename>[.mnu]
  516.           Causes the text of the specified file to be parsed at
  517.           this point as if it were part of the primary script. 
  518.           Once the text of the included file is parsed, the parsing
  519.           of the original file will continue.  This command can be
  520.           nested, but do not nest scripts more than five levels
  521.           deep.  If the file name can't be found, Dougmenu will
  522.           look for the file with a ".mnu" extension.  If the file
  523.           still cannot be found an error message will be generated. 
  524.           In order to maintain compatibility with past versions of
  525.           DougMenu, an '=' must be used here.
  526. #include_if_exist = <filename>[.mnu]
  527.           As above accept no error message will be generated if the
  528.           file cannot be found.
  529. #default placement = <X_Position>,<Y_Position>
  530.           This option sets the default placement of the upper left
  531.           corner of all menus parsed after this statement.  A
  532.           position value of 255 will cause windows to be centered
  533.           with respect to the corresponding axis.  Place this at
  534.           the top of a script to affect all menu structures.
  535. #default palette = <palette_number>
  536.           The palette number changes the default palette for any
  537.           menu structures parsed after this point in the script. 
  538.           This statement will be ignored on computers with
  539.           monochrome display adapters.  Place this at the top of a
  540.           script to affect all menu structures.
  541.  
  542.  
  543.      -------------------------
  544.  
  545.  
  546. EXTERNAL COMMANDS:
  547.      There are a variety of external commands which can be used to
  548.      customize the DougMenu environment.  The commands are called
  549.      external commands because they are placed outside of the
  550.      normal menu structures.  It is recommended that all external
  551.      commands be placed at the top of the script to avoid
  552.      confusion, although they can be placed in between menu
  553.      structures.
  554.  
  555. #display[,<x_position>,<y_position>,<palette_number>]
  556.   "Text to be displayed"
  557.   "Text to be displayed"
  558.   "Text to be displayed"
  559.           This will display a text box on top of the backdrop but
  560.           behind the first menu window.  Once displayed, boxes
  561.           created with this command are inert.  The display box
  562.           will size itself according to the longest line of text. 
  563.           Environment variables can be in the text.  DougMenu
  564.           Variables cannot be used in these external structures.
  565. #f<number> = <string>
  566.           Define an action for a function key.  The number is the
  567.           number of the function key ( 1-10 ) and the string
  568.           afterwards will be its title when it is displayed on the
  569.           footer bar.  The footer bar is not displayed if no
  570.           function keys are assigned actions with this command. 
  571.           This command should be followed with lines of indented
  572.           text which will be executed if the function key is
  573.           pressed while the menu screen is displayed.
  574. #key <key_code>,[<key_code>]
  575.           Define an action for a key.  The key codes refer to the
  576.           dos key codes for the key that is to be assigned an
  577.           action.  If the code is 0, it should be followed by
  578.           another number which corresponds to an extended key code. 
  579.           This structure should be followed by indented text which
  580.           will determine the action of this hot key.
  581. #timer [= <minutes>]
  582.           Create an action that will occur should there be no user
  583.           input for a given amount of time while DOUGMENU.EXE is
  584.           running.  The default time is 10 minutes if no time is
  585.           specified in the script.  If this structure is followed
  586.           by lines of indented text, those lines will determine the
  587.           action that will be taken if there is no user input for
  588.           the specified amount of time while the menu is displayed. 
  589.           If this structure is not followed by lines of indented
  590.           text, DougMenu will automatically enter a screen saver
  591.           mode when the timer expires.  The screen will be blanked
  592.           and the time and date will be moved around the screen at
  593.           one minute intervals.
  594. #saver message = <string>
  595.           The string that is specified in this statement will
  596.           replace the time and date for the built in screen saver.
  597. #header message = <string>
  598.           The string in this statement will replace the DougMenu
  599.           version in the header box.
  600. #header palette = <palette_number>
  601.           The palette number changes the selected palette for the
  602.           header box.  The default header palette is 1.  This
  603.           statement will be ignored on computers with monochrome
  604.           display adapters.
  605.  
  606.  
  607. #error palette = <palette_number>
  608.           The palette number changes the default palette for any
  609.           error boxes.  The default error palette is 2.  This
  610.           statement will be ignored on computers with monochrome
  611.           display adapters.
  612. #message palette = <palette_number>
  613.           The palette number changes the default palette for
  614.           message boxes created by the #display command or any
  615.           other non-error related message boxes.  The default
  616.           message palette is 3.  This statement will be ignored on
  617.           computers with monochrome display adapters.
  618. #footer color = <background_color>,<foreground_color>
  619.           These two colors change the foreground and background of
  620.           the footer line at the bottom of the screen.  This footer
  621.           line will only be displayed if function keys are assigned
  622.           with the "#f<number>" commands.
  623. #footer highlight = <background_color>,<foreground_color>
  624.           These two colors define the color of an item on the
  625.           footer bar if it is highlighted due by the mouse cursor. 
  626.           This footer line will only be displayed if function keys
  627.           are assigned with the "#f<number>" commands.
  628. #shadow [= <background_color>,<foreground_color>]
  629.           This command will cause the active window on the screen
  630.           to have a shadow on the right and bottom side.  The
  631.           optional color parameters can be used to change the color
  632.           of the shadow.  The default color for the shadow is grey
  633.           on black.
  634. #backdrop color = <background_color>,<foreground_color>
  635.           This command can be used to change the color of the
  636.           backdrop characters.
  637. #backdrop char = <char_code>
  638.           This command can be used to change the character that is
  639.           displayed in the backdrop.  Try using a value of 1 for an
  640.           interesting effect.
  641. #backdrop file = <filename>
  642.           This command can be used to display an ascii or ansi text
  643.           file as a background.
  644.  
  645. #palette <palette_number> =   
  646.      Menu  Text  Title  Border  Highlighted  Selected  Selected
  647.      BG  , FG  , FG   , FG    , Border FG  , Item BG , Item FG
  648.           This is used to generate custom color palettes.  The
  649.           seven colors are entered as numbers according to the
  650.           color chart.  The values must be placed on the same line
  651.           as the #palette statement.
  652. #cascade [= <X_vector>,<Y_vector>]
  653.           This changes the default placement to 10,5 and causes all
  654.           menus to be 'stair stepped' or cascaded down from that
  655.           location.  The x_vector and y_vector determine how far
  656.           each window will be offset from the previous menu window. 
  657.           The default vector is 4,1.  This command can be followed
  658.           by "#default placement" to change the default position
  659.           from 10,5.
  660. #noexit
  661.           Prevents exiting the menu system via the escape key.
  662. #quickselect
  663.           Causes the items in menu windows to be displayed in an
  664.           enumerated fashion.  The items in windows can then be
  665.           selected and executed by pressing the number which
  666.           corresponds to the item.
  667. #noreturn
  668.           Normally, after an action which requires a batch file is
  669.           executed, the menu script is parsed again and all windows
  670.           that were open when the item was executed are reopened. 
  671.           This command prevents the reopening of windows when the
  672.           computer returns to the menu program and the user is left
  673.           at the root menu.
  674. #notime
  675.           Prevents the time and date from being displayed in the
  676.           header box.  The time and date will still be used in the
  677.           default screen saver message.
  678.  
  679.  
  680.      -------------------------
  681.  
  682.  
  683. SPECIAL EXECUTION COMMANDS:
  684.      The following commands are used only within the executable
  685.      text of an option, and so cannot have the '#' flush against
  686.      the left margin but instead be indented with spaces or tabs.
  687.      The Point of No Return:
  688.           When executing an option from a DougMenu menu script,
  689.           there is a certain point at which the parsing of the
  690.           executable text changes.  At this point, DougMenu decides
  691.           whether or not it is necessary to make a temporary batch
  692.           file.  Once the parser decides to make a temporary batch
  693.           file, all special execution commands will be ignored and
  694.           dumped into the batch file as straight text except for
  695.           the #if commands and the #exit command.  This means that
  696.           you cannot execute a dos command such as "dir", and then
  697.           open a query box.  Once a dos command is seen, this point
  698.           has been reached.
  699.      DougMenu Variables and Environment variables:
  700.           These can only be used in the execution portion of a
  701.           script or in some special external commands.  This means
  702.           that you cannot use an environment variable to name a
  703.           menu, while you can use them for a screen saver message
  704.           or for a #display box.  DougMenu variables can be used
  705.           just like environment variables.  Place the name inside
  706.           '%' characters, and the value of the variable will be
  707.           substituted in place of the name and the encapsulating
  708.           '%'.  Up to 10 DougMenu variables can be assigned in the
  709.           course of one option's executable text.
  710.  
  711. #if <string> [!][=] [<string>]
  712. #if_member [!][servername/]<group>
  713. #if_username [!][servername/]<username>
  714. #endif
  715. #else
  716.           All of these function work when indented in executable
  717.           but instead of controlling the parsing of the menu
  718.           script, they control what statements get executed, or
  719.           once the temporary batch file has begun being written,
  720.           they control what is written to the temporary batch file. 
  721.           Also, these #if statement can use DougMenu variables
  722.           created in the same option's indented executable text.
  723. #display[,<x_position>,<y_position>,<palette_number>]
  724.   "Text to be displayed"
  725.   "Text to be displayed"
  726.   "Text to be displayed"
  727.           This will display a text box when executed.  Execution
  728.           will pause at this point until a key is struck.  If
  729.           escape or the right mouse button is pressed, execution
  730.           will stop at this command and the user will go back to
  731.           the menu window.  If any other key is pressed, the
  732.           execution continues normally.  The window will size
  733.           itself according to the longest line of text.  DougMenu
  734.           Variables and Environment variables can be used in the
  735.           text.
  736. #ask <variable_name>,<string>,[,<x_pos>,<y_pos>,<palette_number>]
  737.   "regular option with string assignment"= stuff
  738.   "regular option with empty assignment"=
  739.   "a non-selectable subtitle"
  740.           Creates a window which resembles a menu window.  The
  741.           string will be the window's title.  The text in quotes
  742.           will be the options.  When the user chooses an option,
  743.           the text after the equal sign for the selected option
  744.           will be assigned to the DougMenu variable which is names
  745.           in the top line.  DougMenu variables and Environment
  746.           variables can be used in the title or options in the
  747.           query window.  Any DougMenu variables that are assigned
  748.           with this statement only hold their values during the
  749.           execution of this statement.  If a DougMenu variable is
  750.           assigned and then following this a new menu window is
  751.           opened, the value will be lost.  Up to 10 DougMenu
  752.           variables can be assigned in the course of one option's
  753.           executable text.
  754. #ask <variable_name>,<string>[,<x_pos>,<y_pos>,<palette_number>]
  755.           Creates a window which prompts the user to input a text
  756.           string.  The string will be the title of the window.  The
  757.           text received in this window will be assigned to the
  758.           variable name.  DougMenu variables and Environment
  759.           variables can be used in the title.  Any DougMenu
  760.           variables that are assigned with this statement only hold
  761.           their values during the execution of this statement.  If
  762.           a DougMenu variable is assigned and then following this
  763.           a new menu window is opened, the value will be lost.  Up
  764.           to 10 DougMenu variables can be assigned in the course of
  765.           one option's executable text.
  766. #floppy <variable_name>
  767.           Searches through all floppy drives to find one with a
  768.           formatted disk in it.  The drive letter with a colon will
  769.           by placed in the DougMenu variable.
  770. #space <drive> <number>
  771.           Checks a specified drive for a specified number of free
  772.           bytes in K.  So a value of 10 would mean to check for 10k
  773.           free.  If there is sufficient free space, the execution
  774.           will continue past this command.  If it is not, the user
  775.           is informed of the lack of drive space and returned to
  776.           the menu.  If there is an error accessing the drive, this
  777.           statement will always fail.
  778. #password <string>
  779.           The user is requested to enter a password.  If the
  780.           password is incorrect, the user is informed and returned
  781.           to the menu.  If it is correct, the execution of the item
  782.           continues.  Do not put in an equal sign.
  783. #exit
  784.           When this command is encountered, either the user is
  785.           returned to DOS, or all batch file commands before this
  786.           point are executed and then the user is returned to DOS.
  787. #logout
  788.           The user is logged out of all novell servers.  This will
  789.           not exit users from the menu.  Execution will continue
  790.           after this command.
  791. #reboot
  792.           This will immediately reboot the computer without
  793.           creating a batch file.
  794.