- An action is an abstraction of a user interface component (e.g. a
push button or an entry in a menu) that can be triggered by the user
to perform some task.
- An adapter is a class that is able to implement an interface
on behalf of another object. Adapters are instantiated automatically
when required and are destroyed only when the object they are
adapting is destroyed.
- An area is a part of the screen that a shell optionally makes
available to tools to display views. Each
area has an identifier and may be asked to display multiple views. A
shell will implement a main area that is the focus of the user’s
- attribute path
- An attribute path is a string used access a particular attribute of a
model. Models may be nested, i.e. contain sub-models and so
the string may contain . separated sequence of nested attribute
- attribute type
- An attribute type defines the type of an attribute of a model.
It is implemented as a descriptor stored as a class attribute of the
- A codec encodes an object when writing it to storage and/or
decodes an object when reading it from storage according to a
- A controller manages the interaction between the
editors of a view and a model.
- An editor is a view sub-class that can be
adapted to the IEditor interface.
It is bound to a particular attribute of a particular model.
- extension point
- An extension point is a mechanism by which a plugin can publish
and contribute to a list of objects. Each extension point has a unique
- A format defines the structure of an object when it is held in
storage. When an object is read it is decoded by a
codec according to the format. When an object is written it is
encoded by a codec according to the format. Formats are referenced by
a string identifier.
- An interface is a special form of model that is used to declare
the API than an object is expected to implement. Any methods should be
provided as stubs and should not include any implementation code.
- i/o manager
- An i/o manager manages the available types of storage available
and determines how and where objects may be stored.
- managed model
- A managed model is a model whose lifecycle is managed
automatically by a tool.
- A model is normally a collection of attributes each of which is defined
as an attribute type and is implemented by the
Model class. In simple cases a model may also be
implemented as a Python mapping object such as a dictionary.
- A plugin is a wrapper, specifically an implementation of the
IPlugin interface, around a reusable component
that ensures it is decoupled from other reusable components.
Communication between plugins is implemented by
extension points and services
when a plugin is enabled.
- plugin manager
- A plugin manager is responsible for handling all
plugins, extension points and
- A service is an object that implements a particular interface
and is published by a plugin. A number of different services
may be available for a particular interface but an application will not
care which one it actually uses.
- A shell is an abstraction of an instance of an application and its user
interface. Its functionality is implemented by a set of
tools. A shell visualises a set of
actions and areas.
- A persistent repository that can hold objects. Storage is classified
as either streaming storage or structured storage.
Each stored object has a unique storage location.
- storage location
- A storage location is the unique address of an object in
storage. The nature of the location will depend on the
storage. For example for a filesystem it may be the absolute pathname
of a file. A location might be implicit in that its value may depend
on the value of the object. In which case a user will not be able to
change the location.
- storage policy
- A storage policy is called by an i/o manager to determine if
an object with a particular format should be allowed to be
stored in a particular instance of storage.
- streaming storage
- Streaming storage is a class of storage that stores an object
using a codec as an encoded stream of bytes. A filesystem is
the most common example of streaming storage.
- structured storage
- Structured storage is a class of storage that stores an object
using an implicit format specific to the storage.
- A tool is part of a shell that implements a logically related
sub-set of the functionality of an application. At its most general
level it creates and manages a set of related actions
and views. A simple application may consist of a single
tool. dip includes default tools for a number of functions common to
many applications, e.g. model lifecycle management.
- A toolkit is an object that contains factories that create the
different user interface components (menus, push buttons, file dialogs
etc.) used by dip. dip includes the qt4 that
contains factories for the standard Qt layouts and widgets.
- A view is a component of a user interface that has been
adapted to a sub-class of the IView
interface. It has a string identifier and may contain sub-views. A
toolkit will determine exactly how it is implemented.
- view factory
- A view factory is an instance of a class that, when called, will create
a view that is adapted to a factory specific