Visual Sidekick 3 Help
Contents Page

Browsing

Overview

"Browsing" is the ability to understanding a body of source code by examining its logical structure through the use of a symbolic object browser.

Visual Sidekick's object browser can display various objects (symbols, files and folders) grouped in separate "sections" in the Browse Tree. Each section is separated by a dividing line.

The objects that are displayed in the Browse Tree depend on the currently select View, and the current contents of the Filter Boxes (see Filtering).

Views

Visual Sidekick defines a number of views that set up the Browse Tree with a specific set of symbols.

These views are controlled by the 5-button group in the Browse Toolbar. Alternatively, each view can be selected directly with a hotkey.

View 2003 Icon 2005 Icon Hotkey Description
Local Ctrl-Shift-L Displays symbols that are context-dependent on the current file.
Solution Ctrl-Alt-N Displays symbols from all files in the current solution (or workspace).
Unmanaged C++ Library Ctrl-Alt-U Displays symbols from all files in the selected unmanaged C++ libraries. Libraries include: STL, MFC, ATL, Win32, DirectX and more. You can select which libraries to load on a per-solution basis.
Solution Hierarchy Ctrl-Alt-H Display an inheritance tree for all classes declared in the current solution.
Clipboard History Ctrl-Alt-C Shows the last 15 clipboard copy operations, allowing pasting of this historical content.

For the Local View, Visual Sidekick displays the following sections in the Browse Tree:
Section Description
Projects and Folders Shows all Visual Studio projects that all folders that contain the current file. Expanding each folder shows the files stored in the folder as well as all classes defined in those files.
Types Shows all types in the current file and all associated files (e.g. the main header), including classes, structs, unions, interfaces, enums, delegates, typedefs. Expanding each type shows all nested symbols.
Files Shows the current file and all #include'd files in an flat alphabetical format. Expanding each file shows the symbols defined in that file.
Global Symbols Shows all symbols defined in the current file and all associated files (e.g. the main header) in a flat alphabetical format. Expanding each symbol shows symbols related to the parent symbol (eg. parameters, parent class, etc).

For the Solution View and the Unmanaged C++ Library View, Visual Sidekick displays the following sections in the Browse Tree:
Section Description
Projects and Folders Shows all Visual Studio projects with their logical folders. Expanding each folder shows the files stored in the folder as well as all classes defined in those files.
Namespaces Shows all namespaces and namespace members in a hierarchical format.
Types Shows all types in the solution in an flat alphabetical format. These include classes, structs, unions, interfaces, enums, delegates, typedefs, etc. Expanding each type shows all nested symbols.
Files Shows all files in an flat alphabetical format. Expanding each file shows the symbols defined in that file.
Global Symbols Shows all symbols defined in all the solution files in a flat alphabetical format. Expanding each symbol shows symbols related to the parent symbol (i.e. parent class, parameter types and return type).

Browse Tree

Each object in the Browse Tree has a context-sensitive menu that is accessed with the right mouse button. See the Navigation section for more information on using this menu.

Basic Symbols

Visual Sidekick extracts symbols from unmanaged C++ (C++), managed C++ (MC++) and C# source code files, and links related symbols together in a parent-child tree structure. This provides a very powerful browsing experience.

The following table lists all the Global Symbols that Visual Sidekick supports, together with a description of their child symbol links:

Symbol 2003 Icon 2005 Icon Description Children
Namespace Represents a C++, MC++ or C# namespace definition. All nested namespaces and namespace member types.
Class Represents a C++, MC++ or C# class definition. Base classes and interfaces; nested classes/ enums/ typedefs/ events/ delegates/ etc; methods; members and friend functions. (More details)
Struct Represents a C++, MC++ or C# struct definition. See Class.
Union Represents a C++ union definition. See Class.
Interface Represents a MC++ or C# interface definition. Also represents any C++ class that consists of only public pure-virtual functions. See Class.
Enum Represents a C++, MC++ or C# enum definition. All Enum Identifiers for this Enum.
Enum Identifier Represents a C++, MC++ or C# enum "identifier" inside a enum definition. None.
Property Represents a MC++ or C# property or indexer definition. The property type.
Delegate Represents a MC++ or C# delegate definition. The return type and the types of any parameter. This is useful as a quick link to the referenced type.
Event Represents a MC++ or C# event definition. The event type.
Typedef Represents a C++ or MC++ typedef name. The aliased type. This is very useful to link through to the typedef alias in the browser.
Function Specification Represents a C++ specification of a global function or method (header file). The return type and the types of any parameter. This is useful as a quick link to the referenced type.
Function Body Represents a C++ implementation of a global function or method. See Function Specification.
Abstract Method Specification Represents the specification of a C++ pure virtual or C# abstract method. See Function Specification.
Static Method Specification Represents the specification and/or the implementation of a C++ or C# static method. See Function Specification.
Implemented Method Represents the specification and/or body of a non-static method (child of a class symbol.) See Function Specification.
Operator Method Represents both the specification and/or the implementation of a C++, MC++ or C# overloaded operator or operator cast. See Function Specification.
Variable / Field Represents a global variable, member variable or field. The type of the variable, member or field.
Constant Represents a C++, MC++ or C# const declaration. The type of the constant.
Define Represents a C++, MC++ or C# #define pre-processor declaration. None.
Include File Represents a C++ file #include directive. None.
Include Namespace Represents a MC++ or C# #using directive. None.

Any symbol that is enclosed in a class namespace (e.g. a method or member or nested class) will have its parent class added to its children. This is useful in the Global Symbol flat view to easily navigate or browse from member symbol to the parent class.

Accessibility

Every child symbol of a class has a "accessibility" level: public, protected, private, internal or friend Visual Sidekick annotates each child symbol with a small icon to reflect this accessibility level.

Accessibilty 2003 Icon 2005 Icon Description
Public Public accessibilty is indicated by having no annotated symbol.
Protected Protected accessibilty is indicated with a yellow key symbol.
Private Private accessibilty is indicated with a gray padlock symbol.
Internal Internal accessibility is indicated with a yellow envelope symbol.
Friend Friend accessibilty is indicated with a yellow smiley symbol.

Other Symbols

The following table shows a few other meta-symbols that don't represent real source code symbols but are used as logical nodes in the tree.

Symbol 2003 Icon 2005 Icon Description Children
Base Classes & Interfaces A grouping of base-classes and interfaces that the current class is derived from. All derived base classes, structs, unions or interfaces.
Derived Base Class Represents a base class in a hierarchy of descendant classes. All classes that have the current class as a parent, as well as a link to the base class symbol itself.
Derived Leaf Class Represents a leaf class in a hierarchy of descendant classes. A link to the leaf class symbol.
Clipboard Entry A historical clipboard copy. None.
Undefined Symbol A symbol that is referenced by name, but does not have a definition in the solution or set of libraries. None.
Source File

...
Different icons are used to represent differernt file types. There are icons for .cpp, .h, .inl, .cs and so forth. Flat list of all symbols in the file, sorted by order in the file.
Other File

...
Different icons are used to represent differernt file types. There are icons for .htm, .xml, .txt and so forth. None.
Project

...
Different icons are used to represent differernt project types. There are icons for C++ projects, C# projects, VB projects and so forth. All files and child folders inside the project. Optionally includes all classes defined within these files.

Keyboard Control

The following table describes how to control the Browse Tree from the keyboard when the Browse Tree has focus.
Keyboard Description
Right Arrow Expands a tree node.
Left Arrow Collapses a tree node and all its children.
Ctrl-Left Arrow Collapses all tree nodes and all their children.
Home Moves to the first row in the Browse Tree. If already on the first row, moves to the filter box.
End Moves to the last row in the Browse Tree.
Ctrl-N Loads the current symbol's name into the Primary Filter (see Filtering).
Ctrl-S Loads the current symbol's scope into the Primary Filter (see Filtering).
Enter Activates the primary function on the current symbol (see Navigating).
Ctrl-Enter Activates the secondary function on the current symbol (see Navigating).
. (full-stop) (On a classname) Inserts the classname into the Primary Filter and inserts an asterix into the Secondary Filter, thus expanding the class's members.

Browsing the Symbol Under the Visual Studio Editor's Cursor

You can browse any symbol or text located in the Visual Studio editor, by highlighting or positioning the editor on the symbol and hitting Alt-Enter. Alternately, you may block-select the symbol in the editor and drag the selection onto the Visual Sidekick toolwindow.