def mousePressEvent(self, event): alt_modifier = event.modifiers() == QtCore.Qt.AltModifier shift_modifier = event.modifiers() == QtCore.Qt.ShiftModifier if event.button() == QtCore.Qt.LeftButton: self.LMB_state = True elif event.button() == QtCore.Qt.RightButton: self.RMB_state = True elif event.button() == QtCore.Qt.MiddleButton: self.MMB_state = True self._origin_pos = event.pos() self._previous_pos = event.pos() self._prev_selection = self.selected_nodes() # close tab search if self._search_widget.isVisible(): self.tab_search_toggle() # cursor pos. map_pos = self.mapToScene(event.pos()) # pipe slicer enabled. if event.modifiers() == (QtCore.Qt.AltModifier | QtCore.Qt.ShiftModifier): self._pipe_slicer.draw_path(map_pos, map_pos) self._pipe_slicer.setVisible(True) return if alt_modifier: return items = self._items_near(map_pos, None, 20, 20) nodes = [i for i in items if isinstance(i, AbstractNodeItem)] # toggle extend node selection. if shift_modifier: for node in nodes: node.selected = not node.selected # update the recorded node positions. self._node_positions.update( {n: n.xy_pos for n in self.selected_nodes()}) # show selection selection marquee if self.LMB_state and not items: rect = QtCore.QRect(self._previous_pos, QtCore.QSize()) rect = rect.normalized() map_rect = self.mapToScene(rect).boundingRect() self.scene().update(map_rect) self._rubber_band.setGeometry(rect) self._rubber_band.show() if not shift_modifier: super(NodeViewer, self).mousePressEvent(event)
def mousePressEvent(self, event): if event.button() == QtCore.Qt.LeftButton: self.LMB_state = True elif event.button() == QtCore.Qt.RightButton: self.RMB_state = True elif event.button() == QtCore.Qt.MiddleButton: self.MMB_state = True self._origin_pos = event.pos() self._previous_pos = event.pos() self._prev_selection_nodes, \ self._prev_selection_pipes = self.selected_items() # close tab search if self._search_widget.isVisible(): self.tab_search_toggle() # cursor pos. map_pos = self.mapToScene(event.pos()) # pipe slicer enabled. if self.ALT_state and self.SHIFT_state and self.LMB_state: self._SLICER_PIPE.draw_path(map_pos, map_pos) self._SLICER_PIPE.setVisible(True) return # pan mode. if self.ALT_state: return items = self._items_near(map_pos, None, 20, 20) nodes = [i for i in items if isinstance(i, AbstractNodeItem)] pipes = [i for i in items if isinstance(i, Pipe)] if nodes: self.MMB_state = False # toggle extend node selection. if self.LMB_state: if self.SHIFT_state: for node in nodes: node.selected = not node.selected elif self.CTRL_state: for node in nodes: node.selected = False # update the recorded node positions. self._node_positions.update( {n: n.xy_pos for n in self.selected_nodes()}) # show selection selection marquee. if self.LMB_state and not items: rect = QtCore.QRect(self._previous_pos, QtCore.QSize()) rect = rect.normalized() map_rect = self.mapToScene(rect).boundingRect() self.scene().update(map_rect) self._rubber_band.setGeometry(rect) self._rubber_band.show() # allow new live pipe with the shift modifier. # if self.LMB_state: # if (not self.SHIFT_state and not self.CTRL_state) or\ # (self.SHIFT_state and pipes): if not self._LIVE_PIPE.isVisible(): super(NodeViewer, self).mousePressEvent(event)