README for Agide - A-A-P GUI IDE

This is currently an experimental setup.

There is a separation between model and view nearly everywhere.  The model
defines the data structures (classes and objects).  The view how they are
presented on the screen.

The model should not depend on the kind of GUI used.  Later a console version
will be added.  

Besides this the Boa Constructor code is used for Python things.  Some parts
of Boa are to be moved into Agide for better integration.


OBJECT STRUCTURE OF THE MODEL

At the toplevel:
1.  List of activities	The Activities the user is working on.
3.  List of nodes	Items inside an activity currently being worked on;
			often a file.  Could also be called "Windows",
			although several items may be handled by the same
			tool.
2.  List of tools	Tools currently being used; The same tool may appear
			several times, e.g. image viewers each displaying one
			image.

An Activity consists of:
- Navigators		different ways to navigate through the parts of an
			Activity.  Mostly a tree view on the items in an
			activity.  Can also be a class browser, grep output,
			etc.
   - toplevel item	properties of the activity (project name, grep
     			pattern used, etc.)
     - list of items    items contained in an item (recursively)
     - list of tools	tools being used for this item (editor, GUI
       			designer, etc.); mostly there is none.

An item in the list of items consists of:
     - link to the node
     - list of contained items

A Node contains:
     - list of tools	tools being used for this item (editor, GUI designer)

A Tool consists of:
- tool properties	e.g., whether it's open or not
- list of nodes		the Nodes being worked on in this tool.  Can be just
			one (new tool started for each node) or several (the
			tool can switch between items or display several at
			once).


IMPORTANT CLASSES OF THE MODEL

class name		file
		description
	- data
	> method
----------------------------------------------------------------------------
ActyList		Activity.py
		List of activities: The tasks a user is working on.  He can
		quickly switch between activities.  There is only one of
		these.
	- list of Activity objects
	> Open existing Activity (from file)
	> Create new Activity (from template)
	> Move Activity up/down in list
	> Remove Activity
	> close (close all activities)

Activity		Activity.py
		Something the user is working on.  Can be a single file, a
		project with multiple files, a shell window, browser, etc.
	- Type name (edit, project, shell, etc.)
	- Name
	- List of Navigators
	- Active Navigator
	> foreground, show current navigator and its selected item (restore
	  Activity)
	> save, close, delete, rename Activity.
	> new navigator (e.g., list of tags, grep for symbol)

Navigator		Navigator.py
		Organizes items of an Activity, a view on an Activity.
	- Name (of the view)
	- toplevel ActivityItem
	- active ActivityItem (in the tree)
	> foreground, show current ActivityItem
	> refresh (e.g., update class list)
	> close navigator

ActyItemList		Navigator.py
		list of ActivityItems, either for items of a project or items
		used in a tool
	- list of ActivityItems
	> Move ActivityItem up/down in list
	> add/delete ActivityItem

ActyItem		Navigator.py
		Link between an item in an Activity and a Node.
		Item that exists in an Activity; file, directory, class, file
		location, etc.
	- Node that this item refers to
	- ActyItemList, contained items
	- Activity that is for this specific item
	> list available tools for editing, viewing, etc.
	> open item in a specific tool
	> foreground, show tool editing this item
	> close all tools for this item
	> make an Activity out of this item

Node			Navigator.py
		The item that an ActyItem refers to: file, directory, class,
		etc.
	- list of Tools that this node is being used in.
	- data (depends on type of node)
	> list available tools for editing, viewing, etc.
	> open node in a specific tool
	> foreground, show tool editing this node
	> close all tools for this node
