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
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
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)
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)
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'))
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
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
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
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
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], ]
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)
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)
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)