diff --git a/pyqtgraph/GraphicsScene/GraphicsScene.py b/pyqtgraph/GraphicsScene/GraphicsScene.py index 8729d085..6850371a 100644 --- a/pyqtgraph/GraphicsScene/GraphicsScene.py +++ b/pyqtgraph/GraphicsScene/GraphicsScene.py @@ -489,7 +489,7 @@ class GraphicsScene(QtGui.QGraphicsScene): #return v #else: #return widget - + def addParentContextMenus(self, item, menu, event): """ Can be called by any item in the scene to expand its context menu to include parent context menus. @@ -519,30 +519,21 @@ class GraphicsScene(QtGui.QGraphicsScene): event The original event that triggered the menu to appear. ============== ================================================== """ - - #items = self.itemsNearEvent(ev) + menusToAdd = [] while item is not self: item = item.parentItem() - if item is None: item = self - - if not hasattr(item, "getContextMenus"): - continue - - subMenus = item.getContextMenus(event) - if subMenus is None: - continue - if type(subMenus) is not list: ## so that some items (like FlowchartViewBox) can return multiple menus - subMenus = [subMenus] - - for sm in subMenus: - menusToAdd.append(sm) - - if len(menusToAdd) > 0: + subMenus = item.getContextMenus(event) or [] + if isinstance(subMenus, list): ## so that some items (like FlowchartViewBox) can return multiple menus + menusToAdd.extend(subMenus) + else: + menusToAdd.append(subMenus) + + if menusToAdd: menu.addSeparator() - + for m in menusToAdd: if isinstance(m, QtGui.QMenu): menu.addMenu(m) diff --git a/pyqtgraph/flowchart/Node.py b/pyqtgraph/flowchart/Node.py index cd73b42b..f1de40d6 100644 --- a/pyqtgraph/flowchart/Node.py +++ b/pyqtgraph/flowchart/Node.py @@ -617,9 +617,6 @@ class NodeGraphicsItem(GraphicsObject): def getMenu(self): return self.menu - - def getContextMenus(self, event): - return [self.menu] def raiseContextMenu(self, ev): menu = self.scene().addParentContextMenus(self, self.getMenu(), ev) diff --git a/pyqtgraph/flowchart/Terminal.py b/pyqtgraph/flowchart/Terminal.py index 45805cd8..fea60dee 100644 --- a/pyqtgraph/flowchart/Terminal.py +++ b/pyqtgraph/flowchart/Terminal.py @@ -436,10 +436,6 @@ class TerminalGraphicsItem(GraphicsObject): def toggleMulti(self): multi = self.menu.multiAct.isChecked() self.term.setMultiValue(multi) - - ## probably never need this - #def getContextMenus(self, ev): - #return [self.getMenu()] def removeSelf(self): self.term.node().removeTerminal(self.term) diff --git a/pyqtgraph/graphicsItems/GraphicsItem.py b/pyqtgraph/graphicsItems/GraphicsItem.py index a129436e..19cddd8a 100644 --- a/pyqtgraph/graphicsItems/GraphicsItem.py +++ b/pyqtgraph/graphicsItems/GraphicsItem.py @@ -585,3 +585,6 @@ class GraphicsItem(object): #def update(self): #self._qtBaseClass.update(self) #print "Update:", self + + def getContextMenus(self, event): + return [self.getMenu()] if hasattr(self, "getMenu") else [] diff --git a/pyqtgraph/graphicsItems/ROI.py b/pyqtgraph/graphicsItems/ROI.py index f6ce4680..cb5f4f30 100644 --- a/pyqtgraph/graphicsItems/ROI.py +++ b/pyqtgraph/graphicsItems/ROI.py @@ -1202,11 +1202,7 @@ class Handle(UIGraphicsItem): def getMenu(self): return self.menu - - - def getContextMenus(self, event): - return [self.menu] - + def raiseContextMenu(self, ev): menu = self.scene().addParentContextMenus(self, self.getMenu(), ev) diff --git a/pyqtgraph/graphicsItems/ViewBox/ViewBox.py b/pyqtgraph/graphicsItems/ViewBox/ViewBox.py index 6e0a20d2..c60923b0 100644 --- a/pyqtgraph/graphicsItems/ViewBox/ViewBox.py +++ b/pyqtgraph/graphicsItems/ViewBox/ViewBox.py @@ -1064,12 +1064,7 @@ class ViewBox(GraphicsWidget): return self.menu def getContextMenus(self, event): - if self.menuEnabled(): - return self.menu.subMenus() - else: - return None - #return [self.getMenu(event)] - + return self.menu.actions() if self.menuEnabled() else [] def mouseDragEvent(self, ev, axis=None): ## if axis is specified, event will only affect that axis. diff --git a/pyqtgraph/graphicsItems/ViewBox/ViewBoxMenu.py b/pyqtgraph/graphicsItems/ViewBox/ViewBoxMenu.py index 99c3c3fb..15d0be06 100644 --- a/pyqtgraph/graphicsItems/ViewBox/ViewBoxMenu.py +++ b/pyqtgraph/graphicsItems/ViewBox/ViewBoxMenu.py @@ -88,22 +88,6 @@ class ViewBoxMenu(QtGui.QMenu): self.updateState() - #def copy(self): - #m = QtGui.QMenu() - #for sm in self.subMenus(): - #if isinstance(sm, QtGui.QMenu): - #m.addMenu(sm) - #else: - #m.addAction(sm) - #m.setTitle(self.title()) - #return m - - def subMenus(self): - if not self.valid: - self.updateState() - return [self.viewAll] + self.axes + [self.leftMenu] - - def setExportMethods(self, methods): self.exportMethods = methods self.export.clear()