Dec 222017
Makes creating menu structures in Turbo Vision (TP6) a lot easier.
File TVMENU.ZIP from The Programmer’s Corner in
Category Pascal Source Code
Makes creating menu structures in Turbo Vision (TP6) a lot easier.
File Name File Size Zip Size Zip Type
MENUGEN.DOC 5718 2176 deflated
MENUGEN.EXE 11264 5118 deflated
TESTMENU.MDF 380 234 deflated
TESTMENU.PAS 1294 411 deflated

Download File TVMENU.ZIP Here

Contents of the MENUGEN.DOC file

MenuGen Version 1.0

Menu and Status Line Generator for

Borland's Turbo Pascal 6.0(R) with


(C) Copyright 1990 by Vernon J. Adams
All Rights Reserved

Further copyright information given below


The enclosed program is a simple compiler designed to ease the
coding of menu entries and status line entries. I found that when
I looked at the TurboVision Manual the routines to build a menu and
a status line were daunting at best (All those nested
parentheses!!). So, rather than count nesting levels, I wrote a
simple compiler to take a keyword driven specification of the menu
and status entries and then generate the Pascal code to build the
menus. That's what the enclosed program does. It accepts a
specification language and creates Pascal code.

The language to specify the menu and status lines is simple. It
consists of keywords followed by the arguments to the procedures
calls you would make in Pascal.


Borland's Turbo Pascal(R) version 6.0
Some familiarity with the Turbo Vision package

The following files are supplied:

MENUGEN.EXE The Menu-Status Line Generator program
TESTMENU.MDF The Sample Menu-Status Line Specification
TESTMENU.PAS The output of a generation of the sample


MENUGEN input-file output-file

input-file is the Menu-Status Line Specification
output-file is the pascal generated from the

A sample specification follows:

ITEM ~O~pen F3 kbF3 cmFileOpen
ITEM ~N~ew F4 kbF4 cmNewWin
ITEM E~x~it Alt-X kbAltX cmQuit
SUBMENU ~W~indow
ITEM ~N~ext F6 kbF6 cmNext
ITEM ~Z~oom F5 kbF5 cmZoom
ITEM ~D~ialog F2 kbF2 cmNewDialog
KEY "~Alt-X~ Exit" kbAltX cmQuit
KEY "~F4~ New" kbF4 cmNewWin
KEY "~Alt-F3~ Close" kbAlt3 cmClose

Let's look at the sample to get a feel for the specification
language. First, all whitespace is equal; the indentations are for
reading clarity only. Second, all the keywords are capitalized for
the same reason, kewords do not need to be capitalized. An
argument only needs to be quoted if it contains whitespace. The
names after the MENU and STATUS keywords are optional since the
Application object contains variables to hold these items. The
name after the APPLICATION keyword is the name of the Application
object type.

This example along with the discussions in the TurboVision(R)
Manual should give you a good idea of how the program works. It
just a straight forward generation of the code to relieve the
program from the tedium of counting parentheses.

Now for a formal definition of the specification language.

MenuStatusSpec := ApplicationHeader MenuSpec StatusSpec
ApplicationHeader := APPLICATION [ApplicationName]
MenuSpec := MenuHeader SubMenuSpec*
MenuHeader := MENU [MenuName]
SubMenuSpec := SubMenuHeader ItemSeparatorSpec*
SubMenuHeader := SUBMENU SubMenuText
ItemSepartorSpec := ItemSpec | SeparatorSpec
SeparatorSpec := SEPARATOR
ItemSpec := ITEM ItemLabel HotKeyLabel HotKey Command

StatusSpec := StatusHeader KeySpec
StatusHeader := STATUS [StatusBarName]
KeySpec := KEY KeyLabel HotKey Command

Keywords can be upper or lower case. Specifications can be split
across lines.

Please note: This generator is not particularly robust in handling
errors. It was designed as a quick convenience for bypassing
tedious coding. If a specification does not compile or the
generator objects, compare that specification with the example and
grammar above and compare it with the examples in the
TurboVision(R) Manual.

Combined with L. David Baldwin's DLGDSN(C), this program should make
creating TurboVision(R) programs much simpler.


Documentation and Program (C) Copyright 1990 by Vernon J. Adams.
All Rights Reserved.

Other brand and product names are trademarks or registered
trademarks of their respective holders.

MENUGEN may be copied and distributed freely by individuals to
friends and acquaintances providing that no fee is charged with
the exception of a reasonable handling and distribution fee and it
is not part of a package for which a charge is made. The output
from MENUGEN may be used freely for any legal purpose.

Also please report any problems, suggestions, etc.

You may contact me by Compuserve or at the addresses below.

Vernon J. Adams
CompuServe ID #71201,63.

5927 Western Hills Dr.
Norcross, GA 30071

 December 22, 2017  Add comments

Leave a Reply