Пример #1
0
    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()
Пример #2
0
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
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
    def setup(self):

        self.workbench = Workbench()
        self.workbench.register(CoreManifest())
        self.workbench.register(StateManifest())
        self.workbench.register(PreferencesManifest())
        self.workbench.register(DependenciesManifest())
Пример #6
0
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
Пример #7
0
 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())
Пример #8
0
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
Пример #9
0
def pref_workbench(workbench):
    """Register the plugins resuired to test the preferences plugin.

    """
    workbench.register(CoreManifest())
    workbench.register(AppManifest())
    workbench.register(ErrorsManifest())
    return workbench
Пример #10
0
def err_workbench(workbench):
    """Create a workbench and register basic manifests.

    """
    workbench.register(CoreManifest())
    workbench.register(ErrorsManifest())
    workbench.register(PackagesManifest())
    return workbench
Пример #11
0
    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)
Пример #13
0
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
Пример #14
0
    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)
Пример #15
0
    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')
Пример #16
0
    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}
Пример #17
0
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')
Пример #18
0
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
Пример #19
0
    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())
Пример #20
0
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')
Пример #21
0
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
Пример #22
0
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
Пример #23
0
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
Пример #24
0
    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
Пример #25
0
    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
Пример #26
0
    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
Пример #27
0
    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)
Пример #28
0
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
Пример #29
0
    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()
Пример #30
0
 def setup(self):
     self.workbench = Workbench()
     self.workbench.register(CoreManifest())
     self.workbench.register(StateManifest())
     self.workbench.register(StateContributor())