Ejemplo n.º 1
0
def register_executable(name, validate=None):
    ep = ExtensionPoint(IExternalExecutable)
    if len(ep(name, all=True)) == 0:
        PluginGlobals.add_env("pca")
        PluginGlobals._executables.append(
            ExternalExecutable(name=name, validate=validate))
        PluginGlobals.pop_env()
    else:
        #
        # If the executable is being 'registered', then we search for it
        # again, since the user environment may have changed.
        #
        list(ep(name, all=True))[0].find_executable()
Ejemplo n.º 2
0
def register_executable(name, validate=None):
    ep = ExtensionPoint(IExternalExecutable)
    if len(ep(name, all=True)) == 0:
        PluginGlobals.add_env("pca")
        PluginGlobals._executables.append(
            ExternalExecutable(
                name=name, validate=validate))
        PluginGlobals.pop_env()
    else:
        #
        # If the executable is being 'registered', then we search for it
        # again, since the user environment may have changed.
        #
        list(ep(name, all=True))[0].find_executable()
Ejemplo n.º 3
0
 def run(self):
     Logger('orion', verbose=True)
     
     self.__accessibility_manager = AccessibilityManager()
     
     # load Display Server Communicators
     displayName = os.environ.get("DISPLAY")
     if not displayName:
         raise 
     self.__conn = self.__display_servers()[0]
     self.__conn.init(displayName)
     
     # load window managers
     manager_count = len(self.__window_managers)
     logger.debug('found %s orion window managers'%manager_count)
     manager = self.__window_managers()[0]
     self.__window_manager = manager
     manager.init()
     
     self.DEBUG_TEST()
     
     logger.debug("starting '%s' window manager"%manager.name)
     manager.run()
     PluginGlobals.pop_env('orion')
    >>> from microdrop.interfaces import IPlugin
    >>> import microdrop.app
    >>>
    >>> signals = blinker.Namespace()
    >>> signal = 'get_schedule_requests'
    >>> args = ('on_plugin_enable', )
    >>> connect_pyutilib_signal(signals, signal, IPlugin)
    >>> signals.signal(signal).send(*args)
    [(<bound method DmfDeviceController.get_schedule_requests of <Plugin DmfDeviceController 'microdrop.gui.dmf_device_controller'>>, [ScheduleRequest(before='microdrop.gui.config_controller', after='microdrop.gui.dmf_device_controller'), ScheduleRequest(before='microdrop.gui.main_window_controller', after='microdrop.gui.dmf_device_controller')])]
    '''
    import functools as ft
    import inspect

    from microdrop.plugin_manager import ExtensionPoint

    callbacks = [getattr(p, signal) for p in ExtensionPoint(*args, **kwargs) if hasattr(p, signal)]

    for callback_i in callbacks:
        if len(inspect.getargspec(callback_i)[0]) < 2:
            # Blinker signals require _at least_ one argument (assumed to be sender).
            # Wrap pyutilib signals without any arguments to make them work with blinker.
            @ft.wraps(callback_i)
            def _callback(*args, **kwargs):
                return callback_i()
        else:
            _callback = callback_i
        signals.signal(signal).connect(_callback, weak=False)


PluginGlobals.pop_env()
Ejemplo n.º 5
0
#  _________________________________________________________________________
#
#  PyUtilib: A Python utility library.
#  Copyright (c) 2008 Sandia Corporation.
#  This software is distributed under the BSD License.
#  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
#  the U.S. Government retains certain rights in this software.
#  _________________________________________________________________________
#

from pyutilib.component.core import PluginGlobals
PluginGlobals.add_env("pyutilib")

from pyutilib.subprocess.processmngr import subprocess, SubprocessMngr, run_command, timer, signal_handler, run, PIPE, STDOUT

PluginGlobals.pop_env()