Category : Dbase (Clipper, FoxBase, etc) Languages Source Code
Archive   : GENMNX.ZIP
Filename : GMNXVER.TXT
Written By Andrew Ross MacNeill
New Features in GENMENUX 2.0
*:CASE
Directive that places all menu definition statements matching logical
condition in a CASE statement at the end of the menu definition.
This is useful for Grouping IF statements, which would make menu processing
run slightly faster.
*:REFPRG
Directive that identifies a file that will be created when the menu is
generated that contains the necessary code to refresh the menu bars and
prompts that use the CASE and ARRAY statement.
This cuts down having to recall the MPR file.
*:MNXDRV0
New driver that appends the driver to the GENMENU file. This allows
a driver to include functions with the same names as normal GENMENU
functions that provide additional functionality.
*:BEFORE
*:AFTER
New directives that allow you to identify where each PAD will be
placed on a menu bar. You can use these clauses with Character
expressions for menu pads or numeric expressions for menu bars.
*:MENUCOLOR
Adds clause to DEFINE MENU statement to control menu color setting
Additional functions from GENSCRNX 2.0 :
WORDSTUFF
INSREC
DUPREC
Enhancements in GENMENUX 2.0
*:COLOR
Now offers color keywords so user doesn't have to remember RGB settings
for popular color settings.
Available color settings are :
Red
Green
White
Grey
Maroon
Aqua
Royal Blue
Burgundy
Light Green
Khaki
Baby Blue
Blue
Black
Violet
Yellow
Dark Grey
Passing one of these clauses as a parameter to *:COLOR will tell GENMENUX
to use the appropriate RGB setting for the menu bar.
*:IF statement now puts brackets around entire statement to work properly with
multiple logical statements such as
*:IF item=.T. AND lang='E'
now becomes
IF (item=.T. AND lang='E')
GENMENUX is now more-environment aware
*:ARRAY now handles multi-dimension arrays more efficiently.
All drivers except for MNXDRV5 may be called more than once in a single menu.
This allows multiple GENMENUX drivers to be called from a single menu.
Updates from GENSCRNX 2.0:
WARNING
ERRORHNDL
ESC_CHECK
WORDSEARCH
Bug Fixes in GENMENUX 2.0
*:IF clause now works properly with a RETURN statement in the Menu Procedure
statement.
Record level MNX Drivers (2 and 4) now stop if they are at the end of the
file when the driver returns control.Previously they continued over
and over again.
GENMENUX 1.1a
Written by Andrew Ross MacNeill
Issued to the PUBLIC DOMAIN
New Features in GENMENUX 1.1a
*:NOACT
Removes the ACTIVATE MENU clause that is automatically generated by
GENMENUX.
Keyword Support for IF statement
Keywords allow GENMENUX to put in the names of the PROMPTS, levels, barnames,
and numbers in the IF clause without the developer having to know what each
value may be. Keywords supported in 1.1a are :
*PROMPT* - Returns Prompt of Menu Object
*ITEMNUM* - Returns Item Number of Menu Object
*LEVEL* - Returns Level Name of Menu Object
*NAME* - Returns Pad Name of Menu Object
Using the IF statement with keywords works like this :
*:IF chk_sec("*PROMPT*","*ITEMNUM*")
Enhanced support for the FOUNDATION directive so that any clauses
you add to it are added to the READ. The FOUNDATION simply issues
a READ statement that you can add WHEN VALID or whatever clauses to.
Enhanced support for the {{}} clauses by performing an EVLTXT
on the CONFIG.FP, Setup Snippet, Procedure Snippet and each
Comment Snippet before reordering.
Bug Fixes in GENMENUX 1.1a
On Line 443, changed code so menu name would be properly displayed.
Updated ERRHNDLR to reflect Ken Levy's changes from GENSCRNX 1.7a
Ensured that directives were CASE-INSENSITIVE
Updated Re-ordering routine to accomodate popups with similar or same names.
Fixed problem with SELECTBAR that was causing invalid syntax in the MPR file.
Enhanced IF processing to speed it up (thanks to MS)
Provided better support for Escape key during menu generation. (it now works!)
New Features in GEMENUX 1.1
*:ARRAY
Adds a loop for a popup that allows the BARS of the popup to be defined
based on the array. If the Array is two dimensions, the ON SELECT BAR
statement calls the command identified in the second column of the array.
*:AUTOACT
AUTOACT will automatically Activate the menu in the Cleanup snippet.
This is useful if you use the MENUNAME directive and do not place
the ACTIVATE MENU clause in your code.
*:AUTOPOS
AUTOPOS will allow the user to click on the Line where the menu is
to start on. This results in a *:LINE directive being added to the
setup snippet.
*:BARHOT
BARHOT will create hot keys for all menu bar items in the same way
AUTOHOT creates hot keys for Menu Pads. This directive can only be
called in the Comment snippet. However, if it is called at the top
pad of a menu, all of the items in the submenu will be updated
accordingly.
*:COLOR
COLOR allows the definition of an entire Color Pair setting to an
individual menu pad or item. This allows individual menu items to use
different color pairs.
*:COLORSET
ColorSET allows you to define a color scheme for an individual menu
pad or item. This allows individual items to use different schemes.
*:DELOBJ
DELOBJ will remove a menu item after GENMENUX has completed directive
processing but BEFORE it reorders the menu.
*:FOUNDATION
FOUNDATION will place a READ VALID
snippet to assist in the creation of a FOUNDATION READ. If you do
not provide a
Prompt is either "EXIT" or "QUIT".
*:HIDE
HIDE will hide the menu bar during the running of the MPR file and
show it at the end. This is useful if you use a lot of *:IF statements
and don't want the user to see a lot of menu activity.
*:INSCX
INSCX will place a DO MENU.MPR in the SCX specified by cWinName. If there
are no clauses, INSCX will place the statement at the bottom of the
Screen Setup Code. If SAVE is specified, INSCX will place a PUSH MENU
and POPMENU in the Setup and Cleanup code. If MODAL is also specified,
INSCX will place the DO command in the When Clause for the screen and the
POP MENU _MSYSMENU clause in the Deactivate snippet.
*:LOCATION
LOCATION will update the location of the menu based on
cExpr can either be "REPLACE","APPEND","BEFORE", or "AFTER" (just
like the Menu options.) If cExpr is BEFORE or AFTER, cExpr2 should
contain either the system menu prompt or pad name that the menu
is before. This is a SETUP directive only.
*:NOXTHERM | _NOXTHERM='ON'
Tells GENMENUX to use FoxPro's standard thermometer instead of the
GENMENUX Extended one.
*:PADNAME
Ensures that the current pad's name is
*:PADPOS | POPPOS
PADPOP and POPPOS will place the PAD or Popup at the Row and Column
specified by nRow and nCol. This is useful for moving your menu
around the screen in different locations for your various popups.
POPPOS must occur within a Submenu.
*:POPME
POPME will make the actual DEFINE POPUP statement conditional on whether
or not it already exists. The DEFINE POPUP statement is rather slow so
this directive will place an IF...ENDIF statement around it so the
definition is conditional, making the MPR run faster.
*:POPNAME
Ensures that the current popup's name is
If POPNAME is called on a System Level Pad, it changes the popup
of the menu below it.
*:POPPRECOMMAND
Allows for a command or function to be called BEFORE a Popup is defined.
This currently only works when using POPFILES or POPFIELD.
This allows you to open up a table to use the POPFIELD directive with
more easily. You are responsible for closing any opened tables.
*:POPTITLE
POPTITLE will define the popup in which the directive is called with
a title of
on any of your popups.
*:SELECTBAR
Currently GENMENU places an ON BAR statement for activating popups.
Using SELECTBAR will change the ON BAR statements to read
ON SELECTION BAR which will change the behaviour of activating menu popups.
This works best when moving the popups in different locations on the
screen.
*:SELECTPAD
Currently GENMENU places an ON PAD statement for activating popups.
Using SELECTPAD will change the ON PAD statements to read
ON SELECTION PAD which will change the behaviour of activating menus.
This works best when moving the menus in different locations on the
screen.
*:SYSPOP
SYSPOP is a directive that wraps the Procedure statement with
PUSH MENU _MSYSMENU / SET SYSMENU OFF
POP MENU _MSYSMENU
It can be defined in either the CONFIG.FP, Setup or Procedure snippets.
*:TRNTXT
Replaces all occurences of
snippet.
*:VERTICAL
VERTICAL will cause the entire menu to be created vertically instead of
horizontally. You specify the starting row with nStartRow and define
how many rows are between menus options using nSkipRow.
*:WINDOW
WINDOW will now automatically create a window named
may specify additional clauses for the DEFINE WINDOW statement in
to Size and Place it during compilation by displaying a Window on
the screen.
*:INSOBJ
*:DEFOBJ
*:INCLIB
*:DEFLIB
*:FOXMNX
Started the creation of Template Menu Programming using the four above
directives. The DEF directives will add the menu object to the FOXMNX
template file with the Library as identified by cLibrary. If cLibrary
is not identified with the DEFOBJ command, it uses the DEFLIB setting.
Fixes in Version 1.1.
*:AUTOHOT Wasn't checking for duplicates when creating hot keys.
General GENMENUX wouldn't work properly if menu was in a directory
that was not above the current directory.
General GENMENUX wasn't creating the temporary menu file properly
when SHARE was loaded.
General GENMENUX now attempts to cleans up remaining temporary files.
General GENMENUX now declares PRIVATE ALL LIKE j*, l* and other
required variables.
*:AUTOHOT Wasn't working properly with drivers that change the names
of the menu prompts.
GENMENUX 1.1 Version History
*{ 10/12/93 Added *:SYSPOP option that wraps Procedure with PUSH/POP SET SYSMENU
*{ SYSPOP is a CONFIG.FP, Setup and Procedure Directive.
*{ 10/12/93 Allowed all MNX Drivers and GENMENUX to be memvars with _ during compilation.
*{ These will not override menu defaults but act as additional
*{ substitutes.
*{ 10/12/93 Created BARHOT directive that creates hot keys for Menu Bar items.
*{ This directive can be called for a single Menu Bar or for every
*{ single item. It will only work if the menu bar is for a
*{ Command/Procedure or Bar #. It will not work for submenus.
*{ However, if you place BARHOT at the top pad of a menu, it will
*{ ensure that BARHOT is active for all bars in that menu.
*{ This allows you to only use BARHOT on certain Menu Popups
*{ 10/12/93 Fixed an option with AUTOHOT that didn't check for duplicates
*{ when creating the menu bar hot keys.
*{ 10/14/93 Started working on Menu Template options using directives
*{ INSBAR and DEFBAR.
*{ 10/15/93 Added HIDE directive that hides the menu bar while it's being
*{ generated. If you use the HIDE directive, GENMENUX automatically
*{ calls the NOAUTO directive to properly hide the menu.
*{ 10/19/93 Added support for InsObj and defObj directive. These directives
*{ provide complete menu copy/paste handling across menu template files.
*{ 10/19/93 Added AUTOWIN directive that will create a window and place the
*{ the menu inside the window and activate the window, etc - all automatically
*{ This is an ER from SB instead of having to call *:WINDOW and define
*{ the Window yourself. AUTOWIN allows you to place and size the Window
*{ during Menu Generation.
*{ 10/19/93 Added AUTOPOS directive that will allow the user to click on the
*{ desired location of the Menu during generation. Perhaps the name
*{ of this directive will change in the near future.
*{ 10/19/93 When using the MENUNAME directive, you need to activate the menu
*{ after DEFINing it since SET SYSMENU AUTOMATIC won't do it. Instead
*{ of automatically doing it, use the directive AUTOACT. This directive
*{ will also automatically ACTIVATE _MSYSMENU if used.
*{ 10/19/93 Added FOUNDATION directive that creates a Foundation read
*{ clause at the bottom of the menu file. This foundation read
*{ will perform a VALID clause based on the directive's clause.
*{ If there is no directive clause, the FOUNDATION READ is performed
*{ on whether the Prompt is "EXIT" or "QUIT"
*{ 10/19/93 Added *:PADPOS and POPPOS directives that places Pads at Row and Column
*{ specified by PadPOS.
*{ 10/19/93 Added *:SELECTPAD directive that forces you to actively press
*{ Enter when highlighting a PAD to see the Popup.
*{ When using the SELECT directives, you should place positions
*{ on the Popups to work properly.
*{ 10/19/93 Added *:VERTICAL directive that makes the menu a vertical menu
*{ instead of the standard horizontal menu
*{ VERTICAL has two parameters the line to begin at and the lines
*{ to skip between the two.
*{ 10/19/93 Added *:SELECTBAR directive that forces you to actively press
*{ Enter when highlighting a BAR to see the Popup.
*{ When using the SELECT directives, you should place positions
*{ on the Popups to work properly.
*{ 10/19/93 Added *:POPTITLE as a popup directive that places a title
*{ on a popup.
*{ 10/20/93 Added directive to make definition of PAD and/or popup optional
*{ by verifying existence of PAD before Defining Popup.
*{ Since the actual DEFINE POPUP takes time, the IF statement
*{ will make the calling of the menu quicker. Currently it's called
*{ *:POPME and can be called in the submenu popup or passed the
*{ parameter of the popup to Quick Pop
*{ This directive is based on a driver by MicroMega
*{ 10/20/93 New Directive that allows you to define the menu as one of the
*{ four options (Append,Replace,Before,After) *:LOCATION
*{ This directive takes one of the above statements as a parameter
*{ In addition BEFORE and AFTER take the name of the menu pad
*{ or menu name to replace as a parameter.
*{ If it knows the PAD NAME based on the parameter, it uses it
*{ otherwise it defaults to the passed parameter
*{ 10/20/93 Directive to identify PADNAME *:PADNAME and POPUP Name *:POPNAME
*{ 10/20/93 Added support for *:TRNTXT directive.
*{ 10/20/93 Fixed problem that occurs under Windows where the project file
*{ contains double backslashes and it shouldn't.
*{ 10/21/93 Added new wordSearch by Ken Levy (JPL) from GENSCRNX 1.7a
*{ 10/22/93 Addition of qualFile from Steve Sawyer to fix bug with relative paths
*{ While Steve's fix didn't completely work, this has been fixed
*{ using stuff found in GENMENU.
*{ 10/22/93 Creation of *:ARRAY directive that will place a Loop for the
*{ the length of the array to create menu items.
*{ 10/23/93 Renamed all TEMPLATE objects into GENSCRNX Style directives.
*{ Removed INSBAR and DEFBAR directives. Doing this changes
*{ the structure of the FOXMNX file slightly.
*{ WHILE GENMENUX will support INSOBJ and DEFOBJ, it doesn't
*{ yet support BASOBJ and its work.
*{ 10/23/93 Added support for DELOBJ which deletes an Object AFTER
*{ menu pre-processing has been done (ie After MNXDRV2)
*{ 10/23/93 Added support for COLOR PAIR with *:COLOR and COLOR SET with *:COLORSET
*{ 10/23/93 Added support for AUTOWIN to allow users to DEFINE WINDOW
*{ with additional clauses by themselves.
*{ 10/23/93 Made POPME accept a clause so the user can define the
*{ IF condition.
*{ 10/24/93 Addition of INSCX directive (from a suggestion by Mike Feltman)
*{ this directive places the DO MPR clause in the SCX file
*{ specified. If specified with a SAVE option, INSCX will add
*{ PUSH MENU _MSYSMENU to the Code.
*{ 10/25/93 AUTOWIN has been removed in favour of adding additional clauses
*{ to the WINDOW directive.
*{ 10/25/93 Setup directives may also be called in the Top level menu Procedure snippet.
*{ 10/26/93 Included evltxt from GENSCRNX 1.7a.
*{ 10/27/93 GENMENUX now calls CLEANUP to ensure files are closed and removed properly.
*{ 10/27/93 Fixed temporary project to correctly reference temporary menu file
*{ 10/28/93 Ensures variables are defined as PRIVATE or #DEFINEd
*{ 10/30/93 The following changes are all due to ERs from Ken Levy (JPL)
*{ All PUBLIC Statements have been removed from GENMENUX.
*{ GENMENUX now uses uniqueFlnm to come up with Unique File Names
*{ A Mismatched IF...ENDIF was cleaned up. Wasn't causing problems.
*{ A new directive *:NOTHERM causes GENMENUX to use FoxPro's
*{ normal looking Thermometer instead of the advanced thermometer.
*{ GENMENUX no longer includes my name as part of the comment.
*{ 10/30/93 Cleaned up Thermometer for messages.
*{ 11/01/93 Fixed problem with AUTOHOT that was sometimes making a non
*{ alpha character the hot key.
*{ 11/01/93 Implementation of the POPPRECOMMAND which allows you to
*{ run a command before a popup is defined.
*{ 11/01/93 Cleaned up the calling of the POP Commands to work if called
*{ from within a top level menu.
*{***************************
*{ RELEASE OF VERSION 1.1
*{***************************
*{ 11/12/93 On Line 443, changed code so jcOutFile wouldn't get changed.
*{ 11/12/93 Updated ERRHNDLR to reflect Ken Levy's changes.
*{ 11/16/93 Ensured that directives were CASE-INSENSITIVE
*{ 11/16/93 Added NOACT directive that removes the ACTIVATE MENU option
*{ automatically performed by GENMENUX.
*{ 11/19/93 Updated Re-ordering routine to accomodate popups with similar
*{ or same names.
*{ 11/19/93 Fixed problem with SELECTBAR that was causing invalid syntax
*{ in the MPR file.
*{ 11/19/93 Enhanced IF processing to speed it up (thanks to MS)
*{ 11/20/93 Added the support of Keywords to be used in the *:IF statement
*{ at present (to be expanded later) that allows GENMENUX to put
*{ in the names of the PROMPTS, levels, barnames, and numbers
*{ when highlighted with * as in *PROMPT*
*{ 11/20/93 Enhanced support for the FOUNDATION directive so that any clauses
*{ you add to it are added to the READ.
*{ 11/20/93 Enhanced support for the {{}} clauses by performing an EVLTXT
*{ on the CONFIG.FP, Setup Snippet, Procedure Snippet and each
*{ Comment Snippet before reordering.
*{ 11/20/93 Provided better support for Escape during menu generation.
*{***************************
*{ RELEASE OF VERSION 1.1a
*{***************************
*{ 11/27/93 Put in code that verified type of driver being run ie if MNXDRV2 acted
*{ like a Full MNX driver, then it wouldn't be rerun over and over.
*{ Also message was placed on thermometer for MNXDRV2.
*{ 11/27/93 Verified UPDTHERM procedures so thermometer messages were properly wiped out
*{ under Windows. Previously, they weren't being completely cleared.
*{ 12/6/93 Addition of MNXDRV0 which copies genmenu to a temporary file and
*{ appends functions into it.
*{ 1/5/94 Updates from GENSCRNX to make GENMENUX more environment aware
*{ ER From KL
*{ 1/6/94 Updates from GENSCRNX for better warnings, etc
*{ ER from SMB
*{ 1/28/94 Fixed Problem with Environment Reset (wasn't resetting environment)
*{ 1/28/94 Inserted insRec, and dupRec records from GENSCRNX 1.8 b2
*{ This is cautious because the USER is responsible for making any changes
*{ to the Menu Number, etc.
*{ INSREC is not included because the nature of GENMENU is slightly
*{ different than the nature of GENSCRN.
*{ 1/28/94 Added support for MENUCOLOR directive that adds the COLOR line to the DEFINE
*{ Menu command. This is also supported by the MENUSCHEME directive which provides
*{ SCHEME Support. These items will only work if you have changed the name of the
*{ Menu name. This has not yet been implemented.
*{ 3/19/94 Changed *:ARRAY to not force you to implement the ON SELECTION BAR statement.
*{ Previously, you had to place the action in the array itself.
*{ 03/23/94 Added ccNoPad to comment out the DEFINE PAD statement that overlaps badly when
*{ using the *:IF statement with menu pads.
*{ 04/02/94 Various fixed from ERs and bug reports from Colin Keeler concerning
*{ various syntax errors (whoops!
*{ 04/02/94 Fix for *:IF that was only putting the *:IF clause at the very end of the Procedure even if
*{ a return clause was there. Thanks for Eldor for pointing this one out!
*{ 04/02/94 Another fix for *:IF that puts parentheses around the whole *:IF statement to ensure that
*{ the entire clause is used with the IF NOT statement. Thanks for Randy P. for pointing this out!
*{ 04/02/94 Fix by Paul Bienick regarding use of quotations with the POPCOMMAND statement (thanks Paul)
*{ 04/02/94 Laid in basics for a new directive *:CASE that will create a CASE statement for all of the DEFINE
*{ statements for each specific item. If a CASE statement is used, it will create a specific menu
*{ file
*{ 04/02/94 The CASE directive will place all of the items without a CASE statement
*{ at the bottom of the CASE statement so they are used regardless of the logical statement.
*{ 04/04/94 Updated any messages to being calls to the GENSCRNX Warning function
*{ ER from SMB.
*{ 04/06/94 Fixed CASE statement to work properly with Popups and ON PAD statements.
*{ Moved final CASE statement to after the regular menu setups.
*{ 04/06/94 Added *:BEFORE and *:AFTER pads for popups and bars
*{ This directive may be passed with either a numeric or character
*{ (for Bars and Pads respectively) to reorder the appropriate placement
*{ of the menu pads. This is especially useful when using the
*{ CASE statement for individual items
*{ 04/06/94 Added clauses to *:COLOR directives that allow users to identify
*{ the special color settings for Windows.
*{ The clauses are RED, AQUA, GREY, MAROON, GREEN, ROYAL BLUE,
*{ BURGUNDY, LIGHT GREEN, BABY BLUE, BLUE, VIOLET, YELLOW,
*{ DARK GREY
*{ 04/08/94 Added WORDSTUFF, ERROR_HND and ESC_CHECK FROM GENSCRNX 2.0
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/