Source code for simphony_mayavi.mayavi2
""" This module provides end-user functions for interacting with
the SimPhoNy panel in Mayavi2 application
"""
from mayavi.core.registry import registry
from mayavi.plugins.envisage_engine import EnvisageEngine
[docs]def get_simphony_panel():
''' Return the SimPhoNy panel object sitting in Mayavi2
Returns
-------
panel : EngineManagerMayavi2
Raises
------
RuntimeError
If the Mayavi2 application is not found or
the SimPhoNy panel is not found in the application
'''
# Look for EnvisageEngine
# We don't use `mlab.get_engine` here because the behaviour of
# `mlab.get_engine` depends on `mlab.options.backend`,
# `mlab.options.offscreen` and whether user has manually registered
# mayavi engines. Here we just want to look for a registered
# EnvisageEngine and raise an Error if it is not found
for engine in registry.engines.values():
if isinstance(engine, EnvisageEngine):
break
else:
message = "No registered EnvisageEngine. Is Mayavi2 running?"
raise RuntimeError(message)
# The Simphony Panel (plugin) should be a registered service
panel = engine.window.get_service(
"simphony_mayavi.plugins.engine_manager_mayavi2.EngineManagerMayavi2")
if panel:
return panel
else:
# It is possible if the user has not activated the
# simphony_mayavi plugin in Mayavi2
message = ("Could not locate the SimPhoNy panel contributed by "
"the simphony_mayavi plugin")
raise RuntimeError(message)
[docs]def add_engine_to_mayavi2(name, engine):
''' Add an ABCModelingEngine instance to the Mayavi2 plugin for
SimPhoNy
Parameters
----------
name : str
Name of the Simphony Modeling Engine
engine : ABCModelingEngine
Simphony Modeling Engine
'''
get_simphony_panel().add_engine(name, engine)