def launch_lab(plugin_class): from openalea.oalab.gui.splittablewindow import OALabMainWin from openalea.core.settings import get_openalea_home_dir from openalea.core.path import path as Path from openalea.core.service.introspection import alias from openalea.oalab.gui.utils import qicon plugin = plugin_class() lab_class = plugin() layout_path = Path(get_openalea_home_dir()) / '%s.oaui' % lab_class.name OALabMainWin.DEFAULT_LAYOUT_PATH = layout_path OALabMainWin.DEFAULT_LAYOUT = lab_class.layout OALabMainWin.DEFAULT_MENU_NAMES = lab_class.menu_names OALabMainWin.LAB = lab_class if hasattr(lab_class, "start"): lab_class.start() win = OALabMainWin(lab=lab_class) win.setWindowIcon(qicon(lab_class.icon)) if hasattr(lab_class, 'connect_applet'): win.appletSet.connect(lab_class.connect_applet) win.emit_applet_set() if hasattr(lab_class, "initialize"): lab_class.initialize() win.initialize() win.setWindowTitle('OpenAleaLab "%s"' % alias(plugin)) win.showMaximized() win.raise_() return win
def __init__(self, category, parent=None): WelcomePage.__init__(self, parent=parent) self._actions = {} self._sorted_actions = [] for plugin_class in plugins(category): action = QtGui.QAction(obj_icon(plugin_class), alias(plugin_class), self) action.triggered.connect(self._on_action_triggered) self._actions[action] = plugin_class self._sorted_actions.append(action) self.set_actions(self._sorted_actions)