VO  Productivity Pack 3

Version 3.0, by Paul Piko.
Released October 2000
Copyright 1998-2000  Piko Computing Consultants

This product includes software developed by the University of California, Berkeley and its contributors.

Email contacts:
Technical: support@piko.com.au
Sales: sales@piko.com.au

What's New in VOPP 3.0?

This file contains a brief summary of the new features in VOPP3. Please refer to the help file for additional information.

Changes to existing utilities

Application as PRG/MEF
Dialog now has option to include/exclude the application name as part of the filename

Editor Indent
Existing contents of clipboard are now retained after indenting
#IF/#ELSE/#ENDIF are now indented
Hotkey Ctrl-Alt-I to perform indent

Editor Print
Existing contents of clipboard are now retained after printing
Hotkey Ctrl-Alt-P to perform print

VO Export Explorer
Status bar appearance changed
Go to entity on right mouse click
Regular expression searches
Compare export files from command line, log results to file (see compaef.bat, compall.bat)
View of window binary shows a "test mode" version of how the window will appear at runtime
Setting the source view to use VO's font will also make the explorer font match VO's.
New file open dialogs supported on Win2000
Hotkey Ctrl-Alt-E to start VOEE from inside VO
Entity separator lines displayed when viewing source code

Global Search & Replace
New Report option will display a window containing the results of the search. The contents of this window can be printed or copied & pasted. It remains open when the Global Search & Replace dialog is closed, allowing you to refer to it when you return to the repository explorer.
Regular expression search and replaces
Custom exclusion list now supports wildcard (*,?) names (* must be at end)

System Builder
Hotkey Ctrl-Alt-B to call up System Builder while in VO
Can use wildcards (*,?) when specifying applications in a system (* must be at end)
Can choose whether or not existing EXEs/DLLs are overwritten when generating binaries
Can run a process for each EXE/DLL (e.g. compress binary) - configurable through template file
If your app/dll has a define called VER_VOPP_FILEBUILD System Builder will increment it on each compile. It should be defined as a digit within quotes, e.g. DEFINE VER_VOPP_FILEBUILD := "1024". You can then use this to help determine versions.
The "Touch before build" setting can be cleared automatically after each build. This is set in VOPP Plus!
Whenever a DLL is generated a PRG containing prototype information will also be created. See Export File to PRG below.

Waits for keyboard idle before exporting
Can be interrupted by pressing Escape
Optional countdown window allowing skipping/postponement of upcoming export
Optional tray icon notification of next export
Optional deletion of old exports after configurable number of days
Optional sound notification of upcoming export
Can run a process for each exported file (e.g. compress) - configurable through template file
Optional second export directory
Can specify if exports should occur during debugging
Can specify if exports should occur while running application from the IDE
Can exclude applications from autoexport - wildcards (*,?) supported (* must be at end)
Can exclude projects from autoexport - wildcards (*,?) supported (* must be at end)
Hotkey Ctrl-Alt-A to call up AutoExport Configuration while in VO

Project Copy
Ctrl-Alt-R to invoke Project Copy from VO

Import Assistant
Ctrl-Alt-M to invoke Import Assistant from VO


New Utilities

Application Usage
Report showing all the apps/libraries/DLLs that contain a reference to the current application in their properties

VOPP Tray Icon
Shows autoexport status
Menu to many VOPP options

Token Select
Position the cursor to the left of an opening token and press F6. Text will be selected up to the matching token.
(Opening token: single/double quote, left parentheses, left brace {, left square bracket [ )

VOPP Calculator
Extensible programmer's calculator for VO programmers
Ctrl-Alt-C to invoke calculator from VO

AutoType for the VO Source Editor
Automatic expansion of text in the VO source code editor.
User configurable through the VOPP AutoConstruct.txt file - changed to VOPP AutoType.txt, and moved to \CAVO25\VOPP3
Ctrl-Alt-T to toggle
Trigger key, definition and header file locations, speed of insert configurable through VOPP Plus!  

VOPP Plus!
Change CA-VO settings
Change VOPP AutoType settings
Change setting for display of VOEE splash screen, background on calculator, indent by spaces
Font for calculator Chr() results can be configured
Setting to clear System Builder's "Touch before build" after each build
Set language assistant prefix
Set DBF Utility creation template

Language Assistant
A utility to help create multilingual applications.
 Before using the Language Assistant you need to ensure that a few prerequisites are met:
1. You need to create a string table that will contain your default language strings. The string table must be called VOPP_Language, and you should put it into a DLL.You string table should look like this:
2. For each additional language you want to support (up to 3 in addition to the default) you need to set up a DLL, each containing a string table resource called VOPP_Language, as above.
3. Each string will be given a constant string identifier, e.g. MSG_TITLE. These constants will be shared between the language DLLs and your application. You need to create a library to hold these constants. The library should contain a define called VOPP_LANGUAGE_LASTID, in any module. As contants are allocated they will be placed into the same module as VOPP_LANGUAGE_LASTID. The value of the define specifies the highest constant value allocated so far. If you want the constants to begin at 5001 your define should look like this:
4. Put the string id library into the properties of your language DLLs and your application.

Once these prerequisites are satisfied you can call up Language Assistant from your application. If you highlight a string and press Ctrl-Alt-G the Language Assistant dialog will appear. The fields should be filled as follows:
- Default Language, String: This is your text expressed in the default language. Your highlighted string is put here.
- Default Language, DLL with string table: The name of the DLL containing your default language string table.
- Additional Settings, String Identifier: This is the name of the constant that will be used to refer to your text. By default it is made up of a prefix (set in VOPP Plus) concatenated with your default string.
- Additional Settings, String Id Library in repo: This should be the name of the library you created in step 3 above.
- Additional Settings, LoadResString Module: The function LoadResString has a parameter that specifies what module will be queried for the translation string. The module may be given as a file name string (e.g. "MYLANG.DLL", including the quotes), or as a variable name that contains a handle.
There are three further sections on the dialog where you can enter the appropriate translation of your text, along with the name of the DLL that it should be placed in.

Single App Build
This will compile and generate the current application. If you are using the VER_VOPP_FILEBUILD define ti will be incremented.
A template can be executed after the generation.
This is configured in VOPP Plus!
Ctrl-Alt-S shortcut

Application Statistics
Count of entities, lines of code, lines of comments in an application or a whole project. Select "Application Statistics" from Tools menu to run.

DBF Utility
Choose a DBF and paste the following to clipboard/source editor:
- structure as comment block
- array of fields similar to that returned by DBStruct
- code to create DBF/production index
Ctrl-Alt-D hotkey (this can be reconfigured to run any program you want, e.g. DBA, dbAssist, etc)
The code generated for DBF creation can be customised using a template. The following replacement markers are available (see VOPP3\Template\CreateDBF.TPL for an example):
- %Fields% will be replaced by FIELD statements for each field in the DBF
- %Structure% will be replaced by an array representing the DBF, formatted as DBStruct()
- %BaseName% will be replaced by the DBF name, without path or file extenstion
- %Driver% will be replaced by the value of the Driver control on the dialog
- %EraseProductionIndex% will be replaced by code to delete a production index for the DBF
- %CreateOrder% will be replaced by DBCreateOrder() calls for each order

Export File to PRG
Converts the source code contents of an export file into a single PRG file. This can be useful in the following scenario: When you use VO to create a DLL a library AEF of prototypes/defines/classes contained in the DLL is also created. When you want to use the DLL in your code you need to import this library AEF and include it in the properties of your application. Each time you change and rebuild the DLL code you should ensure that the library is kept in sync - you need to import the newly created library or manually update it with the changes. 

Export File to PRG helps minimise the effort in performing this update. When you create your DLL run Export File to PRG, giving the VO generated library AEF as a parameter - a PRG is generated. Then, in VO, create a library with a module that is associated with the PRG. Use this library, rather than the VO generated one in your applications. Each time you create your DLL, just rerun Export to PRG. This way you don't have to re-import or perform any manual code updates to the library. Compile the library and it is ready for use in your applications.

Export File to PRG is automatically executed by whenever VOPP's System Builder creates a DLL.

Note: modules beginning with _! are not written to the PRG