Download presentation
Presentation is loading. Please wait.
Published byDeirdre Harmon Modified over 8 years ago
1
Envisage An Extensible Application Framework Martin Chilvers Enthought Inc martin@enthought.com
2
What is Envisage? A framework for... 1. Extensible Applications 2. Extensible GUI Applications 3. Extensible Scientific Applications
3
1. A Framework for Extensible Applications Plugin model – load, create, start and stop Plugins contribute to the application – Extension Points Well-defined places to add functionality/data – Application Objects Well-known/shared objects
4
Extension Points Declarative! Definitions are Python classes class Message(ExtensionPoint): author = Str text = Str Contributions are Python instances message = Message( author = “Martin Chilvers”, text = “The first rule of live demos: never do live demos” ) Stored in the Extension Registry
5
Application Objects Publish application.publish_application_object( uol, object, properties ) Lookup application.lookup_application_object(uol) Universal Object Locators (UOLs) – URL-like object references – Extensible set of supported protocols
6
Universal Object Locators Python import – Publish Create Python module – Lookup import://package.subpackage.module.symbol Service Registry ('Yellow Pages') – Publish application.publish_application_object( 'service://Plumber', Plumber(), {'price' : 50} ) – Lookup application.lookup_application_object( 'service://Plumber?price<100' )
7
An Envisage Application Extension Registry Service Registry Plugi n Application Objects
8
The Core Plugin Extension Points – Type Manager Adapters Categories Factories Hooks – Runnable Application Objects – Services Type manager(s) Naming
9
The Naming Service 'White Pages' style lookup – Publish application.publish_application_object( 'enthought/plumbers/fred', Plumber() ) – Lookup fred = application.lookup_application_object( 'name://enthought/plumbers/fred' )
10
Resource Types How domain types are 'lifted' into Envisage – Metadata – Additional behavior Visualization Serialization etc... Built using type manager – Adapters, Categories, Hooks
11
The Resource Plugin Extension Points – ResourceManager ResourceType Application Objects – Services Resource Managers
12
An Envisage Application Extension Registry Service Registry Plugi n Resource Plugin Core Plugi n Application Objects Naming Type Manager Resourc e Manage r
13
Key Concepts Extension Points (and extensions) – Declarative! Application Objects – UOLs, Service Registry, Naming... Type Management – Adapters, Categories, Hooks Resource Types
14
DEMO: 'Message of the Day' (MOTD) Application
15
What is Envisage? A framework for... 1. Extensible Applications 2. Extensible GUI applications 3. Extensible Scientific Applications
16
2. A Framework for Extensible GUI Applications The Workbench – A GUI for a common style of application – IDE-like Windows Perspectives Views Editors Actions – Menubars, Toolbars etc
17
Workbench Window View s Editor s Action s
18
Perspectives A set of related views etc – User configurable Support a specific user task (or tasks) – e.g. In an IDE tasks might be Editing Test Generation Debug Source code control Project management etc...
19
Demo: Perspectives
20
What is Envisage? A framework for... 1. Extensible Applications 2. Extensible GUI applications 3. Extensible Scientific Applications
21
3. A framework for Extensible Scientific Applications What we have – Text editor – Python shell – Mayavi – SciPy – Profiling – Debugging – Code browser Work-in-progress – Data import/export – Experiments – Materials Database – Distributed and Parallel computation – Scripting/Macro recording
22
Future Work Expand set of provided plugins Use Python Eggs for plugin loading – versioning/updating etc Documentation...
23
Further Information http://code.enthought.com – Downloads – Mailing List – Source code repository (svn)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.