def updateMenu(self, nodeidxs): nodeidx = self.modelIndex(nodeidxs) if (not nodeidx.isValid): return False if (nodeidx.internalPointer() is None): return False if (nodeidx.internalPointer().sidsPath() == '/CGNSTree'): return False self.setLastEntered(nodeidxs) if (nodeidx != -1): node = nodeidx.internalPointer() lknode = not node.sidsIsLink() lznode = node.hasLazyLoad() actlist = ( ("%s goodies" % node.sidsType(),), None, ("Expand sub-tree from this node", self.expand_sb, 'Ctrl++', False), ("Collapses sub-tree from this node", self.collapse_sb, 'Ctrl+-', False), None, ['Mark nodes...',[ ("Mark/unmark node", self.marknode, 'Space', False), None, ("Mark all nodes same SIDS type", self.marknode_t, 'Ctrl+1', False), ("Mark all nodes same name", self.marknode_n, 'Ctrl+2', False), ("Mark all nodes same value", self.marknode_v, 'Ctrl+3', False), None, ("Mark parent path", self.marknode_p, 'Ctrl+4', False)]], ("Add new child node", self.newnodechild, 'Ctrl+A', False), ("Add new brother node", self.newnodebrother, 'Ctrl+Z', False), # None, # ("Open form",self.popform,'Ctrl+F',False), # ("Open view",self.openSubTree,'Ctrl+W',False), # ("Open view on linked-to file",self.openLkTree,'Ctrl+O',lknode), None, ("Load node data in memory", self.dataLoad, 'Ctrl+L', not lznode), ("Release memory node data", self.dataRelease, 'Ctrl+R', lznode), None, ("Copy current", self.mcopy, 'Ctrl+C', False), ("Cut current", self.mcut, 'Ctrl+X', False), ("Paste as brother", self.mpasteasbrother, 'Ctrl+V', False), ("Paste as child", self.mpasteaschild, 'Ctrl+Y', False), None, ['On selected nodes...',[ ("Expand sub-tree from all selected nodes", self.sexpand_sb, 'Ctrl+Shift++', False), ("Collapses sub-tree from all selected nodes", self.scollapse_sb, 'Ctrl+Shift+-', False), None, ("Cut all selected", self.mcutselected, 'Ctrl+Shift+X', False), ("Paste as brother for each selected", self.mpasteasbrotherselected, 'Ctrl+Shift+V', False), ("Paste as child for each selected", self.mpasteaschildselected, 'Ctrl+Shift+Y', False), None, ("Load nodes data in memory for each selected", self.dataLoadSelected, 'Ctrl+Shift+L', False), ("Release memory node data for each selected", self.dataReleaseSelected, 'Ctrl+Shift+R', False)]], ) self.popupmenu.clear() self.popupmenu.setTitle('Node menu') for aparam in actlist: if (aparam is None): self.popupmenu.addSeparator() elif (len(aparam) == 1): stp = node.sidsType() tag = '_GM_{}'.format(stp) subm = self.popupmenu.addMenu('{}...'.format(stp)) a = QAction("About %s" % node.sidsType(), self, triggered=self.aboutSIDS) subm.addAction(a) patmenu = subm.addMenu('Insert pattern') self.patternMenu(patmenu, node.sidsNode()) subm.addSeparator() if (hasattr(self, tag)): getattr(self, tag)(subm, node) else: if isinstance(aparam,list): subm = self.popupmenu.addMenu(aparam[0]) for aaparam in aparam[1]: if (aaparam is None): subm.addSeparator() else: a = QAction(aaparam[0], self, triggered=aaparam[1]) if (aaparam[2] is not None): a.setShortcut(aaparam[2]) subm.addAction(a) a.setDisabled(aaparam[3]) else: a = QAction(aparam[0], self, triggered=aparam[1]) if (aparam[2] is not None): a.setShortcut(aparam[2]) self.popupmenu.addAction(a) a.setDisabled(aparam[3]) return True
def mkButtons(self, nodes): # Remove+delete previous children layout = self.layout() for i in reversed(range(layout.count())): layout.itemAt(i).widget().setParent(None) if not nodes: return parent = nodes[0].parent if parent is not None: action = QAction("↑", self) action.setFont(self.font) action.triggered.connect( partial(self.showNode, parent.parent, direction="up")) action.setProperty("isMode", True) self.addAction(action) # Make separator pipe label = QAction("|", self) label.setFont(self.font) label.setDisabled(True) self.addAction(label) # Loop over each "GUIPlugin" plugin for node in reversed(list(nodes)): action = QAction(node.name, self) action.triggered.connect( partial(self.showNode, node, direction="down")) action.setFont(self.font) action.setProperty("isMode", True) action.setCheckable(True) action.setActionGroup(self.GUIPluginActionGroup) self.addAction(action) # Make separator pipe label = QAction("|", self) label.setFont(self.font) label.setDisabled(True) self.addAction(label) # Remove last separator if self.layout().count(): self.layout().takeAt( self.layout().count() - 1).widget().deleteLater() # Delete the last pipe symbol if parent is not None: # Make separator pipe label = QAction(">", self) label.setFont(self.font) label.setDisabled(True) self.addAction(label) action = QAction(parent.name, self) action.setFont(self.font) action.setProperty("isMode", True) action.setDisabled(True) action.setActionGroup(self.GUIPluginActionGroup) self.addAction(action) self.fadeIn()