* Lines starting with an asterisk are comments.
* Lines starting with a colon are menu labels.
* Only the first word of a label line is used, the rest is a comment.
*
* The current menu program understands 4 types of menu. These are 0,1,2,9
* Other types will be added in later versions of the menu program.
*
* Type 0 menus, full screen vt100 style. Also used for Ansi at present.
* Numbers between curly braces are replaced by character codes.
* The curly braces are not displayed in type 0 menus. {12} means clear-screen.
* '' denotes a menu option where you need to check the user's power list to
* see if they are allowed access to the option. This means '' is not a valid
* menu keypress character and should be avoided for type 0 menus.
* example: AE means "only send 'E' if users powers include 'A', otherwise send
* a space". [AE] Exit  appears as [E] Exit if user has power A, and [ ] Exit
* if not.
*
* Type 1 menus, short description of each option.
* The menu program builds a string from the valid options, separated by commas.
* example: AM[M]ain  means "add [M]ain to the list if user has power 'A'"
* otherwise add nothing to the list.
*
* Type 2 menus, list of valid keys separated by spaces.
* The list is built from the valid options found in the 'type 1' description
* so there is no 'type 2' label needed unless you dont want a 'type 1' menu
* description.
*
* Type 9 menus, no prompts, just the menu name. Reads valid options from the
* 'type 1' list, so there is no 'type 9' label needed unless you dont want to
* use 'type 1' menus.
*
* Other menu types are currently undefined and ignored. Plans are to add ANSI
* menus later, possibly other types too.
*
* Each menu layout also has a list of programs and command lines, 1 for each
* possible menu keypress. The programs are exec'd with 2 channels (in/out)
* and the supplied commandline (if any) prefixed by the bbs line number.
* The filenames are looked-up in system_dat, so should be shorthand names,
* not full device-directory pathnames. eg "f menu_prg file" means that if the
* user selects 'f' (assuming they have the relevant power enabled), the name
* of the program 'menu_prg' is looked up in system_dat, and a command like
* exec_w win1_pbox_menu_obj,#in,#out;"1 file"
* is run.
* A key of NAME would change the menu prompt to 'NAME'
* A key of NAME farea or NAME marea adds the current area name to the prompt,
* eg Mail marea  might prompt as "Mail : IntQL >"
* marea and farea are line variables. You can use any line variable you like
* here, but the others probably arent very useful.
*
* Dont put comment lines starting with '*' in a menu-option list, or you wont
* be able to use '*' as a menu keypress.
*
* ':' is a reserved menu keypress, and logs off quickly without any prompts
* You cant use ':' in your own menus as a keypress, as it is used to identify
* start/end labels for menu descriptions.
*
* Here is a full example menu. Note the spacing in the box-drawing to allow for
* text substitution around '' options. Note also that there cannot be any
* comments between the start of menu label (:main0) and the next line starting
* with ':' which denotes end of menu description.
*
:0  vt100 style main menu
 {12}
                                              |\   /|   /\     |  |\   |
 /------------------------------\             | \ / |  /  \    |  | \  |
 |      Permanent Commands      |             |  V  | |----|   |  |  \ |
 |   (available on most menus)  |             |     | |    |   |  |   \|
 |------------------------------|
 |  [AG]  Logoff                 |          /------------------------------\
 |  [A=]  Jump to main menu      |          |        Info Commands         |
 |  [A-]  Back to previous menu  |          |------------------------------|
 |  [A?]  Help on menu choices   |          |  [CE]  Editorial              |
 \------------------------------/          |  [CB]  Bulletin               |
                                           |  [CI]  Jump to info items     |
      /------------------------------\     |  [CS]  Show your statistics   |
      |        Main Commands         |     |  [DC]  Change your settings   |
      |------------------------------|     |  [ZU]  Show user list         |
      |  [ZQ]  Answer questionnaire   |     |  [CV]  Show software version  |
      |  [AY]  Yell for sysop         |     \------------------------------/
      |  [BM]  Jump to mail areas     |   This is Nene Valley BBS, 2:2503/402,
      |  [EF]  Jump to file areas     |   dedicated to supporting Qdos and SMS
      \------------------------------/   machines. There are no PC files here
:
* The colon on the line above signals end of menu. You only need this if you
* want to add comments between menu styles. The next menu label(:1) would
* signal "end of menu0" just as well. Note the first line of the menu above has
* {12} which is a vt100 clear-screen command. menu 1 below doesnt clear screen.
*
:1  Also used for types 2 and 9
AG[G]oodbye
* Note: '=' and '-' are valid keypresses, but we dont want a description
* Note: comments are safe here as '*' is not used as a power option (A-Z only)
A=
A-
CE[E]ditorial
CB[B]ulletin
CI[I]nfo items
CS[S]tatistics
DC[C]hange user settings
CU[U]ser list
CV[V]ersion of Pbox
BQ[Q]uestionnaire
AY[Y]ell for sysop
BM[M]ail areas
EF[F]ile areas
B?or ? for help
: end of main1 - now the main menu keys and actions
* Note: for safety you should use comments within a 'keys' description as
* this will stop you using '*' as a menu keypress.
* If you dont have the line "Main" the prompt will be taken from the filename.
:keys   Program list terminated by next line starting with ':'
Main
= menu_prg main
- menu_prg prev
G logoff_prg G
E info_prg editorial
B bulletin_prg
I menu_prg info
S stat_prg
C settings_prg
U userlist_prg
V info_prg software
Q question_prg
Y yell_prg
M menu_prg mail
F menu_prg file
? info_prg mainmenu
: end of main menu options - this line ends the description.
