Example #1
0
def process_engine(measurement_workbench):
    measurement_workbench.register(LogManifest())
    measurement_workbench.register(TasksManagerManifest())
    plugin = measurement_workbench.get_plugin('exopy.measurement')
    yield plugin.create('engine', 'exopy.process_engine')
    plugin.processor.engine = None
    gc.collect()
Example #2
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())
Example #3
0
def content_workbench(measurement_workbench, measurement, exopy_qtbot):
    """Create a measurement workspace.

    """
    measurement_workbench.register(UIManifest())
    measurement_workbench.register(LogManifest())
    measurement_workbench.register(TasksManagerManifest())
    measurement_plugin = measurement_workbench.get_plugin('exopy.measurement')
    measurement_plugin.selected_engine = 'dummy'
    measurement_plugin.default_monitors = ['dummy']

    return measurement_workbench
Example #4
0
def workspace(exopy_qtbot, measurement_workbench, measurement):
    """Create a measurement workspace.

    """
    measurement_workbench.register(UIManifest())
    measurement_workbench.register(LogManifest())
    measurement_workbench.register(TasksManagerManifest())
    measurement_plugin = measurement_workbench.get_plugin('exopy.measurement')
    measurement_plugin.selected_engine = 'dummy'
    measurement_plugin.default_monitors = ['dummy']
    core = measurement_workbench.get_plugin('enaml.workbench.core')
    cmd = 'enaml.workbench.ui.select_workspace'
    core.invoke_command(cmd, {'workspace': 'exopy.measurement.workspace'})

    yield measurement_plugin.workspace

    cmd = 'enaml.workbench.ui.close_workspace'
    core.invoke_command(cmd, {'workspace': 'exopy.measurement.workspace'})
Example #5
0
def pulses_workspace(pulses_workbench, exopy_qtbot):
    """Create a measure workspace.

    """
    pulses_workbench.register(UIManifest())
    pulses_workbench.register(LogManifest())
    pulses_plugin = pulses_workbench.get_plugin('exopy.pulses')
    core = pulses_workbench.get_plugin('enaml.workbench.core')
    cmd = 'enaml.workbench.ui.select_workspace'
    core.invoke_command(cmd, {'workspace': 'exopy.pulses.workspace'})

    yield pulses_plugin.workspace

    cmd = 'enaml.workbench.ui.close_workspace'
    core.invoke_command(cmd, {'workspace': 'exopy.measurement.workspace'})

    for m_id in ('exopy.app.logging'):
        try:
            pulses_workbench.unregister(m_id)
        except ValueError:
            pass
Example #6
0
def process_engine(measurement_workbench):
    measurement_workbench.register(LogManifest())
    measurement_workbench.register(TasksManagerManifest())
    plugin = measurement_workbench.get_plugin('exopy.measurement')
    return plugin.create('engine', 'exopy.process_engine')
Example #7
0
def main(cmd_line_args=None):
    """Main entry point of the Exopy application.

    """
    # Build parser from ArgParser and parse arguemnts
    parser = ArgParser()
    parser.add_choice('workspaces', 'exopy.measurement.workspace',
                      'measurement')
    parser.add_argument("-s",
                        "--nocapture",
                        help="Don't capture stdout/stderr",
                        action='store_true')
    parser.add_argument("-w",
                        "--workspace",
                        help='Select start-up workspace',
                        default='measurement',
                        choices='workspaces')
    parser.add_argument("-r",
                        "--reset-app-folder",
                        help='Reset the application startup folder.',
                        action='store_true')

    modifiers = []
    for i, ep in enumerate(iter_entry_points('exopy_cmdline_args')):

        try:
            modifier, priority = ep.load(require=False)
            modifiers.append((ep, modifier, priority, i))
        except Exception as e:
            text = 'Error loading extension %s' % ep.name
            content = ('The following error occurred when trying to load the '
                       'entry point {} :\n {}'.format(ep.name, e))
            details = format_exc()
            display_startup_error_dialog(text, content, details)

    modifiers.sort(key=itemgetter(1, 2))
    try:
        for m in modifiers:
            m[1](parser)
    except Exception as e:
        text = 'Error modifying cmd line arguments'
        content = ('The following error occurred when the entry point {} '
                   'tried to add cmd line options :\n {}'.format(ep.name, e))
        details = format_exc()
        display_startup_error_dialog(text, content, details)

    try:
        args = parser.parse_args(cmd_line_args)
    except BaseException as e:
        if e.args == (0, ):
            sys.exit(0)
        text = 'Failed to parse cmd line arguments'
        content = ('The following error occurred when trying to parse the '
                   'command line arguments :\n {}'.format(e))
        details = format_exc()
        display_startup_error_dialog(text, content, details)

    # Patch Thread to use sys.excepthook
    setup_thread_excepthook()

    workbench = Workbench()
    workbench.register(CoreManifest())
    workbench.register(UIManifest())
    workbench.register(AppManifest())
    workbench.register(StateManifest())
    workbench.register(ErrorsManifest())
    workbench.register(PreferencesManifest())
    workbench.register(IconManagerManifest())
    workbench.register(LogManifest())
    workbench.register(PackagesManifest())
    workbench.register(DependenciesManifest())
    workbench.register(InstrumentManagerManifest())
    workbench.register(TasksManagerManifest())
    workbench.register(MeasureManifest())
    workbench.register(TextMonitorManifest())

    ui = workbench.get_plugin(u'enaml.workbench.ui')  # Create the application

    try:
        app = workbench.get_plugin('exopy.app')
        app.run_app_startup(args)
    except Exception as e:
        text = 'Error starting plugins'
        content = ('The following error occurred when executing plugins '
                   'application start ups :\n {}'.format(e))
        details = format_exc()
        display_startup_error_dialog(text, content, details)

    core = workbench.get_plugin('enaml.workbench.core')

    # Install global except hook.
    if not args.nocapture:
        core.invoke_command('exopy.app.errors.install_excepthook', {})

    # Select workspace
    core.invoke_command('enaml.workbench.ui.select_workspace',
                        {'workspace': args.workspace}, workbench)

    ui = workbench.get_plugin(u'enaml.workbench.ui')
    ui.show_window()
    ui.window.maximize()
    ui.start_application()

    core.invoke_command('enaml.workbench.ui.close_workspace', {}, workbench)

    # Unregister all contributed packages
    workbench.unregister('exopy.app.packages')
    workbench.unregister('exopy.measurement.monitors.text_monitor')
    workbench.unregister('exopy.measurement')
    workbench.unregister('exopy.tasks')
    workbench.unregister('exopy.instruments')
    workbench.unregister('exopy.app.icons')
    workbench.unregister('exopy.app.preferences')
    workbench.unregister('exopy.app.states')
    workbench.unregister('exopy.app.dependencies')
    workbench.unregister('exopy.app.errors')
    workbench.unregister('exopy.app.logging')
    workbench.unregister('exopy.app')
    workbench.unregister(u'enaml.workbench.ui')
    workbench.unregister(u'enaml.workbench.core')