Copyright: 1999 Michael Perlini
Citation: This is my Help File


Arithmetic Expressions

Arithmetic operators combine two or more numbers to give a resulting number, and are used in arithmetic expressions to perform an arithmetic calculation.  If you have any experience with programming, then you will be familiar with the Inform convention for coding arithmetic expressions.  For example:

seconds = 60*minutes + 3600*hours

This calculation will calculate the value stored in the variable minutes multiplied by 60 plus the value stored in the variable hours multiplied by 3600 and store the result in the variable seconds.

The ordinary operators + (add), - (subtract), * (multiply) and / (divide) can be used in an Inform arithmetic expression.  Inform does not support floating point variables, therefore the result of the division of two numbers gives only the whole number result of the calculation.  The remainder of the operation can be calculated using the '%' operator.  For example:

7/3 = 2

7%3 = 1

Note that division by zero is impossible and will result in either a compile-time or run-time error.

As a rule, expressions will be calculated left to right.  However, the standard mathematical rules of operator precedence still take place in Inform.  Therefore, multiplication and division are performed before addition and subtraction, and expressions enclosed in brackets are calculated prior to those outside the brackets.  See section 1.5 of the Inform Designer's Manual for further explanation.

The final purely arithmetic operator is unary minus.  This operator when 'appended' to the front of an argument, is equal to the negative value of that argument.  It has higher precedence than all other operators.  For example,

-credit - 5

means (-credit) - 5, not -(credit - 5).

The final operators, familiar to any C programmer, are the unary operators ++ and - -.  The first of these means 'read off the value of the variable, then increment the variable by 1'.  The second is similar, but decrements the variable by 1.  If the operator is in front of the variable, the variable is incremented or decremented, then read; if behind the variable, the variable is read, then incremented or decremented.  For example, if the variable x has the value '12', then the following operations will have the following results.

Operation	Result	Value of 'x'

x++	13	13

++x	12	13

x--	12	12

--x	13	12


Numbers and Variables

Internally all programs, whether they be Windows '95 or Wing Commander III, essentially manipulate numbers.  Inform understands a number to be any whole number in the range -32768 to +32767.  Three notations can be used to represent numbers in Inform; they are decimal (base 10), hexadecimal (base 16) and binary (base 2).  Inform's notation for writing each of these numbers is:

Decimal	-4205

Hexadecimal	$3f08

Binary	$$1000111010110

Inform can print numbers to the screen, but will only output them in ordinary decimal notation.

Variables are used in Inform to store numbers.  Essentially, a variable stores a location in memory, which, at any time, contains one number.  Variables are represented in source code as an alphanumeric 'tag'; when compiled, this tag disappears, and is replaced with a pointer to a particular memory location which contains that variable's value.  Variables are set and can be changed at run-time; prior to this, they have no inherent value.

Variables can be printed or operated on (see Printing Text for the former and Arithmetic Expressions for the latter).

Inform can only know that a tag is a variable if is declared as such by a routine.  These variables are declared on the routine's opening line, and are known as local variables.  For example, in the program

[ Main alpha b;

  alpha = 2200;

  b = 201;

  print "Alpha is ", alpha, " while b is ", b, "^";

];

the main routine has two variables, alpha and b.  The equals sign (=) following the variables in the second and third line of code above is used to set the variable to a particular value.  Either a number or an arithmetic expression can follow this.  For example,

carry_weight = brick_weight + 4

score = 18

battery_power = battery_power - 5

are all valid expressions for variables.  Note that the first expression will cause an error if both carry_weight and brick_weight are not defined in the routine's opening line.  The exception to this is if the variable is defined as a global variable or a Constant (see Global Variables and Constants for further information).  In fact, separate routines can have the same variable name containing different numbers..

Inform allows variables to be given names of up to 32 characters in length.  The names can contain any combination of letters of the alphabet, decimal digits and the underscore (_) character, but they can not begin with a decimal digit.  No distinction is made between uppercase and lowercase letters, therefore cARRy_WeiGht is considered the same name as carry_weight.


Global Variables and Constants

There are two ways in which variable can be accessed by all routines in a program rather than just the routine in which it was the defined.  The first is to use the Constant directive.  When a variable is defined using Constant, its value can be accessed by all routines in the program, however it cannot be changed.  For example, the constant MAX_SCORE may be defined as 100 at the start of the program.  If you decide at a later stage to make this value 50, it can be done with a single change, rather than finding all relevant instances of the string "100" in your program code.

The format for using the Constant directive is

Constant VARIABLE_NAME {value};

which defines the variable VARIABLE_NAME and gives it a value of value.  As can be seen from this format, assigning a value to the constant is optional.  If it is left off (for example, in the statement Constant DEBUG;), the variable is created with a value of zero.  This can be useful by using the statements ifdef VARIABLE_NAME or ifndef VARIABLE_NAME, which checks whether a constant has been defined or not.

If you wish do define a variable that can be altered by all routines within the program, use the Global directive.  This directive is similar to Constant, but it allows any routine to change the value of the variable during run-time.  This changed variable is then accessible by all other routines within that program.  An good example of the use of a Global variable is to keep the player's score.  As various routines are run as the player achieves objectives, the score can be incremented by each routine.

The format for the Global directive is

Global variable_name {= value}

which creates the variable variable_name and, if specified, gives it an initial value of value.

Both Constant and Global variables can only be used in routines that occur after the variable is defined.


Arrays

An array is an indexed collection of variables, which holds a sequence of numbers.  These variables are global.  Two basic kinds of array can be created: word arrays, which can hold any number, and byte arrays, which can hold numbers from 0 to 255.

Standard arrays are created using the format

Array variable_name --> value	(word array)

Array variable_name -> value	(byte array)

which creates an array of value variables.  These are referred to in the program using the format

variable_name --> value	(word array)

which accesses the value'th variable in the array.

A more structured array can be created that has the 0th entry holding the number of entries.  A word array with this property is called a table; a byte array is called a string.  The format for creating one of these types is

Array variable_name table value

for a word array with value + 1 entries (variable_name --> 0 holds value, the rest are indexed 1 to 5), and

Array variable_name string value

for a byte array with similar properties.

The other method of creating an array is to give a list of values.  For example,

Array variable_name --> value1 value2 value3 … valuex

creates an array with x entries, variable_name --> 0 to variable_name --> (x-1).  Similarly, a byte array can be set up containing text using the format

Array variable_name -> "Some Text"

which is the same as

Array variable_name -> 'S' 'o' 'm' 'e' ' ' 'T' 'e' 'x' 't'

Note that a byte array can contain letters, in which case it stores the ASCII value of the letters in its address.


The Attribute Directive

Attributes must be declared before use using the Attribute Directive.  The statement

Attribute attribute_name

sets an attribute with the name attribute_name, which can then be given to objects in their declaration (using the has statement) or given to them in the code (using the give statement)


The Class Directive

Under construction.


The Constant Directive

Under construction.


The Global Directive

Under construction.


The Object Directive

The initial state of the object tree is set up at run-time using the Object directive.  The format for this is

Object {arrows} {Object_name} {"name"} {Parent_name}

The Object_name is similar in function to a 'variable' which holds the information about the object; Inform using this name to refer to the object in code.  The arrows and Parent_name are mutually exclusive - use one or the other to indicate the object's location in the object tree.  One arrow makes the object a child of the last object defined with no arrows, two a child of the last defined with one arrow, and so on.

Example

The statements

Object bucket "bucket" ...

Object -> starfish "starfish" ...

Object -> oyster "oyster" ...

Object -> -> pearl "pearl" ...

Object -> sand "sand" ...

set up the following object tree.

Similar results are achieved from the following statements

Object bucket "bucket"

Object starfish "starfish" bucket

Object oyster "oyster" bucket

Object pearl "pearl" pearl

Object sand "sand" bucket

For further information see Objects and the Object Tree and Objects, Properties and Attributes.

Related Functions:	The with Statement, The has Statement, The Class Directive


The give Statement

Under construction.


The has Statement

The has statement is used to define starting attributes to an object.  The declaration

Object Object_name "name"

   has attribute_1 attribute_2 ...;

defines an object Object_name with the attributes attribute_1, attribute_2, and so on.  These attributes must be declared earlier using the Attribute directive, otherwise a compile-time error will result.  The attributes can be defined as 'definitely not there' using the tilde character (~) in front of the attribute name.  This is the start-up position, but can be used to over-ride attributes set by inheritance from a class.

Example

The declaration

Object bedroom "My Bedroom"

  with name "den" "room" "bedroom";

   has light messy ~money;

will set up an object with attributes light and messy set, and money not set.

For further information, see Objects, Properties and Attributes and the Inform Attribute Reference.

Related Functions:	The Object Directive, The with Statement, The has Condition


The move Statement

The positions of objects in an object tree are not fixed at run-time.  The move statement is used to move an object to become a child of another object.  The statement

move Object_name to Parent_name

moves the object Object_name and all its children to be a child of the object Parent_name.

Example

In the object tree

the statement

move Cucumber to Mailbox;

results in the tree

For further information, see Objects and the Object Tree and Testing the Position of Objects.

Related Functions:	The remove Statement, The in Condition


The objectloop Statement

The objectloop statement runs through a statement once for each object in the object tree, putting each object in turn into the variable.  Its format is

objectloop(variable_name) [statement]

Any condition can be written within the brackets, as long as it begins with the variable name.  For example,

objectloop(variable_name in Object_name) [statement]

runs through the statement for each object that is a direct child of Object_name.

Example

The statement

objectloop(x) print (name) x, "^";

prints out a list of the textual names of each object in the tree.  Similarly, the statement

objectloop(x in Mailbox) print (name) x, "^";

prints out the textual name only of those objects that are direct children of the Mailbox object.

For further information, see Objects and the Object Tree and Testing the Position of Objects.

Related Functions:	The in Condition, The has Condition, The provides Condition


The remove Statement

To remove an object out of the object tree, effectively moving it to the object nothing, use the statement

remove Object_name;

which removes the object Object_name and all its children from the tree.  Therefore, the object tree is often fragmented into a number of smaller trees.

Example

In the object tree

the statement

remove Torch;

results in the object tree

For further information, see Objects and the Object Tree and Testing the Position of Objects.

Related Functions:	The move Statement, The in Condition


The with Statement

Objects can be created with properties using the with statement.  The declaration

Object Object_name "name"

  with property_name_1 {value},

       ...

       property_name_x {value};

will create an object Object_name with the properties defined after the with statement.  Note the coding convention used - different properties are separated by commas, and the end of the with statement by a semi-colon.  If no value is included, the property is defined without being given an initial value.  If more than one value is included, the property is created as a word array of the values.

These properties are accessed by other parts of the program using the syntax

Object_name.property_name

for normal properties, or

Object_name.&property_name --> value

for arrayed properties (note the .& operator).  The size of the array is held in

Object_name.#property_name

which will evaluate to twice the number of byte arrays (because one word array is equivalent to two byte arrays).

Properties can also contain routines, in which case the format is

  with property_name

       [; <routine code>

          ...

       ],

When called (using a similar syntax to above), the routine will either returns a value or runs a routine, depending on the code.  If the end marker ( ] ) is reached without being returned by the routine, it will return False.

Example

The routine

Object magpie "black bird"

  with name "magpie" "bird" "black",

       wingspan 5,

       flying_strength

       [;  return magpie.wingspan + magpie.worms_eaten;

       ],

       worms_eaten;

creates an object called magpie with the following properties:

Property	Value

magpie.#name	6

magpie.&name --> 1	"magpie"

magpie.&name --> 2	"bird"

magpie.&name --> 3	"black"

magpie.wingspan	5

magpie.flying_strength	routine

(eg, if worms_eaten = 8 at the time of the call, returns 13)

magpie.worms_eaten	0

For further information, see Objects, Properties and Attributes and the Inform Property Reference

Related Functions:	The Object Directive, The has Statement, The provides Condition


The in condition

The position of an object in the object tree at any given time can be tested using the in condition.  The statement

Object_name_1 in Object_name_2

will return true if and only if Object_name_1 is a direct child of Object_name_2.  It is equivalent to the statement

parent(Object_name_1) == Object_name_2

Example

In the object tree

the statement

Cucumber in Mailbox

returns true, but the statements

Cucumber in Meadow

Sceptre in Mailbox

both return false.

For further information, see Objects and the Object Tree and Testing the Position of Objects.

Related Functions:	The Object Directive


The has Condition

Whether an object has an attribute set or not is tested using the has condition.  The statement

Object_name has attribute_name

will return true if the object has the attribute attribute_name set, either in its declaration or by the give statement.

Example

If an object is declared

Object The_Big_Room "The Large Cavern"

   has ~light air magicroom

the statements

The_Big_Room has magicroom

The_Big_Room has air

will return true but the statements

The_Big_Room has light

The_Big_Room has mazeroom

will return false.  The has condition is commonly used with if statements; for example,

if ( magpie has eaten ) { ... }

For further information, see Objects, Properties and Attributes.

Related Functions:	The Object Directive, The give Statement, The has Statement


The provides Condition

Whether an object has a particular property defined or not is tested using the provides condition.  The statement

Object_name provides property_name

will return true if the property was defined in the object's declaration (which is the only way of giving an object a property).

Example

If an object is defined

Object magpie "black-striped bird"

  with wingspan, worms_eaten;

then the condition

magpie provides wingspan

will return true, while

magpie provides flight_time

will return false.  This statement is commonly used in objectloop statements; for example,

objectloop (x provides wingspan) <code>

will execute <code> for each object for which the wingspan property has been defined.

For further information, see Object, Properties and Attributes.

Related Functions:	The Object Directive, The with Statement


The Object Tree

The object tree defines the state of all objects in a program at any particular time.  In this tree, objects can be parents and children of other objects.  The children of a parent object can be loosely defined as being contained within the parent object, therefore any movement of the parent object within the tree will also effect its children objects.  An example of an object tree is


Parents, Children and Siblings

If an object 'X' is contained in an object 'Y' (in an object tree sense), then 'X' is said to be a Child object of 'Y', and 'Y' is a Parent object of 'X'.  If an object 'Z' is also contained in 'Y', then it is a Sibling object of 'Z'.  Note that these statements are only true if there is a direct connection between the two objects; if an object 'W' was contained in 'X', it would be a child object of 'X', but not of 'Y'.


Using IF-IDE for the First Time

Before using IF-IDE (Inform Mode), it needs to know the locations of your Inform compiler, z-code interpreter and library files.  These locations are saved from session to session, so if, for example, you have different library files for different projects, you will have to change it for each compile or use an ICL or batch file.  See Compiling and Running Programs for information on this.

To set the necessary locations, select Options from the View menu.  Select the Compiler/Interpreter tab.  The full path can then be entered into the text boxes, or the button at the side of each will allow you to browse for the necessary files.  IF-IDE will now be set up to programmatically compile and run your Inform programs.


Customising IF-IDE

IF-IDE can be customised in a number of ways.

To customise the syntax styling, select Options from the View menu, and select the Editor tab.  The various text styles can then be selected from the list at the left side of the dialog.  The colour of the text can be changed using the colour select drop down button, and the text can be made bold or italic by selecting the check boxes.  To return the editor to its initial configuration, press the Default Styles button.

To view the tabs and spaces in the file, select the View Tabs check box.


Compiling and Running Programs

Once you have written or loaded a program and you are ready to test it out, select Compile Project from the Build menu.  This will save the file and run the compiler using the compiler settings.  The output from the compiler will be shown in the output window at the bottom of the screen.  Alternatively, selecting Run from the Build menu will run the program using the set interpreter.  If the z-code file on disk is older than the edited file or does not exist, the program will ask if you would like to rebuild the file.  Selecting yes re-compiles the program and runs it, selecting no runs the previously compiled version.

To change the compiler settings, select Options from the View menu, and select the Build tab.  This allows you to select the switches that are sent to the compiler.  Switches can be selected from the checkboxes on the left of the dialog box or can be added in the text box on the right side.  Note that switches should either be simple letters (to which '-' will be prepended) or memory settings (which you should begin with '$').

If you need to send more complicated messages to Inform, the easiest way is to write a batch file with the necessary commands, and point the compiler path to this batch file.


Using the Object Viewer

The Object Viewer works by parsing the file and building an object tree based on the objects defined in the file.  As Inform is a particularly complicated language, the process by which the file is parsed requires properly formatted code in order to work effectively.  The rules by which code should be formatted are as follows:

The first character of each line must be either a directive (e.g., Attribute, Constant), a class definition, or with or has within an object definition.  This is in line with most people's coding style.

Parent objects should be defined before their children.

The object viewer cannot differentiate between two identically named and coded objects in different locations in the file.  In this case, IF-IDE will always jump to the first definition in the file.

The file is parsed at loading time only.  Once a few objects have been added, select Rebuild Object Tree from the Build menu to get the object tree up-to-date.


Getting Further Help

I have tried to make the IDE and object viewer as user-friendly and self-explanatory as possible.  There is still likely to be a few bugs and some things that just don't work.  If you find a bug or something that you think is a bug (it may be that, in the words of Microsoft - 'This behaviour is by design'), firstly check the Known Bugs section, otherwise, please feel free to e-mail me at mjperlini@yahoo.com.  I will do my best to be of assistance.


Known Bugs

The syntax colouring/highlighting occasionally messes up; if it bothers you, bad luck.

You can't (at this stage) comment out a piece of the object definition to see how it works.  For example, typing

Object my_car "the red car" !garage

may not display in the object browser as expected.

The open file dialog box does not allow you to select header files unless there is already a document open.

The object viewer algorithm is a balance between speed and accuracy.  It occasionally messes up.  If you stick to the conventions in Using the Object Viewer, you should be alright.


Release 1...

Release 1 of IF-IDE will be a fully functional IDE for the Inform language.  This IDE will include

•	Object, Class and Function wizards/templates.

•	Project administration.  This will allow you to save a project file, containing all the files that make up the project, and save setting for each project.

•	A grep function, allowing you to search and replace within a number of files.

•	A game wizard (possibly).  This will allow the initial setting up of a game by positioning rooms on a map, linking them up, writing descriptions and filling them with objects.  It then only remains to go back and fill in all the hard code.  Ideally, the map could be built from an existing file.  If anyone has any good algorithms for building a map given room names and connections and would like to share them with me, please drop me a line.  This feature is a bit of a pipe-dream at the moment, but seems to be a common request on the newsgroups.


...and Beyond

After I have released Version 1 of IF-IDE, I aim to make it compatible with the major IF languages currently going around.  Unfortunately, I have absolutely no idea how to make a scripting language work, so the IDE will most probably be hard-coded.  The languages I have in mind are TADS and Hugo (and maybe C/C++).  If any other major languages come along, these will be considered at this stage.  Once I have IF-IDE up to this stage, I think there will be a full source release, and leave it in the hands of significantly more talented people than myself.

I'm always happy to hear suggestions.  Please mail me if you have any requests that you just couldn't live without.


About IF-IDE

IF-IDE is an integrated development environment for the creation of programs using the Inform programming language (at this stage).  For those not familiar with Inform, it is a programming language mainly suitable for the development of interactive fiction, more commonly known as text adventures. For more information, visit the Inform Home Page at:

               http://www.gnelson.demon.co.uk/inform.html

IF-IDE includes dynamic syntax highlighting, a (semi-) dynamic object tree viewer and programmatic compilation and execution of z-code files.  A number of other features are in the works and will be implemented in future releases.

IF-IDE has been released as 'freeware'.  Please see the section Licensing Information.


Using IF-IDE

IF-IDE is pretty much ready to use 'out-of-the-box'.  Simply unzip the files into your required directory and open IF-IDE.exe to run it.  Note that IF-IDE requires Windows 95/98/00 or NT4 with Internet Explorer 4.01 or later installed.  The editor will seem a little slow with updating the screen on anything less than a Pentium with 16Mb of RAM (but then, so will Windows), but it will still be functional.

IF-IDE uses the CodeJockey library by Kirk Stowell for much of the user interface.  This is the file CJLib609.dll.  Note that I have slightly edited the library to make it work with IF-IDE.  Therefore, this library file should be located in the IF-IDE directory, as other programs that use this library will possibly crash if they access my altered version.


About Interactive Fiction

Most people that use this program will already know what Interactive Fiction is, so I am not going to go into a lengthy dissertation here.  For this program to be useful, you will need a z-code interpreter.  My interpreter of choice is the Win32 port of the Frotz interpreter by Stefan Jokisch.  This port is called WinFrotz and is maintained by Rich Lawrence.  The latest version can be found in the “/if-archive/interpreters-infocom-zcode/frotz/” directory at ftp.gmd.de.  The help file to WinFrotz has a bit of history about Interactive Fiction, so I direct you to this.

The recent trend in IF is to the writing of games by the fans.  Three major languages exist, alongside a large number of minor ones, which attempt to take some of the most difficult parts of programming IF away from the author.  These three languages are Inform by Graham Nelson, TADS by Mike Roberts and Hugo by Kent Tessman.  See the rec.arts.int-fiction FAQ for further information on IF Authorship and these and other programming languages.


Licensing Information

IF-IDE is Copyright © 1999-2000 Michael Perlini.  The CodeJockey library is Copyright © 1998-99 Cokejock.com.  The program may be freely copied and distributed provided it is distributed in its entirety.  Modified versions of the program may not be distributed.  Because IF-IDE is made available free of charge, there is no warranty for the program.  You may not charge a fee for distributing this program except to regain the cost of redistribution.

You are not required to accept this licence.  However, nothing else grants you permission to distribute IF-IDE.  This action is prohibited by law if you do not accept this licence.  Therefore, by distributing IF-IDE, you indicate your acceptance of this licence.


File menu commands

The File menu offers the following commands:

New	Creates a new document.
Open	Opens an existing document.
Close	Closes an opened document.
Save	Saves an opened document using the same file name.
Save As	Saves an opened document to a specified file name.
Print	Prints a document.
Print Preview	Displays the document on the screen as it would appear printed.
Print Setup	Selects a printer and printer connection.
Send...	Sends the active document through electronic mail.
Exit	Exits IF-IDE.


Edit menu commands

The Edit menu offers the following commands:

Undo	Reverse previous editing operation.
Cut	Deletes data from the document and moves it to the clipboard.
Copy	Copies data from the document to the clipboard.
Paste	Pastes data from the clipboard into the document.
Paste Link	Pastes from the clipboard a link to data in another application.
Insert New Object	Inserts and embeds an object, such as a chart or an equation in a document.
Links	List and edit links to embedded documents.


View menu commands

The View menu offers the following commands:

Toolbar	Shows or hides the toolbar.
Status Bar	Shows or hides the status bar.
Windows	Shows or hides the output window and object viewer.


Window menu commands

The Window menu offers the following commands, which enable you to arrange multiple views of multiple documents in the application window:

New Window	Creates a new window that views the same document.
Cascade	Arranges windows in an overlapped fashion.
Tile	Arranges windows in non-overlapped tiles.
Arrange Icons	Arranges icons of closed windows.
Split	Split the active window into panes.
Window 1, 2, ...	Goes to specified window.


Help menu commands

The Help menu offers the following commands, which provide you assistance with this application:

Help Topics	Offers you an index to topics on which you can get help.
About	Displays the version number of this application.


File New command
New command (File menu)

Use this command to create a new document in IF-IDE.  Select the type of new file you want to create in the File New dialog box.  << Remove previous sentence if your application supports only one document type. >>

You can open an existing document with the Open command.

Shortcuts

Toolbar:

Keys:	CTRL+N


File New dialog box


File Open command
Open command (File menu)

Use this command to open an existing document in a new window.  You can open multiple documents at once.  Use the Window menu to switch among the multiple open documents.  See Window 1, 2, ... command.

You can create new documents with the New command.

Shortcuts

Toolbar:

Keys:	CTRL+O


File Open dialog box

The following options allow you to specify which file to open:

File Name

Type or select the filename you want to open.  This box lists files with the extension you select in the List Files of Type box.

List Files of Type

Select the type of file you want to open:

<< List your application's file types here. >>

Drives

Select the drive in which IF-IDE stores the file that you want to open.

Directories

Select the directory in which IF-IDE stores the file that you want to open.

Network...

Choose this button to connect to a network location, assigning it a new drive letter.


File Close command
Close command (File menu)

Use this command to close all windows containing the active document.  IF-IDE suggests that you save changes to your document before you close it.  If you close a document without saving, you lose all changes made since the last time you saved it.  Before closing an untitled document, IF-IDE displays the Save As dialog box and suggests that you name and save the document.

You can also close a document by using the Close icon on the document's window, as shown below:


File Save command
Save command (File menu)

Use this command to save the active document to its current name and directory.  When you save a document for the first time, IF-IDE displays the Save As dialog box so you can name your document.  If you want to change the name and directory of an existing document before you save it, choose the Save As command.

Shortcuts

Toolbar:

Keys:	CTRL+S


File Save As command
Save As command (File menu)

Use this command to save and name the active document.  IF-IDE displays the Save As dialog box so you can name your document.

To save a document with its existing name and directory, use the Save command.


Send command (File menu)

Use this command to send the active document through electronic mail.  This command presents a mail window with the active document attached to it.  You may then fill out the To: field, Subject: field, etc., and add text to the body of the message if you wish.  When you are finished you may click the "Send" button to send the message.


File Save As dialog box

The following options allow you to specify the name and location of the file you're about to save:

File Name

Type a new filename to save a document with a different name.  IF-IDE adds the extension you specify in the Save File As Type box.

Drives

Select the drive in which you want to store the document.

Directories

Select the directory in which you want to store the document.

Network...

Choose this button to connect to a network location, assigning it a new drive letter.


File 1, 2, 3, 4 command
1, 2, 3, 4 command (File menu)

Use the numbers and filenames listed at the bottom of the File menu to open the last four documents you closed.  Choose the number that corresponds with the document you want to open.


File Exit command
Exit command (File menu)

Use this command to end your IF-IDE session.  You can also use the Close command on the application Control menu.  IF-IDE prompts you to save documents with unsaved changes.

Shortcuts

Mouse:	Double-click the application's Control menu button.

Keys:	ALT+F4


Undo/Can't Undo command (Edit menu)

Use this command to reverse the last editing action, if possible.  The name of the command changes, depending on what the last action was.  The Undo command changes to Can't Undo on the menu if you cannot reverse your last action.

Shortcuts

Toolbar:

Keys:	CTRL+Z or

ALT-BACKSPACE


Redo command (Edit menu)

Use this command to reverse the last undo action, if possible.


Cut command (Edit menu)

Use this command to remove the currently selected data from the document and put it on the clipboard.  This command is unavailable if there is no data currently selected.

Cutting data to the clipboard replaces the contents previously stored there.

Shortcuts

Toolbar:

Keys:	CTRL+X


Copy command (Edit menu)

Use this command to copy selected data onto the clipboard.  This command is unavailable if there is no data currently selected.

Copying data to the clipboard replaces the contents previously stored there.

Shortcuts

Toolbar:

Keys:	CTRL+C


Paste command (Edit menu)

Use this command to insert a copy of the clipboard contents at the insertion point.  This command is unavailable if the clipboard is empty.

Shortcuts

Toolbar:

Keys:	CTRL+V


View Toolbar command
Toolbar command (View menu)

Use this command to display and hide the Toolbar, which includes buttons for some of the most common commands in IF-IDE, such as File Open.  A check mark appears next to the menu item when the Toolbar is displayed.

See Toolbar for help on using the toolbar.


Toolbar

The toolbar is displayed across the top of the application window, below the menu bar.  The toolbar provides quick mouse access to many tools used in IF-IDE,

To hide or display the Toolbar, choose Toolbar from the View menu (ALT, V, T).

Click	To

Open a new document.

Open an existing document.  IF-IDE displays the Open dialog box, in which you can locate and open the desired file.

Save the active document or template with its current name.  If you have not named the document, IF-IDE displays the Save As dialog box.

Print the active document.

Remove selected data from the document and stores it on the clipboard.

Copy the selection to the clipboard.

Insert the contents of the clipboard at the insertion point.

Reverse the last editing.  Note:  You cannot undo some actions.

Go to the first record in the current selection.

Go to the previous record in the current selection.

Go to the next record in the current selection.

Go to the last record in the current selection.


View Status Bar Command
Status Bar command (View menu)

Use this command to display and hide the Status Bar, which describes the action to be executed by the selected menu item or depressed toolbar button, and keyboard latch state. A check mark appears next to the menu item when the Status Bar is displayed.

See Status Bar for help on using the status bar.


Status Bar

The status bar is displayed at the bottom of the IF-IDE window.  To display or hide the status bar, use the Status Bar command in the View menu.

The left area of the status bar describes actions of menu items as you use the arrow keys to navigate through menus.  This area similarly shows messages that describe the actions of toolbar buttons as you depress them, before releasing them.  If after viewing the description of the toolbar button command you wish not to execute the command, then release the mouse button while the pointer is off the toolbar button.

The right areas of the status bar indicate which of the following keys are latched down:

Indicator	Description

CAP	The Caps Lock key is latched down.

NUM	The Num Lock key is latched down.

SCRL	The Scroll Lock key is latched down.


New command (Window menu)

Use this command to open a new window with the same contents as the active window.  You can open multiple document windows to display different parts or views of a document at the same time.  If you change the contents in one window, all other windows containing the same document reflect those changes.  When you open a new window, it becomes the active window and is displayed on top of all other open windows.


Cascade command (Window menu)

Use this command to arrange multiple opened windows in an overlapped fashion.


Tile command (Window menu)

Use this command to arrange multiple opened windows in a non-overlapped fashion.


Tile Horizontal command (Window menu)

Use this command to vertically arrange multiple opened windows in a non-overlapped fashion.


Tile Vertical command (Window menu)

Use this command to arrange multiple opened windows side by side.


Window Arrange Icons Command

Use this command to arrange the icons for minimized windows at the bottom of the main window.  If there is an open document window at the bottom of the main window, then some or all of the icons may not be visible because they will be underneath this document window.


Split Command (Window menu)

Use this command to split the active window into panes.  You may then use the mouse or the keyboard arrows to move the splitter bars.  When you are finished, press the mouse button or enter to leave the splitter bars in their new location.  Pressing escape keeps the splitter bars in their original location.


1, 2, ... command (Window menu)

IF-IDE displays a list of currently open document windows at the bottom of the Window menu.  A check mark appears in front of the document name of the active window.  Choose a document from this list to make its window active.


Index command (Help menu)

Use this command to display the opening screen of Help.  From the opening screen, you can jump to step-by-step instructions for using IF-IDE and various types of reference information.

Once you open Help, you can click the Contents button whenever you want to return to the opening screen.


Using Help command (Help menu)

Use this command for instructions about using Help.


About command (Help menu)

Use this command to display the copyright notice and version number of your copy of IF-IDE.


Help Using Help Command
Context Help command

Use the Context Help command to obtain help on some portion of IF-IDE.  When you choose the Toolbar's Context Help button, the mouse pointer will change to an arrow and question mark.  Then click somewhere in the IF-IDE window, such as another Toolbar button.  The Help topic will be shown for the item you clicked.

Shortcut

Keys:	SHIFT+F1


Title Bar

The title bar is located along the top of a window.  It contains the name of the application and document.

To move the window, drag the title bar.  Note: You can also move dialog boxes by dragging their title bars.

A title bar may contain the following elements:

Application Control-menu button

Document Control-menu button

Maximize button

Minimize button

Name of the application

Name of the document

Restore button


Scroll bars

Displayed at the right and bottom edges of the document window.  The scroll boxes inside the scroll bars indicate your vertical and horizontal location in the document.  You can use the mouse to scroll to other parts of the document.

<< Describe the actions of the various parts of the scrollbar, according to how they behave in your application. >>


Size command (System menu)

Use this command to display a four-headed arrow so you can size the active window with the arrow keys.

After the pointer changes to the four-headed arrow:

1.	Press one of the DIRECTION keys (left, right, up, or down arrow key) to move the pointer to the border you want to move.

2.	Press a DIRECTION key to move the border.

3.	Press ENTER when the window is the size you want.

Note:  This command is unavailable if you maximize the window.

Shortcut

Mouse:	Drag the size bars at the corners or edges of the window.


Move command (Control menu)

Use this command to display a four-headed arrow so you can move the active window or dialog box with the arrow keys.

Note:  This command is unavailable if you maximize the window.

Shortcut

Keys:	CTRL+F7


System Minimize Command
Minimize command (application Control menu)

Use this command to reduce the IF-IDE window to an icon.

Shortcut

Mouse:	Click the minimize icon [image] on the title bar.

Keys:	ALT+F9


Maximize command (System menu)

Use this command to enlarge the active window to fill the available space.

Shortcut

Mouse:	Click the maximize icon [image] on the title bar; or double-click the title bar.

Keys:	CTRL+F10 enlarges a document window.


Next Window command (document Control menu)

Use this command to switch to the next open document window.  IF-IDE determines which window is next according to the order in which you opened the windows.

Shortcut

Keys:	CTRL+F6


Previous Window command (document Control menu)

Use this command to switch to the previous open document window.  IF-IDE determines which window is previous according to the order in which you opened the windows.

Shortcut

Keys:	SHIFT+CTRL+F6


Close command (Control menus)

Use this command to close the active window or dialog box.

Double-clicking a Control-menu box is the same as choosing the Close command.

Note:  If you have multiple windows open for a single document, the Close command on the document Control menu closes only one window at a time.  You can close all windows at once with the Close command on the File menu.

Shortcuts

Keys: 	CTRL+F4 closes a document window

ALT+F4 closes the <<YourType>> window or dialog box


Restore command (Control menu)

Use this command to return the active window to its size and position before you chose the Maximize or Minimize command.


Switch to command (application Control menu)

Use this command to display a list of all open applications.  Use this "Task List" to switch to or close an application on the list.

Shortcut

Keys:	CTRL+ESC

Dialog Box Options

When you choose the Switch To command, you will be presented with a dialog box with the following options:

Task List

Select the application you want to switch to or close.

Switch To

Makes the selected application active.

End Task

Closes the selected application.

Cancel

Closes the Task List box.

Cascade

Arranges open applications so they overlap and you can see each title bar.  This option does not affect applications reduced to icons.

Tile

Arranges open applications into windows that do not overlap.  This option does not affect applications reduced to icons.

Arrange Icons

Arranges the icons of all minimized applications across the bottom of the screen.


View Ruler Command
Ruler command (View menu)

<< Write application-specific help here. >>


Choose Font Dialog
Choose Font dialog box

<< Write application-specific help here. >>


Choose Color Dialog
Choose Color dialog box

<< Write application-specific help here. >>


Edit Find Command
Find command (Edit menu)

<< Write application-specific help here. >>


Find Dialog
Find dialog box

<< Write application-specific help here. >>


Edit Replace Command
Replace command (Edit menu)

<< Write application-specific help here. >>


Replace Dialog
Replace dialog box

<< Write application-specific help here. >>


Edit Repeat Command
Repeat command (Edit menu)

Use this command to repeat the last editing command carried out.  The Repeat menu item changes to Can't Repeat if you cannot repeat your last action.

Shortcut

Key:	F4


Edit Clear Command
Clear command (Edit menu)

<< Write application-specific help here. >>


Edit Clear All
Clear All command (Edit menu)

<< Write application-specific help here. >>


Next Pane Command
Next Pane

<< Write application-specific help here. >>


Prev Pane Command
Prev Pane

<< Write application-specific help here. >>


Modifying the Document

<< Write application-specific help here that provides an overview of how the user should modify a document using your application.>>


No Help Available

No help is available for this area of the window.


No Help Available

No help is available for this message box.

<< If you wish to author help specific to each message box prompt, then remove the AFX_HIDP_xxx values from the [ALIAS] section of your .HPJ file, and author a topic for each AFX_HIDP_xxx value.  For example, AFX_HIDP_INVALID_FILENAME is the help topic for the Invalid Filename message box. >>


File Print command
Print command (File menu)

Use this command to print a document.   This command presents a Print dialog box, where you may specify the range of pages to be printed, the number of copies, the destination printer, and other printer setup options.

Shortcuts

Toolbar:

Keys:	CTRL+P


Print dialog box

The following options allow you to specify how the document should be printed:

Printer

This is the active printer and printer connection.  Choose the Setup option to change the printer and printer connection.

Setup

Displays a Print Setup dialog box, so  you can select a printer and printer connection.

Print Range

Specify the pages you want to print:

All	Prints the entire document.
Selection	Prints the currently selected text.
Pages	Prints the range of pages you specify in the From and To boxes.
Copies

Specify the number of copies you want to print for the above page range.

Collate Copies

Prints copies in page number order, instead of separated multiple copies of each page.

Print Quality

Select the quality of the printing.  Generally, lower quality printing takes less time to produce.


Print Progress Dialog

The Printing dialog box is shown during the time that <<YourApp>> is sending output to the printer.  The page number indicates the progress of the printing.

To abort printing, choose Cancel.


File Print Preview command
Print Preview command (File menu)

Use this command to display the active document as it would appear when printed.  When you choose this command, the main window will be replaced with a print preview window in which one or two pages will be displayed in their printed format.  The print preview toolbar offers you options to view either one or two pages at a time; move back and forth through the document; zoom in and out of pages; and initiate a print job.


Print Preview toolbar

The print preview toolbar offers you the following options:

Print

Bring up the print dialog box, to start a print job.

Next Page

Preview the next printed page.

Prev Page

Preview the previous printed page.

One Page / Two Page

Preview one or two printed pages at a time.

Zoom In

Take a closer look at the printed page.

Zoom Out

Take a larger look at the printed page.

Close

Return from print preview to the editing window.


File Print Setup command
Print Setup command (File menu)

Use this command to select a printer and a printer connection.  This command presents a Print Setup dialog box, where you specify the printer and its connection.


Print Setup dialog box

The following options allow you to select the destination printer and its connection.

Printer

Select the printer you want to use.  Choose the Default Printer; or choose the Specific Printer option and select one of the current installed printers shown in the box.  You install printers and configure ports using the Windows Control Panel.

Orientation

Choose Portrait or Landscape.

Paper Size

Select the size of paper that the document is to be printed on.

Paper Source

Some printers offer multiple trays for different paper sources.  Specify the tray here.

Options

Displays a dialog box where you can make additional choices about printing, specific to the type of printer you have selected.

Network...

Choose this button to connect to a network location, assigning it a new drive letter.


File Page Setup Command
Page Setup command (File menu)

<< Write application-specific help here. >>