## Full Description of File

GTOOLBOX (Version 1.0b) by Guy Gallo.
Gadfly Toolbox is a collection of macros and
tools for use with Word for Windows 2.0.
The macros include a group of useful toggle
macros, some window arrangement macros, and
an envelope printing macro.

File GTOOL10B.ZIP from The Programmer’s Corner in
Category DeskTop Publishing
Macros/Tools for Word for Windows.
File Name File Size Zip Size Zip Type
FILE_ID.DIZ 246 178 deflated
GTOOLBOX.DOC 315335 95090 deflated
GTOOLS.HLP 165593 54327 deflated

## Contents of the GTOOLBOX.DOC file

[email protected]$LX50\9!=>{{{{4S9DClick mouse here to macrobutton InstallMacro Install selected macros Click mouse here to macrobutton PrintRegistration Print Registration Click mouse here to macrobutton LoadgHelp Load Help file Word for Windows Macros Gadfly ToolBox By Guy Gallo February 25, 1993 version 1.0b Contents Introduction5 What is it?5 Encryption and Copyright5 Pricing6 ShareWare6 Gadfly Toolbox Reference7 ChangeQuoteDash7 ChangeQuoteDash: dialog box:9 ChangeTool9 ChangeTool: dialog box:9 ChooseDirectory10 How it works13 Installation Tips13 Converting from Earlier versions of ChooseDirectory.13 Advanced14 Warning:14 ControlRun15 ControlRun: dialog box:15 CopyMacroActive15 CopyMacroActive: dialog box15 CreateOutlineDoc16 CreateOutlineDoc: dialog box16 DeleteIdleStyles17 EncryptMacros18 EncryptTemplate18 FiddleNotes18 FileTemplate18 MacroKey20 Limitations:21 MakeBook22 MakeWordBook23 ManageKeys23 ManageMacros24 OpenMRUList25 PrintRange25 ReInsertFootnotes26 SyncStyles27 SyncStyles: dialog box:27 ToggleHidden27 ToggleOutline28 TogglePictures28 ToggleRevision28 ToggleStyleBar28 ToggleViewTools28 Setting tolerance for toggle28 Setting default minimum for on:29 ToggleWindow29 WindowStack29 WinSideBySide29 gLib30 Overview30 Main dialog box30 gLib Reference31 ActivatePartial(Doc$)31
CheckLib31
Chew$(Source$,Marker$)31 CountChar(Source$, Char$)32 fExist(FullPathName$)32
fFileCount(FileSpec$)32 fFileName$(b$)32 fFileNameExt$(b$)32 fStr$(Num)32
GetDocDir$32 GetFile(FullName$,Dir$,Default$)32
GetPath$(Source$)32
GetTemplate$33 gLibInstalled(Macro$)33
gMsg(Msg$,Title$)33
gQuery(Msg$,Title$)33
HasKey(Macro$,Context)33 Inject$(Source$, New$, Place)33
IsMacroPane([MacroName$])33 KeyDescription$(KeyCode)33
lHelp(HelpFileName$)33 lcHelp(ContextNumber,HelpFileName$)34
ListMacros$(Context,All)34 LoopMsg(Message$)34
MacroExist(Macro$)34 NoSlash(Source$)35
Replace$(Source$, Old$, New$)35
Reverse$(Source$, Marker$)35 SameFormat35 SelectSameFormatRight35 Split(Source$, Marker$, First$, Second$)36 Trim$(Source$, ZapChar$)36
Wait(Seconds)36
Glossary of Terms37
Index39
Introduction
What is it?
This collection of macros began humbly enough during the initial release of Word for Windows as a group of useful toggle macros, a couple of window arrangement macros, and an envelope printing macro.
Many, if not most, of those macros came about either because I wanted them for my own use, or because someone on the Word for Windows forum of CompuServe suggested thus and such could not be done (and I took the bait). Many came about as a direct result of conversations with James Gleick, Barry Simon, and Robert Enns (the original other WinWord Gadfly Team members). Id like, again, to thank them and all the other members of that remarkable forum, for their help and suggestions.
As the macros accumulated, and they became more and more complicatedboth in terms of their functionality, and in terms of their error handlingthese macros graduated from hobby to product. With the gathering of the orginal GJGMAx.ZIP files into GTOOLS.ZIP (and the addition of several new macros), they became the first ShareWare incarnation of my work.
Some new macros were kept separate, either because of functional specificity (like the printer related macros or the Current DDE macro GetAddress) or because they were so much larger and more standa-alone-ish than the others (like ChooseDirectory or MacroKey). This resulted in a bit of confusion.
With this release of what was GTOOLS, with a new nameGTOOLBOXI am gathering the vast majority of my Word for Windows macros into a single package. And requesting a single registration price for all.
The macros in this package are not encrypted. This means you can easily modify their functionality to suite your particular preferences. And, if so inclined, you can learn quite a lot about WordBASIC by studying these macros.However, distributing any modified versions of these macros, in any manner, is strictly prohibited.
Pricing
New registrations
Registration Only$39.95 Registration and Disk$39.95 + $5.00 shipping Upgrades from previous versions There is no charge for registering GTOOLBOX if you have registered any two (or more) of the previously released packets: GTOOLS2 (Gtools), GPROE (PrintRange), GCDIR (ChooseDirectory) or GMKEY (MacroKey) If you have registered any one of the above packets, the upgrade to gToolBox is$10.00
There may be incremental releasesto fix any bugs found in this release, to tweak performance, to add additional macrosbetween now and the next major release of Word for Windows. These updates will be free to all registered users.
ShareWare
This product is being distributed as ShareWare. This means you are under no obligation to pay for the product unless you continue to use it.
But if you do use (and learn from) these macros, please register. A great deal of effort went into their construction. Your registration will support the continuation of the Gadfly Macros series...
You are encouraged to distribute the package, as is, to other Word for Windows users.
ChangeQuoteDash
Purpose
(Alt-Shift-Q for Demo)
An EM is a unit of measurement taken from the character box, as filled by the letter M. An EMDash is on em wide. An ENDash is one-half of an EMDash.
ChangeQuoteDash allows you to easily toggle between Typewriter quotation marks and Typeset (Publishing) quotation marks. It also allows you to toggle between double hyphen and EMDash and single hyphen and ENDash.
Normally, when you type a quotation mark, Word for Windows inserts Character #34: "This is surrounded by normal quotation marks." And, similarly, when you insert a single quotation mark, Word for Windows inserts Character #39, the Apostrophe: For instance:

"We're at the 'mercy' of our computers!" he said with chagrin.
The contraction apostrophe and the single quotation marks around mercy are the same character.
Similarly, the opening and closing double quotation marks around the phrase are the same.
These marks are sometimes called Typewriter quotation marks.
Well, thats all you need if you are using a fixed font such as Courier or Prestige Elite. These fonts dont distinquish between Open and Close Quotation marks, However, proportionally spaced fonts, such as Times Roman, do.
Compare:
"This is 'Fixed' type quotation marks."
This is Publishing type quotation marks.
Word for Windows provides a way to insert individuatl Publishing quotation marks with InsertSymbol command..
There is also a macro in the newmacros.doc called SmartQuotes which allows you to turn Publishing quotation marks on and off. (Note: ther is an improved version of SmartQuotes available on CIS under the named GSMART.ZIP. Its FreeWare.)
However, what if you dont always want Publishing Quotation marks? And what if you started a document without them and now you do want them?
ChangeQuoteDash is a SmartQuotes post processor.
A possible way, if you are like me, to use this macro, is before printingthat is, enter text without SmartQuotes installed, and then when you want a typeset style copy with Publishing characters, run this macro. If you dont save after printing, then the document will remain in typewriter format.
Conventions:
EmDash:
For the proper usage of EM and ENDashes, see the Chicago Manual of Style, page 150.
An EMDash should be represented, in Typewriter style, by two hyphens with no spaces before of after. Compare:
There is nothing--not a thing--wrong with this line, aside from silliness.
This line -- for what its worth -- has spaces on either side of the dash.

EnDash:
An ENDash is not interchangeable with all single hyphens. It should be used in cases such as date ranges:
1990-1992
would require an ENDash in Typeset style. Whereas compound words or hyphendation breaks would not.
For this reason, incidently, the option to change single hyphens to ENDashes requires user intervention. You have to confirm each change.
Non-breaking hyphens
For the purposes of this macro, regular hyphens and non-breaking hyphens (entered with Ctrl+Shift+Hyphen) are equivalent. That is, a pair of non-breaking hyphens will be converted to an EMDash, and a single non-breaking Hyphen will be presented as an ENDash candidate. (Entering Non-breaking hyphens is covered on page 90 of the manual).
NOTE: since double hyphen pairs (Typewriter EMDash) should never be broken at a line end and a hyphen that would convert to an EMDash should never be separated from the two terms it separates, when you convert from Typeset back to Typewriter, the macro will use the non-breaking hyphen, not the normal hyphen.
Scope: (what it changes...)
ChangeQuoteDash makes the following assumptions about what you which it to change:
SYMBOL 183 \f "Symbol" \s 10 \hIf the selection, at the time of invoking the macro, is an insertion point (i.e. a blinking line), ChangeQuoteDash will operate on the entire document.
SYMBOL 183 \f "Symbol" \s 10 \hIf the selection is a solid block/selection (i.e. you have marked a section of text from the entire document), ChangeQuoteDash will operate only on that selection.
This is useful in the following scenario: You have a document, such as a manual, the majority of which is proportionally spaced (and therefore Typeset mark qualified). But there is a section of the manual that is formatted in Courier or LinePrinterthis section might be, for instance, a macro listing. In that section you do not want typeset marks. You want normal typewriter marks. Simply select the section of the document to toggle to typewriter and run the macro again.
ChangeQuoteDash: dialog box:
This dialog box consists of three option buttons and a check box.
To typeset (publishing) characters
This button will change all normal inch/pound, typewriter quotation marks to the curly quotation marks used by typesetters.
It also automatically converts all hyphen and non-breaking hyphen pairs to an EMDash.
To Typewriter (normal) characters
This button will change all typeset type quotation marks back to the normal typewriter type.
It will also change all EMDashes to a pair of non-breaking hyphens, and all ENDashes to a single non-breaking hyphen.
Single Hyphen to EnDash
This option will begin a search and replace for all remaining hyphens and prompt the user if the found hyphen or non-breaking hyphen should be replaced with an ENDASH.
This last option only converts from hyphens to EnDashes. It should be run AFTER the first option (to typeset) and need not be run at all when converting back to typewriter).
Save to new file
If this box is check the macro will perform a FileSaveAs so that you can create a copy of your document before execution.
ChangeTool
(Ctrl-Shift-T to demo)
One of the limitations of the built in ToolsOptionsToolBar command is that if you want to rearrange the icons in either NORMAL.DOT or a template you have to literally remove and replace each one.
This macro allows you to insert a new tool and move the rest to the right, replace a tool with another, replace a tool with a space, or remove a tool altogether.
ChangeTool: dialog box:
The dialog box consists of six parts:
1) a listbox containing the Current ToolBar
2) to the right of this are two PushButtons and a checkbox which control the modification to be made; they are:
CheckBox:
Shift current toolsThis checkbox determines what will happen to the existing tools when either of the other modification buttons are selected.With Insert this shifts current tools to the right.With Delete this shifts current tools to the left.
Buttons:
Insert new tool - selecting this button will place the new tool at the current location.If Shift current tools is active (checked) the new tool will move existing tools to the right. If Shift current tools is inactive (not-checked) the new tool will replace the currently selected tool.
Delete selected tool - selecting this button will remove the selected tool. If Shift current tools is active (checked) the existing tools will shift to the left. If Shift current tools is inactive (not-checked) the selected tool will be deleted and replaced by a Space.
3) an Editbox titled Macro for tool
Type the macro to add to the ToolBar in this editbox. By default the proposed macro is [space].
4 ) To the right of this editbox is a group box containing one (if the current context is limited to NORMAL.DOT) or two (if the current document is based on a template and therefore there are two contexts: global and template) buttons.
Selecting either of these buttons will display a list of the available macros.
There is also a checkbox Include commands. This checkbox will list the built in Word for Windows commands as well as any user macros.
Once the list of macros is displayed the selected macro is placed in the edit box.
Limitation: the list of macros will not appear sorted. User macros are sorted according to their creation. The internal macro/commands are sorted according to some inscrutable whim on the part of the Word Development Team.
5) a ListBox of available icons.
Since Word for Windows dialog boxes cannot contain bitmaps, there is no way to actually include the toolbar icons. Since the ToolsOptionsToolBar does not act like other dialog boxes (none of the ToolsOptions dialog boxes do), you cant use it to display and then grab the selected Icon. Therefore, the list box in this macro displays the number of the tool (-1 to 104) and a short description.
6) a group box that contains one (if this is a NORMAL document) or two (if it is a template document) option buttons to determine where to store the changes: in NORMAL.DOT or in the template.
ChooseDirectory
(Alt-D for Demo)
ChooseDirectory was written to provide an easily customizable list of descriptions for documents, directories, and paths. Once configured properly it will present you with a list box of your most frequently accessed files and directories.
This version is specific to Word for Windows version 2.0. It has many enhancements, both in the interface and in the feature set.
The Dialog Box
When you execute ChooseDirectory you will see the following dialog box:

Directory/Document
This listbox contains descriptions, which you provide, that point to either a directory or a document or a path.. When you run ChooseDirectory for the first time, this list will be blank.
(The word contained in brackets is added automatically by ChooseDirectory. See below under Edit item description.)
Extensions
This combination box contains a list of extensions to use when you open a directory. The extension DOC is always a default. If you type in an alternate extension it will automatically be saved to the list and available next time you run ChooseDirectory.
(To remove an extension from the list, simply type the extension prefaced by an minus sign: e.g. -TMP.)
Open dir/doc
Selecting this option button executes a different function depending on what the currently selected description describes. The description can point to a directory, a single document, or a multiple path.
If it is a single path it will display the FileOpen dialog in that directory.
If it is a document, it will open that document.
If it is a multiple path specification, it will run FileFind using that path specification as the SearchList.
New File this dir
Selecting this button simply changes to the directory pointed to by the description, and then executes FileNew.
Edit item description
Selecting this button will display the following dialog box:

If the path is a directory, [directory] will be added to the description.
e.g.C:\WINWORD
If the path is a document, [document] will be added to the description.
e.gC:\WINWORD\JOURNAL.DOC
If the path is a multiple path specification, [search path] will be added to the description.
e.g.C:\WINWORD;C:\DOCS
If the path points to multiple documents, [multiple docs] will be added to the description.
e.g.C:\WINWORD\JOURNAL.DOC+C:\DOCS\MY.DOC
Note: if the path specification points to multiple documents, then each of the documents will be opened.
There is a new facility on the Edit Item Description and Add Item Description dialog box. There is a button beneath the path edit box named Select Path/File. Selecting this button will present you with the standard FileOpen dialog box. You can move around your hard disk, find the document you which to open.
To have ChooseDirectory work on just the path selected, be sure to remove the file name that is inserted (and the final backslash)
To do multiple paths remember to add a semi-colon between paths.
To do multiple documents remember to add a plus sign between file names.Add item description
Selecting this option does the same thing as Edit item description except instead of editing the currently selecting description/path, it adds a new description/path combination.
Delete current item
Selecting this option simply removes the currently selected description/path from the list. Note: there is no confirmation.
How it works
The macro uses a series of keywords in your WIN.INI file under [MS Word ChooseDirectory] to store alternate extensions, and path descriptions/specifications.
The alternate extensions are stored as follows:
xExt=*,TXT,XWS,DOT
When first run, this line will not exist. ChooseDirectory will prompt you for input. Note that the extensions are just that: no preceding period. Also note that the default extension (DOC) should not be entered in this line (though doing so wont harm anything).
The description/directories are stored in lines such as:
Dir0=Main Directory [directory|C:\WINDOWS\WINWORD
Dir1=My journal [document]|C:\WORD\JOURNAL.DOC
Dir2=Macro files [search path]|C:\WIN\WORD\MACROS
DirN
These lines are added as needed.
Installation Tips
To have ChooseDirectory run every time you start Word for Windows, simply either add the following line to your current AutoExec macro (create one if none exists):
ToolsMacro ChooseDirectory, .Run
It is also recommended that you assign ChooseDirectory to both a menu and a key combination.
Converting from Earlier versions of ChooseDirectory.
Versions of ChooseDirectory intended for Word for Windows 1.1 used a series of keywords stored in the WIN.INI file under the heading [Microsoft Word]. Word for Windows 2.0 has a new heading, [Microsoft Word 2.0].
ChooseDirectory 2/x.x uses its own heading: [MS Word ChooseDirectory]
If you want to start with the same directory, extension specifications with this version of ChooseDirectory as you had used with earlier, do the following:
Search for the phrase [Microsoft Word].
Under that heading there should be the following Keywords:
dNum, xExt, and Dir0...DirN
Select all of those lines and move it to the heading [MS Word ChooseDirectory] (which already exists if you have run ChooseDirectory 2/1.02 even once.
Specifying an extension
You can add a specific extension to a path.
For instance, if the description My templates pointed to a path in the following form:
C:\WINWORD\DOT\*.DOT
Then upon execution this would run FileOpen on the C:\WINWORD\DOT directory, with *.DOT as the filter.
Note: the bracketed type description generated by ChooseDirectory will still read [document].
Similarly, you can add an extension to the items in a multiple path, as follows:
c:\wfw\*.doc;c:\dot\*.dot
Upon execution, FileFind will be run with this as the SearchPath. Note: the bracketed type description generated by ChooseDirectory will still read [search path].
Deleting an extension from the list
When you specify and extension, it is added to the list. To remove an extension from the list, run ChooseDirectory and type in the extension you wish to remove prefaced by a minus sign: e.g. . -TMP.
Sorting the extension list
Extensions will be displayed in the list in the following order: DOC will always come first; the remaining extensions will display in the order you entered them.
To re-arrange the alternative extensions you must edit the line xExt found in WIN.INI under the keyword [MS Word ChooseDirectory].
If can edit any of the [MS Word ChooseDirectory] items by using ToolsOptions and specifying MS Word ChooseDirectory as the application.
Warning:
The WIN.INI lines that contain the description/path specification must contain text on either side of the vertical bar (otherwise an error will be generated). This version of ChooseDirectory contains error checking to make it very difficult to incorrectly install these lines, however, nothing is fool proof... If you get an error when first running the macro, please check you WIN.INI (using NOTEPAD or SYSEDIT) and examine the section following [Microsoft Word]. Note: You can now also edit a specific section of WIN.INI in the ToolsOptionsWININI dialog box from within Word for Windows.
If you see a line such as the following
Dir0=!c:\winword
Dir1=Main Directory|
-then you know there is a problem. Add the missing information (in the first case, a description, in the second case a path specification).
ControlRun
(Alt-Ctrl-U for Demo)
This macro is an adaptation of a macro posted by Doug Timpe for WfW 1.1. The only major change is the use of PushButtons instead of CheckBoxes.
It replaces completely the built in command named ControlRun. The advantage of this macro over the built in macro/command is that you can modify this macro to include frequently used program, and it has a text edit box into which you can enter any legal command.
ControlRun: dialog box:
By default the dialog box consists of a text edit box and four buttons.
You can enter any legal command into the edit box.
The PushButtons are
Clipboard
Control panel
Dialog editor
Cancel
You could modify this macro to include other frequently run programs.
CopyMacroActive
In my own work with macro development, this has proven one of the most useful tools in my NORMAL.DOT.
This macro will build a list of all the macros in the current context either the global macros or the macros in the reigning template and then build a second list of all the other templates that are currently loaded into Word for Windows, and allow you to choose a macro to copy and a destination template.
For example, if you are working on a letter in LETTER.DOT, and you have a document based on MEMO.DOT also loaded, running this macro will display a list of LETTER.DOTs macros and allow you to copy any or all of them into MEMO.DOT with a single click.
You can also encrypt the macro en route.
CopyMacroActive: dialog box
The dialog box consistes of two list boxes, two buttons, and one checkbox.
Macros in (templatename)
This list displays all of the macros in the active template at the time of executing CopyMacroActive.
Copy macro(s) to:
This second list box will display the possible destination templates (it gathers them by cycling through all open document windows and determining the rulling template. Therefore if there is only one document open the macro will exit).
Copy Selected
This button copies only the currently selected macro (and then moves the selection to the next macro in the list).
Copy All
This button will copy all the macros in the list to the selected destination template.
Encrypt
This check box, if active, will encrypt the macro during the copy process.
CreateOutlineDoc
This macro allows you to save only the heading text from a document to a second outline document.
Why? When you collapse a Word for Windows document into Outline View and then select the outline, you are actually selecting all the text and levels beneath the visible outline. If you were to cut and paste to a second, blank document you would be copying everything.
This macro allows you to create a document that reflects only the outline organization of its source document.
CreateOutlineDoc: dialog box
Outline Document Name
This is the name used to save the newly created outline document. By default the name will be the file name portion of the document being converted with the document extension OTL appended.
By default the OTL file will be saved in the same directory as the source document.
If you wish to change either of these defaults, type the filename desired, or the full path desired, in the edit box.
Outline Document Template
By default the new document will be based on the same template as the source document. If the source document is a template itself, then the destination document will be based on NORMAL.DOT.
If you have a standard outline template, you can enter it into the macro as the default. For example, if you have a template named OUTLINE.DOT used for all outlines, simply locate and change the line
dlg.Template = Template$to dlg.Template = OUTLINE Keep Footnotes Keep Annotations Simply check the appropriate box to include footnotes and/or annotations in the new document. Be aware that the footnotes numbering will not be the same as the numbering in the original document since the footnotes that are in the text are ignored. Also, be aware that footnotes that do not have automatic numbering will be ignored. Expand to level You can specify how many levels of the outline you wish to preserve during the copy process. DeleteIdleStyles This macro is useful if you have overloaded a document with unused (and sometimes unknown...) styles. This can happen when you convert from another word processor to Word for Windows, or when you combine documents from several different sources, or when you merge styles from another document or template (but dont want all the styles to remain in the current document). Unfortunately, there is a limitation. There are several (thirty odd, I think) built in style names: SYMBOL 183 \f "Symbol" \s 10 \hannotation reference,annotation text,footer,footnote reference,footnote + text,header,heading 1,heading 2,heading 3,heading 4,heading 5,heading 6,heading 7,heading 8,heading 9,index 1,index 2,index 3,index 4,index 5,index 6,index 7,index heading,line number,Normal,Normal Indent,toc 1,toc 2,toc 3,toc 4,toc 5,toc 6,toc 7,toc 8,EnvelopeAddress,EnvelopeReturn Often you will see that a document that starts out with only Normal, Normal Indent, and Heading 1-3 suddenly has a list containing all of the above style names. There is no way to remove these styles from the style list once they appear. This is a feature in Word for Windows. Write Microsoft... When you run this macro you will be given an opportunity to cancel. Be careful not to run this macro unless you are sure that all the style names you wish to retain are actually in use in the document. Another Note: There is no reason (that I can think of ) that you couldnt remove user styles from a template by following these steps: SYMBOL 183 \f "Symbol" \s 10 \hLoad the DOT file directly. SYMBOL 183 \f "Symbol" \s 10 \hExamine the user styles in the template SYMBOL 183 \f "Symbol" \s 10 \hApply those you wish to keep to separate paragraphs SYMBOL 183 \f "Symbol" \s 10 \hRun the macro EncryptMacros This macro will display a list of macros in the currently active template and either encrypt all the macros, or allow you to specify which of the macros to encrypt WARNING: once a macro is encrypted, it cannot be unencrypted. BE SURE TO HAVE AN UNENCRYPTED VERSION OF ANY MACRO YOU ARE DEVELOPING BEFORE ENCRYPTING IT. See EncryptTemplate EncryptTemplate This macro will ask you to choose a template, and then will encrypt every macro in that template. Note: it does not pause for confirmation. When you load a template the macros contained in that template are encrypted. The macro does not, however, automatically save the newly encrypted template. So you do have the opportunity to discard the changes. WARNING: once a macro is encrypted, it cannot be unencrypted. BE SURE TO HAVE AN UNENCRYPTED VERSION OF ANY MACRO YOU ARE DEVELOPING BEFORE ENCRYPTING IT. See EncryptMacros FiddleNotes This is a simple macro that has four options: SYMBOL 183 \f "Symbol" \s 10 \hChange all footnotes to annotations SYMBOL 183 \f "Symbol" \s 10 \hChange all annotations to footnotes SYMBOL 183 \f "Symbol" \s 10 \hDelete all footnotes SYMBOL 183 \f "Symbol" \s 10 \hDelete all annotations There is only one caveat: Footnote References and Annotation References must all have the same style. A buglet in Word for Windows allows for styles in such references to get out of kilter (since changing a reference style does not apply retro-actively). Another macro in this package addresses this problem. See ReInsertFootnotes on page 22 FileTemplate Problem: automatically merging styles Templates are the repository of several useful aspects of Word for Windows. If you arent comfortable with the idea of a Template or the concept of Context, I strongly suggest you stare at the manual until its clear. Templates hold Macros, IconBar assignments, Key Assignments, Menu Assignments, Glossaries, and Styles. When you attach a template, or change the attached template, using the new FileTemplate command (used to be FormatDocument.Template...) you essentially change which of these assignments will now have sway over your document. That is, with the exception of styles. Changing a template does not automatically change the style definitions in the current document. The reason for this is that there are two separate lists of styles those contained in the Template (where you probably defined the style) and those contained in the document itself. The included replacement for FileTemplate asks if you wish to change the current documents styles to match those contained in the template just selected for attaching... Heres the dialog box. Answering Yes to this prompt would perform the exact equivalent of selecting FormatStyle, Define, Merge, selecting the same template as that chosen in the FileTemplate dialog box, and selecting To. For those of you who know the macro language, the short hand for this would be: FormatStyle .FileName = Template$, .Merge, .Source = 1
Answering Yes, therefore, would replace any styles in the document with styles in the template of the same name. That is, Normal in the document would now look like Normal from the template. Styles that dont already exist in the document will be added.
MacroKey
(Ctrl-Shift-K for demo)
Overview:
Allows simple assignment and removal of key stroke combinations to macros (either global or template bound).
Enhancements over the built in MacroAssignToKey:
Allows the use of Alt-Char, Alt-Ctrl-Char, and Alt-Shift-Char. In the built in routine the first two combinations are disallowed. The last is reserved for Word for Windowss use. Note that Word for Windows reserves these key sequences for its own use in many cases, so preventing you from reassigning them is a form of protection. Use this routine cautiously, and backup all DOT files before you experiment.
Usage:
Main dialog box
You will be presented with a dialog which looks like this:

The line above the list of macros will display the current template or document/template containing the macros.
By default MacroKey displays the template macros (if there are any).
Macros
A Listbox of macros from the currently selected context. Select the macro you wish to assign a key to (or remove a key from).
Key Combination
Check the shift keys you wish to activate (Alt, Ctrl, Shift, in any combination), and then move to the Key list box and select the alphanumeric key you wish to assign to the selected macro.
Buttons
Show Global
Displayed only if the current context is a template (and therefore Global macros are not visible) Selecting this button changes the list to display the macros from Normal.dot.
Show Template
This button is Displayed only if there is a template attached to the current document.
Show Commands
Selecting this button will display all of the built in command macros. Note, building a list of all macros user and internal take s fairly long time.
Manage Keys
This button will run a second macro (assuming it is installed) named ManageKeys. This macro will display a listbox of the current key assignments, and, optionally, allow you to create a document containing a table of those key assignments.
See ManageKeys on page 20
Special Keys
choosing this button will display a dialog box of all supported special keys (Esc through Del...F1 ...F12). Try it, youll like it. Look:

Remove
this option checks to see if the currently selected macro has a keycode assigned to it. If so you are asked if you want to remove it. If not, a message displays at the bottom of the screen.
CheckBoxes
Show Current
This check box will rebuild the list of macros, displaying the current key assignment (if any). This takes a significant amount of time. This function only shows key assignments made by the user, not key assignments that are internal to Word for Windows.
Limitations:
MacroKey will warn you if you are about to use a key combination that is already assigned to a macro. However, it will only warn you if the key combination in question is NOT one of the default assignments. That is, it must be an assignments you have made, rather than one that Word for Windows assumes is the case.
Similarly, it does not warn you if you are about to use a key combination that is assigned to a style.
Illegal keys
It seems that any combination of keystroke with F1 will always call help. So it isnt fair game.
It seems that NumPad 5 (the numpad 5 that is activated by turning NumLock ON) does not accept shift characters. The NumPad 5 that is active in default state (NumLock OFF) does accept shift characters. The macro accounts for this oddity. Also note that the Unshifted NumLockOFF-5 cannot be assigned to a macro (this is the key, by the way, that is described as KeyCode 12 in the Technical Reference).
The direction keys, listed on the Special Keys dialog box, have some limitations.
No direction keys (Home, End, PgUp, PgDn, Right, Left, Down, Up) can be assigned to a macro.
No direction key plus Ctrl can be assigned to a macro.
No direction key plus Ctrl+Shift can be assigned to a macro.
The Alt key plus Up and Down are legal. The Alt key plus Left and Right are not legal.
MacroKey will not allow you to assign anything to Ctrl-Alt-Del (duh...)
Sorting
No sorting of the macros. The template macros will appear in the order you created them. The built in macros (if that option is checked) will appear in the order God created them.
Focus
MacroKey works best on a document, not on a template. That is, if you are editing a template directly there may be trouble. Base a blank document on the template and try again.
MakeBook
(alt-ctrl-b for demo)
A slightly more complicated version of MakeWordBook, this macro takes the current selection and presents it for editing.
Instead of grabbing the current word if there is not selection it grabs the current line.
It presents the multi-word selection as a proposed bookmark, with spaces converted to underline marks
It also checks for illegal characters (punctuation marks and the like) and replaces them with underscores.
See MakeWordBook
MakeWordBook
(alt-ctrl-M for demo)
This macro will first check to see if there is a block of text selected. If so, that selection will be inserted as a glossary name.
If there is no selected text (just an insertion point cursor), then this macro will take the current word and make it a glossary name.
This macro will check for duplicate glossary names and append the instance count to the word if there is already a glossary using the word as the mark. It does not, however check for illegal punctuation marks in the current selection.
See MakeBook
ManageKeys
This macro will display the current key assignments for the active context. If you are currently working on a document based on NORMAL.DOT, it will display the global key assignments. If you are working on a document based on LETTER.DOT, it will display the key assingments specific to the template LETTER.DOT.
The dialog box look like:

The List Box
The list box displays three pieces of information:
The macro that has a key assignment
The mnemonic for the key combination
The keycode for the key combination
For instance, in the above list, the macro NextWindow is assigned to Ctrl+Tab, which is keycode 265.
Buttons:
Create Key List
This button will create a new document (based on NORMAL.DOT) and generate a table containing all of the key assignments.
Delete Selected
This button will remove the currently selected key assignment.
Note: It is possible for key assignments to appear in a template with not macro (apparently) associated with that key combination. If you see a line in the above list box that begins with a colon (and no macro name) you can pretty safely assume that somehow a bogus key assignment did not get nuked properly at some point. Id delete it using ManageKeys.
ManageMacros
This is the orginal copy macro macro for Word for Widnows 2.0. A slightly different version exists in the Using WordBASIC companion disk.
It differs from CopyMacroActive in that you can specify both the source and destination templates (neither has to be currently open).
The dialog box looks like:

Souce Template
A list box of all the templates in your DOT-PATH.
Destination Template
The same list of templates
You must specify both a source and a destination template.
You can type a template name directly into the edit portion of the ComboBox.
The buttons available (after selecting the templates) are:
Copy All
This button will open the working templates and copy all source macros to the destination in one pass.
Confirm Each
This button will begin the process of copying all macros from source to destination but will pause at each macro for confirmation.
List Macros
This macro will display a list box of macros in the source template.
Copy
This button is only relevant if you have entered a macro into the editbox to the right. This is useful if you wish to copy only one macro and you know the macro name.
You can also, optionally, encrypt the macro en route from source to destination.
Limitation
The templates do not display in the list in alphabetical order. The more templates you have, the slower the macro is to load.
In order for the templates to display sorted alphabetically, you must physically sort them on your hard disk with a utilitiy such as Nortons DiskSort.
OpenMRUList
A simple macro that simply opens all the documents found under the File menu (the Most Recently Used List).
I would be useful as a startup command from Program Manager:
C:\WINWORD\WINWORD.EXE /mOpenMRUList
would start Word for Windows and open the files on the MRU list.
PrintRange
PrintRange is a simple macro that fills a major lack in Word for Windows
Main Dialog Box

Range
Selecting this button will print the comma delimited list of page numbers entered into the box to its right.
If you select Range then you will not be able to print Odd or Even pages.
Even Pages
Prints only the even pages in the current document.
Odd Pages
Prints only the odd pages in the current document.
Reverse Print Order
This check box is useful if you want to do duplex printing. Simple check this box, print all Even pages, then place the stack of pages back into the printer tray and print Odd Pages.
Goto Standard FilePrint
As a convenience, PrintRange allows you to call the standard FilePrint macro.
Printer Setup
Runs the standard Printer Setup macro to allow you to change the currently active printer.
Limitation:
At this time PrintRange is an either or proposition. That is, if you specify a Range you cannot also specify Odd or Even.
That may come in the next version.

ReInsertFootnotes
Note on Footnotes:
If you change the character style definition of a footnote or an annotation reference) instances of footnote reference inserted prior to he re-definition will not change. Subsequent footnote insertions will have the new attributes.
For example, if you begin inserting footnotes with the character definition of Red and Hidden, then change it to Blue and non-hidden, the already inserted footnotes will not change to the new style.
Another manifestation of this problem arises if you select a paragraph that has a footnote in it, and press Ctrl-SpaceBar to reset the character formatting.
The included macro, ResetFootAnnote does not, like the other gFixes, replace a built in command. It is a new command which you can execute in order to reinsert a footnote or an annotation.
How it works
There are two modes of operation:
If the insertion point is currently positioned on a footnote reference or an annotation mark the macro will re-insert that footnote or annotation only and then stop.
If the insertion point is not on a footnote reference or an annotation mark, it will prompt you for which to re-insert document wide with a dialog box:

SyncStyles
This simple macro does the equivalent of FormatStyle.Option.Merge. It is useful if you want to make sure that the styles in a document are always also stored in the template; or if you want to reset the styles contained in the current document to the styles as they are defined in the template.
SyncStyles: dialog box:
Copy TO
If you select Copy Document style TO template, you will, in essence, be merging the styles contained in the document to the current document template.
1.If a style exists in both the template and the document, the template definition is changed to match the current definition as it exists in the template.
2.If a style does not exist in the template, but does exist in the document, it is added to the style list of the template (that is, future documents based on that template will now have the additional styles...).
Copy FROM
If you select Copy FROM Template styles into the current document, you will be merging all of the styles contained in the template into the current docuement.
The effect of these actions is two fold:
1.If a style exists in both the template and the document, that style is changed to match the template.
2.If a style does not exist in the document, but does exist in the template, it is added to the style list.
ToggleHidden
(Ctrl-Shift-H for demo)
Toggle View Hidden without going through the ToolsOptionsView dialogue box. I suggest assigning this to Ctrl-Shif-H.
ToggleOutline
(Ctrl-Shift-O for demo)
Toggles in and out of outline mode.
TogglePictures
Toggles the display of pictures and picture placeholders.
Word for Windows will scroll faster through a complex document if pictures are not displayed.
ToggleRevision
Toggle revision marks on and off.
ToggleStyleBar
Toggles the style bar on and off.
ToggleViewTools
(ctrl-shift-v for demo)
There are seven tools that can be displayed on the Word for Windows screen:
SYMBOL 183 \f "Symbol" \s 10 \hToolBar
SYMBOL 183 \f "Symbol" \s 10 \hRibbon
SYMBOL 183 \f "Symbol" \s 10 \hRuler
SYMBOL 183 \f "Symbol" \s 10 \hStatus
SYMBOL 183 \f "Symbol" \s 10 \hVertical Scrollbar
SYMBOL 183 \f "Symbol" \s 10 \hHorizontal Scrollbar
SYMBOL 183 \f "Symbol" \s 10 \hStyle Bar
The first three are controlled under the View menu. The last four are controlled under the ToolsOptionsView dialog box.
This macro present a single, simple dialog box of seven checkboxes. It has three buttons (not counting Cancel...):
On
Off
All On
Setting tolerance for toggle
There is a line in the macro that determines how many options need to be set to on before the macro will assume you want the default action to be OFF.
That is, if three options are currently on, then make the default action for the push buttons to be Off.
If less than three are on, leave the default as On.
The line of code looks like:
If Total >= 3 Then St = 2 Else St = 1
Setting default minimum for on:
If you examine the macro you will see that there is also a section you can customize to specify which group of options should be forced to on if everything is already off...
That code looks like:
If Total = 0 Then b = - 1 : vt = - 1 : v = - 1

ToggleWindow
Toggle the currently active document window split/zoomed.
WindowStack
Simply stacks the current document windows, leaving the title bars visible. There are two constants in the macro, HLap and VLap, which can be adjusted if the overlap does not suit your preferences.
The macro is not device dependent. It should work at all monitor resolutions.
WinSideBySide
(Ctrl-Shift-B for a demo)
Arranges the document Windows side by side. If there are more than two active windows you are prompted for which window to arrange next to the currently active document.
gLib
Overview
When you open GTOOLBOX.DOC you will automatically install the library of routines found in a macro called GLIB. This macro will be automatically copied to your NORMAL.DOT.
The reason for this is two fold:
1)Word for Windows version 2.0 allows one to call sub routines and functions contained in another macro. By placing several commonly used subroutines in one place, the other macros are smaller.
2)The subroutines and functions found in GLIB can be used by your own macros. In essence, it adds many new macro functions to WordBasic.
In order to use these functions in your own macros you simply must 1) make sure gLib is installed in your Normal.dot and 2) call the function prefaced by the library name: gLib.FunctionName.
Warning
If you modify any of the routines in the gLib library, be sure the increment the version number.
Subsequent installations of gToolBox (this version or a newer version) will check to see what the version number of the library is. If it is the same as the library to be installed nothing is coped.
If it is less than or gerater than the library to be installed the current library will be copied to another macro named gLibBAK.
Main dialog box
If you run gLib itself, you will see a listing of the subroutines and functions it contains:

gLib Reference
ActivatePartial(Doc$) This subroutine can be used to supplement the built in command Activate WindowName$. The difference between the two is that this procedure only requires a partial name, whereas the built in command requires that you know precisely whats up there on the document bar.
e.g.
ActivatePartial(GTOOL)
Will cycle through each open window and stop at the first one whose title contains the letters gtool (not case-sensitive).
CheckLib
This function returns the version number of gLib.
If glib.CheckLib Then Print Okay
Chew$(Source$,Marker$) A string function that returns the left portion of a string up to the occurence of the marker. The source string is truncated. So, for instance: S$ = one|two|three|four
m$= | For x = 1 to 4 MsgBox glib.Chew$(s$,m$)
Next x
would display four mesage boxes, containing one, two, three and four, in sequence.
CountChar(Source$, Char$)
A function that returns the number of occurences in a string of a specific character:
x = gLib.CountChar(one,two,three,,)
would return 2.
fExist(FullPathName$) This function returns -1 if the specified file was found; 0 if not. fFileCount(FileSpec$)
This function counts the number of files in a directory:
DotCount = gLib.fFileCount(c:\winword\*.dot)
fFileName$(b$)
This function returns the filename portion of a full path name.
Name$= gLib.fFileName$(c:\winword\normal.dot)
would return normal.
fFileNameExt$(b$)
Returns the filename plus extension from a full path designation.
Name$= gLib.fFileNameExt$(c:\winword\normal.dot)
would return normal.dot.
fStr$(Num) Returns a formatted string from an integer, stripping the padding Word places in front of a digit. GetDocDir$
Returns the directory in which a document is stored.
If this function is called from within a macro pane it returns a null string.
GetFile(FullName$,Dir$,Default$) Displays the FileOpen dialog box. GetPath$(Source$) Strips out a path from a full file/path specification GetTemplate$
Returns the current documents template
gLibInstalled(Macro$) This function is unique in the package. It should be used, not from within the gLib macro, but should be copied into any macro that calls a gLib routine. What it does is use the same logic as MacroExist to determine if there is, in fact, a macro named gLib in the current Normal.dot. This allows you to test at the top of a macro that requires gLib if the library is installed. It displays a warning message and request for re-installation. If you look at almost any of the more complicated macros in gToolBox you will see an example of how this is used. gMsg(Msg$,Title$) Displays a message with an attention sign. gQuery(Msg$,Title$) Displays a query dialog box. HasKey(Macro$,Context)
Returns whether or not a macro in the given context has a key assignment.
Inject$(Source$, New$, Place) A string function to insert a string within a string at a given place. Name$ = gLib.Inject$(Name$(Guy Gallo, J. ,4)
would return Guy J. Gallo
IsMacroPane([MacroName$]) Returns -1 if the focus is currently on a macro editing window MacroName$ is an optional parameter containing the name of the macro calling the function. This is so that the warning message will be smart and tell you the name of the macro causing trouble...
KeyDescription$(KeyCode) This function returns a string mnemonic for the specified KeyCode. lHelp(HelpFileName$)
glib.lHelp(gtools.hlp)
would load the windows help engine and attempt to load the file GTOOLS.HLP.
(Both this and the following sub routine were adapted (very slightly) from a routine by Julianne Sharer of WexTech Systems.)
lcHelp(ContextNumber,HelpFileName$) Loads the specified HLP file with a context number. glib.lHelp(2,gtools.hlp) would load the windows help engine and attempt to load the file GTOOLS.HLP and moves to the help page specifed by the context number 2. ListMacros$(Context,All)
A simple fuction that displays a list of macros and returns the selected macro or a null string (if cancelled)
It will displays a list box of all macros in the specfied context (0 for global and 1 for the current template).
If All is 0 then only user macros will be displayed. If All is 1 then the built in commands will also be displayed.
Limitation: this routine does not sort the list of user macros. User macros are displayed in the order they were created.
The built in commands, for who knows what reason, are also not sorted alphabetically...
A sort routine (found in WOPR) could be added, but it would significantly slow things down.
LoopMsg(Message$) This is an extremely useful function, to be used while writing macros. Its purpose is to display the value of any number of variables during the execution of a loop. For example: Loop = -1set the boolean variable Loop to true For x = 64 to 255 StringVar$ = StringVar$+ StringVar$ + Chr$(x) Index = x If Loop Then Loop = glib.LoopMsg(Index: +Str$(x) + ; String: + StringVar$) Next X When the function displays the variables, you have two choices, OK and Quit the loop. If you quit the loop the variable Loop is set to false, the loop continues on its way without displaying a message... MacroExist(Macro$)
Returns True or False (-1/0) if a macro exists.
Takes a string argument in the same form as IsExecuteOnly.
MacroExist([TemplateName:]MacroName)
e.g. MacroExist(NORMAL.DOT:GLIB)
If the template name is omitted the macro will look in the current documents template first and then in the global context.
NoSlash(Source$) This function checks to see if the last character in a string is a backslash and if so, strips it off. This is useful for properly formatting a path specification for ChDir. NukeTopMenu Dangerous. Will rename all of the top menus to a space character. To be used in conjuntion with ResetTopMenus and the internal command RenameMenu. Replace$(Source$, Old$, New$) This function replaces every occurence in a string of one string with another string. N$ = glib.Replace(h*e*l*l*o,*,_)
would return the string h_e_l_l_o
Resets the top menus to the default names. Used by a macro that calls NukeTopMenu.
Reverse$(Source$, Marker$) This function rearranges a string along a given character or group of characters. This is useful, in combination with Replace$() when you want to change LastName,FirstName into Firstname LastName. For example:
Name$= Gallo,Guy Name$ = gLib.Reverse$(Name$,,)
Name$= gLib.Replace$(Name$,,,Chr$(32))
After these three lines the variable Name$would hold the string Guy Gallo. SameFormat Returns true if every character in the selection has the identical character attributes. If any character in the selection has a different character attribute it returns false. SelectSameFormatRight Extends the selection until encountering a different character format from the starting point. This is used by ReInsertNotes. This subroutine calls another function in gLib, named SameFormat Sub SelectSameFormatRightExtends the selection until some part of the character formatting changes CharRight 1, 1 While SameFormat CharRight 1, 1 Wend CharLeft 1, 1 End Sub A corresponding SelectSameFormatLeft could easily be implemented as well. Split(Source$, Marker$, First$, Second$) This is a subroutine that will take a string and divde it in two at a specific point. For example, if Source$ = Guy+Gallo, the command
gLib.Split(Source$,+,First$,Second$) would return store Guy in the variable First$, and Gallo in the variable Second$. Trim$(Source$, ZapChar$)
This function strips a character from both sides of a string. So, for instance:
Pad$= ****Test**** Unpad$ = gLib.Trim$(Pad$,*)
would return, in the variable Unpad$, the string Test Wait(Seconds) Not astronomically accurate... I think its dependent on CPU speed... but still useful in debugging and testing macros... Glossary of Terms Gadfly (WinWord Gadfly Team) Back in the early days of Word for Windows there was a forum on CompuServe where the pioneers gathered. A handful of the programmers and testers from Microsoft joined conversations and answered questions and fielded attacks and complaints. They signed their messages WinWord Development Team. I took to signing mine WinWord Gadfly Team. Global Global refers to macros and customizations stored in NORMAL.DOT. Template A template is used to store document class specific customizations, such as menu and key assignments specific to creating a letter or a memo. Gadfly Macros Registration - TitlegToolBox subject1.0 Guy Gallo 219 East 69th Street New York, NY 10021 Registration Only: ($39.95 each)
Disk [] 3.5 [] 5.25 ($5.00 Additional) Upgrade previous registration ($10.00)
NYS Sales Tax (if appropriate)
Total enclosed:
COMPANY:Fillin Entercompanyname(ifthereisone):
STREET:Fillin Enterstreet:
CITY:Fillin Entercity:
STATE, ZIP:Fillin EnterStateandZipcode:
PHONE:Fillin EnterPhone:

Where did you get titlegToolBox subject1.0?Fillin Wheredidyougetthismacro?
TitlegToolBox is copyright 1992, by Guy J. Gallo. No portion of this document or the macros it contains may be modified, copied, distributed or otherwise altered without the express written permission of the author. This includes, but is not limited to, distributing the package for a fee, or distributing personal modifications to the included macros.
Index
ChangeQuoteDash, 5
ChangeTool, 7
ChooseDirectory, 8
ControlRun, 13
CopyMacroActive, 13, 23
CreateOutlineDoc, 14
DeleteIdleStyles, 15
Encryption, 3
FiddleNotes, 16
FileTemplate, 17
gLib, 35
MacroKey, 18
MakeBook, 20
MakeWordBook, 21
ManageKeys, 21
ManageMacros, 22
OpenMRUList, 23
Price, 4
PrintRange, 23
ReInsertFootnotes, 24
ShareWare, 4
SyncStyles, 25
ToggleHidden, 26
ToggleOutline, 26
TogglePictures, 26
ToggleRevision, 26
ToggleStyleBar, 26
ToggleViewTools, 26
ToggleWindow, 27
ToolBar, 7
WindowStack, 27
WinSideBySide, 28

TitlegToolBoxstyleref "heading 1"Introduction SYMBOL 183 \f "Symbol" PAGE1

TitlegToolBoxstyleref "heading 1"Introduction SYMBOL 183 \f "Symbol" PAGE5

TitlegToolBoxstyleref "heading 1"gLib SYMBOL 183 \f "Symbol" PAGE35

Page - PAGE36

PRINTDATE2/26/93

MAIN
DisableInput 1,-&1
AppMaximize 1A
DocMaximize 1QShowAll 0)]'If ViewFieldCodes() Then ViewFieldCodes
ViewNormalx CheckgLibMessage$Msg$xShowAgainO?gToolBoxg
-Welcome to the Gadfly ToolBox. This collection of macros is being distributred as ShareWare . Please see documentation for registration information . %h
7DWhat now?R Choice0iCGoto &Documentation0iTPrint &Registration/QieGoto &InstallationeCXf[X!hQNote:$gCMessage$?/dlg4W,6SNOTE: The Icons on the toolbar are Install, Print, PrintRegistration, and LoadHelpChoice?dlgChoicedlgchoiceChoice}VYou have cancelled. This may result in gLib not being copied properly. Are you sure?Cancel Confirm$I*ByeT [*ShowAgainlu}13x3 &v:gLibNORMAL:gLib3 Backup/Copy*gLibugLibBAKt '! TBACKUP: temp$&Rv:gLibNORMAL:gLib3 Copy&v:gLibNORMAL:gLib3 113Choice3.PrintRegistrationT?3)HInstallMacroT~3 1byeDoLibary0Installedglib
MacroExistGlobal:gLIBInstalledxGlobal:GLIB not there2:NotInstalledPMsg$W6xi kcheckglibGet Installed Version:'gLib MacroExistNormal:GLIB1gLibutempgLibtTtemp$6tempglib(idesc$6glib'FInstalledLib gLibChecklib"fNewgLibtempglibCheckLib?tempgLibugLibtTtemp$86Install current version if version number not the same 'InstalledLibNewgLibHCheckgLib YNewgLibInstalledLib~CheckgLibMake Backup if possibleDgLib
MacroExistNormal:GLIBBAKCheckgLib +6Installing glib version (NewgLib
+"
$There is not version so just copy itN CheckgLib^ f t v Msg$n
13n
3?
Msg$4You already have a copy of gLibBAK on your system. @ 9A new version of gLib has been copied to your NORMAL.DOT.!3G*Msg$AgLib properly. Please remember to register if you are using the 'o
macros in this package. Thanks.
1

(/0 LimitStyle$LimitChange(MAIN2GJGQuoteDash v 3.24G2This version avoids the limit box, uses selection?| Guy Gallo, 1991mName$ChangeQuoteDashhc(
gLibInstalledmName$*bye*glibIsMacroPanemName$*byes$j Q$j")A$j'$8doQ$j DoubleOpenQuote$[dcQ$jDoubleCloseQuote#~soQ$jSingleOpenQuote$scQ$jSingleCloseQuote]HyphenDash$j-j-6 This is the HyplenDash combination -- a double hyphenH$j-,nbH$j=EmDash$jREnDash$jhAgain/pO?SToggle Quote/Dash Characters,h >OSelect Function:R [email protected]$#To Typeset (&publishing) [email protected]("To Typewriter (&normal) characters5igtools.hlp*Again:%SaveASlzDocumentFileSaveAs$iStop_pKglibgQueryLimit changes to the selection?mName$LimitLimitCheckFirstCharChange%
#replace space,quote with open quote,0ReplaceChars$Q$s$doQ$REMDash casesaInside quotationsuh,h,q,p -> 1EMDReplaceCharh$h$q$^pEmDash$ dcq$^p p,q,h,h1EMDReplaceChar^pq$h$h$^pdoq$EmDash$h,h,q,s -> [email protected]$h$q$s$EmDash$dcq$s$N s,q,h,h - [email protected]^ReplaceChars$q$h$h$s$doq$EmDash$Outside quoationsh,h,q4ReplaceCharh$h$q$EmDash$DOQ$q,h,h4ReplaceCharq$h$h$DCQ$EmDash$'
%Replace Q+A with open and open single.5ReplaceCharQ$A$doq$soq$(Y&Replace a+q with closesingle and close.ReplaceCharA$Q$scq$dcq$#!replace tab,quote with open quote,ReplaceChar^tQ$^tdoQ$'%replace newline,quote with open quote,ReplaceChar^nQ$^ndoq$>G$H"replace para,quote with open quote,mReplaceChar^pQ$^pdoq$G0.replace para,singlequote with open singlequote,ReplaceChar^pa$^psoq$20replace Space, Apostrophe With Space Open Single,' ReplaceChars$a$s$soq$I Replace punctuation marks*e ReplaceChar(q$(doq$* ReplaceChar[q$[doq$* ReplaceChar{q${doq$* ReplaceChar=q$=doq$! ReplaceChar("<"+q$,"<"+doq$)!ReplaceChar(">"+q$,">"+doq$)/5-replace quotes space with close quotes space,eReplaceCharQ$s$dcq$s$1/replace space,singlequote with open singlequote,ReplaceChars$a$s$soq$&$Replace q plus para space with close,ReplaceCharQ$^pdcq$^p(G2Replace the reset with Open PReplaceCharQ$dcq$hGrreplace other apostrophes ReplaceChara$scq$EM/ENDash)ReplaceCharh$h$EMDash$-ReplaceCharnbh$nbh$EMDash$CAreplace space pairs with single spaces'This is a personal choice:
ReplaceChar(s$+ s$, s$)V G8 6/Finished converting from typewriter to typeset. Change3 ReplaceCharEmDash$EmDash$EmDash$-
ReplaceCharEMDash$nbh$nbh$#ReplaceCharENDash$h$!ReplaceChardoq$q$9G DReplaceChardcq$q$\G gReplaceCharsoq$a$ReplaceCharscq$a$86/Finished converting from typeset to typewriter. DoEnDash06'Finished converting Hyphens/ENDashes... (bye.79CheckFirstCharMG^Limit%qD LimitStyle$*sByeLimit/fcl4w
>fcl%fcl!
CharDLG!*sByefCharr813fCharK32"'ZChange
4j32''Change
4j32'Change
4j"32'$Change 4j'W3 c1oGsBye!ReplaceCharOld$New$)[Old$New$!*,DoEnDash :O?E ENDash/Hyphenmh .:eyXfXR Mode:iReplace Hyphens with ENDashes:i&Replace ENDashes with Hyphens ^hK$XNoteg\>Because hyphen should only be converted to EnDashes in certain cases, this part of the macro calls EditReplace interactively so that you can confirm all changes.=?I/dlg4Choice?dlgvchoice*sByedlgModeOld$j-New$j Old$jNew$j-7Limit"JLimitStyle$fwLimitCharDlgf)[Old$New$fsBye------------------------ gLibInstalledMacro$;,-*ErrMsgPRxNormal:gLib/This returns an error 511 if glib doesn't existx
gLibInstalled*fEndErrMsg:CrLf$j j j j !%The Library [gLib] is not intalled...CrLf$*Please re-open the document that carried [Macro$L] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0 gLibInstalledfEnd$&
MAIN
VER$1.1nMacro$
ChangeTool0hc)8
gLibInstallednMacro$*Byee"~/dlg4 >dlgt$dlgRt$NORMALContext Context /zGlobal4ContextC JContextYbjSkipq/ToolDesc$i ToolDesc$-1: Space#ToolDesc$
0: ABC Check%ToolDesc$1: 3.5 in disk!ToolDesc$2: Printer(ToolDesc$3: Zoom Full Page&'ToolDesc$4: Zoom to Page#JToolDesc$5: Zoom 100%jToolDesc$6: Table$ToolDesc$7: Two columnToolDesc$8: Frame%ToolDesc$
9: Number list&ToolDesc$10: Bullet list& ToolDesc$11: Orientation#.ToolDesc$12: Unindent!OToolDesc$13: Indent"nToolDesc$14: Drawing ToolDesc$
15: Chart/ToolDesc$16: Blank Page (FileNew)ToolDesc$17: Copy(ToolDesc$18: Pencil Eraser#ToolDesc$
19: Scissors/=ToolDesc$20: Paste from Clipboard&jToolDesc$21: Open folder#ToolDesc$22: Envelope+ToolDesc$23: Magnifying Glass&ToolDesc$24: Square Root%ToolDesc$25: Microphone#ToolDesc$26: Page [email protected]$27: Footsteps%bToolDesc$28: Paintbrush!ToolDesc$29: Pencil(ToolDesc$30: Closed folder ToolDesc$
31: Clock"ToolDesc$!32: Gluepot+ToolDesc$"33: Line/bar/uparrow%1ToolDesc$#34: Storyboard"TToolDesc$$35: Recycle"tToolDesc%36: Uparrow%ToolDesc&37: RightArrowToolDesc'38: DownArrowToolDesc(39: LeftArrow'ToolDesc)40: WinWord Logo# ToolDesc* 41: OrgChart,AToolDesc+42: Page with pointer)kToolDesc,43: Mailbox/letter%ToolDesc-44: Binoculars&ToolDesc.45: Flat eraser%ToolDesc/46: Spectacles(ToolDesc047: Question mark%"ToolDesc148: CalculatorEToolDesc249: Hand stop%gToolDesc350: Piggy bank(ToolDesc451: Stacked pages)ToolDesc552: Two lines thinToolDesc653: Two lines)ToolDesc754: Two lines wide& ToolDesc855: superscriptDToolDesc956: subscript&fToolDesc:57: Smiley Face+ToolDesc;58: Double Underline)ToolDesc<59: Word Underline!ToolDesc=60: a -> A ToolDesc> 61: A-> a# ToolDesc? 62: Keyboard%8 [email protected]: Dialog box%[ ToolDescA64: Excel Logo~ ToolDescB65: Trash Can" ToolDescC66: Speaker" ToolDescD67: Monitor #x09P ToolDescxnkx: Digit jx6&<#xAZSNToolDescxnkx : Capital jx&'ToolDesci104: Blank block/ToolDlg/CurTool#x)CurToolx x0CurToolx kxJIToolDlgxnkx: CurToolx&Macro[space]Again#MacroMacro[space]'O?nMacro ver0 L PToolDlgPlace,2 g | Current Toolbar:8\ S &Shift current toolsShift, &Insert new tool1 6&Delete selected tool+glk&Macro for tool+Qy/NgIcon for this tool 0}L TToolDescIcon)hc: List macros: #pXGlobal3ContextPpXTemplate3?SInclude commandsAll+wh1Change bar in: R iM&Global4Contextic&Template+fX!KPX&Helpr?~5dlg4,-*dlgIconIconAdlgShift+By default shift everything to the right...dlgContextdlgMacro Choice?dlg9Choice*ByeVIcondlgIcongPlacedlgPlacezMacrodlgAlldlgAll2MacroMacro[space]IconContextdlgShiftdlgShiftContext CChoicegliblcHelphc gtools.hlp*AgainSContext CjChoicegliblcHelphc gtools.hlp*Again ChoiceChoice8macroglibListMacrosChoiceAll*AgainIconIcon*choiceInserting a new toolI#xPlace"bContextx N CurToolxCurToolxT&Set holder (why?)xPlace Do new tool%ContextPlace )P IconMacroTDo rest of the tools...#xPlace"Contextx  CurToolxShiftCurToolxShiftTB&I Deleting a tool....+d)Set all the stuff up to the current place#xPlace"Contextx N CurToolxCurToolxT'&.Shift &CContextPlace ([space]T #xPlace #Contextx O CurToolxCurToolxTK&S Z#xPlace r,-&#Contextx Y CurToolxCurToolxT&"Contextx JS CurToolx [space]Tbye gLibInstalledMacro,-*ErrMsgPxNormal:gLib/This returns an error 511 if glib doesn't existFxW gLibInstalledn*fEnd{ErrMsg:CrLfj j j j %The Library [gLib] is not intalled...CrLf*Please re-open the document that carried [MacroL] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0 gLibInstalledfEnd /0NulldnumAgainExt%/0Dir) gLibInstalledmName*mEndNull/ExtStart6Building list...<2OrigCountMS Word ChooseDirectoryDNumyDNumOrigCountdNum5DirDNum#IDNumOd MS Word ChooseDirectoryDir gLibfStri,-&2d EFDirind/d|@zDirind/d| ADiri Choice gLibfStri&i,-*OAgain7%ExtMS Word ChooseDirectoryxExt jComma,xExtExt3CountgLibCountCharExtComma5ExtCountdef doc-extensiondefdefDOCExtdef!%Ext NullCountJtExtExtY#iCount0nExtiglibChewtExt,& ExtExtReDrawDir6Select option...#O?"ChooseDirectory 2g &Directory/Document: *DLpZDirDir'lgPE&xtension:*MZSExtExt"hsDAction) &Open dir/doc.&New file this dirCfXb%dh)s]Configure24&Edit item description14&Add item description04&Delete current item!6X&Help]?i5dlg4dlgExtExt ErrChoice?dlgChoice *mEndV/Ext,DOCdlgExtAddExtextdlgExt'Again*AgainAChoice'UgliblcHelphc GTOOLS.HLPu*ReDrawDirChoiceDelete item RemoveItemdlgDir*StartChoice%dEditStringDnumY D MS Word ChooseDirectoryDNum gLibfStrDNumh*Startu8}ChoiceDirdlgDiridlgDirdEditStringId DDirinD/d|? DirinD/d|F O *RedrawDir "h ChoiceNew document ,-*ErrMsg" dDirDlgDir /d+ Marker+ dglibchewd+ /d;dglibchewd;8IA/d.dglibNoSlashglibGetPathd Xd FileNew*mEnd/lg4F>lg;/DirdlgDir+ Multiple DOCS%TempDirdlgDir!/Temp+ 9Index/Temp+#VFlTempIndex)zTempnTempIndex" FTemp*MEndZ/DirdlgDir\*/DirdlgDir; X DirlDirdlgDir/DirdlgDir\*Z XDirYg lgnDirdlgDir/DirdlgDir\* /{Down} ,-*MEnd ?lg ,-* ,-*MEnd Flg*MEnd<(/DirdlgDir;Multiple pathsMb/DirdlgDir\*dlgExt defDtempglibReplaceDirdlgDir;|WglibReplacetemp|\*.dlgEXT;\*.dlgEXT< )C DirdlgDiroxFileFind*MEnd)/DirdlgDir.,-*ErrMsgFDirdlgDir,-**mEnd ,-*ErrMsg&*XDirDlgDirElg*.dlgExt/{Down}t,-*MEnd?lg,-*,-*MEnd Flg*MEndErrMsgJ%Error changing directory. Edit path?ChooseDirectoryDsDirinD/d|?DirinD/d| Err*StartmEndEditStringi%,-&;idNumMxNew Item_ exDiriw,-*fEnddStart0O?-ChooseDirectory: Edit Item QDesc2g4 points to the path.../0g The description...^QBDir1W&Select Path/File...!hHelpKgI.If the description points to a directory then L%gS/enter the full path with no trailing backslash:,qg6C:\WINWORD\DOCSKgQ.If it points to a specific document then enter0gthe full path name:8g6 C:\WINWORD\DOCS\JOURNAL.DOCNPg w1If you enter two or more paths separated by semi-Pg o3colons, FileFind will be run with the string as the2g Search specification:7 g5C:\WINWORD;C:\WINWORD\DOCSWegXtf)gX?5Dlg4idNum dlgDescidlgDirx dlgDirxiDiri,ili/i[DdlgDesciU^Choice?DlgzidlgDescXDlgDirChoiceEditString*fEndChoice+ddoc-pathdf*[email protected]DDf xxfQ*dStartiiNullG~%The discription field cannot be emptyEdit Description0*dStart!I X /X+O/i [multiple docs]i i [multiple docs]h/X.E/i [document]i i [document]/X;O/i [search path] Ii [search path]//X\KM/i [directory] Ii [directory]5EditStringI|gLibNoSlashXQMS Word ChooseDirectoryDirgLibfStriI|X *dStart3RemoveItemnumf6Removing item (Num ThisDesDirnum ThisDirDirnumThisCountdNumdnum#xnumdnum/DirxDirx/DirxDirxj2MS Word ChooseDirectoryDirgLibfStrxDirx|Dirx& DirNumDirNumAMS Word ChooseDirectorydNumgLibfStrdnumigSetProfileString("MS Word ChooseDirectory", "Dir" + gLib.fStr(num), Dir(Num, 0) + "|" + Dir(num, 1))DMS Word ChooseDirectoryDirgLibfStrdnumAddExtextadd/[email protected] extension nAdd from list...DMglibSplitextnaddFirstSecond>ExtglibreplaceFirstSecond,,,(ExtglibTrimExt,Again 46Adding new extension Add to list...*Ext NullExtExt,OExtExtAdde3nMS Word ChooseDirectoryxExtExt75If Not gLibInstalled(CallingMacroName) Then Goto bye------------------------ gLibInstalledMacro& ,-*ErrMsgP= xNormal:gLib/This returns an error 511 if glib doesn't exist x gLibInstalled *fEnd ErrMsg: CrLfj j j j !%The Library [gLib] is not intalled...CrLf*Please re-open the document that carried [MacroL] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0! gLibInstalled!fEnd""" ^ ControlRun macro -- This macro replaces the standard ControlRun dialog with something useful.aMAINk/dlg4O? Run ,g Command Line:Q h /b&? Cli&pboard*BW&Control Panel*qq&Dialog Editorf?C?dlgdlg dlg*Byec*bye+13c:3BclipbrdT3\controln3vmacrode.exe3 1bye MAIN Ver1.1mNameCopyMacroActive4hc(= gLibInstalledmName*byei{MagicMagic*byeCurDoczU"MacronCurDoc/CurDoc: Macro+CurTemplateGetTemplatecontextBcMacroscContextbbCMacros3There are no macros in the current context/templatemName0*bye/rgMacroscMacros#icMacros,rgMacrosjiContext4%MacrorgMacrosj CurrentMacjTjj& fTemp CurTemplate,Magic/NamesMagic#iMagic.NamesiGetTemplatedummyp/TempNamesi,Namesiduplicate TempTempNamesi,^&ig#iMagic9Namesi duplicateCountCount&i/nCountj#iMagicONamesi duplicatenjNamesijj6&= C/NO)\NGetTemplatedummyzCurDocAgain)O?mname Ver?g Macros in: [CurTemplate]5LwXrgMacrosMacIndex.Eg| Copy macro(s) to:,rLw7NWindowf+X+Copy &Selected&Copy &All"+X&Help+CSWEncryptHider?/dlg4dlgMacIndexIndex+MacrodlgMacIndex CurrentMacdlgWindowWinIndexChoice?dlg CChoicegliblcHelphc GTOOLS.HLP*AgainLNWinIndexdlgWindowfHidedlgHide+xMacrorgMacrosdlgMacIndexMacro&dlgMacIndexcMacrosIndex !IndexdlgMacIndexChoice*bye#ChoiceJ8CopyMacroCurTemplatendlgWindowMacroHide q*Again >CopyAllCurTemplatendlgWindowHideCurDocbye:CopyMacrobsNamebdNamemacroencrypt%sNamebsName:Macro%5dNamebdName:[email protected] "MacroCopy " + sName + "," + dName + "," + Str(Encrypt)#[email protected] [Macro] from sName to dName . [email protected] /bsNameNORMALContext Contexts /ScContext zcContext #xcContext, sxxContext4 sNamebsName:xContext4.dNamebdName:xContext"bSnamednameHidesnamedname6x( of (z&xGetTemplateContextStopContext"7tlz/z:ZtGlobal"rtNORMALContext /tDOCThisz,!/zt" " . tvC ThisV ^ /TDOT;{ Tlz/z. /tlg4 >tlg tTlgR!t3tvH OttlgRdtNORMALcONTEXTGetTemplatet fFileNamebblb!/b\ 3bmbb/b\/"5 fFileNamebFTV gLibInstalledMacrov,-*ErrMsgxNormal:gLibx gLibInstalled*fEndErrMsg7CrLfj j j j %The Library [gLib] is not intalled...CrLf*Please re-open the document that carried [MacroL] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0 gLibInstalledfEnd%' :/0OutNameName LineArrayCount5MAIN?"CreateOutlineDoc Guy Gallo, 1992dOtmnameCreateOutlineDochcK gLibInstalledmNamegLibIsMacroPanemName*Abort ver2.2CrLfj j NullNamez 2Note^[email protected]^5Mz"^[?d{xxbyyb FChh VO/Dlg4i>dlgHIDlg',SADlg>>i'\6gOutNamelv/v.OTL5dlg 4>dlgTemplatedlgRTemplate = "NORMAL"Template = "OUTLINE" Display.(O?WCreateOutlineDoc v VER3hg Outline Document &Name:Q <7g 7Outline Document &Template:Q EiTOptions:1=S}Keep &Footnotesfnt3rSKeep &Annotationsant-gExpand to &Level: QLevelezXfX!5X&Help\?h5Dlg4DlgRTemplateDlgOutNamedlgLevel9,-*ByeChoice?Dlg,-*OutNameDlgTemplateDlgR"*AnnotationsdlgAnt FFootNotesdlgfntchoice*ByeB}Choicegliblchelphc GTOOLS.HLP*DisplayVOOutLeveldlgLevelNothing*Bye 0 xx @xxyyPRERTemplateq xxyy[?z,-*ForgetItHOutName,-* NameCountArraySize5 LineArrayCount;GL) StuffArray]) PasteArrayn) ConvertFieldsFootNotes CopyFootnotesG OutNameG%[Note"*,AnnotationsACopyAnnotationsS YOutNamemG[AntRenumber *ByeForGetIt bye Name* Old_ViewOutlineVOA hFCT aVDb i'HI>SA [?z Abort CopyFootnotes Name G Note^2ZNote(!?Old_ViewOutlineToggleYfkByZNote H AFootNoter!f3OutNameGG2YHolder_Place\Holder_PlaceZNoten4FootNotef : sHolder_Place : NameK Old_ViewOutlineTogglee :s ZNote " OutName2 Holder_PlacesHolder_Place Name!*,CopyAnnotations ANameQG bNote^5pZNote!Old_ViewOutlineTogglegB ZNote3 QHd kA|FootNotergOutNameG2Holder_Place\Holder_Place,ZNoteEQod4FootNotewg:sHolder_Place NameOld_ViewOutlineToggle:ZNote!" 'OutName2:Holder_PlacesHolder_Place Name"Old_ViewOutlinef_Outlinef_Outline2 Old_ViewOutlineToggle+ 2cln StripCRLFstCrLfj j mstCrLf0 StripCRLFlstst StripCRLFStStCrLfst,:< ConvertFieldsOStart^19 _End^21mG~ZStartRenumber!j 909;B:XdZStart"GOutLevelx13x313233 34335>M36Xg37r38393 1Nothing temprTempNullA5 Nothing showing in outline mode.CreateOutlineDoc0yNothing NukeAllFieldsG[^196?A StuffArray QStuff Array_Xf First levelwG:9 \\Para1 LineArray StripCRLFr! LineArrayD xx!F(6Gathering text from heading (x F\\ParaYSelroSel jUSelSelnSel6Removing hard page break...4 LineArrayx StripCRLFSel% LineArrayxD)xx7 (>6 This is a section....removing...js" z Last levelH& LineArrayxr:9& LineArrayxD Debug stuffMsgBox LineArray(x - 1, 1)a'_MsgBox StyleName() + "Count (Array dimension) : " + Str(Count) + " Stuffed paras: " + Str(x) PasteArrayPaste array to OTL document OutName /sdlg4 >sdlg Baksdlg9FastsdlgZ"P Force save stuff to our settingssZ#xCountxGQ6 LineArrayx - LineArrayx : kx>. LineArrayx 4 LineArrayxg:Cs LineArrayx | LineArrayx5& Nuke the last InsertPara+& Nuke the extra that all new docs have]# LineArrayx | LineArrayx for good measureReset save stuffBakZFast ArraySize?6;Counting carriage returns in the EditSelectAll'd outline...2 A,-*fEnd:WCRglibCountCharrj j /-Sect = glib.CountChar(Selection(), Chr(12))ArraySizecrSectfEnd'ErrArraySize CountLines CountLines,G=xD!F*Vr xx%6Counting headings: (x" CountLinesx gLibInstalledMacro,-*ErrMsgP xNormal:gLib/This returns an error 511 if glib doesn't exist xq gLibInstalled *fEnd ErrMsg: CrLfj j j j %The Library [gLib] is not intalled...CrLf*Please re-open the document that carried [MacroL] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0! gLibInstalled!fEnd! Guy Gallo, 1992 DeleteIdleStyles-/0TempStringEMAINIO gLibInstalledmNamegLibIsMacroPaneMacro*ByeTempStringThis macro will permanently remove any user-defined styles that are not active in the current document.^^This does not remove styles from the underlying template.^^Do you want to [email protected]DeleteIdleStyles*ByeThe standard stylesTempStringHannotation reference,annotation text,footer,footnote reference,footnote Rtext,header,heading 1,heading 2,heading 3,heading 4,heading 5,heading 6,heading 7, _sZheading 8,heading 9,index 1,index 2,index 3,index 4,index 5,index 6,index 7,index heading, UPline number,Normal,Normal Indent,toc 1,toc 2,toc 3,toc 4,toc 5,toc 6,toc 7,toc 8 -EnvelopeAddress,EnvelopeReturnO/SC,k6(Gathering all styles in this document...#xCsxDx&#CCG> Checksc See if the style is built in4EscZ LogLog!LogDidn't find it,-*Errmsg*|scSo delete it/L6Deleting idle user style: scz '6Found user style: sc 06Can't delete built in style Sc&c#6Done removing idle styles. G1*bye;;ErrMsg Encounted a problem with style: ScvBye|CheckSty)n/TempStringSty+ncheck check gLibInstalledMacro3,-*ErrMsgPJxNormal:gLib/This returns an error 511 if glib doesn't existx gLibInstalled*fEndErrMsg:CrLfj j j j %The Library [gLib] is not intalled...CrLf*Please re-open the document that carried [MacroL] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0 gLibInstalledfEnd MAIN mName EncryptMacroshc-First:IndexE"CZ(Command not available in macro editor...mName0 *theEnd/Dlg4>dlgtdlgROtNORMAL SrcContext SrcContext1=Template; 0=Global?ttvacMacrosc SrcContextRcMacros )There are no macros available to encrypt.mName*/rgMacroscMacros#icMacros>rgMacrosji SrcContextjjE&KAgain!SO?NEncrypt Macros.g &Macros available:-L )VrgMacros%g yL Template:7gdygLib fFileNameEXTt8fX-XEncrypt &Selected2FirstEncryt &All2SAutomatic Sav&eSave?5Dlg4!dlgIndex4Choice?DLGMChoice*TheEndmFirstFirstIndexdlg&ChoiceEncrypt selectedQt:rgMacrosdlgt:rgMacrosdlg *Again #xCMacrosH;t:rgMacrosxt:rgMacrosx"|6x( of (cMacros&x,-&dlgSaveITheEnd MAIN mNameEncryptTemplate-& gLibInstalledmName* mEndTCurDirP.(kCurDirgLibNoSlashCurDir^6ZSelect Template to encrypt. Note: all macros in the selected template will be encrypted./glibGetFileNamedir*.DOT!bsNamedir Name7bdNamebsNameKaFbdName|Context"/ScContextzcContext#xcContext+sxxContext3sNamebsName:xContext3EdNamebdName:xContextxSnamednamesnamedname6x( of (z&xW6SMacros in the newly opened template have been encrypted. You must save manually...gLibInstalledMacro,-*ErrMsgPxNormal:gLib/This returns an error 511 if glib doesn't existx gLibInstalled*fEnd1:ErrMsg:CCrLfj j j j w%The Library [gLib] is not intalled...CrLf*Please re-open the document that carried [MacroL] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0Q gLibInstalledefEndlz| MAIN vpb/dlg4i8>dlgJvadlg>\gb2O?6FiddleNotesh !\FunctionR Function=i Change &footnotes to annotations=Ei# Change &annotations to footnotes0i4Nuke all f&ootnotes2iENuke all a&nnotationsepjXfjX5?A5dlg4Z,-*Byem? dlgz,-*ChoicedlgFunction13Choice3 CopyFootnotes3 CopyAnnotations3 NukeNote^2 3 NukeNote^5&3 21?byeENP CopyFootnotesc}H\F-8\StartOfDocument\Sel*Bye sGTempG !8GTemp\Sel F\F+WStartOfFile*outwFormatRightThisNoter fZThisNote/fdlg4w>fdlg fdlg :+">ZrH 9FootNoter,FootNote StripCRLFFootNote %f8 EditClearFoZ4FootNote ng"OutCopyAnnotationsG Note^5ZNote!gB CountClearFields?CountcountSxr k!x zy:#xmryx"9FootNoter+FootNote StripCRLFFootNote"g6 EditClearCnT4FootNotegfy:ZNote"ClearFieldsGh*[ ^19PAGE \#7hJBWbNukeNoteNotewNote^2tmpFootnotesType tmpAnnotationsTypeVAre you sure you wish to delete all tmp?Delete tmp$$8 H H Type\F \A-z 8\StartOfDocument\Sel *Bye sGTemp G !8GTemp\Sel "Type 7\F+H O\A+iFormatRightw EditClear$"sByesGTempStartOfFile$x8\Sel\StartOfDoc-xxStartOfFile)79;FormatRightL:\! SameFormatn:"9 SameFormat/fdlg4w>fdlgf$fdlg!p$fdlg" bfdlg$
ifdlg%,
sfdlg2A
hfdlg'S
kfdlg&h
cfdlg3{
ufdlg(
cofdlg#
po$fdlg+ sp$fdlg-

SameFormatH
couckhsib
[email protected]$p$po$sp$
SameFormataoq
StripCRLF$st$CrLf$j j mst$CrLf$5 StripCRLF$lst$st$
StripCRLF$St$&(*
MAIN

GFixes 1.1,-&R-"62You are in a macro pane. Cannot change templates.*ByePK63You are in print preview. Cannot change templates.*Bye/dlg4>dlgS$dlgR6.This document is actually a template itself...t,-*Bye?dlgt$dlgR% Tt$t$NORMALdlg TIDo you want to merge the new template's styles into the current document?FileTemplate$| gt$.Bye
/0g$MAINREM Version 1.52/[email protected]* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *31* * * * * * * * * * * * * * * * * * * * FUNCTIONSCA* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *CheckLib:8********************************************************)S'IMPORTANT IMPORTANT IMPORTANT IMPORTANT7}5Note: IF YOU CHANGE ANYTHING IN THIS LIBRARY CHANGE$"THE FIRST LINE OF THIS FUNCTION TO
ver = 1.53:8********************************************************)verRQ?-66gLib version(ver( installed ...gCheckLibverx
- - - -!Chew$Source$Marker$$Index/SourceMarkerIndexCSourceSource -CnSourceIndex03cMarkerSource;_SourcenSourceIndexMarker SourceChewC - - - -CountCharscCount Index!/Indexsc1Countcount+EIndex/Indexsch"nCountCharCount - - - -fExist FullPathName#A P FullPathNameAfExist fExist & - - - -1 fFileCountFileSpecQCount files in a directorynAPFileSpecCount !A CountCountAP" fFileCountCount - - - - fFileNamea ba!/b\ 35bmbb/b\a"7g fFileNamelb/b. - - - - fFileNameExta ba!/b\ 3bmbb/b\ "& fFileNameExtbB P - - - -[fStrx"nfStrnkx - - - - GetDocDirNew GetDocDir 3/23C" GetDocDir6This is a macro...*fEnd/dlg4O 8>dlgK GetDocDirdlgh\nfEndu - - - -.GetFileFullNameDirDefaultCurDirP.,-&Dir XDir )Dir XNoSlashDirBK,-*]/Dlg4F s>dlgdlgDefaultGetFile?dlgDefaultdlgDirP."FullNameDirDefault XNoSlashCurDir' 5 - - - [email protected] GetPathS1W /s\GetPath*fEnd SourceS !mSource \5 SourcelSourceSource " GetPathSourcefEnd - - - -+GetTemplateB"2Xtlz/z:tGlobaltNORMAL /dlg4>dlgtdlgRttv*3GetTemplatetG U - - - - gLibInstalled)p'Purpose: To check if gLib is installed Example:75If Not gLibInstalled(CallingMacroName) Then Goto bye gLibInstalledMacro,-*ErrMsgP xNormal:gLib/This returns an error 511 if glib doesn't existj x{ gLibInstalled *fEnd ErrMsg: CrLfj j j j %The Library [gLib] is not intalled...CrLf*Please re-open the document that carried [MacroL] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0 gLibInstalledfEnd - - - [email protected] simple function that asks a question and returns true or falseLUJThis function has a couple of advantages over building the MsgBox yourself+)1) it takes one less parameter (the icon)ig2) it looks for the ^ character (the caret) and changes any instance to a carriage return/linefeed pair 8Crj j AT/Msg^MsgReplaceMsg^Cr2MsgTitle$$gQuery
- - - [email protected] a string containing an description of the passed keycodeZHasKeyMacro$Context4Returns true if the macro named has a key assignments#i$7ContextFMacro$iContextKyCode=iContext&HasKeyKyCode$Inject$S$New$Place&Source$S$U4Inject$ nSource$PlaceNew$nSource$Placez - - - -IsMacroPaneMacro$" &Macro$Macro$
this macroYou cannot execute Macro$d when the focus is a macro editing window. Try WindowArrangeAll and place the focus on a document.Warning0IsMacroPane IsMacroPane - - - -KeyDescription$KyCode
Des$OldKeyCodeKyCode#KyCode:KyCodeKyCodeSDes$AltDes$iqKyCodeKyCodeKyCodeDes$Des$ShiftKyCodeKyCodeKyCodeDes$CtrlDes$(KyCode0KyCodeZ2KyCode|IKyCodeo:aDes$Des$FnkKyCodeoKyCode_Des$Des$NumPadKyCodej*Des$Des$kKyCode 9Des$Des$n*+ -./KyCodeiFQ Y13KyCodep32Des$Des${BS}32Des$Des${Tab}32$ Des$Des${KeyPad5}32
Des$Des${Enter}-32?Des$Des${Esc}[32 mDes$Des${Space}32!Des$Des${PgUp}32"Des$Des${PgDn}32#Des$Des${End}32$)Des$Des${Home}F32%XDes$Des${Left}u32&Des$Des${Up}32' Des$Des${Right}32(Des$Des${Down}32-Des$Des${Ins}/32.ADes$Des${Del} ]3 lDes$Des$~1$KyCodeKyCode6Des$Des$n[\]'KyCode$KyCodeKyCode9$Des$Des$n;=,-./KyCodeW @_Des$Des$
"Des$Des$jKyCodeKeyDescription$Des$KyCode
OldKeyCode' - - - -#"ListMacros$ContextAllFLISTMACROS(CONTEXT,ALL)53Displays a list of macros in the specified context.IGif All is non-zero, the list will include all built in commands as well+)Limitation: the list will not be sorted.)/m$cContextAll4zcContextOz$kz^All7l6/Please Wait: Gathering macros and commands... :62Please Wait: Gathering macros in this context... '#x$cContextAll3m$xxContextAllK&xUAgain#][email protected]$ Macros'L
m$fMXe/X?/dlg4Choice?dlg.1choice ListMacro$*fBye"bListMacros$m$dlgfBye
- - - -LoopMsgMessage$%O?Loop/Debug Messageh l$gcMessage$4exX*OOyw&Quit the loop?/Dlg4Choice?dlgChoiceLoopMsg LoopMsg - - - - MacroExistMacro$/ ,-*ErrMsgF xMacro$b xs MacroExist MacroExist *fEnd ErrMsg MacroExist fEnd - - - - NoSlash$Source$8!!lnSource$Source$\6?!Source$lSource$Source$m!"t!NoSlash$Source$!
! - - - -$!Replace$S$Old$New$!Source$S$!!/Source$Old$8!A$lSource$/Source$Old$K$"B$mSource$Source$a$old$$"Source ANewB|"""ReplaceSource" " - - - -"ReverseSourceMarker7"SplitSourceMarkerFirstSecond-"ReverseSecondMarkerFirst'# 5# - - - [email protected]# SameFormat4Returns true if the selection is all the same format#/fdlg4w#>fdlg#ffdlg!#pfdlg"#bfdlg#ifdlg%sfdlg2hfdlg'*kfdlg&?cfdlg3Rufdlg(gcofdlg#ypofdlg+spfdlg- SameFormatHcouckhsib [email protected]fpposp SameFormat8% F% - - - -Q%TrimSZapCharo%SourceS1}%!lSourceZapCharZapChar6%SourcenSourceZapChar%"y%!lnSourceSourceZapCharZapCharZapCharZapCharCH&SourcelSourceSourceZapChar&"&TrimSource&C&A* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * &*******************SUBROUTINESC'A* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"O'AboutBoxMacroPrice m'Trail( j'One'[email protected] 'g)One"'g,Trail"'gF,Trail"(g{,Trail"<(g, Trail([(ge Gadfly Macro(h0/P%(gV;K Guy Gallo)(gVHk 219 East 69th.(gVU New York, NY 10021*)gVh{ CIS 71171,3555D)eqX)?l)/dlg4)?dlg) ) - - - -)ActivatePartialDoc)*sEnd)H +)!/zDoc1*@>*H6No such window as Doc*sEnd*"*sEnd* * - - - -*DisplaygLibHelp *Subs R*MActivatePartial(Doc);DisplaygLibHelp;gMsg(Msg,Title);lHelp(HelpFileName); & +!lcHelp(ContextNum,HelpFileName); =I+;Pause;Split(Source, Marker, First, Scond);Wait(Seconds) +Func ?+:CheckLib;Chew(Source,Marker);CountChar(Source, Char); 1+,fExist(FullPathName);fFileCount(FileSpec); P,KfFileName(b);fFileNameExt(b);fStr(Num),GetFile(FullName,Dir,Default); T\,OGetPath(Source);GetTemplate;gQuery(Msg,Title),Inject(Source,New,Place); M,HHasKey(Macro,Context);IsMacroPane(MacroName);KeyDescription(KeyCode); ?-:ListMacros(Context);LoopMsg(Message);MacroExist(Macro); dE-bNoSlash(Source);Replace(Source,Old, New);Reverse(Source, Marker);Trim(Source, ZapChar)<-:Put subs in array using GlobalArray -- just to have around-GlobalArraySubs;-./fArrCountCharFunc;'.Put functions in [email protected]/Func;[.Countf.!Index3w.fArrCountlFuncIndex(.FuncnFuncIndex.Index/Func;.CountCount.".fArrCountFunc /g<>(/fArr <>7D/O? gLib version fStrCheckLib/f X(/L Igsub0/L ZfArrfunction /XHelp!"0DXAboutI0?U0/Dlg4/l06+These are the subs and functions in gLib...0Choice?dlg.0ChoicelcHelp3 GTOOLS.HLP%0ChoiceAboutBox1 1 - - - -'"1GlobalArraySourceMarker5E15gCountCharSourceMarker'q1Index/SourceMarker1Count1!Index31gCountlSourceIndex-1SourcenSourceIndex(2Index/SourceMarker#2CountCount82"?2gCountSourceU2 ^2 - - - -i2gMsgMsgTitle&2A simple sub that displays a messageG2EThis Sub has a couple of advantages over building the MsgBox yourself+2)1) it takes one less parameter (the icon)i3g2) it looks for the ^ character (the caret) and changes any instance to a carriage return/linefeed pair 3Crj j A3/Msg^MsgReplaceMsg^[email protected]=====================4Declarations used by lcHelp'74%-------------------------------------_4AGetFocusPUser4CT4AWinhelpPUserhWnd4ClpHelpFilewCommand4CdwData4D4C)5AGetParentPUserhWnd4C4C?F5A LoadCursorPUserhInstance4ClpCursor4D4C(5ASetCursorPUserhCursor4C-5A GetWindowTaskPUserhWnd4C4C!6lcHelpaContextNumha;6_ - - - ----------------------------------------------------------------------------------------6SUBROUTINE:lcHelp/6-PURPOSE:Calls help file with context number-6+' WexTech Systems. Used with permission.a7_ - - - ----------------------------------------------------------------------------------------s7IDC_ARROW'7 sCurWindowGetParentGetFocus,7sWordHandle GetWindowTaskGetFocus77Winhelp sCurWindowhaContextNum28sWinhelpHandle GetWindowTaskGetFocus+8!sWinhelpHandlesWordHandleP8help not active yet3h8sWinhelpHandle GetWindowTaskGetFocus8"38sArrowCursor LoadCursorIDC_ARROW 8SetCursorsArrowCursor48! GetWindowTaskGetFocussWinhelpHandle9hang out!9SetCursorsArrowCursor89"?9G9 P9 - - - -[9lHelpHelpNameq9)lcHelphelpname9 9 - - - -9NukeToolBara9_New and dangerous. Not documented. This routine simply replaces all the icons on the current #:!templates toolbar with a space...7:#xH:x (y: [space]T:&: : - - - -:NukeTopMenus:Null :#x:_xNull;&x; ; - - - -;Pause(/;7Press ENTER to continue...OKtY; b; - - - -m; ResetTopMenus ;/M;m&File;m&Edit;m &View;m&Insert;mForma&t;mT&ools;mT&able\< - - - -TgSameFormat<:="=9= = - - - -"/= SetTopMenuIndexNameM=_IndexNameg= p= - - - -6{=SplitSourceMarkerFirstSecond'=Index/SourceMarker=,-&=Index=FirstSource > 1>FirstnSourceIndex:9>SecondnSourceIndexMarkerj>s>,-*> > - - - ->Waitn>#xn >&>> MAIN GLiblHelp GTOOLS.HLP- /0bContextMAIN "ShowShowKeys MAltYShiftfCtrlrO/Key.#x!KeyxjxA&#x#!Keyxjx&#x$$'!Key$xjx&!Key$(j;6Key$)j=KKey$*j[Key$+j\uKey$,j]Key$-jKey$.j'skipVer$2.21mName$MacroKeyhcL
gLibInstalledmName$glibIsMacroPanemName$*TheEnd
3ALLdlgtt$dlgRT$Context,m$glib fFileNameExt$vTemplatet$NORMALContextm$
NORMAL.DOTTemplate) /m$DLGR.DOTLTemplate\dagain lChoicexg$Show &Commandstemp$\ALLtemp$0 and Global Commands (this takes much longer)...g$Hide &CommandsNORMAL.DOT B$M$&q5S$cContextALL66)Please Wait... Building list of macros...temp$KcContextALLContext Context*Again"$cMacroscContextAllI#x$cMacros1_s$xxContextALL&xsAgain,-*
Shown6gGetting current assignments... this could take too long to be worth it (if so, uncheck Show Current)...&+#x$cContextALL8TKeyGLibHasKeys$xContext-}Temp$GLibKeyDescription$KeyPad$-- EKeys$xs$xPad$Temp$&x MacroKey Display'6#Select Action or key combination...&BO?Macro Key ver$3zgMacros: (in b$)'Ls$LB+hCtr&l+Ctrl+VSF8I&Shift+Shift g
&Key/L#A'Key$KeyIndex.JS|Special keys1eIs|'I|&Done2'II|&Help3-tI|&ManageKeys4)m&Remove5%g$6?Template8Show Other$7-= S &Show CurrentTr ?~ 5dlg4 dlgTShow dlgLBmIndex Choice?dlg mIndexdlgLB SpecialChoice RemoveChoice! ShowCommandsChoice)ShowOtherChoiceBBChoicegliblcHelphc GTOOLS.HLP*Display2ChoiceChoice*TheEndChoice0gLib MacroExistNormal:ManageKeys- ManageKeysListKeysContextb$ H!glibgMsg(The macro [ManageKeys] is not installed.mName$bk*Againx4cdlgctrlsdlgshiftadlgaltdlgT ShowShow Show/ShowKeysnkShow+ ShowmIndex*sAgain= E ShowCommands\ ALL ALLq *Again~ ShowOther# Context Context *Again 1 Macro$dlgLBContextALL
Special*AgainKey-Illegal$:|[email protected]$%^&*()_+{}<>?j"$FTheKey$Key$dlgKeyIndexdRemove/tKeygLibHasKeyMacro$ContextKey-Desc$GLibKeyDescription$Key
,-*+RemoveKeyMacro$KeyDesc$ 0No Key assigned to Macro$mName$gSpecial$x6 Select special key combinaion...-O?MacroKey: Special Keys Bh Select Key Combination for: Macro$&R
SpecialKey Ai<9&Esc giN;&Tab#ifiNJ&End!1ii,f&9 0i5f1&0 Wi/f1&1 ~iL5f1&2&S6F&AltAlt(SF&CtrlCtrl*SF&ShiftShift(e2]Cfmd?p5dlg44dlgshiftsdlgctrlcdlgaltaChoice?dlgChoice*AgainPrint dlg.SpecialKey,-*13dlg
SpecialKey
/32>KeyNumEsc
R32aKeyNumTab
t32KeyNumBS
32KeyNum
Enter
32KeyNum$Home 32KeyNum#End 32KeyNum!PgUp %324KeyNum"PgDn I32XKeyNum%Left m32|KeyNum&Up 32 KeyNum'Right 32KeyNum(Down 32KeyNum Space 32 KeyNumoGrey/ '327KeyNumjGrey* N32^KeyNummGrey- u32KeyNumkGrey+ 32KeyNum-Ins 32KeyNum.Del 32KeyNumNum0 32KeyNumnNumPeriod43$%FKeyNumdlg
SpecialKeyLg32 KeyPad53dlgAltdlgCtrlDlgShiftKeyNum KeyNume3$%KeyNumdlg SpecialKeyH3$*)*KeyNumpdlg
SpecialkeyP3 ]f1s Not special
13TheKey$3;KeyNum3=KeyNum3,KeyNum3-KeyNum3.KeyNum!3/,KeyNum<3GKeyNumW3[bKeyNumr3\}KeyNum3]Keynum3'Keynum3 KeyNumTheKey$1GKyCodeAlt
dlgAltShift
dlgShiftCtrl
dlgCtrl6;KeyNum KeyNum)It's a direction keyZuMsg$j j j j Legal direction key combos are: Qj j 2Alt (except Left/Right), Alt+Ctrl, and Alt+Shift.KyCodeCtrlK4+Cannot assign to a direction key plus [email protected] *AgainKeyKyCodeShiftL,Cannot assign to a direction key plus [email protected] *AgainKey KyCodeCtrlShiftP0 0Cannot assign to a direction key plus [email protected] *AgainKey8 KyCodeAltKeyNum%KeyNum'H (Cannot assign to Left or Right plus [email protected]! *AgainKey'[email protected]!!Cannot assign to a direction [email protected]!*AgainKey!!!KyCodeKyCodeKeyNum$!KyCodeAltCtrl .A!#Cannot assign a macro to CtrlAltDelMacroKey @!"*AgainKey1"h9"Desc: GLibKeyDescription$KyCode KyCode: kKyCode Macro: Macro$ -"MacroKey Context kContext",-*"CheckKeyKyCode"6Assigning key...7#ContextMacro$KyCoded#l#Byer#mIndexmIndex(#mIndexcMacros mIndex5#3MsgBox Str$(mIndex) + " of count " + Str$(cMacros)#*again#TheEnd)# ************End of Main MacroKey#$%$CheckKeyK$;$6 Checking for prior assignment...e$CheckKeys$ck7context$ck
$#i$ck!$K=iContextL$[GLibKeyDescription$K] is already assigned to L% iContext . Overwrite?MacroKey: Warning$i%CheckKeyz% %CheckKeyi%% %CheckKeyi%%&% %CheckKey%%%+%RemoveKeyMacro$KyCodeDes$c&Macro$is assigned to [Des$]. Delete?MacroKey:Remove keycode$8|&ContextMacro$KyCode8&ContextMacro$KyCode*' 0'7'?'H'J'AscDigitk$&a'k$0k$9'AscDigitk$' 'AscDigitk$''''
gLibInstalledMacro$',-*ErrMsgP(xNormal:gLib/This returns an error 511 if glib doesn't exist](xn( gLibInstalled(*fEnd((ErrMsg:(CrLf$j
j
j
j
(%The Library [gLib] is not intalled...CrLf$*Please re-open the document that carried [Macro$L] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0)
gLibInstalled)fEnd))
MAIN
OK
2>>=N
VK$riIllegalString$j#x $/1IllegalString$IllegalString$jx&x#x :[email protected]$IllegalString$jx&xyIllegalString$)#x$y09Illegal$nIllegalString$x"a/K$Illegal$"!/K$Illegal$+K$
NoIllegal$K$Illegal$"&X*k$K$lk$ K$gLibTrim$K$_!K$NoDup$K$2DoMarkk$>byeENPDoMarkK$,-&=vs lEdit bookmark: MakeBookK$" NoIllegal$K$Illegal$
Separator$_2A$lk$/K$Illegal$7'B$mk$k$a$-Q NoIllegal$ A$Separator$B$vNoDup$T$/bkmk$Ax#i$A"bkmk$iBi#8BiT$1x'BT$T$mkxc @kT$lT$t$mkxxx&iNoDup$T$
GJG MakeWordBook v 1.1MAIN%O5K
NAYBj
rK$rP/k$K$j K$lK$k$!!/K$j 3A$lk$/K$j 8B$mk$k$a$BK$A$_B$X"_K$NoDup$K$pslk$!6BookMark K$
inserted.\\EndOfSelbyeNoDup$T$/bkmk$A&x-#i$A"Lbkmk$iBi#n8BiT$x'T$T$mkx @T$lT$t$mkxxx%.&i6NoDup$T$CQ MAIN mName$
ManageKeys(!
gLibInstalledmName$*ByeM"b/zGlobalContextWhere$Global Context /dlg4
2>dlgEdlgRNORMALgContextvWhere$Global ContextdlgRWhere$v Where$dlgR !ListKeysContextWhere$0Bye6?#AListKeysContextWhere$hc$iWhere$Where$TemplateAgainkCount7ContextRkCountNo key assignments in Where$ManageKeys*Bye5Key$kCount/5KeyList$kCount-K6)Collecting key assigments... please wait.~#x$kCount1Key$xxContext'%If Key$(x - 1, 0) = "" Then ShowVarsLKey$xgLibKeyDescription$=xContext8!Key$xk=xContextvNKeyList$xKey$x : Key$x : Key$x&+Where$glib
fFileNameExt$Where$Where$Keys in: Where$
displayO?RListKeys&&g
= Where$.EL TKeyList$Key/qqCreate Key &List.../&Delete Selected...fqf!e&Help$?05dlg4IdlgKeyIndexZChoice?dlgpChoice*byeBChoicegliblcHelphc GTOOLS.HLP*DisplayChoiced Key$dlgKeyContextKey$dlgKeydR Key$dlgKeyContextKey$dlgKeyIndexdlgKey(indexkCount Index*AgainChoice. 6>+This makes sure there is only one paragraphw'&4Key assignments for Where$5l(3
4Macro!4KeyDescription"[email protected]#x$kCount!Vm$Key$x3mM$M$Either bogus or a style...?!4M$!4Key$x!4Key$x
&
)FormatTable
(
bye.
7
9
FormatTableJ
'5\
t'!$3 "%stg 3hijkl i95t'!$ 3"%stg 3khijkl )<
&
$3 1u ~ gLibInstalledMacro$
,-*ErrMsgP
xNormal:gLib/This returns an error 511 if glib doesn't existx
gLibInstalled3*[email protected]:RCrLf$j j j j %The Library [gLib] is not intalled...CrLf$*Please re-open the document that carried [Macro$L] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0 gLibInstalledtfEnd{ 2/0sName$dName$sDir$HideConfirm1MAIN
;Ver$1.5ImName$ManageMacrosbhc )k
gLibInstalledmName$*ExitsDir$DOT-PATH5"/dlg4>dlgt$dlgRy6uPlease wait... building template list: the more you have, the longer it takes... (hint: sort your DOT directory...);CountTemplatesgLib fFileCountsDir$\* .DOT /S$CountTemplatesA$PsDir$\*.DOTI !A$
ii**a$gLib fFileName$A$Gs$ia$Xa$Ph"nShowList+yO?Manage Macros v Ver$/g &Source Template: &M}s$3g&Destination Template: )@M}s$Dest%jk+vCopy &All)kEv Confirm &Each(k_v&List Macros!X&Copy0SX E&xecute onlyHide)Mgtk &MacroName: wQfmX!mX&Help?5dlg4sName$t$dName$!dlgsName$6dlgDestdName$IChoice?dlgbHidedlgHidesChoice *ExitsName$dlgdName$dlgDestMacro$dlgCchoicegLiblcHelphc GTOOLS.HLP*ShowListKdName$Select a destination template.mName$*ShowList#eChoiceMacro$ J*Enter the macro to copy in the edit box...mName$*ShowListMacro$
_gLibgQueryCopy Macro$from Sname$ to dName$?mName$ROpenFiles,_cMacrosName$dName$dlg
CleanUp*Exit *ExitChoice
CopyAllMacros*ExitChoiceConfirm
CopyAllMacros)*Exit5ChoiceN
ListMacros[*ExitgoExitv*cMacrosource$dest$Macro$&ssName$Source$:Macro$$sdNameDest:Macro"ssnamesdnameHide OpenFiles&H]dName NORMAL+&FileOpen sDir + "\" + dName + ".DOT"ERdNamesName NORMAL) 'FileOpen sDir + "\" + sName + ".DOT"@ ERsName] n CleanUp< sNameNORMAL dNameNORMAL &/1 CopyAllMacrosDOpenFilesOContext+\sNameNORMALContext/mcContextzcContextzkz#xcContext#MacroxContextConfirm,2cMacrosNamedNameMacroT #[MTitleConfirm macro copyO}MMsgCopy [Macro ] from Sname to dName?MType #0ButtonMMsgMTitleMType 13Button 3 Yes.* cMacrosNamedNameMacroN 3 pressed No&f 6 Macroskipped . . . 3pressed Cancel xz 3 1 &x CleanUp ListMacrosContext+sNameNORMALContextAOpenfilesL/mcContextnzcContextzkz#xcContext,mxxContext&x/[email protected] Macros in -sName&*L m!R4X&CopyxfMX?/dlg4,-*sBye?dlg0cMacrosNamedNamemdlgsByeCleanUp gLibInstalledMacro<,-*ErrMsgPSxNormal:gLib/This returns an error 511 if glib doesn't existx gLibInstalled*fEndErrMsg:CrLfj j j j "%The Library [gLib] is not intalled...CrLf*Please re-open the document that carried [MacroL] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0 gLibInstalledfEnd% MAIN #x"vx FvxM&S\ MAIN Macro PrintRange#!CheckLibMacro*Bye*HglibIsMacroPaneMacro*bye sVer2.2 /nC,H-AgainReverseStart&O?{Macro VerEg <)List pages to print, separated by commas.? #separate ranges with a hypen. e.g.2zg: 1,3-5,17,19, p1s3-p3s3#X&Range:Q~hN )'Zo&Even pages&>Zo &Odd pages4jS7y&Reverse print orderfZX5Goto Standard File &Print-~Printer &Setup...6?B/Dlg4YDlgA i/{Tab}{Choice?DlgChoice*byeReversedlgchoice even pages=ReverseReverseJumpPrint JumpPrintChoiceOdd PagesAReverse!SReverseJumpPrint l*Againz JumpPrintChoiceFilePrintSetup*againChoice FilePrint-Choicedlg Print range/,-*ErrMsgFadlg*WCountglibCountChara,y6countCountCount5NCountCount!/AC8NCountlA/ACCAmaaNCount-CountCountB"INCountAZCountf!NCount #~/NCountHJ FlNCount/NCountH CnnCount/NCountH7 E>JNCountNCountCountCount" *ByeErrMsg?,Theres An error in the print range. re-edit*Again *AgainBye#,[email protected]>dlg TotalPagesDlgo #pNumS TotalPages%\kpNumK6Printing page k" of Section k"MJd&pNumoxReverseJumpPrintsH5dlg4O>dlg TotalPagesDlgo 6 TotalPages, TotalPages S'G \k Totalpages "x TotalPages TotalPages & #pNum TotalPagess% \kpNumK 6Printing page k" of Section k"9JP&pNum[dCheckLibMacro,-*ErrMsg6xgLibCheckLib CheckLib*fEndErrMsg7CrLfj j j j %The Library [gLib] is not intalled...CrLf*Please re-open the document that carried [MacroL] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0fEnd MAIN \Registration 2\\PageDRWhile NextField() <> 0k UpdateFields{ CharRightWendJ1 ./0TypeCountAllCustomfCount-/0sDlg4wQMAIN[mName ReInsertNotesuhc# ~ver1.0. gLibInstalledmName* Abort5gLibIsMacroPanemName *AbortTyper TypeType(K 9 JReinsertU6done d*Byeo wsgLast vpb/dlg4i>dlgvadlg>b2':28*******************Change above to reset upon completionmAgain&uO?QmName Ver%h 3Re-insertR 'ih &Footnotes)i-w&AnnotationsFeXfX!6X&Help?5dlg4Choice?dlgChoice*[email protected] GTOOLS.HLP*AgainT*Bye_ esGTemp~GTypeCountFootNotesDoFootNotes DoAnnotationsByeVPbi>SA#sDlg!\FnkxCustomReinsertCustom Reinsert&&\FnkfCount/[email protected] \Reinserthq6Last one... DoAnnotations!8GTemp\Sel \A+ ReInsert"ReInsertCustomLast glibSelectSameFormatRight9nrM TogglePaneTypecen {B Zn :Last H 5 sdlg"J Z~ ; > 9 MsgBox Selection() EditCut !mrj 9"&Tempr=Print Str(Asc(Temp))W EditCleardtempType!rInsertReftempTempX CharRightReInsertB TogglePaneType-CountTypeClearFieldsCountcount1B?xrW!x Typeiy:#xmryxType"9 EditCut$$!mrj 9( "/ Temp$rF
6kTemp$_ EditClear$l
tempType!z
InsertReftempTemp$X : sBye TogglePanetswitch t fswitch gswitch)1:xnT$ n o
EndOfFile"
x8\Sel\EndOfDoc+2xxEndOfFile[iStartOfFile$x8\Sel\StartOfDoc-xxStartOfFile EndOfNote-:EndOfNote&46ClearFieldsGhZGlAll+z[ ^19PAGE \# rBEditCut$h-68:
StripCRLF$st$TCrLf$j j qmst$CrLf$5 StripCRLF$lst$st$
StripCRLF$St$CountFootNotesG'6 Checking for custom footnotes...!B!8GTemp\Sel
n\F+fCountfCount+r
Custom"6fCount(Custom
gLibInstalledMacro$,-*ErrMsgP(xNormal:gLib/This returns an error 511 if glib doesn't exist|x gLibInstalled*fEndErrMsg:CrLf$j
j
j
j
%The Library [gLib] is not intalled...CrLf$*Please re-open the document that carried [Macro$L] and either re-install or manually copy the macro named gLib to NORMAL.DOT. Check Library 0
gLibInstalledfEnd
MAINA
FileTemplateIn a macro pane*Bye/dlg4y>dlgt$dlgR6t$ d$fFileName$v8t$This *is* a template.*bye% O?Synchronize Styles'Bh 4 Direction lR >i%!Copy Document styles &TO templateMi00Copy &FROM Template styles into current document4gQ The current document is:4Rgd The current template is:gQ d$gdd
t$e:uXfuX?5dlg4 ,-*Bye3?dlg?,-*$P| gt$.dlgbye fFileName$b$!/b$\
3b$mb$b$/b$\"
fFileName$b$$MAIN /dlg4i'>dlg9dlg' dlg' [@idlgw MAIN ,-& =KZ 2mu~ MAIN /dlg4i'>dlg 9i Q dlgQ MAIN /dlg4)>dlg;dlg dlg [email protected] MAIN /dlg4i'>dlg9dlgE0j"fdlgE0.16j" dlgE0j" @idlg MAINA "6 Not available in macro editor...*mbye[/dlg4ix>dlg%hdlgBhh%vdlgCvvsWidthdlgE7sWidthsWidth sWidth1be Fvbc Yvrd kvt9Total vtvrvbbvhsWidthTotalSt St6TotalbvtvO? View Tools)8h Current Tools)dSW&Toolbarvt(SSRi&bbonvb'S4IRu&lervr'SEM&Statusb(SVQ&vScrollv(5SgQ&hScrollh+Sxa St&yle BarsbfX0XO&n HXO&ff#X&All On?*5dlg4Cdlgvt vtUdlgvb vbgdlgvr vrydlgb bdlgv vdlgh hdlgsb sWidthChoice?dlgStChoice*mBye hdlgh vdlgv swidthdlgsb bdlgb)vbdlgvb6vrdlgvrCvtdlgvtP13Choice%d3turn the checked options on< SetOptionshvswidthbvbvrvt'3 Turn the checked options off4 SetOptions3 Turn them all on4 SetOptions93 E1QmByeXa;c [email protected] S.26j" s0 j" iBhCvEseb)cvb8dVRFVTV_a MAIN 2 >GIK MAIN z",-&1oDQtMagicVlapHlappxpy+xb Magic HLap'ybMagic VLap#iMagic! Revision by Mike Davison?pxpyPxy_pxpxHLapppypyVLap&i[?z obye MAIN z"[?d8MagicPMagic*byelxbybCurDoczMagic/NamesMagic#iMagic? NamesiziMagic5&i1>O?2 Magic WinSideBySide/~gR z next to:>L^ MagicNamesWindoweXf0X'?4/dlgrec4OdlgrecWindowc,-*Bye w?dlgrec,-*"NamesdlgrecWindow xxyCurDoc)move active window>LxyZbye[?z{ /0TemplateMAIN #Ver1.61mNameInstallMacroJTemplateNORMAL/dlg4O|>[email protected] This code is not necessary with this release -- since I'm going*glibIsMacroPanemName*Bye* SrcContext1=Template; 0=Global=SortFlag/MExcludeStringAUTOOPEN,INSTALLMACRO,GLIB,:}ExcludeCountgLibCountCharExcludeString,cMacrosc SrcContextCcMacros SrcContextcMacrosc SrcContext//rgMacroscMacrosExcludeCountG#icMacrosM] /ExcludeStringi SrcContext,0rgMacrosji SrcContextjj& SrcContextSrcv# *SrcGlobal=|FcMacrosExcludeCount 0There are no macros in this template to install.InstallMacro0*bye/MenuMenuFILEMenuEDITMenuVIEWMenuINSERTMenuFORMATMenuTOOLSMenuTABLEMenuWINDOWMenuHELPNoListNoList*TryAgain ListTemplates dotpathDot-Path2DotPathDotPathDot-Path8oldpathP."Qdotpath XdotpathyaP*.DOT!a countcount76Gatthering Templates from P.(CountaP"count SizeCount45TemplatesizeMaP*.DOTe#icountB{TemplateilaaaP&'SortFlagSortArraySize 5Template TemplateNORMAL'0TryAgain3;6/Select macro to install or select Done to Quit.3tO?Install Macros from thisDoc,gu Macro to install-L rgMacros'X&Copy1(;X&About2 eCancelButton 120, 175, 88, 21'xX&Done3'xX&Test4'xX&Edit5'h Install to:&0gL &Template:UNoList.fM +TemplateR2E&List Templates6 .M +lTemplateR " g0Me&nu:)7 M-lMenu(d h\-Shortcut Key+ SKCtr&l +Ctrl- ShT&Shift +Shift) [email protected]&Alt +Alt!g#&Key:?Q)5Key?l5dlg4dlgRtemplatedlgIndexChoice?dlgIndexdlgMacrorgMacrosdlg>ChoiceChoice*doneCancel>choice#SMacroT*byeChoicedoRunMacro*TryAgainChoiceNoList* ListTemplates choice/ DoAboutMacroJ G^ ZMacro^p] 6This is the documentation for Macro(. Press Ctrl-Shift-I to resume install. *bye *TryAgain*skipglib+gInstall!BglibverInstalledLib,d6Installing glib version (gLibVer'v:gLibNORMAL:gLib!glibverInstalledLibNglibgQuery4The version of gLib currently in NORMAL.DOT has the F9< same or higher version number as the one to be installed.^^ &Do you want to over-write?^^ H<(Answer NO if you have made modifications yourself to gLib.) Install Macro (v:gLibNORMAL:gLib?IgInstall[dskipgliboTemplatedlgRTemplate NORMALfTemplateD/Template.TemplateTemplate.DOT]PTemplateTemplate is not a valid template*TryAgain oFTemplate fOpenTemplate 7Src:MacroTemplate:MacroHF Check the key specified; it must be a function key, letter, or digit.(\& Only check if key is not equal to "".dlgkey keydlgkey1kc Start with an illegal value:lkeyFkey#fnkey7fI-S"The key, F1, is reserved for Help.*TryAgainffkcfp2key IsAlphaNumkeykckey)kcf HEQ-Key must be a function key, letter, or digit.*TryAgain"dlgctrlkckc#dlgshiftkckc!dlgaltkckc: macrokc fTemplatei13dlg32FILEMenu&File32EDITMenu&Edit32VIEWMenu&View32INSERTMenu&Insert32FORMAT:MenuForma&tP32TOOLSeMenuT&oolsz32TABLEMenuT&able32WINDOWMenu&Window32HELPMenu&Help3 Menu1!Menu 7/tomdlg4ZtomdlgMenutomdlgMacrotomdlgMacrotomdlgfTemplate,-*LErrorPMenumacro macro fTemplate=,-**SkipErroraLErrorThe Macro! macro cannot be assigned to the dlg menu.SkipError fOpenTemplateLoop to install next macroNIndexIndexIndexcMacrosExcludeCountIndexf*TryAgainwdone~,-&fTemplateG I#!Handles case where oldpath="c:\"u//oldpath\oldpath \ oldpathloldpatholdpath hXoldpathxbye~ IsAlphaNumch. IsAlphaNumchAchZ ch0ch9AGetFocusPUser4C>2ACreateWindowPUserlpClassname lpWindowName 0{dwStyle4DX4CY4CnWidth4C /nHeight4C hWndParent4ChMenu4C !hInstance4ClpParam4C-*A DestroyWindowPUserhWnd4C4C.qASendMessageStringPuserhWnd4C 8wMsg4CwParam4ClParam4CHSendMessage4ASendMessagePuserhWnd4CwMsg4C MwParam4ClParam4D4C|~SortArraySize6 Sorting...hWndGetFocusKListBoxhWndCreateWindowListBoxGetDirTempListBox (A B ddhWndCtrlIDhInstancelpParam9LB_AddStringN#XXSize\bresultsSendMessageStringListBoxhWndLB_AddStringTemplatexx&XXLB_GetString #XXSize.TemplateXX(j\workedSendMessageStringlistBoxhWndLB_GetStringXXTemplateXXR&XX*[Killed DestroyWindowListBoxhWndDoRunmmT"Finished demonstrating mDoAboutm5 Crj j j j 1= MSG6McrGoto documentation?6r msgAbout MDDoAbout 88888xpp8xp p8xpp8n;:+vvC (:?UUUUUUUUUUUUUUU_j__pL_&L2L>_LUUUUUUUUUUUUUUUUUUWD2_<_??_93>f'I3H2~L'_g?2~L'H2~L'_fI3L~L'p1>F2?UUUUUUUUUUUUUUUUUUTUUUUUUUUUUUUUUUUUUWs3&'3a90c33O'&dLd&Lc>'&|O|&LC?'[email protected]|&L2IO'&dLd&DI&3##aH1033?s'????mUUUUUUUUUUUUUUUUUUWUUUUUUUUUUUUUUUUUUT3?a3a90>dL?&dLd&L>dL?&|O|&L>[email protected]|&L>dfL?&dLd&D0pa#aH10>?>?>??""?agd'L2g92d&g2g?2d&2g?2d&L2?2&d?L#?9OUO?|?>L80Lf9dd?>I|I2d~dd?>I&I29|}dd?>H&I2~yx=dd?I|&I2dp|>L8fHf9|}?|}?|}OUdUU3pN9s*~3?2fI2L2qUU>fs2L2d*I>fg2L2dUU2fI2L2d*??0F1UU*UU*UU*UU*8ffUULd&N*L?dNUU2d?d&N*|?d"NUUa?3 8*UU*UUy*y|UUy?*y>?UUy|0L33?*y?d&I2dI'?UUyd'2dI'?*d g2dH'?UUd&I2dI'?*|00c?UU??*??UUmfl366lps9ys19lx=p|?000|}000~l86fUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTN9s&?0a?L2qg2dfLL?L2ds2|gLL2ds2|LLL2ds2dfDLF1s1?0a?sg?d3  p a<?> c36fa03 '?0fcfa00?3 0fcfc0033 0fcfc003 0fs36fv03 0fy<~> 030 30 0 ? ad8: b?C b?b?(?bP7?9|33s?|1yg339s19s33s!9s3333s&fg09s33s&fg3s33sd>L2d>Ld3L2Ld?aD&3?3d?3a&33&~L??02d2OL&LL32f|L>d3&>d3O&LO3f|>g?3'>[email protected][email protected]|?3 2dO2L"LLb|L?1&a AH8??pg3g3?3ff3L383&LI3L|&L2g3LLLI?L3L>g3L&LLIp&g3L"LLI3||&|2g1aa118813399|x31?8p8fg3??3~d2d>I&I>d&O>d?3~d2y?dO>|?3~d2s?9'd&O>?3~dd>I&I>d"OI>dI?1>18p3 803399|1ygs93s19ss?s!9ss?33ss?33ss??33sdI&L&|2d2IL>dfI&LI&|2d|d>fI0LI&|32>fI>LOI&|I3rODa8~&IpHpF88?????'??33rapg?f32g&L&I'3'&32&L&I3&O32&L&I3&O&3g&L&H'3&O"1bap1abO83???3???9?'p?fIg[email protected]??UUUUUUU?UUUUUUUS*???????????L2d??>|??>??2d??????????????UUUUUUUUUUUUUU???p&Og'&Ogpa<0f6f0ff0fff6f>| @[email protected]@@@@[email protected]:* B C ([email protected][email protected]?G*UUUUUUUS5UUUUUUUG??G??G?2O??G???2MLG?N?3G?y?yG??G??G?G?GGGGGGGGGG393pg<9<8333G33333&g93333<3333?g933?3?G3333?g933?3<3333g8333~0afa80<30??G?33???33?G??xGG?G???>x393ffffffg~fO&fg?<}9GGGGGGGGGGDG""""""""""""""""""""""""":""""""""""""""""""""""G""""""""""""""""""""""""":""""""""""""""""""""""G""""""""""""""""""#c""""""""""""""""""G""""""""""""""""""#c"""""""""""""""""""G""""""""""""""""""#c""""""""""""""""""G""""""""""""""""""#:"b""":#"""""""""""""""""""G""""""""""""""""""##""":"""""""""""""""""""""G""""""""""""""""""""""""""""""""""""""""""""""""G""""""""""""""""""""""""""""""""""""""""""""""""DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC6:&J& y&C y y(y 6pppUUUUUUUUUUUUUUUUUUUUUUUU?UUUUUUUUUUUUUU???p???p0afI&s?fLd2d?g&afL|d2dI&a?fL|3?I&LL|I3pp?|???g?????????|f3?~fdH2d2d2'~~'?~~~f0xp&d3&I&d93&Cx3&G{UUUUUUUUUUT9s&C;38p???fg02d&fc'2df!I?US'#I'9?cc&d33USc&d'>OOUS2OOUS'US3USUS?0aUS&d&LO&d'US C?O&GOUSUUUUUUUUUUU80USUSUSf392dUS?2dyp?dI2fUS?I>f?3>fUS?2f9a10US1yUSyUS?USpUSUSpUSUSpUSUUUUUUUUUUTUSpy?9?US?g89I?f'2I2LUSdI>I2LaII2USc8&I2I2|c8bH1a?USadUSUSyUS9g89<8qUS'3I39USI338&I3US8bH1qUS<L|US>2|du0spa'rsUSa'1fL&s?fO3aUS?pO3a?~L3&LUS0dp8xbLUSUSUSUS32p&fIUS&fI&fIUS&fH0b0?USUSUSUSp'9US&I2g&d8s&s>s&|2US&gs&2s&I2s&d2US3?w8ps#3?sUS3gq?s?USdG?US3sUSUW&&L2dUSgUW&L2dg&L2dUSgUW"L2d8USgUW93gUS3gUW32UW3S&0c3&L12fLI3?&L!2gfs3&L92Npg3"L92fN~Iw890p9?9??j?y3x02y602l02y?fl0r99?fl;r33ny{'>OO2OO'3??~dA0d32ddLL&L32|d'L&L3|d'L0L3ddO'L>Lca~d'pc'3133363733173a<3<37308q8p000006C:m5K~!Z!Z!C (hB>>y3932Ny'332L'32L3'32L3'3L#?D'??'3?[??>g??Lyv89?UUUUUUUTUUUUUUUUUO?3?9?9?I?9?9?9?sf33?g92d?O?2d9?d????3?O9g9?9{fg?ffg9dgdg3d'{;o>3>92d?2||d9?s9&g;2gg9&O?>gg9&O9gg9&O>2gg"O3#9 3g93g9?;?9?39???? 33f&dLy?&|L99&L>q&dL39c9?1;[email protected]?3!s3?2s?>?99?9?? ~xppa8d33&L3?8?q3?3&O3??30O3?n?xs>L3?o33p88p?n3????93??39p9qx?33fc1?3>Lg9~3LI9G?32NfI!N0?2????9??9utm;w]oo???899?98?8?3?g<|<~0<~s>?ygs???3gxyg0a.:RZzVVC (???UdvyUUUUUUUUUUUUUUUUUUUUUUU008&gp3&L&L?&O9''??9 L [email protected]"????gggmg3gUUUUUUUUUUUUUUgggs&d31I|s98gI_d? ?88say9>s3Ly2dO?3s?L>|2sL3>|2f2dL32d2fsda1r03srp3gsy3&0??0L8>|fff<8sUOg&I?NgL93s&I?NgL93UOs0I?fNgL99s>I?fLL9yUOs08>Fg9?~<8UO?UOUO92y312NOdg92I2d32LUOd~2I02Ld212LUOdd0L1q?DOUO?1??y3?UOy>gUOUOsa9sUOs3L92gLfs2ds?L92gfs3UOsL92gfs32dL92g8fsgUOsda9I2"s2s9fs2s9Ofs2|UO99>ssa93ds3L32d2fd3wws?L>d3dsL3d2dL333sda?a~wws?~?s3f>UO?|[email protected][email protected]93wwg393UO'393wwUOww?wwI39sddD2gLfs3d|d2fs2dd2fs2O?dddg8fs?dII2"s3fs3Ofs39??9q&I0~L&I&L>L9|y&I'~Lx~&I LL"I&D>D2~q p~A?0caffc33ff0cl03fx?30ffp3acxalfcwn<:E' D>|C >|>|(|>;UUUUUUUSx~92f?9>?2d&d1?2d&d1?2d!??>99?<<3~<|}UUUUUUUUUU1aU?<*sa UU30U?*0 cUU030U?c*&L30 3UU'10U?*' UU&LU?*0pUUU?*|&I??~g3?*|&I?~g3?UU2d"I?|p??p3?*?3?UU?3?*?fg3UU0000?U?s*UUU?*UUU?*1UU3U?0f1c3*330fc3UU33U?0fc7*0ps>fc=UUs3U?0fc=*s30fc9UU3U?0f1c9*p3?c>1UUU?*UUU?*UUp00U?3*3|3UU33|U?3*33D3UUUUUUUUUUUUS0psU?0<*s3|3UUs3|U?3?*3|3UUp3U?00'*UU8?&c&I2&I2p0 p&I23Ng?|}r33g?|}r33g?|}0psg?p?s3g?x=s3g?|}3Ng?~p3p?9g|031d0fs1d0fs!0f0gc90gc90g3gy0g39y|3<8'0fI2adf?&d&L3&L$$&|$&L9&L$&|$0L9&L$&9&d$>L9$&L$'3#09H8ba0f??9?3???003113113333330333633307333373307137300<03<3000<33330<37338q8q8p8p0000<0000":|IR.'.C ''('"U?UUUUUUUUUUUUUUUUUU_UUUUUUUUUUU3__38s0N&3?_393&g&L$22~fd3&g&L$2_>|3&g0L$23&g>L$_2dc80&?H1>L?_??g?'___Uf?3Om?p83&ggfs2L&O'g<&Oa9&O'L2L"O'p1 c?6vU 2s3UUUUUUUUUSUUUUUUUU?UUUUUUUUUUj?L??yppp?0&L'&L'&O&L&L?}0L0LOL>L'>L'&O?Uapp8p??s?>??|U??~~|???g33330A
[email protected]@[email protected]@@@@Az:[email protected]@@@@@@45A (32d2|2|sdd9&d2dd2d~fdd~f$Id1&8sUUUUUUUs~93a|2d|2dv|2d~d9v~1a?sUUUUUUU?9?&cs&I2g&s>g&gg9"I2f? #??<<<0<<6c<<6fc>6.RC .R.R(R.3DD??????????UUUUUUUU??j?UUUUUUUS??????|2d??>2d?2d2d??d????????????????????9 ?c2yI&I2?s>y&I??syI&L?C2yI&O3?91?y?sy?????s??'d3?UO?c2gL32D??s>gL2d?UO?sgL32d??C2~LLs2d?UO?'0s?da??g???UO?sg?33??yUO??UO???'f?ffLD>c2g2gc2I2"LUO?~fxLd>s>g>gc2I?d2O?~fxd>sggCId2OUO?pq&d>C22I3d2N'gdC2Dgg3L?fgg>sgg3NUO?0I s?9?UO??UO??gsIL8sUO?g2c2I2~I3?g>c2I>3UO?gCIs?2I2IUO?'~H0?g33UO?g3s? IsUO??UO???UO?gsI[email protected]?g>c2I>fp?gCIfqUO?2I2fc?'UO?g3g?g3gUO? Is'?UO???UO???y?g39UO?g2rd332d?g>~d32|UO?g~d329?2~d0d2dyUO?'13?y?g3?UO?gs339? I$sUO??UO???UO?d$9$??gL$1$?UO?g$1$??g$!$?UO?L$$??'?UO?g??g?UO? @9?UO??UO?9?3'UO?rd92d2d&?~d?2d>'UO?~d?3>'?~d?2f?'UO?1?L?8b???UO?s9????UO??UO??9?UO?fpp?rd"fLL2gUO?~d2gL>xg?~d2gxUO?~&92fL2q?~920!UO?~g?rUO?fffffcvy0f0??????????????????????????L<8p?I&L&?IL?IL?f~I9&D&?fp8p?f????????????8xpN8s3'0?fd33L?&d&I32d g?d?3&L?|'>|8g?d?3&L'9|8?d8s&Ld&I2d1?~3fF01'C#?8!?3??? g?g3??30???9?????q9L8s'?dd3Hg?dy3L?dssL?dd~Lg?cqL00?c3??s??g?????10g9 ?g&c9&?s9&I9&?s30I9&?s>I&?s109 ?s?9??g?9????9??0clfvlafl6l0fl6ll6n0o7oa0f??????????????xx?a???? ?x?????????????DD??()?MNPr ~ :[email protected]#4=SUL  SL\:J ! !!!""%?%A%Q%w%{%%%%%&*&P&Q&p&q&&&&'Z)~)R*u*J+c+,!,,,,-U-m---1/@///00113344556670788899 9:-:: W::::::::u;;;;(<2<#=2=3=5=====>>3?QQQ*Q+S0SSSgUU)V>V ! tV>[email protected]*Z/ZYZiZ[[@\Z\\\\\]]E^M^^^__a&abbddff/g?gdhehhhujxjjjjknkxkkksltlllllllllmmTmUmtmumSqTqsqtqqqqqqqrrrr9r:rrrss"t2twuuuuow|wx _xxexxxx1ygyyybzgzzzz{||+||}}}P}Q} ~~~~eln{",0=?fhCPaijnp ,mt-24g 40 N4=^_ao>[email protected]^BLDSK]lnoqx1;r}Tanx(9G+.(l< PCJLop\eg{|02CS2gx )*IJ_ 07\^ .8 V_gAVfjqu.8)4O[]ERKTdx:;l?Hov 8*+-/ABGHPQRSZ[^_bc" \ 12459:;<@AFGOPRSgh '(*2 ((?NANPPcc=?~B=?FH!!$$33%G'G~GGUUUU{j}jYn[nnn9o;oooppppxxxxzzH~J~pB3PRk{
&9Yg;Oo ->M^n}.%%%%%%P%V%lYYYlYYlYYYK:.Os
%C]w
$:Rm(>Ujz" ? Q g q r V= &KL%%X%%%%%%%%m%%%%%CLW#4=U oL:l u !!!!!!""#$%A%%P&'()Z)~)}%K%%H%%
;%P%%%@%

H;%%%%X%m1~))R*u**J+c+,,,I-U-m-2.../B///00123}3m44E55|66+8889::::::;(<4<5===~>>>[email protected]@[email protected]@@@AjA%@%%X%#%%X%%%8%(%%%K%%H%m%H%%%=jAAABwBC6DxDDEEF,FFFGHWHHHHHI*IIIRJJ_KKELWLeLLLLMMMM,NBNNO^OyO!PFPQ,QQVRRR~~~~en}0?CPDap7U$mv-4Hs%%=%P% %X% %0%%m%%%%%IC^aoy_aJ|BLFSH&]nqx1=r}Ta(%X%%%~%%%%%%f%%%mEz9Gj*CL\g32C2)_>z7^.Evx|eiz0Rz1(i-rEw6B9[~5GZ;. Qgllj]&W"R^.S6U]yNce5U%6H#Maq.>Pak{&8DP^o|4&&'()10P&*10P10<10.- 10.-#@*,.02 (ANPc??H!$3'GGUU}j[nn;ooppxxzJ~&%$%$%3!ListBodyFigures
DefinitionWarningIndentSourceTopListTableCaptionBodyTableTOCTitleTitleByLineSource
SuperTitle

Bp%
s%
@

.z&*[email protected]@Tj+&*
xs
@[email protected]&)')()))@x<@s&'()xH8h
z
s
[email protected]&'()/xHP X &=

!"#$%%-=+-t x'.8>DgKSZbls{{dw{&P"=XH +- g ^HO G% 7 N !&"B #$
%&]$zCG Times (WN)Symbol"Univers (WN)Times"Helvetica 1Courier"Helv Tms Rmn Zapf HumanistTimes New Roman&ArialMS Serif"MS Sans Serif5Courier NewWingdingsZipLucida ArrowsFLucida BlackletterLucida BrightLucida Bright Math ExtensionLucida Bright Math ItalicLucida Bright Math SymbolFLucida Calligraphy Lucida FaxFLucida HandwritingLucida Icons&Lucida Sans5Lucida Sans TypewriterLucida StarsAurora AvantGarde Bookman LubalinNewCenturySchlbkPalatinoPrestigeZapfChanceryZapfDingbatsAmericanTypewriter-Light Harting"Helvetica-Narrow5MS LineDrawE^$5$fgjk2kRk}kkkkoop:papppp!,LVv7HNWYaev,M]q8;AJ333999999999999999999''''''''''47NQVX]clo$*36KPSjmru
9!
9!
9!
9!!ChangeQuoteDash
ChangeToolChooseDirectory
ControlRunCopyMacroActiveCreateOutlineDocDeleteIdleStyles
EncryptMacrosEncryptTemplateFiddleNotesListKeysFileTemplateMacroKeyMakeBookMakeWordBook
ManageKeysManageMacrosOpenMRUList
PrintRangeReinsertFootnotes
SyncStylesToggleHidden
ToggleOutlineTogglePicturesToggleRevisionToggleStyleBarToggleViewToolsToggleWindowWindowStack
WinSideBySideOverviewCheckLibTheEndRegistration+m7TW|]dlnmoo2r
yhH{EfP+x"UAfCk+

!+|7TW]el}mo2r>rypTQqZ80cLsK7=ChangeQuoteDash
ChangeToolChooseDirectoryCreateOutlineDocDeleteIdleStyles
EncryptMacrosEncryptTemplateFiddleNotesMacroKeyMakeBook
ManageKeysManageMacros
PrintRange
ReInsertNotes
SyncStylesToggleHidden
ToggleOutlineToggleViewTools
ChangeToolChooseDirectory
ControlRunCreateOutlineDocDeleteIdleStyles
EncryptMacrosEncryptTemplateFiddleNotesgLibMacroKeyMakeBook
ManageKeysManageMacros
PrintRange
ReInsertNotes
SyncStylesToggleViewTools&u !!!""%"5EUeu
"
"BcHcIcKcMcOcTcVcDdBeMeUeKf
Qf

'Dkm
N}j
nQU8=APcNdqrK)jgQW999999999999;::%:0:;:F:Q:\:g:r:}:::::::::::DAutoOpenWhat happens when you openChangeQuoteDashaToggle typewriter quotation marks and dashes to typeset characters. (SmartQuotes post processor)
ChangeToolInsert/Delete ToolBar IconChooseDirectoryZChooseDirectory -- a list of descriptions that point to directory, document(s), or path(s)
ControlRun+Displays the Control Panel or the ClipboardCopyMacroActive;Copy a macro from the current template to a loaded templateCreateOutlineDocICreates a document that consists of the current document's outline levelsDeleteIdleStyles[Removes user defined styles that are not active in the current document. Use with caution.
EncryptMacros/Encrypt Selected macros in the current templateEncryptTemplate.Encrypts all the macros in a selected templateFiddleNotes=Remove footnotes or annotations or change one to the other. FileTemplate-Changes the template and the template optionsgLib-Library of routines for gToolBox, version 2.0LoadgHelpLoad GTOOLS.HLPMacroKeyOAssigns key combinations to macros (extends the keys available for assignment).MakeBookMake selection into a bookmarkMakeWordBook Make current word into book mark
ManageKeys?Displays or prints a listing of currrent custom key assignmentsManageMacros(Copy macros from one template to anotherOpenMRUListOpen all of the MRU list
PrintRangePrints a range of pagesPrintRegistrationPrint the registration form
ReInsertNotescRe-inserts Footnotes or Annotations so that changes to style definition will effect prior instances
SyncStyles!Merge styles to and from templateToggleHiddenToggles display of Hidden
ToggleOutline!Toggle in and out of Outline View
TogglePicture0Toggles display of pictures/picture placeholdersToggleRevisionToggle Revision MarksToggleStyleBarToggle Style BarToggleViewToolsOAn easy way to change which of the seven "view tools" are cluttering the screenToggleWindowToggle Window splitWindowStack"Arrange Windows in cascading stack
WinSideBySide!Arrange two windows side by side.InstallMacromCopies or moves the selected macro to the specified template; assigns the macro to the specified key and menu"h+j_
t'&SgToolBox1.0bMacros for Word for Windows 2.0Guy J. GalloGuy Gallo.. vv.BOOK +.zDOC2HELP }ENV @{P~SHIPPED v.GSCRIPT BARi&O=NORMTMP BARO
PLAY BARyo&O~GS11_25 BCU5yOxCTOOL DOC^% O:GSCRIPT DOCz4"OCGSDEMO DOCi,UO2GSFUP DOC{WO"NUKESUB DOC=k)aORPT [email protected]"rLXP*9c.4BefClick mouse here to MacroButton InstallMacro Install selected macrosError! Bookmark not defined.

Click mouse here to macrobutton PrintRegistration Print registration form

If Not gLibInstalled(mName$) Then Goto Function gLibInstalled(Macro$)
On Error Goto ErrMsg
x = IsExecuteOnly("Normal:gLib")'This returns an error 511 if glib doesn't exist
If x <= 0 Then
gLibInstalled = - 1
Goto fEnd
End If
ErrMsg:
CrLf$= Chr$(13) + Chr$(10) + Chr$(13) + Chr$(10) MsgBox("The Library [gLib] is not intalled..." + CrLf$ + "Please re-open the document that carried [" + Macro\$ + "] and either re-install or manually copy the macro named gLib to NORMAL.DOT.", " Check Library ", 48)
gLibInstalled = 0
fEnd:
End Function

!mOBKMKTE DOTXO_CALENDARDOT3|OlNORMAL DOT zQ=CHANGED DOT*O=CONTROL DOTkOq%CURRENT DOT ;IClick mouse here to MacroButton InstallMacro Install selected macrosError! Bookmark not defined.

Click mouse here to macr12JKopv

46rtv,=Tajs
xx&Y'Y(Y)Yxx
x&Y'Y(Y)YF
."ButtonsCheckLibIsLibInstalled!,.L:>Vx4_9:;<=>[email protected]~)jAsX6vzHDEFGHIJKLMNOPf9Times New RomanSymbol&ArialTimes"HelvEb{.333"h

December 18, 2017