def run(self): """ Run the UI workbench application. This method will load the core and ui plugins and start the main application event loop. This is a blocking call which will return when the application event loop exits. """ InkcutWorkbench._instance = self with enaml.imports(): from enaml.workbench.core.core_manifest import CoreManifest from enaml.workbench.ui.ui_manifest import UIManifest from inkcut.core.manifest import InkcutManifest #from inkcut.settings.manifest import SettingsManifest self.register(CoreManifest()) self.register(UIManifest()) self.register(InkcutManifest()) #self.register(SettingsManifest()) #: Init the ui ui = self.get_plugin('enaml.workbench.ui') ui.show_window() # Make sure ^C keeps working signal.signal(signal.SIGINT, signal.SIG_DFL) #: Start the core plugin plugin = self.get_plugin('inkcut.core') ui.start_application()
def initialize_default(extra_manifests, workspace='psi.experiment.workspace'): with enaml.imports(): from enaml.workbench.core.core_manifest import CoreManifest from enaml.workbench.ui.ui_manifest import UIManifest from psi.context.manifest import ContextManifest from psi.data.manifest import DataManifest from psi.experiment.manifest import ExperimentManifest with warnings.catch_warnings(): warnings.simplefilter('ignore') workbench = Workbench() workbench.register(CoreManifest()) workbench.register(UIManifest()) workbench.register(ContextManifest()) workbench.register(DataManifest()) workbench.register(ExperimentManifest()) for manifest in extra_manifests: workbench.register(manifest()) core = workbench.get_plugin('enaml.workbench.core') ui = workbench.get_plugin('enaml.workbench.ui') ui.show_window() core.invoke_command('enaml.workbench.ui.select_workspace', {'workspace': workspace}) experiment = workbench.get_plugin('psi.experiment') return workbench
def measurement_workbench(workbench, monkeypatch, app_dir): """Setup the workbench in such a way that the measurement plugin can be tested. """ monkeypatch.setattr(ErrorsPlugin, 'exit_error_gathering', exit_on_err) workbench.register(CoreManifest()) workbench.register(AppManifest()) workbench.register(PreferencesManifest()) workbench.register(IconManagerManifest()) workbench.register(ErrorsManifest()) workbench.register(DependenciesManifest()) workbench.register(StateManifest()) workbench.register(MeasureManifest()) workbench.register(TextMonitorManifest()) yield workbench for m_id in ('exopy.measurement.monitors.text_monitor', 'exopy.measurement', 'exopy.app.dependencies', 'exopy.app.errors', 'exopy.app.icons', 'exopy.app.preferences', 'exopy.app'): try: workbench.unregister(m_id) except ValueError: pass # Give some time to the os to release resources linked to file # monitoring. sleep(0.1)
def instr_workbench(workbench, monkeypatch, app_dir, app): """Setup the workbench in such a way that the instrs manager can be tested. """ monkeypatch.setattr(ErrorsPlugin, 'exit_error_gathering', exit_on_err) workbench.register(CoreManifest()) workbench.register(AppManifest()) workbench.register(PreferencesManifest()) workbench.register(IconManagerManifest()) workbench.register(ErrorsManifest()) workbench.register(StateManifest()) workbench.register(DependenciesManifest()) workbench.register(InstrumentManagerManifest()) yield workbench for m_id in ('exopy.instruments', 'exopy.app.dependencies', 'exopy.app.errors', 'exopy.app.preferences', 'exopy.app.icons', 'exopy.app.states', 'exopy.app'): try: workbench.unregister(m_id) except Exception: pass # Give some time to the os to release resources linked to file # monitoring. sleep(0.1)
def setup(self): self.workbench = Workbench() self.workbench.register(CoreManifest()) self.workbench.register(StateManifest()) self.workbench.register(PreferencesManifest()) self.workbench.register(DependenciesManifest())
def task_workbench(monkeypatch, app_dir): """Setup the workbench in such a way that the task manager can be tested. """ def exit_err(self): if self._delayed: raise Exception('Unexpected exceptions occured :\n' + pformat(self._delayed)) monkeypatch.setattr(ErrorsPlugin, 'exit_error_gathering', exit_err) workbench = Workbench() workbench.register(CoreManifest()) workbench.register(AppManifest()) workbench.register(PreferencesManifest()) workbench.register(ErrorsManifest()) workbench.register(DependenciesManifest()) workbench.register(TasksManagerManifest()) yield workbench for m_id in ('ecpy.tasks', 'ecpy.app.dependencies', 'ecpy.app.errors', 'ecpy.app.preferences', 'ecpy.app'): try: workbench.unregister(m_id) except ValueError: pass
def setup(self): self.workbench = Workbench() self.workbench.register(CoreManifest()) self.workbench.register(AppManifest()) self.workbench.register(PreferencesManifest()) self.workbench.register(StateManifest()) self.workbench.register(LogManifest())
def measure_workbench(monkeypatch, app_dir): """Setup the workbench in such a way that the measure plugin can be tested. """ def exit_err(self): self._gathering_counter -= 1 if self._gathering_counter < 1: self._gathering_counter = 0 if self._delayed: msg = 'Unexpected exceptions occured :\n' raise ErrorDialogException(msg + pformat(self._delayed)) monkeypatch.setattr(ErrorsPlugin, 'exit_error_gathering', exit_err) workbench = Workbench() workbench.register(CoreManifest()) workbench.register(AppManifest()) workbench.register(PreferencesManifest()) workbench.register(ErrorsManifest()) workbench.register(DependenciesManifest()) workbench.register(MeasureManifest()) yield workbench for m_id in ('ecpy.measure', 'ecpy.app.dependencies', 'ecpy.app.errors', 'ecpy.app.preferences', 'ecpy.app'): try: workbench.unregister(m_id) except ValueError: pass
def pref_workbench(workbench): """Register the plugins resuired to test the preferences plugin. """ workbench.register(CoreManifest()) workbench.register(AppManifest()) workbench.register(ErrorsManifest()) return workbench
def err_workbench(workbench): """Create a workbench and register basic manifests. """ workbench.register(CoreManifest()) workbench.register(ErrorsManifest()) workbench.register(PackagesManifest()) return workbench
def setup(self): self.workbench = Workbench() self.workbench.register(CoreManifest()) self.workbench.register(StateManifest()) self.workbench.register(PreferencesManifest()) self.workbench.register(DependenciesManifest()) self.workbench.register(TaskManagerManifest()) self.workbench.register(MeasureManifest()) self.workbench.register(TestSuiteManifest())
def setup(self): self.workbench = Workbench() self.workbench.register(CoreManifest()) self.workbench.register(StateManifest()) self.workbench.register(PreferencesManifest()) self.workbench.register(TaskManagerManifest()) self.root = RootTask(should_stop=Event(), should_pause=Event()) self.task = self.excep_class(task_name='Test', condition='rr') self.root.children_task.append(self.task)
def workbench(): """Create a workbench and register basic manifests. """ workbench = Workbench() workbench.register(CoreManifest()) workbench.register(AppManifest()) workbench.register(ErrorsManifest()) workbench.register(PackagesManifest()) return workbench
def setup(self): self.workbench = Workbench() self.workbench.register(CoreManifest()) self.workbench.register(StateManifest()) self.workbench.register(PreferencesManifest()) self.workbench.register(TaskManagerManifest()) self.root = RootTask(should_stop=Event(), should_pause=Event()) self.task = SaveArrayTask(task_name='Test') self.root.children_task.append(self.task)
def setup(self): self.workbench = Workbench() self.workbench.register(CoreManifest()) self.workbench.register(UIManifest()) self.workbench.register(StateManifest()) self.workbench.register(PreferencesManifest()) self.workbench.register(LogManifest()) self.workbench.register(MeasureManifest()) # Needed otherwise the monitor manifest is not registered. self.workbench.get_plugin(u'hqc_meas.measure')
def setup(self): self.workbench = Workbench() self.workbench.register(CoreManifest()) self.workbench.register(StateManifest()) self.workbench.register(PreferencesManifest()) self.workbench.register(InstrManagerManifest()) self.workbench.register(TaskManagerManifest()) self.root = RootTask(should_stop=Event(), should_pause=Event()) self.task = MeasDCVoltageTask(task_name='Test') self.root.children_task.append(self.task) self.root.run_time['drivers'] = {'Test': InstrHelper}
def dep_workbench(workbench): """Setup the workbench to test dependencies related capabilities. """ workbench.register(CoreManifest()) workbench.register(DependenciesManifest()) workbench.register(BuildDep()) workbench.register(RuntimeDep()) yield workbench workbench.unregister('exopy.app.dependencies') workbench.unregister('enaml.workbench.core')
def workbench(): workbench = Workbench() workbench.register(CoreManifest()) workbench.register(ContextManifest()) workbench.register(TestManifest()) context = workbench.get_plugin('psi.context') print context.selectors['default'].order print context.selectors['default'].parameters print context.context_items['repetitions'].rove for r in (20, 15, 10, 2): context.selectors['default'].add_setting(dict(repetitions=r)) return workbench
def setup(self): self.workbench = Workbench() self.workbench.register(CoreManifest()) self.workbench.register(UIManifest()) self.workbench.register(HqcAppManifest()) self.workbench.register(StateManifest()) self.workbench.register(PreferencesManifest()) self.workbench.register(LogManifest()) self.workbench.register(TaskManagerManifest()) self.workbench.register(InstrManagerManifest()) self.workbench.register(MeasureManifest()) self.workbench.register(TestSuiteManifest())
def test_registration(windows): """Test that the manifest is properly regsistered. """ w = Workbench() w.register(CoreManifest()) w.register(ErrorsManifest()) w.register(PackagesManifest()) with signal_error_raise(): w.get_plugin('exopy.app.packages').collect_and_register() # Edit the name of the package assert w.get_plugin('exopy_ext_demo')
def workbench_and_tools(exopy_qtbot): """Create a workbench to test closing of the application window. """ workbench = Workbench() workbench.register(CoreManifest()) workbench.register(UIManifest()) workbench.register(AppManifest()) workbench.register(ErrorsManifest()) closing = ClosingContributor1() workbench.register(closing) closed = ClosedContributor() workbench.register(closed) return workbench, closing, closed
def workbench(app): workbench = Workbench() workbench.register(CoreManifest()) workbench.register(ContextManifest()) workbench.register(DataManifest()) workbench.register(TokenManifest()) workbench.register(ExperimentManifest()) workbench.register(HelperManifest()) context = workbench.get_plugin('psi.context') item = context.context_items['repetitions'] item.rove = True for r in (20, 15, 10, 2, 20): context.selectors['default'].add_setting({'repetitions': r}) return workbench
def icon_workbench(workbench, app_dir): """Register the icon mannager plugin and dependencies. """ workbench.register(CoreManifest()) workbench.register(PreferencesManifest()) workbench.register(IconManagerManifest()) yield workbench for m_id in ('exopy.app.icons', 'exopy.app.preferences'): try: workbench.unregister(m_id) except Exception: pass
def register_core_plugins(self, io_manifest, controller_manifests): # Note, the get_plugin calls appear to be necessary to properly # initialize parts of the application before new plugins are loaded. # This is likely some sort of bug or poor design on my part. with enaml.imports(): from enaml.workbench.core.core_manifest import CoreManifest from enaml.workbench.ui.ui_manifest import UIManifest from psi.experiment.manifest import ExperimentManifest self.register(ExperimentManifest()) self.register(CoreManifest()) self.register(UIManifest()) self.get_plugin('enaml.workbench.ui') self.get_plugin('enaml.workbench.core') manifest_class = load_manifest_from_file(io_manifest, 'IOManifest') self.register(manifest_class()) manifests = [] for manifest in controller_manifests: manifest_class = load_manifest(manifest) manifest = manifest_class() manifests.append(manifest) self.register(manifest) from psi.context.manifest import ContextManifest from psi.data.manifest import DataManifest from psi.token.manifest import TokenManifest from psi.controller.calibration.manifest import CalibrationManifest self.register(ContextManifest()) self.register(DataManifest()) self.register(TokenManifest()) self.register(CalibrationManifest()) # Required to bootstrap plugin loading self.get_plugin('psi.controller') self.get_plugin('psi.controller.calibration') context = self.get_plugin('psi.context') # Now, bind context to any manifests that want it (TODO, I should # have a core PSIManifest that everything inherits from so this # check isn't necessary). for manifest in manifests: if hasattr(manifest, 'C'): manifest.C = context.lookup
def setup(self): self.workbench = Workbench() self.workbench.register(CoreManifest()) self.workbench.register(UIManifest()) self.workbench.register(HqcAppManifest()) self.workbench.register(StateManifest()) self.workbench.register(PreferencesManifest()) self.workbench.register(LogManifest()) self.workbench.register(DependenciesManifest()) self.workbench.register(TaskManagerManifest()) self.workbench.register(InstrManagerManifest()) self.workbench.register(MeasureManifest()) self.workbench.register(TestSuiteManifest()) # Adding by hand the false instr task. plugin = self.workbench.get_plugin('hqc_meas.task_manager') plugin._py_tasks['False instr'] = FalseInstrTask
def register_core_plugins(self, io_manifest, controller_manifests): # Note, the get_plugin calls appear to be necessary to properly # initialize parts of the application before new plugins are loaded. # This is likely some sort of bug or poor design on my part. self.register(ExperimentManifest()) self.register(ContextManifest()) self.register(DataManifest()) self.register(TokenManifest()) self.register(CalibrationManifest()) self.register(CoreManifest()) self.register(UIManifest()) self.get_plugin('enaml.workbench.ui') self.get_plugin('enaml.workbench.core') if io_manifest is not None: self.io_manifest_class = load_manifest_from_file( io_manifest, 'IOManifest') io_manifest = self.io_manifest_class() self.register(io_manifest) manifests = [io_manifest] else: manifests = [] for manifest in controller_manifests: log.info('Registering %r', manifest) manifests.append(manifest) self.register(manifest) # Required to bootstrap plugin loading self.controller_plugin = self.get_plugin('psi.controller') self.get_plugin('psi.controller.calibration') self.context_plugin = self.get_plugin('psi.context') for manifest in self._manifests.values(): if hasattr(manifest, 'C'): # Now, bind information to the manifests manifest.C = self.context_plugin.lookup manifest.context = self.context_plugin manifest.controller = self.controller_plugin
def run(self): """ Run the UI workbench application. This method will load the core and ui plugins and start the main application event loop. This is a blocking call which will return when the application event loop exits. """ import enaml with enaml.imports(): from enaml.workbench.core.core_manifest import CoreManifest from enaml.workbench.ui.ui_manifest import UIManifest self.register(CoreManifest()) self.register(UIManifest()) ui = self.get_plugin(UI_PLUGIN) ui.show_window() ui.start_application() # TODO stop all plugins on app exit? self.unregister(UI_PLUGIN)
def pulses_workbench(monkeypatch, app_dir): """Setup the workbench in such a way that the pulses manager can be tested. """ monkeypatch.setattr(ErrorsPlugin, 'exit_error_gathering', exit_on_err) workbench = Workbench() workbench.register(CoreManifest()) workbench.register(AppManifest()) workbench.register(PreferencesManifest()) workbench.register(ErrorsManifest()) workbench.register(StateManifest()) workbench.register(DependenciesManifest()) workbench.register(MeasureManifest()) workbench.register(PulsesManagerManifest()) yield workbench for m_id in ('exopy.pulses', 'exopy.app.dependencies', 'exopy.app.errors', 'exopy.app.preferences', 'exopy.app'): try: workbench.unregister(m_id) except Exception: pass
def run(self): """ Run the UI workbench application. This method will load the core and ui plugins and start the main application event loop. This is a blocking call which will return when the application event loop exits. """ DeclaracadWorkbench._instance = self with enaml.imports(): from enaml.workbench.core.core_manifest import CoreManifest from enaml.workbench.ui.ui_manifest import UIManifest self.register(CoreManifest()) self.register(UIManifest()) #: Init the ui ui = self.get_plugin('enaml.workbench.ui') ui.show_window() #: Start the core plugin plugin = self.get_plugin('declaracad.core') ui.start_application()
def setup(self): self.workbench = Workbench() self.workbench.register(CoreManifest()) self.workbench.register(StateManifest()) self.workbench.register(StateContributor())