dip.shell
¶
The dip.shell
module implements the infrastructure for defining and
interfacing with a shell.
Plugins must provide appropriate support for the following extension points:
dip.shell.model_factories
- This must be supported by any plugin that configures an object implementing
the
dip.shell.IModelManagerTool
interface. A contribution must be a callable. dip.shell.tools
- This must be supported by any plugin that configures an object implementing
the
dip.shell.IShell
interface. A contribution must implement thedip.shell.ITool
interface.
BaseManagedModelTool
¶
-
class
dip.shell.
BaseManagedModelTool
¶ Base class:
Model
The BaseManagedModelTool class is a base class for tools that handle managed models. It automatically manages the different lists of views and provides a convenient interface to the changing of the active view and model.
-
create_views
(model)¶ Create the views for a managed model.
This must be implemented by a sub-class.
Parameters: model – is the model. Returns: the list of views.
-
open_model
(location)¶ Open a model at a storage location.
Parameters: location – is the storage location.
-
veto
(view)¶ Determine if the view is to be prevented from being closed.
Parameters: view – is the view. Returns: True
if the close of the view is to be prevented.
-
BaseShellAdapter
¶
-
class
dip.shell.
BaseShellAdapter
¶ Base class:
Adapter
The BaseShellAdapter class is a base class for adapters to the IShell interface. It implements housekeeping common to all shells.
-
__init__
()¶ Initialise the adapter.
-
close_view
(view=None)¶ Close a view if possible.
Parameters: view – is the view. If it is not specified then the current view is closed. Returns: True
if the view was closed.
-
new_view_allowed
()¶ This determines if the main area policy allows for a new view to be added.
Returns: True
if a new view is allowed.
-
open
(tool_id, location, format='')¶ Open the model at a location and add it to a tool.
Parameters: - tool_id – is the identifier of the tool to handle the model.
- location – is the location as a string.
- format – is the identifier of the optional format.
-
BaseShellFactory
¶
-
class
dip.shell.
BaseShellFactory
¶ Base class:
ViewFactory
The BaseShellFactory class is a base class for shell factories. It creates views that can be adapted to the
IShell
interface.-
id = 'dip.shell'
The identifier of a shell.
-
main_area_policy = Enum('multi', 'on_demand', 'single')
This determines how multiple views placed in the main area of the shell are handled. ‘multi’ means that the area may contain any number of views and will visualise the area in the same way irrespective of the number of views. ‘on_demand’ means that the area may contain any number of views but it may visualise the area differently if it contains a single view. ‘single’ means that the area may only ever contain one view and an old view must be discarded before a new view is added.
-
tool_factories = List(Callable())
The tool factories. A factory should return an object that implements or can be adapted to
ITool
.
-
window_title_template = Str()
The template from which the window title is derived. Tokens in the template are replaced by their corresponding values:
[view] is replaced by the
name
of the active view.Note that, as with
window_title
, [*] will be replaced with the application modification state by the toolkit.
-
create
(model, controller, parent)¶ Create the shell view.
Parameters: - model – is the model.
- controller – is the controller.
- parent – is the optional parent view.
Returns: the view which can be adapted to the
IShell
interface.
-
create_shell
(model, controller, parent)¶ Create the view that implements the shell. This should be reimplemented by a sub-class.
Parameters: - model – is the model.
- controller – is the controller.
- parent – is the optional parent view.
Returns: the shell.
-
ICloseViewVeto
¶
-
class
dip.shell.
ICloseViewVeto
¶ Base class:
Interface
The ICloseViewVeto interface defines the API to be implemented by a tool that wants to exert control over whether or not a view can be closed.
-
veto
(view)¶ Determine if the view is to be prevented from being closed.
Parameters: view – is the view. Returns: True
if the close of the view is to be prevented.
-
IManagedModel
¶
-
class
dip.shell.
IManagedModel
¶ Base class:
IDirty
The IManagedModel interface defines the API of a managed model.
-
location = Instance(IStorageLocation)
The storage location of the model. It will be
None
if it is not stored. It will be updated automatically.
-
native_format = Str()
The identifier of the model’s native format.
-
invalid_reason = Str()
This explains why the model is invalid. It will be an empty string if the model is valid.
-
views = List(IView)
The views that, when active, will cause the appropriate managed model actions to be enabled.
-
IManagedModelTool
¶
-
class
dip.shell.
IManagedModelTool
¶ Base class:
ITool
The IManagedModelTool interface defines the API for a tool that handles one or more managed models.
-
manager = Instance(IModelManagerTool)
The model manager that is managing this tool’s models.
-
model_policy = Enum('many', 'one', 'zero_or_one')
This defines how the tool handles multiple models.
many
means the tool can handle any number of models at a time.one
means that the tool handles exactly one model at a time - this means a new model will be created automatically without user intervention.zero_or_one
means that the tool handles no more than one model at time.
-
models = List(IManagedModel)
The managed models the tool is handling.
-
new_tool = Bool(True)
This is set if the tool is suitable for handling a model in the context of a “New” operation.
-
open_tool = Bool(True)
This is set if the tool is suitable for handling a model in the context of an “Open” operation.
-
handles
(model)¶ Check if the tool can handle a particular model.
Parameters: model – is the model. Returns: True
if a tool can handle the model.
-
IModelManagerTool
¶
-
class
dip.shell.
IModelManagerTool
¶ Base class:
ITool
The IModelManagerTool interface defines the API made available to implementations of the
IManagedModelTool
interface.-
model_factories = List(Callable())
The managed model factories. A factory should return an object that implements or can be adapted to
IManagedModel
. If an application may include more than one model type then the factory should implement theIDisplay
interface.
-
open_model
(location, tool)¶ This handles
open_model()
on behalf of an implementation of theIManagedModelTool
interface.Parameters: - location – is the storage location.
- tool – is the tool.
-
veto_close_view
(view, tool)¶ This handles
veto()
on behalf of an implementation of theIManagedModelTool
interface.Parameters: - view – is the view.
- tool – is the tool.
Returns: True
if the close of the view is to be prevented.
-
IOpenModel
¶
-
class
dip.shell.
IOpenModel
¶ Base class:
Interface
The IOpenModel interface defines the API to be implemented by a tool that can open a model typically from a location provided on the command line.
-
open_model
(location)¶ Open a model at a storage location.
Parameters: location – is the storage location.
-
IQuitVeto
¶
-
class
dip.shell.
IQuitVeto
¶ Base class:
Interface
The IQuitVeto interface defines the API to be implemented by an object that is allowed to veto a user’s request to quit the application.
-
reasons = List(Str())
The list of separate reasons why the quit request should be vetoed. Each reason must be a short, properly punctuated, one line sentence. If the list is empty then the request will not be vetoed.
-
IShell
¶
-
class
dip.shell.
IShell
¶ Base class:
Interface
The IShell interface defines the API of a shell.
The following action identifiers are considered to be well known. A shell would normally be expected to honour them.
dip.ui.actions.close dip.ui.actions.export dip.ui.actions.import dip.ui.actions.new dip.ui.actions.open dip.ui.actions.quit dip.ui.actions.save dip.ui.actions.save_as dip.ui.actions.whats_thisThe following action collection identifiers are considered to be well known. A shell, if it supports the concept of action collections, would normally be expected to honour them.
dip.ui.collections.edit dip.ui.collections.file dip.ui.collections.help dip.ui.collections.print dip.ui.collections.tools dip.ui.collections.undo dip.ui.collections.viewThe following area identifiers, used to position views, are defined. A shell may interpret these in any way. An empty string implies the main area.
dip.shell.areas.left dip.shell.areas.right dip.shell.areas.bottom dip.shell.areas.top-
current_view = Instance(IView)
The current view. It is not necessarily the active view.
-
main_area_policy = Enum('multi', 'on_demand', 'single')
This determines how multiple views placed in the main area of the shell are handled. ‘multi’ means that the area may contain any number of views and will visualise the area in the same way irrespective of the number of views. ‘on_demand’ means that the area may contain any number of views but it may visualise the area differently if it contains a single view. ‘single’ means that the area may only ever contain one view and an old view must be discarded before a new view is added.
-
publication_manager = Instance(IPublicationManager)
The publication manager.
-
tools = List(ITool)
The list of the shell’s tools.
-
views = List(IView)
The list of the shell’s views.
-
window_title_template = Str()
The template from which the window title is derived. Tokens in the template are replaced by their corresponding values:
[view] is replaced by the
name
of the active view.Note that, as with
window_title
, [*] will be replaced with the application modification state by the toolkit.
-
close_view
(view=None)¶ Close a view if possible.
Parameters: view – is the view. If it is not specified then the current view is closed. Returns: True
if the view was closed.
-
new_view_allowed
()¶ This determines if the main area policy allows for a new view to be added.
Returns: True
if a new view is allowed. If not then the user will be informed.
-
open
(tool_id, location, format='')¶ Open the model at a location and add it to a tool.
Parameters: - tool_id – is the identifier of the tool to handle the model.
- location – is the location as a string.
- format – is the identifier of the optional format.
-
ITool
¶
-
class
dip.shell.
ITool
¶ Base class:
Interface
The ITool interface defines the API to be implemented by a tool.
-
actions = List(Instance(IAction, IActionCollection))
The tool’s actions. Any initial actions will be automatically added to the shell. If there are none then the tool is introspected for any
ActionCollection
attributes and then anyAction
attributes.
-
current_view = Instance(IView)
The tool’s current view. It will be
None
if the shell’s current view does not belong to this tool.
-
id = Str()
The tool’s identifier.
-
shell = Instance(.IShell)
The shell that the tool is attached to.
-
views = List(IView)
The tool’s views. Any initial views will be automatically added to the shell.
-
SimpleViewTool
¶
-
class
dip.shell.
SimpleViewTool
¶ Base class:
Model
The SimpleViewTool class is a base class for shell tools implemented as a single view and that allows for the use of an action that toggles the visibility of the view.
-
action_id = Str()
The identifier to use for any action.
-
area = Str('dip.shell.areas.left')
The identifier of the area where the view should be placed.
-
name = Str()
The tool’s name.
-
view = Instance(IView)
The view implementation.
-
views = Tuple(IView)
The tool’s views. Any initial views will be automatically added to the shell.
-
within = Str()
The optional identifier of a collection of actions that any action will be placed within.
-