Пример #1
0
    def create_menu(self):
        menu = QtGui.QMenu(self)
        project, category, obj = self.selected_data()

        if project and category is None:
            menu.addAction(self.actionEditMeta)
            menu.addAction(self.actionCloseProj)

        elif category == 'category' and obj == 'data':
            import_data = QtGui.QAction(qicon('import.png'), 'Import data', self)
            import_data.triggered.connect(self.open)
            menu.addAction(import_data)

        if category in ['model', 'src', 'startup', 'doc', 'data', 'lib']:
            editAction = QtGui.QAction(qicon('open.png'), 'Open "%s"' % obj, self)
            menu.addAction(editAction)
            editAction.triggered.connect(self.open)

            rename = QtGui.QAction(qicon('Crystal_Clear_action_editcopy.png'), 'Rename', self)
            rename.triggered.connect(self.rename)
            menu.addAction(rename)

            remove = QtGui.QAction(qicon('Crystal_Clear_action_edit_remove.png'), 'Remove', self)
            remove.triggered.connect(self.remove)
            menu.addAction(remove)

            menu.addSeparator()

            deleteAction = QtGui.QAction(qicon('Crystal_Clear_action_stop.png'), 'Delete', self)
            menu.addAction(deleteAction)
            deleteAction.triggered.connect(self.delete)

        return menu
Пример #2
0
def launch_lab(plugin_class):
    from openalea.oalab.widget.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 label
    from openalea.oalab.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, autosave=True)
    win.setWindowIcon(qicon(lab_class.icon))
    if hasattr(lab_class, 'connect_applet'):
        win.appletSet.connect(lab_class.connect_applet)
    win.emit_applet_set()
    win.initialize()
    if hasattr(lab_class, "initialize"):
        lab_class.initialize()

    win.setWindowTitle('OpenAleaLab "%s"' % label(plugin))
    win.showMaximized()
    win.raise_()

    return win
Пример #3
0
def launch_lab(plugin_class):
    from openalea.oalab.widget.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 label
    from openalea.oalab.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, autosave=True)
    win.setWindowIcon(qicon(lab_class.icon))
    if hasattr(lab_class, 'connect_applet'):
        win.appletSet.connect(lab_class.connect_applet)
    win.emit_applet_set()
    win.initialize()
    if hasattr(lab_class, "initialize"):
        lab_class.initialize()

    win.setWindowTitle('OpenAleaLab "%s"' % label(plugin))
    win.showMaximized()
    win.raise_()

    return win
Пример #4
0
    def refresh(self):
        self.clear()
        project = self._project
        if project is None:
            return

        icons = dict(
            project=QtGui.QIcon(":/images/resources/openalea_icon2.png"),
            src=QtGui.QIcon(":/images/resources/filenew.png"),
            control=QtGui.QIcon(":/images/resources/node.png"),
            world=QtGui.QIcon(":/images/resources/plant.png"),
            startup=QtGui.QIcon(":/images/resources/editredo.png"),
            data=qicon("Crystal_Clear_filesystem_folder_grey_open.png"),
            doc=QtGui.QIcon(":/images/resources/book.png"),
            cache=QtGui.QIcon(":/images/resources/editcopy.png"),
            model=qicon("icons/Crystal_Clear_app_kservices.png"),
            lib=QtGui.QIcon(":/images/resources/codefile-red.png"),
        )

        name = project.name
        parentItem = self.invisibleRootItem()
        item = QtGui.QStandardItem(project.label)
        self._root_item = name

        item.setIcon(obj_icon(project, default=icons['project'], paths=[project.path]))
        parentItem.appendRow(item)

        for category in project.categories:
            item2 = QtGui.QStandardItem(category)
            item.appendRow(item2)

            if category in icons:
                item2.setIcon(icons[category])

            if not hasattr(project, category):
                continue

            data_dict = getattr(project, category)

            names = data_dict.keys()
            for name in sorted(names):
                data = data_dict[name]
                item3 = QtGui.QStandardItem(name)
                item3.setIcon(obj_icon(data, packages=[openalea.oalab]))
                item3.setData((category, data))
                item2.appendRow(item3)
Пример #5
0
    def _create_actions(self):
        self.action_title = QtGui.QAction("Set Title", self)
        self.action_title.triggered.connect(self._on_set_title_triggered)

        self.action_unlock = QtGui.QAction(qicon('oxygen_object-unlocked.png'), "Edit layout", self.menu_edit_off)
        self.action_unlock.triggered.connect(self.unlock_layout)

        self.action_lock = QtGui.QAction(qicon('oxygen_object-locked.png'), "Lock layout", self.menu_edit_on)
        self.action_lock.triggered.connect(self.lock_layout)

        self.action_add_tab = QtGui.QAction(qicon('Crystal_Clear_action_edit_add.png'), "Add tab", self.menu_edit_on)
        self.action_add_tab.triggered.connect(self._tabwidget.new_tab)

        self.action_remove_tab = QtGui.QAction(
            qicon('Crystal_Clear_action_edit_remove.png'), "Remove tab", self.menu_edit_on)
        self.action_remove_tab.triggered.connect(self._tabwidget.remove_tab)

        self.action_push_to_shell = QtGui.QAction("DEBUG push applet to shell", self.menu_edit_on)
        self.action_push_to_shell.triggered.connect(self._push_applet_to_shell)
Пример #6
0
    def _create_actions(self):
        self._actions = []

        self.actionEditMeta = QtGui.QAction(
            qicon("adwaita_accessories-dictionary.png"),
            "Edit Project Information",
            self)
        self.actionEditMeta.triggered.connect(self.edit_metadata)

        self.actionCloseProj = QtGui.QAction(qicon("close_project.png"), "Close project", self)
        self.actionCloseProj.triggered.connect(self.close)
        self.actionCloseProj.setShortcut(self.tr("Ctrl+Shift+W"))

        self.actionOpenProj = QtGui.QAction(qicon("open_project.png"), "Open Project", self)
        self.actionOpenProj.triggered.connect(self.open_project)
        self.actionOpenProj.setShortcut(self.tr('Ctrl+Shift+O'))

        self.action_save_proj = QtGui.QAction(qicon("save_project.png"), "Save Project", self)
        self.action_save_proj.triggered.connect(self.save_project)
        self.action_save_proj.setShortcut(self.tr('Ctrl+Shift+S'))
Пример #7
0
    def _create_actions(self):
        self._actions = []

        self.actionEditMeta = QtGui.QAction(
            qicon("adwaita_accessories-dictionary.png"),
            "Edit Project Information", self)
        self.actionEditMeta.triggered.connect(self.edit_metadata)

        self.actionCloseProj = QtGui.QAction(qicon("close_project.png"),
                                             "Close project", self)
        self.actionCloseProj.triggered.connect(self.close)
        self.actionCloseProj.setShortcut(self.tr("Ctrl+Shift+W"))

        self.actionOpenProj = QtGui.QAction(qicon("open_project.png"),
                                            "Open Project", self)
        self.actionOpenProj.triggered.connect(self.open_project)
        self.actionOpenProj.setShortcut(self.tr('Ctrl+Shift+O'))

        self.action_save_proj = QtGui.QAction(qicon("save_project.png"),
                                              "Save Project", self)
        self.action_save_proj.triggered.connect(self.save_project)
        self.action_save_proj.setShortcut(self.tr('Ctrl+Shift+S'))
Пример #8
0
    def _create_actions(self):
        self.actionNewProj = QtGui.QAction(qicon("new_project.png"), "New Project", self)
        self.actionNewProj.triggered.connect(self.new_project)
        self.actionNewProj.setShortcut(self.tr("Ctrl+Shift+N"))

        group = "Project"
        self._actions = [[group, "Manage Project", self.actionNewProj, 0],
                         [group, "Manage Project", self.view.actionOpenProj, 0],
                         [group, "Manage Project", self.view.actionCloseProj, 0],
                         [group, "Manage Project", self.view.action_save_proj, 0],
                         [group, "Manage Project", self.view.actionEditMeta, 1],
                         ]
        self._actions += self.view._actions
Пример #9
0
    def create_menu(self):
        menu = QtGui.QMenu(self)
        project, category, obj = self.selected_data()

        if project and category is None:
            menu.addAction(self.actionEditMeta)
            menu.addAction(self.actionCloseProj)

        elif category == 'category' and obj == 'data':
            import_data = QtGui.QAction(qicon('import.png'), 'Import data',
                                        self)
            import_data.triggered.connect(self.open)
            menu.addAction(import_data)

        if category in ['model', 'src', 'startup', 'doc', 'data', 'lib']:
            editAction = QtGui.QAction(qicon('open.png'), 'Open "%s"' % obj,
                                       self)
            menu.addAction(editAction)
            editAction.triggered.connect(self.open)

            rename = QtGui.QAction(qicon('Crystal_Clear_action_editcopy.png'),
                                   'Rename', self)
            rename.triggered.connect(self.rename)
            menu.addAction(rename)

            remove = QtGui.QAction(
                qicon('Crystal_Clear_action_edit_remove.png'), 'Remove', self)
            remove.triggered.connect(self.remove)
            menu.addAction(remove)

            menu.addSeparator()

            deleteAction = QtGui.QAction(
                qicon('Crystal_Clear_action_stop.png'), 'Delete', self)
            menu.addAction(deleteAction)
            deleteAction.triggered.connect(self.delete)

        return menu
Пример #10
0
    def _create_actions(self):
        self.actionNewProj = QtGui.QAction(qicon("new_project.png"),
                                           "New Project", self)
        self.actionNewProj.triggered.connect(self.new_project)
        self.actionNewProj.setShortcut(self.tr("Ctrl+Shift+N"))

        group = "Project"
        self._actions = [
            [group, "Manage Project", self.actionNewProj, 0],
            [group, "Manage Project", self.view.actionOpenProj, 0],
            [group, "Manage Project", self.view.actionCloseProj, 0],
            [group, "Manage Project", self.view.action_save_proj, 0],
            [group, "Manage Project", self.view.actionEditMeta, 1],
        ]
        self._actions += self.view._actions
Пример #11
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
Пример #12
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
Пример #13
0
    def _create_actions(self):
        # Create actions
        self.actionRun = QtGui.QAction(qicon("run.png"), "Run", self)
        self.actionRunInShell = QtGui.QAction(qicon("run.png"), "Run in shell", self)

        menu_run = QtGui.QMenu("Run", self)
        menu_run.addActions([self.actionRun, self.actionRunInShell])

        self.toolbutton_run = QtGui.QToolButton(self)
        self.toolbutton_run.setMenu(menu_run)
        self.toolbutton_run.setDefaultAction(self.actionRun)

        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.actionRunSelection = QtGui.QAction(qicon("run.png"), "Run subpart", self)

        # File I/O
        self.actionCloseCurrent = QtGui.QAction(qicon("close_file.png"), "Close current tab", self)
        self.actionOpenFile = QtGui.QAction(qicon("open_file.png"), "Open file", self)
        self.actionSave = QtGui.QAction(qicon("save_file.png"), "Save File", self)
        self.actionSaveAs = QtGui.QAction(qicon("save_file.png"), "Save As", self)

        # Add shortcuts
        #self.actionInit.setShortcut("F1")
        self.actionAnimate.setShortcut("F2")
        self.actionRun.setShortcuts(["F1", "Ctrl+R"])
        self.actionRunSelection.setShortcut(self.tr("Ctrl+E"))
        self.actionStep.setShortcut("F3")
        self.actionStop.setShortcut("F4")

        self.actionCloseCurrent.setShortcut(self.tr("Ctrl+W"))
        self.actionOpenFile.setShortcut(self.tr("Ctrl+O"))
        self.actionSave.setShortcut(self.tr("Ctrl+S"))
        #self.actionSaveAs.setShortcut(self.tr("Ctrl+Shift+S"))

        # Store actions
        self._run_actions = [
            self.actionAnimate,
            self.actionInit,
            self.toolbutton_run,
            self.actionRunSelection,
            self.actionStep,
            self.actionStop,
        ]

        self._actions = [
            ["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],
        ]
Пример #14
0
    def refresh(self):

        self.clear()
        self._group = {}
        items = self._items
        if items is None:
            return

        # Manage groupby info
        gby_func = self._groupby.get('function', None)
        gby_criteria = self._groupby.get('criteria', None)
        gby_label = self._groupby.get('label', None)

        if gby_func:
            f_gby_key = gby_func
        elif gby_criteria:
            def f_gby_key(item):
                if hasattr(item, gby_criteria):
                    return getattr(item, gby_criteria)
                else:
                    return self.undefined_group_label
        else:
            f_gby_key = lambda item: self.undefined_group_label

        if gby_label:
            f_gby_label = gby_label
        else:
            f_gby_label = lambda criterion: str(criterion)

        _items = []

        for item in items:
            key = f_gby_key(item)
            if isinstance(key, (list, set, tuple)):
                if not key:
                    key = [self.undefined_group_label]
                for k in key:
                    if not k:
                        k = self.undefined_group_label
                    _items.append((k, item))
            else:
                if not key:
                    key = self.undefined_group_label
                _items.append((key, item))
        _items.sort()

        parent_item = self.invisibleRootItem()

        groups = groupby(_items, lambda item: item[0])

        for key, items in groups:
            try:
                label = f_gby_label(key)
            except:
                label = str(key)
            repository_item = QtGui.QStandardItem(label)
            repository_item.setIcon(qicon(self.default_group_icon))
            parent_item.appendRow(repository_item)
            self._group[repository_item] = []

            for _, item in sorted(items, key=lambda args: args[1].label):
                qitem = QtGui.QStandardItem(item.label)
                qitem.item = item
                if hasattr(item, 'path'):
                    paths = [item.path, item.path.parent]
                else:
                    paths = []
                qitem.setIcon(obj_icon(item, default=self.default_item_icon, paths=paths))
                repository_item.appendRow(qitem)
                self._group[repository_item].append(qitem)

        self.more_item = QtGui.QStandardItem("Add more items")
        self.more_item.setIcon(qicon("icons/Crystal_Clear_action_edit_add.png"))
        parent_item.appendRow(self.more_item)
Пример #15
0
 def _create_actions(self):
     self._action_go_to_parent = QtGui.QAction(qicon('oxygen_go-up.png'),
                                               'Parent dir', self)
     self._action_go_to_parent.triggered.connect(self.go_to_parent)
Пример #16
0
    def refresh(self):

        self.clear()
        self._group = {}
        items = self._items
        if items is None:
            return

        # Manage groupby info
        gby_func = self._groupby.get('function', None)
        gby_criteria = self._groupby.get('criteria', None)
        gby_label = self._groupby.get('label', None)

        if gby_func:
            f_gby_key = gby_func
        elif gby_criteria:

            def f_gby_key(item):
                if hasattr(item, gby_criteria):
                    return getattr(item, gby_criteria)
                else:
                    return self.undefined_group_label
        else:
            f_gby_key = lambda item: self.undefined_group_label

        if gby_label:
            f_gby_label = gby_label
        else:
            f_gby_label = lambda criterion: str(criterion)

        _items = []

        for item in items:
            key = f_gby_key(item)
            if isinstance(key, (list, set, tuple)):
                if not key:
                    key = [self.undefined_group_label]
                for k in key:
                    if not k:
                        k = self.undefined_group_label
                    _items.append((k, item))
            else:
                if not key:
                    key = self.undefined_group_label
                _items.append((key, item))
        _items.sort()

        parent_item = self.invisibleRootItem()

        groups = groupby(_items, lambda item: item[0])

        for key, items in groups:
            try:
                label = f_gby_label(key)
            except:
                label = str(key)
            repository_item = QtGui.QStandardItem(label)
            repository_item.setIcon(qicon(self.default_group_icon))
            parent_item.appendRow(repository_item)
            self._group[repository_item] = []

            for _, item in sorted(items, key=lambda args: args[1].label):
                qitem = QtGui.QStandardItem(item.label)
                qitem.item = item
                if hasattr(item, 'path'):
                    paths = [item.path, item.path.parent]
                else:
                    paths = []
                qitem.setIcon(
                    obj_icon(item, default=self.default_item_icon,
                             paths=paths))
                repository_item.appendRow(qitem)
                self._group[repository_item].append(qitem)

        self.more_item = QtGui.QStandardItem("Add more items")
        self.more_item.setIcon(
            qicon("icons/Crystal_Clear_action_edit_add.png"))
        parent_item.appendRow(self.more_item)
Пример #17
0
 def _create_actions(self):
     self._action_go_to_parent = QtGui.QAction(qicon('oxygen_go-up.png'), 'Parent dir', self)
     self._action_go_to_parent.triggered.connect(self.go_to_parent)
Пример #18
0
    def _create_actions(self):
        # Create actions
        self.actionRun = QtGui.QAction(qicon("run.png"), "Run", self)
        self.actionRunInShell = QtGui.QAction(qicon("run.png"), "Run in shell",
                                              self)

        menu_run = QtGui.QMenu("Run", self)
        menu_run.addActions([self.actionRun, self.actionRunInShell])

        self.toolbutton_run = QtGui.QToolButton(self)
        self.toolbutton_run.setMenu(menu_run)
        self.toolbutton_run.setDefaultAction(self.actionRun)

        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.actionRunSelection = QtGui.QAction(qicon("run.png"),
                                                "Run subpart", self)

        # File I/O
        self.actionCloseCurrent = QtGui.QAction(qicon("close_file.png"),
                                                "Close current tab", self)
        self.actionOpenFile = QtGui.QAction(qicon("open_file.png"),
                                            "Open file", self)
        self.actionSave = QtGui.QAction(qicon("save_file.png"), "Save File",
                                        self)
        self.actionSaveAs = QtGui.QAction(qicon("save_file.png"), "Save As",
                                          self)

        # Add shortcuts
        #self.actionInit.setShortcut("F1")
        self.actionAnimate.setShortcut("F2")
        self.actionRun.setShortcuts(["F1", "Ctrl+R"])
        self.actionRunSelection.setShortcut(self.tr("Ctrl+E"))
        self.actionStep.setShortcut("F3")
        self.actionStop.setShortcut("F4")

        self.actionCloseCurrent.setShortcut(self.tr("Ctrl+W"))
        self.actionOpenFile.setShortcut(self.tr("Ctrl+O"))
        self.actionSave.setShortcut(self.tr("Ctrl+S"))
        #self.actionSaveAs.setShortcut(self.tr("Ctrl+Shift+S"))

        # Store actions
        self._run_actions = [
            self.actionAnimate,
            self.actionInit,
            self.toolbutton_run,
            self.actionRunSelection,
            self.actionStep,
            self.actionStop,
        ]

        self._actions = [
            ["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],
        ]