═══ About this Information ═══ The How Do I... information provides solutions to common tasks that you would perform with the various components of this product. Before you begin to use this information, it would be helpful to understand how to navigate through it:  Use the Contents and Index facilities to locate topics.  Use the Search facility to search the text of this document.  Use hypertext links to acquire related information on the current topic. Hypertext links appear in a different color (which you can customize using the OS/2 Scheme Palette). For example, below there are two lists of hypertext links. By double-clicking on the text of the link or by pressing Enter on a highlighted link, you will open a panel of related information. To shift the focus to other links using the keyboard, use the Tab key. For more information on using this help facility, see:  How to Use the Contents  How to Obtain Additional Information  How to Access and Use IPF Facilities For more information, see:  Other Information You Might Find Helpful  Communicating Your Comments to IBM  Notices  Trademarks ═══ How to Use the Contents ═══ The Contents window is the first to appear. Some topics have a plus ( ) icon beside them. This icon indicates that additional topics are available. To expand the Contents if you are using a mouse, click on the plus ( ) icon. If you are using the keyboard, use the Up or Down Arrow key to highlight the topic, and press the plus (+) key. To see additional topics for a heading with a plus ( ) icon, click on the icon or highlight that topic and press the plus (+) key. To view a topic, double-click on the topic (or press the Up or Down Arrow key to highlight the topic, and then press the Enter key). ═══ How to Obtain Additional Information ═══ After you select a topic, the information for that topic appears in a window. Highlighted words or phrases indicate that additional information is available. Certain words and phrases are highlighted in a different color from the surrounding text. These are called hypertext terms. If you are using a mouse, double-click on the highlighted word. If you are using a keyboard, press the Tab key to move to the highlighted word, and then press the Enter key. Additional information then appears in a window. ═══ How to Access and Use IPF Facilities ═══ Several choices are available for managing the information presented in this document. There are three PullDown menus: the Services menu, the Options menu, and the Help menu. The actions that are selectable from the Services menu operate on the active window currently displayed on the screen. These actions include the following: Placing Bookmarks You can set a placeholder so you can retrieve information of interest to you. Searching for Information You can find occurrences of a word or phrase in the current topic, selected topics, or all topics. Printing Information You can print one or more topics. You can also print a set of topics by first marking the topics in the Contents list. Copying Information to a File You can copy a topic that you are viewing to the System Clipboard or to a file that you can edit. This method is particularly useful for copying syntax definitions and program samples into the application that you are developing. Using the actions that are selectable from the Options menu, you can change the way your Contents list is displayed. To expand the Contents and show all levels for all topics, choose Expand all from the Options PullDown menu. You can also press the Ctrl, Shift and * keys together. The actions that are selectable from the Help menu allow you to select different types of help information. For information about any of the menu choices, highlight the choice in the menu and press F1. ═══ Placing Bookmarks ═══ When you place a bookmark on a topic, it is added to a list of bookmarks you have previously set. You can view the list, and you can remove one or all bookmarks from the list. If you have not set any bookmarks, the list is empty. To set a bookmark, do the following: 1. Select a topic from the Contents. 2. When that topic appears, select the Bookmark option from the Services menu. 3. If you want to change the name used for the bookmark, type the new name in the field. 4. Click on the Place radio button (or press the Up or Down Arrow key to select it). 5. Click on OK (or select it and press Enter). The bookmark is then added to the bookmark list. ═══ Searching for Information ═══ You can specify a word or phrase to be searched. You can also limit the search to a set of topics by first marking the topics in the Contents list. To search for a word or phrase in all topics, do the following: 1. Select the Search option from the Services menu. 2. Type the word or words to be searched for. 3. Click on All sections (or press the Up or Down Arrow keys to select it). 4. Click on Search (or select it and press Enter) to begin the search. 5. The list of topics where the word or phrase appears is displayed. ═══ Printing Information ═══ You can print one or more topics, the index, or the table of contents. Make sure that your printer is connected to the serial port, configured correctly, and ready for input. To print: 1. Select Print from the Services menu. 2. Select what you want to print. Note that the This section and Marked sections choices are only available if you are viewing a topic or if you have marked topics, respectively. To mark topics in the table of contents, press the Ctrl key and click on the topics, or use the arrow keys. 3. Select Print to print what you've chosen on your printer. ═══ Copying Information to a File ═══ You can copy a topic that you are viewing in two ways:  Copy copies the topic that you are viewing into the System Clipboard. If you are using a Presentation Manager (PM) editor (for example, the Enhanced Editor) that copies or cuts (or both) to the System Clipboard, and pastes to the System Clipboard, you can easily add the copied information to your program source module.  Copy to file copies the topic that you are viewing into a temporary file named TEXT.TMP. You can later edit that file by using any editor. TEXT.TMP is placed in the directory where your viewable document resides. To copy a topic, do the following: 1. Expand the Contents list and select a topic. 2. When the topic appears, select Copy to file from the Services menu. 3. The system puts the text pertaining to that topic into the temporary file TEXT.TMP. ═══ Other Information You Might Find Helpful ═══ This product provides a number of online guides and references that we hope you'll find helpful as you develop applications. This information includes:  User's Guide information provides conceptual and usage information,  Reference information is organized for quick access, and  How Do I... information gives you specific instructions for performing common tasks. You can get to this online information from the Information folder inside the main product folder. You can also get to it from the Help menu in any of the components of the product. ═══ Communicating Your Comments to IBM ═══ If there is something you like, or dislike, about this document, please let us know. You can use one of the methods listed below to send your comments to IBM. Please be sure to include the complete title of the publication that you are commenting on. For example, you might refer to the How Do I... information for the WorkFrame (depending on the product that you use WorkFrame with) as: VisualAge C++ WorkFrame: How Do I... for OS/2. The comments you send should only pertain to the information in this document and its presentation. To request additional publications or to ask questions or make comments about the functions of IBM products or systems, you should talk to your IBM representative or your authorized IBM remarketer. When you send comments to IBM, you grant IBM a nonexclusive right to use or distribute your comments in any way it believes appropriate without incurring any obligation to you. You can send your comments to IBM in the following ways:  By mail to the following address: IBM Canada Ltd. Laboratory Information Development 2G/345/1150/TOR 1150 EGLINTON AVENUE EAST NORTH YORK, ONTARIO CANADA M3C 1H7  By FAX to the following number: - United States and Canada: (416) 448-6161 - Other countries (+1) 416-448-6161  By electronic mail to one of the following IDs. Be sure to include your entire network address if you wish to get a reply. - Internet: torrcf@vnet.ibm.com - IBMLink: toribm(torrcf) - IBM/PROFS: torolab4(torrcf) - IBMMAIL: ibmmail(caibmwt9) ═══ Notices ═══ Copyright International Business Machines Corporation, 1995. All rights reserved. Note to U.S. Government Users - Documentation related to restricted rights - Use, duplication, or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp. This edition applies to Version 3.0 of IBM VisualAge C++ for OS/2 (30H1664, 30H1665, 30H1666) and to all subsequent releases and modifications until otherwise indicated in new editions. Make sure you are using the correct edition for the level of the product. This publication could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; any such changes will be reported in subsequent revisions. Requests for publications and for technical information about IBM products should be made to your IBM Authorized Dealer or your IBM Marketing Representative. When you send information to IBM, you grant IBM a nonexclusive right to use or distribute the information in any ways it believes appropriate without incurring any obligation to you. Any reference to an IBM licensed program in this publication is not intended to state or imply that only IBM's licensed program may be used. Any functionally equivalent product, program, or service that does not infringe any of IBM's intellectual property rights may be used instead of the IBM product, program, or service. Evaluation and verification of operation in conjunction with other products, except those expressly designated by IBM, is the user's responsibility. IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to the IBM Director of Licensing. IBM Corporation, 500 Columbus Avenue, Thornwood, NY, 10594, USA. This publication contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. ═══ Trademarks and Service Marks ═══ The following terms used in this publication are trademarks or service marks of IBM Corporation in the United States or other countries: Common User Access CUA IBM Operating System/2 OS/2 OS/2 Warp Personal System/2 Presentation Manager PS/2 VisualAge WorkFrame Other company, product, and service names, which may be denoted by a double asterisk(**), may be trademarks or service marks of others. ═══ 1. ------------Help for Tasks: How do I...?---------------- ═══ ═══ 2. Migrating ═══  Migrate projects from earlier WorkFrame versions  Migrate a make file from a command-line environment  Migrate existing source files to a WorkFrame project ═══ 2.1. Migrate projects from earlier WorkFrame versions ═══ If you have WorkFrame projects that were created in WorkFrame Version 1.1 or Version 2.1, and want to transform them into the format that the current version uses: 1. Select the Migrate projects icon from the Tools folder of the VisualAge C++ Version 3 application folder. 2. Decide whether you want to migrate projects from Version 1.1 or Version 2.1 of WorkFrame. You can do both by going all the way through this procedure twice. 3. Decide which projects you want to migrate. The original projects are not modified. The new projects are put into a Migration folder on the desktop. 4. Decide if you want to migrate just the basic project settings, or the settings plus the action profiles (which determine the contents of the popup and pulldown menus). Because WorkFrame Version 3 defines many default actions, you might want to migrate just the projects unless you have customized the action profiles significantly. 5. To migrate WorkFrame Version 1.1 projects, select Change directory and find the directory where the projects are located. When you select the OK button, the migration process is started. 6. To migrate WorkFrame Version 2.1 projects, select the drives on which the projects are located and select Find projects to find the projects. Once you have found one or more projects, select the ones you want to migrate and select Migrate to perform the automatic phase of the migration. If the migration process finds any project that has missing information, you will see error messages in the Action Log, but the process will continue and will migrate as much of the project as possible. 7. After the automatic migration is finished, follow these manual steps for each project: a. Archive the old version (optional). b. Rename the new version and move to another folder (optional). c. Customize the options for the Build action, to select which actions to execute while building the project and to set up an efficient build process. Select Build under the Options pulldown menu in the window for the new project. d. If you used customized Compile and Link actions in WorkFrame Version 2, you may need to change the options for those actions (by selecting from the Options pulldown menu in the project menu or by going into the Tools setup window) to make them work the same way. ═══ 2.2. Migrate a make file from a command-line environment ═══ You can build a project using your own existing make file, or using a make file that is generated automatically for you. To continue using an existing make file: 1. You do not need to make a backup copy of the old one unless the Build action options have been modified. The default is for the Build action to stop rather than overwrite a user-written make file. 2. Customize the build action for efficiency by changing its project options. 3. Build the project by either:  Selecting the make file, then selecting the Make action from its popup menu, or  Selecting the Build action. (First, select Build under the Options pulldown menu and make sure that the Generate a make file radio button on the Make page is deselected.) Related tasks:  Create a make file from a project  Build using a WorkFrame-generated make file  Create a project that contains multiple targets ═══ 2.3. Migrate existing source files to a WorkFrame project ═══ You can leave existing source files where they are, in one or more directories: 1. Select Settings->Location under the View pulldown menu to open the project settings dialog. 2. Fill in the names of the directories where the source files can be found. 3. Select one of these directories as the working directory, where you want any newly created files to be placed. 4. Close the dialog. Or, you can create a new directory, copy all the files there, and fill in its name in the settings dialog. ═══ 3. Integrating ═══  Integrate my own tools  Integrate my own make file ═══ 3.1. Integrate my own tools ═══ For each tool that you want to integrate: 1. Decide whether the tool applies to particular types of files ("file-scoped"), or whether it should run by itself, with no file names or special file names passed as parameters ("project-scoped"). This choice determines if the tool can be launched from the popup menu for a particular file type, from the popup menu for the project window container, or both. You make this choice in the Action applies to group on the General page of a notebook dialog later on. 2. Now follow the procedure for creating an action. The action represents the menu item you will use to launch the tool. 3. After creating the action, select Project Options->Change and/or File Options->Change from its popup menu and fill in any command-line parameters to pass to the tool. You can define different sets of parameters to pass depending on whether the action is selected from the project popup menu or from the popup menu of a selected file. One or both of these pulldown menu choices are selectable based on whether File, Project, or both are selected on the General page of the action settings notebook. File Options sets the command-line parameters that are passed to the tool when it is run against one or more selected files, and usually passes a set of file names. For example, the substitution variable %f refers to the first selected file name and %a %z refers to the list of all selected file names. Project Options sets the command-line parameters that are passed to the tool when it is run against the entire project, and usually passes either no file names or just the name of the target file. ═══ 3.2. Integrate my own make file ═══ ═══ 4. Starting or running ═══  Start using WorkFrame  Run a particular tool  Run an executable target program ═══ 4.1. Start using WorkFrame ═══ To start using WorkFrame (which you must do before performing most of the other procedures described throughout the how-do-I help): 1. Start the WorkPlace Shell (PMSHELL.EXE) if it is not already running. 2. Create a WorkFrame project, or copy an existing one. (Look for the VisualAge C++ project template under the VisualAge C++ application folder, or in the VisualAge C++ Samples folder. 3. Open the project by double-clicking or by selecting Open from its popup menu. 4. If the project window does not show any files, select Settings->Location under the View pulldown menu and fill in the names of the directories to search for source files and in which to create any new files. Then close the settings dialog. 5. If the Project menu has no menu choices, select Settings->Inheritance under the View pulldown menu, press the Add button, and use the Find button to locate a project that has the tools you want available on its popup and pulldown menus. Now you can work with the project using the popup and pulldown menus in the project window and by double-clicking on the objects that are shown in the project window. Spend some time experimenting with your first project, referring to this how-do-I help and pressing the F1 key for help when the focus is on windows or menu items that you are curious about. Related tasks:  Creating a project  Copying a project using the desktop  Backing up a project  Finding projects  Changing what items appear in popup or pulldown menus ═══ 4.2. Run a particular tool ═══ WorkFrame runs tools, such as compilers, debuggers, and editors, by performing actions. The actions and associated options that apply to each type of object are specified in the Tools setup window. To run a particular tool: 1. Determine which action executes the tool you want. If there is no applicable action, create one. The actions are represented by entries under the Project and Selected pulldown menus, and on the popup menus for the project parts. The entries under the Selected pulldown menu differ depending on what types of files are selected. 2. In the project window, select the applicable files that you want the tool to work on, and then select the tool from the popup menu of one of the files. If the tool is not available from the file's popup menu, select it from the container popup menu in the project window. Related tasks:  Creating an action ═══ 4.3. Run an executable target program ═══ The default double-click action for an executable program is the Run action. After building an executable target program, double-click on the icon to execute it. If you want the output displayed in an OS/2 text window or in the monitor area of the project window, select the applicable choice (Foreground or Monitored) under the Run cascade from the executable file's popup menu. ═══ 5. Creating or deleting ═══  Create a new source or other text file  Create a project on the desktop  Create a project that contains multiple targets  Create an action  Create an action that runs a built-in DOS or OS/2 command  Create context-sensitive help for my own actions  Create a make file from a project  Delete an action, environment variable, or type  Delete an item from the popup menu of a file type  Delete one or more project parts ═══ 5.1. Create a new source or other text file ═══ There are several ways to create a new text file, rather than editing an existing file:  From a Project toolbar (at the top of the project window), select the Edit button to run the editor without loading a particular file.  From the Project pulldown menu or the container popup in the project window, select Edit.  Select a data file template from the Templates folder. Drag the template onto the project. WorkFrame creates the file in the directory that is defined as the working directory in the project settings. Now you can edit the file to fill in its contents. Related tasks:  Edit one or more selected files  Change the default editor ═══ 5.2. Create a project on the desktop ═══ There are several ways to create a new WorkFrame project. The new project appears as an object on the desktop.  To create a project containing skeleton source files that you can modify, use the Project Smarts tool. It is a convenient way to get started when you know what kind of project you want to create. It configures many of the settings that you would otherwise have to choose when building the project. 1. Run Project Smarts by double-clicking its icon in the VisualAge C++ application folder. 2. Select one of the projects listed in the catalog. Read the accompanying description to see if it is applicable for what you want. 3. Select the Create button and complete any necessary dialogs to create the project on the desktop.  To create a basic project that you can customize yourself, drag the WorkFrame project template from the VisualAge C++ application folder or the Templates folder onto the desktop. If you want the project to already be configured with default actions, use the template from the VisualAge C++ application folder. As an alternative, select Create another from the popup menu of an existing project icon.  Look in the Sample projects folder of the VisualAge C++ application folder. The samples represent projects that are already set up. If you copy one of the sample projects to use as a starting point, note that any modifications you make will effect the original source files. If you want to keep the original source files unchanged, copy the source directories using the desktop or the command line and enter the new directory names on the Location page of the project settings notebook. In the new project, make sure that Location and Inheritance pages of the project settings notebook are set up correctly. Get to them by selecting from the Settings cascade under the View pulldown menu in the project window. The Location page defines the directories that are searched for project files and the directory where new files are created. The Inheritance page defines one or more projects from which to inherit actions, environment variables, and file types; inheriting actions allows you to duplicate the same menu arrangement in multiple projects. Related tasks:  Change what items appear in popup or pulldown menus ═══ 5.3. Create a project that contains multiple targets ═══ In a complex project, or one that you originally set up for a command-line environment, you might want a single build operation to create multiple target files. The WorkFrame way to do this is to create a project for each target file, and nest them all inside another project: 1. Create a simple project for each of the individual target files (such as a .EXE or .DLL file). 2. Create another project to serve as a container. 3. Drag and drop the other projects from the desktop into this new project, which we refer to as the base project. When this base project is built, it automatically builds each of the projects that it contains. 4. If one of the projects depends on another one and the build order is important, nest the one that must be built first inside the other one. For complex projects with multiple dependencies, you may need to use several levels of nesting. Because there are many other considerations for creating and managing these complex projects, you might need to refer to the more comprehensive information in the product manuals to plan the project organization in advance. Related tasks:  Creating a project ═══ 5.4. Create an action ═══ When you want to integrate a new tool or set up an alternative way to execute an existing one, create a new action: 1. Select Tools setup under the View pulldown menu to open the Tools setup window. 2. Select Add from the Actions pulldown menu. To create an action that is similar to an existing one, select the existing action before selecting Add. 3. Fill in the resulting settings dialog. If any fields are not self-explanatory, press the F1 key or the Help button on any notebook page for instructions. 4. Define the action options (equivalent to the command-line parameters for the tool). Select the new action, then select Project options->Change and/or File options->Change under the Actions pulldown menu, and fill in the resulting dialogs. Related tasks:  Copy actions  Set the command-line parameters that are passed to a tool  Set which menus the action should appear in. ═══ 5.5. Create an action that runs a built-in DOS or OS/2 command ═══ To make an action execute a built-in command such as DIR or DEL: 1. Create the action. Use CMD.EXE for the Program name. 2. Change the Project options and/or the File options for the action. Fill in the command-line parameters as: /C Command string ═══ 5.6. Create context-sensitive help for my own actions ═══ When you customize popup and pulldown menus with actions that you create, you can provide context-sensitive help that is displayed when focus is placed on the menu item and the F1 key is pressed. You might need to provide such help if other people are using tools or projects that you supply to them. 1. Write the help text using the markup language of the OS/2 Information Presentation Facility (IPF), which comes with the OS/2 Toolkit. If you use a different help authoring system, just substitute the appropriate viewing command later on in this procedure. 2. Use the IPF compiler from the Toolkit to create a .INF or .HLP file. You can run the help compiler from WorkFrame. 3. Select Tools setup under the View pulldown menu to see all the actions in the project. Expand the tree view of the actions. 4. Select the action for which you want to add context-sensitive help and change it; or, if the action does not exist, select Add from the popup and proceed through the creation dialog. On the Help page of the dialog, enter VIEW HELPFILE.INF where HELPFILE is the name you gave to the file. 5. If you use a viewing command that accepts a search string but does not place it at the end of the command line, include the substitution variable %TOPIC% at the applicable spot in the Command field. 6. If the .INF file contains more than one help topic, enter a search string in the Topic field. Use one or more consecutive words from the title of the appropriate help topic. Make sure that the topic you want to display is the first one in the help file with this search string in its title. 7. When you have finished creating or changing the action, close the notebook dialog. Related tasks:  With Project Smarts you can create a project already set up for developing context-sensitive help. ═══ 5.7. Create a make file from a project ═══ From the project window, select MakeMake or Build from the Project pulldown menu. MakeMake is faster, because it only generates the make file; Build generates the make file and proceeds to build the project. Each time you build the project, WorkFrame generates a make file. This make file is only updated by the Build or Makemake actions, so remember to run one of these actions when you change options, source files, or other settings, to record your changes in the generated make file. If you customize the WorkFrame-generated make file, rename it before doing the next build, or prevent WorkFrame from overwriting it by deselecting Generate a make file on the Make page of the project-scoped actions for the Build action. Related tasks:  Build using a WorkFrame-generated make file  Build using my own make file ═══ 5.8. Delete an action, environment variable, or type ═══ 1. To see the actions, environment variables, and types that are defined for a particular project, select Tools setup under the View pulldown menu in the project window. 2. In the Tools setup window, select Actions, Variables, or Types from the View pulldown menu to see one of the kinds of objects. 3. Select one or more actions, environment variables, or types to delete. For actions, you can delete either a single action or an entire class of actions. 4. From the object's popup menu or under the applicable pulldown menu, select Delete. Or drag the object and drop it on the Shredder object. If the object was not defined in the current project, but was available through inheritance, the Delete operation is not available from the current project; you must delete the action in the defining project. ═══ 5.9. Delete an item from the popup menu of a file type ═══ To remove an action from all the menus, both popup and pulldown, where it appears: 1. Select Tools setup under the View pulldown menu to see the list of tools (called actions in this context) that are associated with the project. 2. Expand the tree view of actions to find the action that defines the applicable menu item. 3. Select the action. 4. Change it: on the Menus page, deselect Add to menus. 5. Press the OK button to close the dialog. The advantage of the preceding technique is that although the action is not listed in any menus, it can still be performed during a build. The following technique allows you to selectively remove menu items from particular menus. Removing a source type from an action also means that the action will not apply to that file type during a Build or MakeMake action. To remove an action from the popup menu, or the Selected pulldown menu, for a particular file type: 1. Select Tools setup under the View pulldown menu to see the list of tools (called actions in this context) that are associated with the project. 2. Expand the tree view of actions to find the action that defines the applicable menu item. 3. Select the action. 4. Change it. 5. On the Types page, edit the Source Types field to remove the applicable type name or file mask. Or, if the source type consists of multiple wildcard patterns, specify the appropriate patterns explicitly, one per line, instead of using a type name. 6. Press the OK button to close the dialog. If the object was not defined in the current project, but was available through inheritance, the Change operation is not available from the current project; you must change the action settings in the defining project. ═══ 5.10. Delete one or more project parts ═══ To delete one or more project parts, which may be source files, temporary files, target files, or other projects: 1. Make sure that the Parts filter entry field displays all the files or other project parts that you might want to delete. 2. Select the project parts to delete. 3. Select Delete from the popup menu of one of the parts, or drag and drop them onto the Shredder object. Related tasks:  Filter the display of source files and other project parts ═══ 6. Moving, copying, or backing up ═══  Copy a project using the desktop  Back up a project  Copy actions  Move a project or project part ═══ 6.1. Copy a project using the desktop ═══ 1. From the popup menu of the project icon, select Copy. As an alternative, you can drag the icon while pressing the Ctrl key. 2. Select the folder where the new project should go, or another drive (for example, if copying the project to a diskette). 3. Remember that the project information includes the names of the directories where the source files are located, not the directories or source files themselves. The copied project points to the same source files as the original. If you want to make new copies of the source files, you must do that separately and change the list of source directories on the Location page in the project settings. Dragging and dropping a project object follows the same convention as for other Workplace Shell objects: you can use mouse button 2, with optional Alt and Ctrl qualifier keys, to move, copy, or create a shadow of the object. Related tasks:  Back up a project ═══ 6.2. Back up a project ═══ 1. The project is represented by a single file. Locate this file by looking at the File page of the project settings notebook. 2. Back up this file (by copying it or archiving it). 3. Remember that the project information includes the names of the directories where the source files are located, not the directories or source files themselves. Back up the files in each of the project's source directories. 4. Repeat this process for any subprojects that are nested inside the project. For the backed-up project file to work correctly when it is restored, its OS/2 extended attributes must be preserved. Thus, you cannot back up a project directly onto a filesystem that does not support OS/2 extended attributes (such as the NFS or AFS filesystems). Instead, use a compression or archiving utility that preserves the extended attributes (some utilities preserve extended attributes but others do not). Related tasks:  Copy a project using the desktop ═══ 6.3. Copy actions ═══ Depending on whether you want to copy one or many actions, and whether you want the new actions to be local copies or shadows of centrally defined actions, you have several choices when copying actions:  You can copy an individual action from another project.  You can copy an action within the same project.  You can make local copies of some or all of the actions from another project. You can change the settings of these new actions.  You can inherit all the actions from another project. You cannot change the settings of these new actions directly. Changes made to these actions in the other project will be reflected in the current project. The advantage is that multiple projects can inherit actions from the same project, so that changes to the action are reflected in all the projects that inherit from it. To locate the project where an action is originally defined, select it in the Tools setup window and select Where defined from its popup menu. ═══ 6.3.1. Copy an action from another project ═══ 1. Go to a project that uses the action. 2. Select Tools setup under the View pulldown menu. 3. Expand the tree view to find the action you want. 4. Select Copy from its popup menu. 5. Identify the project into which you want to copy that action. Any project-scoped options or file-scoped options that are defined for the action are copied along with it. If an inherited action is copied, the associated options are copied from the base project. ═══ 6.3.2. Copy an action within the same project ═══ If you want the actions to be exactly the same except for the name, use the same procedure as for copying from another project. If you want to change some settings of the new action: 1. Select Tools setup under the View pulldown menu in the project window. 2. Expand the tree view to find the action you want. 3. Select the action you want to copy. 4. Select Add from its popup menu. 5. Change the name and/or class of the action. Customize any other settings that you want to change before pressing the OK button. ═══ 6.3.3. Copy multiple actions from another project ═══ 1. Open the Tools setup windows for both projects. 2. In the source project, select the icon for a class of actions, or the root object of the tree view (to copy all actions). 3. Drag the selected object and drop it in the actions container of the project to which you want the actions copied. ═══ 6.3.4. Inherit actions from another project ═══ 1. Go to the project where the actions are not yet defined. 2. Select Settings->Inheritance under the View pulldown menu. 3. To the inheritance list, add the project that defines the actions you want to copy. ═══ 6.4. Move a project or project part ═══ If you want to move a project or a project part, such as a source file: 1. For a project, select Move from the popup menu of the project icon or project container, or from the System pulldown menu of the project window. Or, drag the project icon and drop it in a different folder or project. For a project part, select Move from the popup menu of the project part. Or, drag the icon for the project part and drop it in a different folder or project. 2. Fill in the resulting dialog to indicate the destination for the move operation. ═══ 7. Setting or changing ═══  Set the directory where WorkFrame stores new files  Set the command-line parameters that are passed to a tool  Set up shortcuts for the edit/compile/debug cycle  Set the double-click action for a type of file  Set detailed options for compiling or building  Set up a project for debugging, browsing, optimization, and performance analysis  Set environment variables  Change what items appear in popup or pulldown menus  Change the default editor  Change the settings for an action ═══ 7.1. Set the directory where WorkFrame stores new files ═══ When WorkFrame generates a temporary or target file, or runs an action, the directory that is used is the one specified as the working directory on the Location page of the project settings dialog. To choose a different directory: 1. Select Settings->Location under the View pulldown menu in the project window. 2. Select one or more source directories (where tools will search for files). 3. Choose the new working directory from the dropdown list. 4. Close the notebook dialog. ═══ 7.2. Set the command-line parameters that are passed to a tool ═══ When an action is run, the corresponding program is executed with a set of command-line parameters, which we refer to as the action options. Each action has one or two sets of options, depending on whether it is project-scoped, file-scoped, or both. For example, a project-scoped edit action might start the editor without passing a file name, while the same action might pass one or more file names when it is file-scoped. The action options are distinct from the action settings; for each action, there are separate menu items for changing the options for the project-scoped form, the options for the file-scoped form, and the settings. To select the command-line parameters for a particular tool, change the action options as follows: 1. Select Tools setup under the View pulldown menu in the project window to open the Tools setup window. 2. Expand the tree view until you see the action whose options you want to set. 3. Select the action. 4. If you want to set the options that are passed when the action is run as a project-scoped action, select Project Options->Change from the Actions pulldown menu. To set the options that are passed when it is run as a file-scoped option, select File Options->Change instead. One or both of these pulldown menu choices is selectable based on the selected scopes on the General page of the action settings notebook. Project Options sets the command-line parameters that are passed to the tool when it is run against the entire project, and usually passes either no file names or just the name of the target file. File Options sets the command-line parameters that are passed to the tool when it is run against one or more selected files, and usually passes a set of file names. 5. If the options dialog consists of entry fields, fill in the option string to pass to the tool. You can customize the option string using substitution variables. You only need to fill in the Error template field if the action displays error messages in a specific format, and you want to be able to double-click on an error in the monitor to edit a source file at the location of the error. Fill in the field to show the format of an error message, using the %f, %i, %c, and %t substitution variables. to represent the source file name, error location line and column, and error message text. If the options dialog consists of a notebook, fill in the applicable settings. 6. Select the OK button to close the dialog and save the settings, or select the Undo button before closing the dialog if you change your mind and want to cancel the changes. If an action is inherited from another project, so are the options associated with that action. When you select OK to accept new action options, the new options override the ones in the project that defines the action. You can select Delete under the Project options or File options cascades to revert back to the default settings for action options. Note: If you find that you frequently need to change the options for a particular action, you may want to use one of these shortcuts:  In the Tools setup window, change the action. Select Add to project options menu on the Menus page. The action will be listed under the Options pulldown menu on the project window, allowing you to go directly to its options dialog without going through the Tools setup window.  Make several copies of the action, each launching the same tool but with a different set of options. ═══ 7.2.1. Substitution variables for action options ═══ The substitution variables you can use when defining options for an action are: │ %a %z │Is replaced by the names of all the selected files, │separated by a space. If the space between the 'a' and the │'%' is replaced by a string, the names are separated by that │string. For example, if the selected files are │ d:\cat.obj, d:\dog.obj │and │ d:\bird.obj │the substitution variable %a+%z produces the string │ d:\cat.obj+d:\dog.obj+d:\bird.obj │The only substitution variables allowed within the %a..%z │substitution variables are %% and %d. ──────────┼──────────────────────────────────────────────────────────── %d │Is replaced with the project's working directory. ──────────┼──────────────────────────────────────────────────────────── %e │Is replaced by the extension (including the period) of the │first selected file. ──────────┼──────────────────────────────────────────────────────────── %f │Is replaced with the fully qualified name of the first │selected file. Specifying %f is the same as specifying │%q%n%e. ──────────┼──────────────────────────────────────────────────────────── %m │Is replaced by the make file name specified for the project │in its Settings notebook. ──────────┼──────────────────────────────────────────────────────────── %n │Is replaced by the file name (without an extension and path) │of the first selected file. ──────────┼──────────────────────────────────────────────────────────── %o │Is replaced by the target file name specified for the │project in its Settings notebook. ──────────┼──────────────────────────────────────────────────────────── %p │Is replaced by the fully qualified project file name. ──────────┼──────────────────────────────────────────────────────────── %q │Is replaced by the path of the first selected file. ──────────┼──────────────────────────────────────────────────────────── %r │Is replaced by the run options set for the project target │file in the project's Settings notebook. ──────────┼──────────────────────────────────────────────────────────── %t │Is replaced by the file name (without an extension and path) │of the project's target. ──────────┼──────────────────────────────────────────────────────────── %TOPIC% │Is replaced by the contents of the Help Topic field in the │action's Settings notebook. This field specified the help │topic to be displayed when the user requests for help on the │action. ──────────┼──────────────────────────────────────────────────────────── %% │Is replaced by the % symbol. │ Related information:  Substitution variables for error templates ═══ 7.2.2. Substitution variables for error templates ═══ The substitution variables in the table below are used to specify error message format in error templates. WorkFrame uses error templates to parse error messages in a monitor window when you double-click on an error message to invoke the editor. │ %f │Is replaced by the name of the file name where the error │occurred. If the error message does not emit a │fully-qualified file name, the editor may not be able load │the file if it is not located in the project's Working │directory. ──────────┼──────────────────────────────────────────────────────────── %i │The line in the source file at which the error occurred. ──────────┼──────────────────────────────────────────────────────────── %c │The column in the source file at which the error occurred. ──────────┼──────────────────────────────────────────────────────────── %t │The text of the error message. │ Related information:  Substitution variables for action options ═══ 7.3. Set up shortcuts for the edit/compile/debug cycle ═══ A number of fastpaths and techniques can save time in working with WorkFrame. Accelerator Keys To set up accelerator keys (Ctrl+Shift+key) for frequently performed actions: 1. In a project window, select Tools setup under the View pulldown menu. 2. Expand the tree view of actions until the applicable action is visible. 3. Change the action: on the Menus page, enter a single character in the Ctrl+Shift+ entry field. The characters that are already used for accelerators are displayed in the In use field. 4. Select the OK button to close the dialog and save the settings. 5. Whenever you want to execute that action, select an object (if appropriate) and then press Ctrl+Shift+accelerator, where accelerator is the character you entered in the entry field. You can use these accelerators from within WorkFrame, or from within other WorkFrame-integrated tools. Toolbar You can select the most common WorkFrame operations from a toolbar at the top of the project window:  With a single click, you can build, run, or debug the target program, change the build options, edit a new file, go to the Tools setup window, or open the How Do I help that you are reading now.  To change the appearance of the toolbar, select one of the entries under the View->Toolbars pulldown menu.  To select additional project-scoped actions for the toolbar: 1. Select Tools setup under the View pulldown menu to open the Tools setup window. 2. Expand the tree view of actions to find the action you want to put on the toolbar. 3. Change the action: on the Menus page, select Add to project Toolbar. 4. Select the OK button to confirm the change. 5. Repeat the operations in the Tools setup window for each action that you want on the toolbar. Warp Launch Pad In OS/2 Warp, you can drag and drop a project icon onto the system Launch Pad, allowing you to open the project with a single mouse click, and to go to the project settings, go to the Tools setup window, or execute a project-scoped action from the object's popup menu. ═══ 7.4. Set the double-click action for a type of file ═══ Within a project, you can select what happens when you double-click on the icon for particular types of files: 1. Select a file of the applicable type. 2. Look at the contents of its popup menu or the Selected pulldown menu to see what actions apply to that type. The current double-click action is indicated by the order of the last group of the popup menu, or under the Selected pulldown menu. If the first menu selection is the name of an action class with no cascade, only one action in that class applies to the selected file type, and is the default double-click action. If the first menu selection has a cascade, more than one action in that class applies to the selected file type, and the first one is the default double-click action. 3. Select Tools setup under the View pulldown menu. In the resulting window, display the Actions view. 4. Select the action that is the current double-click default. You might need to expand the tree view to find it. 5. Change the action. 6. Go to the Support tab. Note the value of the Priority field. 7. Close the notebook without making any changes. 8. Select the action that you want to be the new double-click default. 9. Change it: on the Support page, change the priority setting to a higher value (a larger number) than the priority of the previous action. The allowed priority range is from 0 (lowest priority) to 99 (highest priority). 10. Select the OK button to close the notebook. Now, double-clicking on a file of that type will execute the action you want instead of the previous one. Note that raising the priority of an action might also make it the default double-click action for other types of files to which it applies. An alternative is to lower the priority of the current default action. Related information:  Default priority settings for actions ═══ 7.4.1. Default priority settings for actions ═══ Build (Normal) 95 Build (All) 94 Run (Target) 90 Run (For) 90 Run (Monit) 88 Debug 80 Edit (Editor) 70 Edit (ICON) 70 Edit (DLG) 70 Browse (C++) 60 Edit (EPM) 58 Edit (SYST) 56 Browse (Editor) 50 Compile (CPP) 50 Compile (RES) 50 Compile (MSG) 50 Compile (SOM) 50 Compile (IPF) 50 Analyze 40 Make 40 Visual 35 Database 30 Inspect 30 Mapsym 30 MakeMake 20 Edit (markexe) 20 View 10 Package 1 Bind (Res) 0 (not displayed) Bind (Msg) 0 Link 0 Lib (From DLL) 0 Lib (From DEF) 0 Lib 0 BrsMon 0 ═══ 7.5. Set detailed options for compiling or building ═══ In the project window, select the Compile or Build choices under the Options pulldown menu and fill in the resulting notebook dialogs. This method is a fastpath that avoids having to go through the Tools setup window. Related tasks:  Set up a project for debugging, browsing, optimization, and performance analysis  Set the command-line parameters that are passed to a tool ═══ 7.6. Set up a project for debugging, browsing, optimization, and performance analysis ═══ In the project window, select Build Smarts under the Options pulldown menu. The buttons in this dialog select any options, DLLs, and other parameters needed for these tasks. These settings take precedence if you make different choices on other options dialogs. These settings also affect individual actions, such as those in the Compile and Link classes, in addition to the Build actions.  Set detailed options for compiling or building  Set the command-line parameters that are passed to a tool ═══ 7.7. Set environment variables ═══ Use the following procedure to define environment-variable settings within WorkFrame: 1. Select Tools setup under the View pulldown menu. 2. In the Environment view, select the name of an environment variable from the drop-down menu, or type its name if it is not already present. 3. Enter or change the associated value. You can add to the variable's usual value, for example by defining the PATH variable to be "D:\MYTOOLS;%PATH%". You can use this feature to define environment-variable settings for a project without cluttering up your CONFIG.SYS file. The values defined within a project are only in effect while one of its actions is running, and apply only to actions that are executed within the project. The environment variable values are not permanent and do not take effect system-wide. ═══ 7.8. Change what items appear in popup or pulldown menus ═══ Many WorkFrame tasks require you to fill in or change the settings for one or more actions in the Tools setup window. This help topic explains how to create a new action or change an existing one, and discusses the settings that determine the menus under which the action will be listed. For explanations of the other settings in the Add action or Change action dialog, press the F1 key on the applicable notebook page.  If you are creating a new action, rather than changing an existing one, first decide if you want the action to be project-scoped or file-scoped. A project-scoped action is listed under the Project menu and on the popup menu for the project parts container in the project window. A file-scoped action is listed under the Selected menu and on the popup menus for certain project parts.  To make an item appear in the WorkFrame Project menu, which is also available from other WorkFrame-integrated tools: 1. Select Tools setup under the View pulldown menu in the project window, opening a window that shows a view of the actions that are defined for the project. 2. If the item you want is not already defined as an action, select Add under the Actions pulldown menu. If a similar item already exists, select it before selecting Add to create a new, slightly different one. If the item you want is already defined as an action, expand the tree view to find it, then select it and change it. Fill in the Class field with the text of the item you want to appear under the Project pulldown menu. It's OK if there is already a menu item with this name. Fill in the Name field with the text of the pulldown menu subitem. For example, if you want to add a menu item for an editor named ObscureEditor, fill in Edit for the Class field and ObscureEditor for the Name field. The Project pulldown menu will contain a cascading item called Edit->ObscureEditor. 3. On the General page of the notebook dialog, select Project if it is not already selected. 4. Finish filling in the notebook, then select the OK button.  To make an item appear in the popup menu for an object or group of objects, or under the Selected pulldown menu in a WorkFrame project window: 1. Select Tools setup under the View pulldown menu in the project window, opening a window that shows a view of the actions that are defined for the project. If a similar item already exists, select it before selecting Add to create a new, slightly different one. 2. If the item you want is not already defined as an action, select Add under the Actions pulldown menu. If the item you want is already defined as an action, expand the tree view to find it, then change it. Fill in the Class field with the text of the item you want to appear on the popup menu. It's OK if there is already a popup menu item with this name. Fill in the Name field with the text of the popup menu subitem. For example, if you want to add a popup item for an editor named ObscureEditor, fill in Edit for the Class field and ObscureEditor for the Name field. The popup menu will contain a cascading item called Edit->ObscureEditor. 3. On the Source and Target page of the notebook dialog, decide what types of files should have this new item on their popup menus. Select any applicable symbolic names from the list on the right and press the Add button to add them to the Source area. You can also type in file names or masks (such as *.TXT), one per line. Fill in the Target area with the type names, file names, or file masks of any output files that the action produces. If the action is intended to take part in a project build, only include one source file type and one target type. 4. On the General page of the notebook dialog, select File if it is not already selected. 5. Finish filling in the notebook, then select the OK button. If an action with the right scope already exists but is not available from the pulldown or popup menus, menu, change it and select Add to menus on the Menus page of the resulting notebook dialog. Related tasks:  Delete an item from the popup menu of a file type  If the Change choice is not available on the menus for an action, you might need to follow the procedure for changing an inherited action.  The settings defined for each action are separate from the action options that are passed to the tool when it is executed.  After creating an action, you might want to set the action options that are passed to the tool when it is executed. ═══ 7.9. Change the default editor ═══ 1. In the Tools setup window, select Actions under the View pulldown menu. 2. Expand the tree view for the Edit class, so that the individual editors are listed. 3. Select the one that you want to be the default editor. If it is not there, add it. To save time in filling in the action settings, select an existing editor before selecting Add. 4. Change the action. On the Support tab, increase the priority field to a value that is larger than the priority of any of the other editors. Because the actions in each class are sorted by priority (both in the Tools setup window and on menus), you only need to check the priority of the first listed editor. 5. Select the OK button. Related information:  Default priority settings for actions ═══ 7.10. Change the settings for an action ═══ As part of many different tasks, you might need to change the settings for an action. The steps in this procedure depend on whether the action is defined in the current project, or inherited from another project. 1. Locate the action in the Tools setup window, if you have not already done so. 2. Select the action. 3. If the Change choice is available from the action's popup menu and under the Actions pulldown menu, select Change from one of those locations and make any required changes to the resulting notebook dialog. You do not need to read the rest of this procedure. 4. If the Change choice is not available, the action is inherited from another project. Select Where defined from the action's popup menu or under the Actions pulldown menu, which displays the name of the project where the action is originally defined. 5. Find the project named in the preceding step. We refer to this project as the base project. 6. Open the base project and go to its Tools setup window. From the base project, the Change choice is available to change the settings of the action. If you do so, be aware that the changed settings will apply to all projects that inherit the action; you may need to coordinate changes with other developers. As an alternative to changing the action in the base project, you can copy the action into your own project, giving the action a new name. The Change choice will then be available from your project for this new action. ═══ 8. Finding, filtering, or hiding ═══  Find some or all projects on a system  Filter the display of source files and other project parts  Show all the actions, variables, and types in the Tools setup window  Hide windows and information areas ═══ 8.1. Find some or all projects on a system ═══ During various WorkFrame operations, you can select Find dialogs that let you locate projects by browsing the directory tree. Under OS/2 Warp, you can select Find from the popup menu of the desktop or a folder to locate all the WorkFrame projects on a system:  In the dialog, search for WPS objects with a class that is descended from Workframe V3 Project.  In OS/2 Warp, press the More button to set up this kind of search.  In OS/2 Version 2, deselect Object and select Workframe V3 Project before doing the search. Related tasks:  There are many other tasks that you can do with projects. ═══ 8.2. Filter the display of source files and other project parts ═══ The source files that are associated with a project are always shown in the Project window. To select new or different source files for the project: 1. Click on the Parts filter entry field and enter a single file name, wildcard pattern, or type name. The files selected by this field represent all the files that will have their dependencies checked and be used during a build. You must press the Enter key in the entry field to refresh the displayed project parts. When files are created or deleted, press Enter in this entry field again or select Refresh now under the View pulldown menu to display the current set of project parts. 2. If you find yourself entering similar wildcard patterns over and over, or if you need to filter using more than one file mask, or if the names or extensions of files might change in the future, you can define symbolic names for different combinations of file masks and types. Use the Types view in the Tools setup window to define or change these names. ═══ 8.3. Show all the actions, variables, and types in the Tools setup window ═══ In the Tools setup window, you can work with three kinds of objects: actions, environment variables, and types. Only one kind of object is displayed at a time. To select which kind of object is displayed: 1. In the Tools setup window, select Actions, Variables, or Types under the View pulldown menu. 2. To see all the actions in the Actions view, select Expand all from the container popup or under the Actions pulldown menu. ═══ 8.4. Hide windows and information areas ═══ Once you have some experience with the WorkFrame interface, you might not need some of the reminders and visual cues that are available by default. You can use several methods to minimize the screen space and performance overhead of these windows and information areas:  To turn off the information line where messages are displayed, deselect Information line under the View pulldown menu of windows that have information lines.  To reduce the space used for toolbars, you can select Toolbars->Style->Graphic only or Text only under the View pulldown menu in the project and Tools setup window.  To turn off the toolbars on the project and Tools setup windows, deselect Toolbars->Show under the View pulldown menu of those windows.  To turn off the hover help that appears next to toolbar icons as the mouse passes over them, deselect Toolbars->Hover help under the View pulldown menu. This help has some performance overhead, so turn it off after you are familiar with the toolbar items.  To remove details that you are not interested in from the Details view, select Settings->View under the View pulldown menu and deselect those details.  To hide the monitor area of the project window when you want more space for the listing of project parts, select Show under the Monitor pulldown menu. The monitor is displayed when you start a monitored action, but you can automatically hide it afterwards (unless there is an error listing to examine) by selecting Settings->Monitor under the View pulldown menu and selecting Hide on successful completion. ═══ 9. Editing ═══  Edit a new file  Edit one or more selected files  Edit at the location of a compilation error  Change the default editor ═══ 9.1. Edit a new file ═══ ═══ 9.2. Edit one or more selected files ═══ 1. Select one or more source files in the project window. 2. From the popup menu of one of the source files, select Edit. To use an editor other than the default, select it from the cascading menu under Edit. Related tasks:  Edit a new file  Change the default editor  The editor you want might not be available from the popup menu of a particular file, if the file name does not match one of the source types for the action. If so, you can associate the action with the applicable type so that it is available on the popup menu. ═══ 9.3. Edit at the location of a compilation error ═══ If a Build, Make, or Compile action encounters a compiler error that identifies a location in a specific source file, you can invoke an editor on the applicable source file at the applicable location. From the monitor container of the project window, double-click on the line with the error, or highlight the line with the error and select Edit errors under the Monitor pulldown menu or Errors from the monitor toolbar. Notes:  If you edit a WorkFrame-generated make file, the make file output might not be in the format that WorkFrame expects, and double-clicking on an error in the monitor might no longer edit the source file.  If the EPM editor does not recognize compile errors, make sure that the settings for the EPM action include the /W option. ═══ 9.4. Change the default editor ═══ ═══ 10. Compiling, linking, or building ═══  Compile a single source file  Build using a WorkFrame-generated make file  Build using my own make file  Build one project inside a nested project  Choose detailed options for compiling, linking, or building  Set up a project for debugging, browsing, optimization, and performance analysis ═══ 10.1. Compile a single source file ═══ 1. Select the file (or more than one file) in the Project window. 2. Select Compile from the popup menu of one of the files. Depending on the type of file, you might need to select a specific compiler under a Compile cascade. Related tasks:  Build using a WorkFrame-generated make file  Build using my own make file ═══ 10.2. Build using a WorkFrame-generated make file ═══ 1. When integrating any build tools into a WorkFrame project, make sure that the corresponding actions in the Tools setup window have exactly one entry in both the Source types and Target types fields on the Types page. The source and target types are used to generate corresponding make rules using this action. To set this property, change the action settings. 2. Customize the build action for efficiency by changing its project options. 3. From the project window, select Build from the Project pulldown menu, from the container popup menu, or from the Project toolbar. WorkFrame performs the necessary steps to create or update the executables, DLLs, or other target files. 4. In the process, WorkFrame generates a make file that you can use to run the build again from the command line. This make file is only updated when you select Build or MakeMake from within WorkFrame, so remember to do so when you change options, source files, or other settings within WorkFrame, if you intend to use the generated make file. Related tasks:  Create a make file from a project  Build using my own make file ═══ 10.3. Build using my own make file ═══ ═══ 10.4. Build one project inside a nested project ═══ If you have projects nested inside other projects, and want to build one of these projects without doing a complete build: 1. In the project window, select Build Smarts under the Options pulldown menu. 2. Deselect the Build any subprojects first radio button. 3. Select the OK button to save the settings, which apply to all Build actions. ═══ 11. Cancelling ═══  Cancel when changing settings in a notebook dialog  Cancel an action while it is running ═══ 11.1. Cancel when changing settings in a notebook dialog ═══ For notebook dialogs, some of which do not have Cancel buttons, you can cancel changes made within the dialog as follows. 1. To close the dialog without saving any changes, double-click on the system menu. 2. To cancel changes to one particular page, select the Undo button on the page. 3. To cancel changes to several pages, select the Undo button at the bottom of the notebook (only for notebooks that have an additional set of OK/Cancel buttons at the bottom). 4. If incorrect settings have already been saved, so that Undo does not get back the ones you want, select the applicable Default button to return the settings on that page or for the whole notebook to a safe set of default values. Close the dialog if you do not want to make any further choices. ═══ 11.2. Cancel an action while it is running ═══  For actions that display output in the monitor area, such as Compile or Build, press the Stop button of the monitor or select Stop under the Monitor pulldown menu.  For actions that display output in a fullscreen or windowed session, press Ctrl+C in that session.  For actions that launch standalone tools, such as Edit, follow the exit procedure for the tool. ═══ 12. ------------Quick Reference----------------------------- ═══ ═══ 13. Projects ═══  Create a project on the desktop  Create a project that contains multiple targets  Copy a project using the desktop  Back up a project  Delete a project  Migrate projects from earlier WorkFrame versions  Create a project within another project  Find some or all projects on a system  Move a project ═══ 13.1. Create a project on the desktop ═══ ═══ 13.2. Copy a project using the desktop ═══ ═══ 13.3. Back up a project ═══ ═══ 13.4. Delete a project ═══ ═══ 13.5. Migrate projects from earlier WorkFrame versions ═══ ═══ 13.6. Create a project within another project ═══ ═══ 13.7. Find some or all projects on a system ═══ ═══ 13.8. Move a project ═══ ═══ 14. Source files ═══  Edit a source file  Create a new source file  Delete a source file  Compile a single source file  Migrate existing source files to a WorkFrame project  Move a source file ═══ 14.1. Edit a source file ═══ ═══ 14.2. Create a new source file ═══ ═══ 14.3. Delete a source file ═══ ═══ 14.4. Compile a single source file ═══ ═══ 14.5. Migrate existing source files to a WorkFrame project ═══ ═══ 14.6. Move a source file ═══ ═══ 15. Target programs ═══  Run an executable target program  Delete a target program  Run a tool on a target program ═══ 15.1. Run an executable target program ═══ ═══ 15.2. Delete a target program ═══ ═══ 15.3. Run a tool on a target program ═══ For typical development operations such as debugging, browsing, and analyzing performance, you can select the applicable action from the Project pulldown menu (applying to the target file that is defined for the project) or from the Selected pulldown menu (after selecting an executable file). The container popup menu for the project window is the same as the Project pulldown menu. The popup menu for a file in the project window is the same as the Selected pulldown menu. If the tool you want is not available from the menus, you can add it. ═══ 16. Popup and pulldown menus ═══  Arrange the entries in popup and pulldown menus  Delete an item from the popup menu of a file type ═══ 16.1. Arrange the entries in popup and pulldown menus ═══ ═══ 16.2. Delete an item from the popup menu of a file type ═══ ═══ 17. Actions and tools ═══  Create an action  Execute an action  Delete an action  Copy an action from another project  Change the settings for an action  Set the options that are associated with an action  Cancel an action while it is running  Show all the actions in the Tools setup window  Do something to an object that is defined in a different project ═══ 17.1. Create an action ═══ ═══ 17.2. Execute an action ═══ ═══ 17.3. Delete an action ═══ ═══ 17.4. Copy an action from another project ═══ ═══ 17.5. Set the options that are associated with an action ═══ ═══ 17.6. Cancel an action while it is running ═══ ═══ 17.7. Show all the actions in the Tools setup window ═══ ═══ 17.8. Do something to an object that is defined in a different project ═══ If you want to change, view the settings, or delete an action, environment variable, or type, but those choices are not available in the Tools setup window when the object is selected, that means the object is defined in a different project and inherited by the current project. These operations are not available in the current project. Instead: 1. Select the object. 2. Select Where defined from its popup menu to display the name of the base project where the object is originally defined. 3. Find the base project. 4. Open the base project and go to its Tools setup window. Within the base project:  You can view the settings of the object.  You can change the settings of the object, but if you do so, be aware that the changed settings will apply to all projects that inherit the object; you may need to coordinate changes with other developers.  You can delete the object, but again be aware that this operation will affect all projects that inherit the action.  You can copy the object into your own project, giving it a new name. The change/view and delete operations will then be available from your project for this copied object. Tip: If you just want to view information about an action, a fast alternative is to select it (in any project) and select Add from its popup menu. The resulting dialog is filled in with the information about the selected action. Press the Cancel button when you are finished, so that no new action is created. ═══ 18. Command-line options for tools ═══  Set command-line options  Choose detailed options for compiling, linking, or building  Set up a project for debugging, browsing, optimization, and performance analysis ═══ 18.1. Set command-line options ═══ ═══ 18.2. Choose detailed options for compiling, linking, or building ═══ ═══ 18.3. Choose groups of compile options for debugging, tracing, browsing, and optimizing ═══ ═══ 19. Make files ═══  Migrate a make file from a command-line environment  Create a make file from a project  Build using a WorkFrame-generated make file  Build using my own make file  Stop WorkFrame from overwriting an existing make file ═══ 19.1. Migrate a make file from a command-line environment ═══ ═══ 19.2. Create a make file from a project ═══ ═══ 19.3. Build using a WorkFrame-generated make file ═══ ═══ 19.4. Build using my own make file ═══ ═══ 19.5. Stop WorkFrame from overwriting an existing make file ═══ 1. In the project window, select Build Smarts or Build under the Options pulldown menu. (Settings selected for Build Smarts override the corresponding settings for Build.) 2. If you already have the make file you want to use, deselect the Generate a make file radio button. (When you change the options for Build, rather than using Build Smarts, this button is on the Make page.) 3. Select the OK button to save the settings. If you want WorkFrame to create an initial make file that you can customize, use the MakeMake action to explicitly create one. Related tasks:  Build using a WorkFrame-generated make file  Build using my own make file ═══ 20. Terms used in this document ═══ action A description of a tool or function that can be used to manipulate a project's parts, or build a project's target. action class A grouping of actions that perform a similar function. actions support DLL A dynamic link library that provides such support for an action as determining dependencies and targets if the action is to participate in a build, providing a user interface for setting options, and integration with the monitor and editor. base project A project from which another project inherits its tools setup. Distinguished from parent project. build An action that invokes the WorkFrame Build tool. The Build tool manages the project's make file, as well as build dependencies between projects in a project hierarchy. build actions A series of actions that are invoked to build a project's target. These actions are set in the Build options window, or in MakeMake, WorkFrame's make file creation utility. default action Each action class has a default action. It is defined as the first action listed for the class. working directory The directory where files that are copied or dragged into the project are stored. Actions are also executed in this directory, so this directory is where many output files are placed. default editor The editor that is first in the list of editors in the Tools setup window. This editor is invoked when you double-click on an error message in the monitor, or when another tool requests an Edit action to be invoked. environment variable In a WorkFrame project, an environment variable is an operating system variable, like PATH and DPATH, and any other environment variables that are defined using the OS/2 SET command, such as TMP. file-scoped action Distinguished from a project-scoped action in that it is invoked on files. Only file-scoped actions can participate in a project build. filter In WorkFrame, the value of a type. The filter of a type can be expressed as a file mask, regular expression, a logical-OR, a logical-AND, or logical-NOT of a list of types, or a filter determined by a PAM. inheritance In WorkFrame, refers to the mechanism in which the tools setup of a project is shared by another project. make An action in which a project's target is built from a make file by a make utility. MakeMake WorkFrame's make file generation utility. Monitor A window that displays output from monitored actions. The Monitor window is attached to the project container. monitored action An action that has been set to run in the monitor window, and outputs to standard out. Actions may also run in full-screen and windowed sessions. nested project A project that appears inside another project. Nesting expresses a dependency of the parent project on the child project's target. This dependency is managed by WorkFrame's Build utility. parent project A project that contains other projects. Distinguished from child project. project The central WorkFrame model of the complete set of data and actions required to build a single target, such as a dynamic link library (DLL) or other executable. A project consists of a set of project parts and a Tools setup.. Project Access Method (PAM) A dynamic link library that contains a set of methods through which a simple abstraction of a file system or repository is provided to WorkFrame. PAMs enable a WorkFrame project to contain any kind of object that a PAM can support, for example a version of a file in a source control library, or another file system like MVS or AIX. project hierarchy A project tree that represents dependencies between projects. The WorkFrame project paradigm requires that one project should be created for every target. Dependencies between projects and their targets should be expressed in a project hierarchy. That is, if a project's build depends on the target of another project, the dependent project should contain the project it depends on. The dependent project is then said to nest the other project. This enables the Build tool to perform Builds in a depth-first search manner from anywhere in the project hierarchy. project-scoped action An action that applies to a project as a whole, or to a project's specially designated parts. Specially designated project parts are the project's make file and target. An example of a project-scoped action is Debug, which is invoked on the project's target. Project Smarts A project catalog that contains templates for common types of applications. Project Smarts application A skeletal application that consists of template source code and a configured project revolving around an application theme. It serves as a starting point for similar applications. source directory A directory where a project's parts are physically stored. A project may have many source directories. source type A source type appears in an action's list of source types. An action's list of source types specifies the kind of parts or files to which the action applies. target A project's target is the file that is produced as a result of a project build. target type A target type appears in an action's list of target types. Target types only apply to actions that participate in a project build, such as Compile and Link. The Build tool and MakeMake utility use the source and target types of build actions to determine the order in which the actions should be run to produce the project's target. template An object that you can use as a model to create other objects. When you drag a template, you create a copy of the original object. The new object has the same settings and contents as the original template object. Tools setup A view of a project where you can see and manipulate the actions, types, and environment variables available to the project. From this view, you can add, delete, and change actions, types, and variables. You can also set the options for any action in this view. type In WorkFrame, describes a group of project files of parts in terms of an expression, such as file masks, regular expressions, or a list of other types, logical-OR'd. type class In WorkFrame, represents the method by which an object is determined to be a member of a type. "File mask" is an example of a type class. Membership to a "File mask" type is determined by matching the file mask filter to the object's name. Other examples of type classes are "Regular expression", and "PAM Name", where the named Project Access Method determines membership to a type.