GUIApplication subclass of the standard Envisage
Application class uses PyFace’s cross-platform GUI tools to ensure
that an appropriate back-end application object is instantiated before plugins
start() methods, and then ensures that the GUI mainloop is
started after the
start() methods have successfully completed.
This allows developers to have a single place to start the application, but have
plugins to listen for the
application_initialized event to create UI
components. In particular, Traits UIs can be created in an event listener
method by calling
edit_traits(), something like this:
class MyViewPlugin(Plugin): model = Instance ui = Instance('traitsui.ui.UI') @on_trait_change('application:application_initialized') def create_ui(self): # we need to keep a reference to the ui object self.ui = self.model.edit_traits()
This is intended to be a cheap and simple way to take an existing application and start “lifting” it to Envisage, without having to use a more heavyweight UI framework such as Tasks immediately. Developers can work on adding extensibility to the application’s model without having to at the same time add extensibility to their UI.
GUIApplication exposes the following public API:
An optional PyFace
ISplashScreenthat gets shown while the plugins are started.
An event which is fired after the UI mainloop has started.