## Editor

The Editor is the IDE. The top level notebook represent open modules. A module is a source code file like a python module, a Python package, an wxApp file or any of the wxFrame variants (To create a module see Palette)
For each module the views supported by the module will be hosted on a second level notebook. Any actions applicable to the view like refreshing the source code or adding a module will be accessible by right clicking on the view or selecting from the 'Edit' menu. Most of these options are also available from the toolbar. Usually a default action will be triggered by double clicking on a view.

### Modules

These are the supported modules:

Python module | Standard python source code file.
Python package | Standard python package, loads any __init__.py and shows it's directory as a package of modules as well as sub-directories containing a __init__.py file.
wxApp | The module that hosts the wxApp object. A module list is maintained in this module. The App module controls which is the main frame of an application and currently maintains relative paths for the module list. It has a specialised Application View
PythonApp | This type is like wxApp, but for plain Python applications without wxPython file types.
wxFrame variants | Currently wrapped wxFrame type modules are wxFrame, wxDialog, wxMiniFrame, wxMDIParentFrame, wxMDIChildFrame, wxPopupWindow, wxTransientPopupWindow. These modules support the Designer view for visual frame creation.

Setup (Distutils)

Very basic support for Distutils.
From the File menu the following options are available:

- build
- clean
- install
- sdist
- bdist
- bdist_rpm
- bdist_wininst

py2exe is also supported (only Win32 ofcourse).
Remember to add the line:
import py2exe below the distutil import in your Setup.py.
Add your main script, e.g. 'wxApp1.py' to the scripts argument of setup().

Other filetypes

- Text - Plain text file, .txt and CAPS filenames
- Config - Config files, .cfg
- HTML - HTML files, .html, .htm
- XML - XML files supporting an XML tree view, .xml
- C++ - C++ files, .c, .cpp, .cxx, .h, .hpp

Standard Pages

These are the standard pages:

Interactive shell | Simple python shell.
Explorer | An Explorer for your filesystem / workspace and sys.path. It shows folders and packages in a tree on the left and all valid Boa modules in a list on the right. CVS folders (cyan) will display their entries file with icons showing if the file has been modified since the last check in. Zope browsing / document editing is also supported.

### Views

These are the views on modules:

Source

Syntax highlighting source code editor. It is based on the fantastic Scintilla editor by Neil Hodgson and wrapped for wxWidgets as wxStyledTextCtrl by Robin Dunn.
Basic supported functionality:

- Auto indent/dedent
- Block indent/dedent
- Block comment/uncomment
- Find text
- Limited code completion and parameter tips
- Folding
- Limited code browsing, hold down ctrl and move mouse cursor over source code

To run a Frame module without an extra derived wxApp module, select Edit->Add simple app... while on the Source View.
This adds the following snippet to the end of the module:

    if __name__ == '__main__':
        app = wxPySimpleApp()
        frame = create(None)
        frame.Show(true)
        app.MainLoop()

If the module contains a Boa created frame and it's default create function, this code will let the module run on it's own.

Designer | This is the GUI bulder view for the source. The view is activated by clicking the button
Data | The DataView shows the invisible design-time objects. These are objects created from the 'Utilities' palette page.
Explore | This view show the list of classes and function defined in a module. Exploding reveals methods and events. Use this view for navigating quickly thru your code.

Hierarchy

The inheritance hierarchy of the objects in the model, color coded as follows:

Cyan | Class not defined in module
Gray | Base class
Blue | Derived class

Documentation | An html view on the doc strings in your code. The format is structured around the wxWidgets documentation look.
UML | OGL enabled view of all the classes and their inheritance relationships. This view is not complete yet.
Info | View for creation and maintenance of the comment block at the top of code identifying the author, licence etc.
ToDo | Displays a list of all comments in your code started with # XXX or # TODO:. Priority can be indicated by the number of exclamation marks at the end of the line !! Handy for reviewing what needs to be done and a jumppad for quick access.

Application

View on wxApp files for maintenance of an application. Add edit and remove modules of the application thru this view. Click on the columns to sort by name, type or relative path.
Find will search all the modules defined in the App and return an Application find results view.

The Imports view can only be accessed from this view.

When Boa was run with the -T option (trace execution) this option will built a traceback from the log file. If the stack balances out, i.e. uninterrupted execution, the stack will be empty. As the trace file may be quite big, please be patient while it is constructed. If you are not, see ErrorStack.CrashTraceLogParser to limit the max depth or max number of lines to parse.

Another way to add files to an application is to choose:
File->Add to an open application... from an unadded module.
For convenience files can also be temporarily associated with application:
File->Associate with an open application...
This lasts as long as the IDE is open.

Imports | Another OGL enabled view, this time showing the import relationships between modules of an application. i.e. who imports who.
Package | Shows all modules and other packages inside a package.
Disassemble | Shows the Python bytecode of the current module. (Uses dis)
CVS Conflicts | Shows a list of all conflicts in a sourcecode file that CVS marked after a CVS merge.

### Results Views

There can be multiple instances of these views on a module, they are usually the result of an operation on the module.
The following are defined:

Application find results | List of modules in which the search text was found.
Cyclops | An HTML report of all circular references and related info. Based on module by Tim Peters
Profiler | List of profiling statistics. Sortable on the columns.
Diff modules | Difference between two modules. The current module (1) and another selected module (2) is used. Differences are noted in the margin. Plus means that a line was added in (2) and minus means that a line from (1) is no longer in (2) A block specifies an informational line that underlines the lines in the source with +'s and -'s Uses ndiff written by Tim Peters.
Compare apps | The result of the comparison of the current app and another selected by the file dialog. Double clicking on a result in the list opens a module diff of the two modules in the apps.

Boa Constructor - Application Help - Editor