# Introduction

Source-NavigatorTM 99r1 is a powerful code analysis and comprehension tool that provides a graphic framework for understanding and reengineering large or complex software projects. Source-Navigator's cross-platform nature also makes it an invaluable code porting tool.

Source-Navigator parsers scan through source code, extracting information from existing C, C++, Java, Tcl, `[incr tcl]`, FORTRAN, Cobol, and assembly programs and then using this information to build a project database. The database represents internal program structures, locations of function declarations, contents of class declarations, and relationships between program components. Source-Navigator graphical browsing tools use this database to query symbols (such as functions and global variables) and the relationships between them.

In addition to the languages supported in the standard distribution, you can use the Source-Navigator Software Development Kit (SDK) to add new parsers and extend Source-Navigator functionality to other languages.

### Managing Projects

A Source-Navigator project is an entity containing references to source code files. A project describes where files are located and how to operate on them. Once a project is defined, developers can:

- identify, locate, access, modify, and analyze program components, including symbol definitions and usage of classes in object-oriented languages.
- prevent parallel modifications on the same code and manage different versions of sources by way of an interface to external version control systems such as ClearCase and CVS.
- create views of pertinent information while hiding information not relevant for the current view.

#### Navigational Tools

All Source-Navigator tools are organized around the project database that holds all project-specific symbols. The name and location of the project files, symbols extracted from the source code, and the relationships between symbols all reside in the project database. File structure may not be pertinent when visualizing code relationships, so Source-Navigator allows you to view and understand software structure regardless of which file contains what information.
The Symbol Browser, the Editor, and the Cross-Referencer are the basic tools for working with source code in a project.

- The Symbol Browser operates on the project database and helps you learn the existing program structure. The Symbol Browser list can be sorted and filtered in different ways, showing you how and where symbols are used. The Symbol Browser answers the question "What is in this project?"
See Symbol Browser for more information.

- The Editor, the main Source-Navigator window, combines navigating with browsing. It allows you to navigate through actual program text and shows the location of that text in the source code. The Editor highlights the basic syntax of all supported programming languages and updates the project database when files are modified and saved. This means that the project database is always up-to-date with your changes during the development cycle. The Editor answers the question "How is this project structured?"
See Editor for more information.

- The Cross-Referencer shows, for a given symbol, all the other symbols it refers to, and all the symbols that refer to it. These are known as Refers-to and Referred-by relationships, respectively. The Cross-Referencer answers the question "How do the parts of this project work together?"
See Cross-Referencer for more information.

### About this Guide

This guide serves as a reference to Source-Navigator menus, tools, and functionality.

#### Document Conventions

Source-Navigator's documentation uses the following general conventions:

Italic Font | Indicates a new term that will be defined in the text and items called out for special emphasis.
Bold Font | Represents menus, window names, and tool buttons.
`Plain Typewriter Font` | Denotes code fragments, command lines, contents of files, and command names; also indicates directory, file, and project names where they appear in body text.
`Italic Typewriter Font` | Represents a variable for which an actual value should be substituted.

Menu names and their submenus are separated by an arrow (->). For example, File -> Open means select the File menu and choose Open from its submenu.

Paths are written in UNIX notation (forward slashes) throughout; `.../bin` means the directory Source-Navigator is installed into, subdirectory `bin`.

#### Using the Mouse

The following are conventions for using the mouse with Source-Navigator:

Click | Place the cursor on a specified object and press the left mouse button. Double-click means to click the left mouse button twice in rapid succession without moving the mouse. The term "click" alone always means left-click.
Ctrl+click | Depress and hold the Ctrl key, simultaneously clicking with the left mouse button.
Shift+click | Depress and hold the Shift key, simultaneously clicking with the left mouse button.
Right+click | Place the cursor on a specific object and click the right mouse button.
Select Text | Click and drag cursor through text (or code) to be selected. Selected text is highlighted.
Select Entries | Clicking a line selects it. To indicate the end of the selection, hold down the Shift key and click the desired line. This function is enabled in the Project Editor and file selection boxes.
Show the number of items in symbol lists | Click the center mouse button or press Alt+right mouse button (Windows); Meta+right mouse button (UNIX).

#### Keyboard Shortcuts

You can use the keyboard to activate many of the functions displayed on the toolbar and in the menus.

- Holding down the Alt key while pressing S is represented as Alt+S.
- To open a command in the menu bar, press the Alt key plus the first letter of the menu.
- If a letter in the menu item is underlined, press the underlined letter to open the submenu.