Пример #1
0
def main():
    """
    1. Parse command line arguments.
    2. If GUI enabled (session.gui), launch QApplication
    3. Search an extension in "oalab.extension" plugins.
        - If found, launch extension
        - If not found, quit application and shows available extensions
    """

    create_project_shortcut()
    session = Session()
    cli = CommandLineParser(session=session)
    cli.parse()

    if session.gui:
        from openalea.vpltk.qt import QtGui
        from openalea.oalab.gui.mainwindow import MainWindow

        app = QtGui.QApplication(sys.argv)

        win = None
        # Run all extension matching session.extension
        available_extensions = []

        if session.extension == '':
            session.extension = 'plant'
        for plugin_class in plugins('oalab.lab'):
            try:
                ext = plugin_class.name
            except AttributeError:
                continue
            else:
                # register plugin info for user.
                args = dict(EXT=ext, MODULE=plugin_class.__module__, CLASS=plugin_class.__name__)
                text = '  - \033[94m%(EXT)s\033[0m (provided by class %(CLASS)s defined in %(MODULE)s)' % args
                available_extensions.append(text)

            if session.extension == ext:
                plugin = plugin_class()
                win = MainWindow(session)
                debug_plugin('oalab.lab', func=plugin, func_args=[win])
                win.show()
                win.raise_()
                break

        if win:
            app.exec_()
        else:
            print 'Extension %r not found' % session.extension
            print 'Please choose a valid \033[94mextension\033[0m:'
            print '\n'.join(available_extensions)
Пример #2
0
    def add_plugin(self, plugin=None, name=None):
        if name and plugin is None:
            _plugin_class = plugin_class('oalab.applet', name)
            if _plugin_class is None:
                return
            plugin = _plugin_class()

        def plug():
            applet = plugin_instance('oalab.applet', plugin.name)
            plugin.graft(applet=applet, oa_mainwin=self)
            self.session.applet['plugin_%s' % plugin.name] = plugin
            self.session.applet[applet.__class__.__name__] = applet

        # Use plugin manager call to handle debug mode automatically
        debug_plugin('oalab.applet', func=plug)
Пример #3
0
    def add_plugin(self, plugin=None, name=None):
        if name and plugin is None:
            _plugin_class = plugin_class('oalab.applet', name)
            if _plugin_class is None:
                return
            plugin = _plugin_class()

        def plug():
            applet = plugin_instance('oalab.applet', plugin.name)
            plugin.graft(applet=applet, oa_mainwin=self)
            self.session.applet['plugin_%s' % plugin.name] = plugin
            self.session.applet[applet.__class__.__name__] = applet

        # Use plugin manager call to handle debug mode automatically
        debug_plugin('oalab.applet', func=plug)
Пример #4
0
    def reload(self):
        self.dtype = None

        self._name_to_applet = {}
        self._name_to_action = {}
        self._action_to_name = {}

        for plugin in plugins('oalab.plugin', criteria=dict(implement='IParadigmApplet')):
            applet = debug_plugin('oalab.plugin', func=plugin)
            if applet:
                name = applet.default_name
                self._name_to_applet[name] = applet
                action = QtGui.QAction(qicon(applet.icon), "New " + name, self._parent)
                action.triggered.connect(self._on_action_triggered)
                self._name_to_action[name] = action
                self._action_to_name[action] = name
Пример #5
0
    def reload(self):
        self.dtype = None

        self._name_to_applet = {}
        self._name_to_action = {}
        self._action_to_name = {}

        for plugin in plugins('oalab.plugin',
                              criteria=dict(implement='IParadigmApplet')):
            applet = debug_plugin('oalab.plugin', func=plugin)
            if applet:
                name = applet.default_name
                self._name_to_applet[name] = applet
                action = QtGui.QAction(qicon(applet.icon), "New " + name,
                                       self._parent)
                action.triggered.connect(self._on_action_triggered)
                self._name_to_action[name] = action
                self._action_to_name[action] = name
Пример #6
0
    def __init__(self, parent=None):
        super(ParadigmContainer, self).__init__(parent=parent)

        self.setTabsClosable(True)

        self.applets = []
        self._open_tabs = {}
        self.paradigms = {}
        self._new_file_actions = {}
        self.paradigms_actions = []
        for plugin_class in plugins('oalab.paradigm_applet'):
            plugin = plugin_class()
            paradigm_applet = debug_plugin('oalab.paradigm_applet', func=plugin)
            if paradigm_applet:
                self.paradigms[plugin_class.name] = paradigm_applet

        self._open_objects = {}

        self.projectManager = ProjectManager()

        self.setAccessibleName("Container")
        self.setElideMode(QtCore.Qt.ElideLeft)

        self.actionNewFile = QtGui.QAction(qicon("new.png"), "New file", self)
        self.actionOpenFile = QtGui.QAction(qicon("open.png"), "Open file", self)
        self.actionSave = QtGui.QAction(qicon("save.png"), "Save File", self)
        self.actionSaveAs = QtGui.QAction(qicon("save.png"), "Save As", self)
        self.actionRun = QtGui.QAction(qicon("run.png"), "Run", self)
        self.actionAnimate = QtGui.QAction(qicon("play.png"), "Animate", self)
        self.actionStep = QtGui.QAction(qicon("step.png"), "Step", self)
        self.actionStop = QtGui.QAction(qicon("pause.png"), "Stop", self)
        self.actionInit = QtGui.QAction(qicon("rewind.png"), "Init", self)
        self.actionCloseCurrent = QtGui.QAction(qicon("closeButton.png"), "Close current tab", self)

        self.actionRunSelection = QtGui.QAction(qicon("run.png"), "Run subpart", self)

        self.actionUndo = QtGui.QAction(qicon("editundo.png"), "Undo", self)
        self.actionRedo = QtGui.QAction(qicon("editredo.png"), "Redo", self)
        self.actionSearch = QtGui.QAction(qicon("editfind.png"), "Search", self)

        self.actionComment = QtGui.QAction(qicon("commentOn.png"), "Comment", self)
        self.actionUnComment = QtGui.QAction(qicon("commentOff.png"), "Uncomment", self)
        self.actionGoto = QtGui.QAction(qicon("next-green.png"), "Go To", self)

        self.actionNewFile.setShortcut(self.tr("Ctrl+N"))
        self.actionOpenFile.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8))

        self.actionRunSelection.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+E", None, QtGui.QApplication.UnicodeUTF8))

        self.actionCloseCurrent.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+W", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSearch.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+F", None, QtGui.QApplication.UnicodeUTF8))
        self.actionGoto.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+G", None, QtGui.QApplication.UnicodeUTF8))
        self.actionSave.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8))
        # self.actionRun.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+R", None, QtGui.QApplication.UnicodeUTF8))
        self.actionRun.setShortcuts([QtGui.QApplication.translate("MainWindow", "F1", None, QtGui.QApplication.UnicodeUTF8), QtGui.QApplication.translate(
            "MainWindow", "Ctrl+R", None, QtGui.QApplication.UnicodeUTF8)])
        self.actionAnimate.setShortcut(
            QtGui.QApplication.translate("MainWindow", "F2", None, QtGui.QApplication.UnicodeUTF8))
        self.actionStep.setShortcut(
            QtGui.QApplication.translate("MainWindow", "F3", None, QtGui.QApplication.UnicodeUTF8))
        self.actionStop.setShortcut(
            QtGui.QApplication.translate("MainWindow", "F4", None, QtGui.QApplication.UnicodeUTF8))
        self.actionInit.setShortcut(
            QtGui.QApplication.translate("MainWindow", "F5", None, QtGui.QApplication.UnicodeUTF8))

        self.actionNewFile.triggered.connect(self.new_file)
        self.actionOpenFile.triggered.connect(self.open)
        self.actionSave.triggered.connect(self.save_current)
#         self.actionSaveAs.triggered.connect(self.save_as)
        self.actionRun.triggered.connect(self.run)
        self.actionAnimate.triggered.connect(self.animate)
        self.actionStep.triggered.connect(self.step)
        self.actionStop.triggered.connect(self.stop)
        self.actionInit.triggered.connect(self.init)
        self.actionCloseCurrent.triggered.connect(self.close_current)

        self.actionRunSelection.triggered.connect(self.execute)

        self.actionUndo.triggered.connect(self.undo)
        self.actionRedo.triggered.connect(self.redo)
        self.actionSearch.triggered.connect(self.search)
        self.actionGoto.triggered.connect(self.goto)
        self.actionComment.triggered.connect(self.comment)
        self.actionUnComment.triggered.connect(self.uncomment)

        self.actionAddFile = QtGui.QAction(qicon("bool.png"), "Add to Project", self)
        self.actionAddFile.triggered.connect(self.add_current_file)

        self.actionStop.setEnabled(False)

        self._run_actions = [
            self.actionAnimate,
            self.actionInit,
            self.actionRun,
            self.actionRunSelection,
            self.actionStep,
            self.actionStop,
        ]

        self._actions = [
            ["Project", "Manage", self.actionNewFile, 0],
            ["Project", "Manage", self.actionAddFile, 1],
            ["Project", "Manage", self.actionOpenFile, 1],
            ["Project", "Manage", self.actionSave, 1],
            ["Project", "Manage", self.actionCloseCurrent, 1],

            ["Project", "Play", self.actionRun, 0],
            ["Project", "Play", self.actionAnimate, 0],
            ["Project", "Play", self.actionStep, 0],
            ["Project", "Play", self.actionStop, 0],
            ["Project", "Play", self.actionInit, 0],

            ["Edit", "Text Edit", self.actionUndo, 0],
            ["Edit", "Text Edit", self.actionRedo, 0],
            ["Edit", "Text Edit", self.actionSearch, 0],
            ["Edit", "Text Edit", self.actionGoto, 0],
            ["Edit", "Text Edit", self.actionComment, 0],
            ["Edit", "Text Edit", self.actionUnComment, 0],
            ["Edit", "Text Edit", self.actionRunSelection, 0],
        ]

        self.connect_paradigm_container()
        self.extensions = ""
        self.connect(self, QtCore.SIGNAL('tabCloseRequested(int)'), self.autoClose)
        self.connect(self, QtCore.SIGNAL('currentChanged(int)'), self.safe_display_help)
        self.currentChanged.connect(self.on_current_tab_changed)

        self.addDefaultTab()
        self.fine_tune()
Пример #7
0
    def __init__(self, parent=None):
        super(ParadigmContainer, self).__init__(parent=parent)

        self.setTabsClosable(True)

        self.applets = []
        self._open_tabs = {}
        self.paradigms = {}
        self._new_file_actions = {}
        self.paradigms_actions = []
        for plugin_class in plugins('oalab.paradigm_applet'):
            plugin = plugin_class()
            paradigm_applet = debug_plugin('oalab.paradigm_applet',
                                           func=plugin)
            if paradigm_applet:
                self.paradigms[plugin_class.name] = paradigm_applet

        self._open_objects = {}

        self.projectManager = ProjectManager()

        self.setAccessibleName("Container")
        self.setElideMode(QtCore.Qt.ElideLeft)

        self.actionNewFile = QtGui.QAction(qicon("new.png"), "New file", self)
        self.actionOpenFile = QtGui.QAction(qicon("open.png"), "Open file",
                                            self)
        self.actionSave = QtGui.QAction(qicon("save.png"), "Save File", self)
        self.actionSaveAs = QtGui.QAction(qicon("save.png"), "Save As", self)
        self.actionRun = QtGui.QAction(qicon("run.png"), "Run", self)
        self.actionAnimate = QtGui.QAction(qicon("play.png"), "Animate", self)
        self.actionStep = QtGui.QAction(qicon("step.png"), "Step", self)
        self.actionStop = QtGui.QAction(qicon("pause.png"), "Stop", self)
        self.actionInit = QtGui.QAction(qicon("rewind.png"), "Init", self)
        self.actionCloseCurrent = QtGui.QAction(qicon("closeButton.png"),
                                                "Close current tab", self)

        self.actionRunSelection = QtGui.QAction(qicon("run.png"),
                                                "Run subpart", self)

        self.actionUndo = QtGui.QAction(qicon("editundo.png"), "Undo", self)
        self.actionRedo = QtGui.QAction(qicon("editredo.png"), "Redo", self)
        self.actionSearch = QtGui.QAction(qicon("editfind.png"), "Search",
                                          self)

        self.actionComment = QtGui.QAction(qicon("commentOn.png"), "Comment",
                                           self)
        self.actionUnComment = QtGui.QAction(qicon("commentOff.png"),
                                             "Uncomment", self)
        self.actionGoto = QtGui.QAction(qicon("next-green.png"), "Go To", self)

        self.actionNewFile.setShortcut(self.tr("Ctrl+N"))
        self.actionOpenFile.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+O", None,
                                         QtGui.QApplication.UnicodeUTF8))

        self.actionRunSelection.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+E", None,
                                         QtGui.QApplication.UnicodeUTF8))

        self.actionCloseCurrent.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+W", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSearch.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+F", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionGoto.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+G", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionSave.setShortcut(
            QtGui.QApplication.translate("MainWindow", "Ctrl+S", None,
                                         QtGui.QApplication.UnicodeUTF8))
        # self.actionRun.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+R", None, QtGui.QApplication.UnicodeUTF8))
        self.actionRun.setShortcuts([
            QtGui.QApplication.translate("MainWindow", "F1", None,
                                         QtGui.QApplication.UnicodeUTF8),
            QtGui.QApplication.translate("MainWindow", "Ctrl+R", None,
                                         QtGui.QApplication.UnicodeUTF8)
        ])
        self.actionAnimate.setShortcut(
            QtGui.QApplication.translate("MainWindow", "F2", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionStep.setShortcut(
            QtGui.QApplication.translate("MainWindow", "F3", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionStop.setShortcut(
            QtGui.QApplication.translate("MainWindow", "F4", None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.actionInit.setShortcut(
            QtGui.QApplication.translate("MainWindow", "F5", None,
                                         QtGui.QApplication.UnicodeUTF8))

        self.actionNewFile.triggered.connect(self.new_file)
        self.actionOpenFile.triggered.connect(self.open)
        self.actionSave.triggered.connect(self.save_current)
        #         self.actionSaveAs.triggered.connect(self.save_as)
        self.actionRun.triggered.connect(self.run)
        self.actionAnimate.triggered.connect(self.animate)
        self.actionStep.triggered.connect(self.step)
        self.actionStop.triggered.connect(self.stop)
        self.actionInit.triggered.connect(self.init)
        self.actionCloseCurrent.triggered.connect(self.close_current)

        self.actionRunSelection.triggered.connect(self.execute)

        self.actionUndo.triggered.connect(self.undo)
        self.actionRedo.triggered.connect(self.redo)
        self.actionSearch.triggered.connect(self.search)
        self.actionGoto.triggered.connect(self.goto)
        self.actionComment.triggered.connect(self.comment)
        self.actionUnComment.triggered.connect(self.uncomment)

        self.actionAddFile = QtGui.QAction(qicon("bool.png"), "Add to Project",
                                           self)
        self.actionAddFile.triggered.connect(self.add_current_file)

        self.actionStop.setEnabled(False)

        self._run_actions = [
            self.actionAnimate,
            self.actionInit,
            self.actionRun,
            self.actionRunSelection,
            self.actionStep,
            self.actionStop,
        ]

        self._actions = [
            ["Project", "Manage", self.actionNewFile, 0],
            ["Project", "Manage", self.actionAddFile, 1],
            ["Project", "Manage", self.actionOpenFile, 1],
            ["Project", "Manage", self.actionSave, 1],
            ["Project", "Manage", self.actionCloseCurrent, 1],
            ["Project", "Play", self.actionRun, 0],
            ["Project", "Play", self.actionAnimate, 0],
            ["Project", "Play", self.actionStep, 0],
            ["Project", "Play", self.actionStop, 0],
            ["Project", "Play", self.actionInit, 0],
            ["Edit", "Text Edit", self.actionUndo, 0],
            ["Edit", "Text Edit", self.actionRedo, 0],
            ["Edit", "Text Edit", self.actionSearch, 0],
            ["Edit", "Text Edit", self.actionGoto, 0],
            ["Edit", "Text Edit", self.actionComment, 0],
            ["Edit", "Text Edit", self.actionUnComment, 0],
            ["Edit", "Text Edit", self.actionRunSelection, 0],
        ]

        self.connect_paradigm_container()
        self.extensions = ""
        self.connect(self, QtCore.SIGNAL('tabCloseRequested(int)'),
                     self.autoClose)
        self.connect(self, QtCore.SIGNAL('currentChanged(int)'),
                     self.safe_display_help)
        self.currentChanged.connect(self.on_current_tab_changed)

        self.addDefaultTab()
        self.fine_tune()