def mouseReleaseEvent(self, event, pos=None): if pos and event.button() == QtCore.Qt.LeftButton: #print "released", pos if self.lassoRect(): items = self._view.scene().items(self.lassoRect(), QtCore.Qt.ContainsItemShape) items = filter(lambda i: not (i.parentItem()), items) #items = map(lambda i: i.model, items) if self.addMode(event.modifiers()): self._selection |= items elif self.subtractMode(event.modifiers()): self._selection -= items else: self._selection = Selection(items) self._toBeSelected = None self.removeLasso() self.updatePreSelected() else: if not self._toBeSelected or self._toBeSelected.pos() != pos: self._toBeSelected = self.findItems(pos, event.modifiers()) item = self.currentItem() if not self.addMode( event.modifiers()) and not self.subtractMode( event.modifiers()): self._selection = None self._selection = Selection() if item: if self.subtractMode(event.modifiers()): self._selection.remove(item) else: self._selection.add(item) self.nextItem() item = self.currentItem() self.updatePreSelected()
def __init__(self, view, transient=False): self._view = view self._optionPanel = None self._actions = set() self._mousePressedPos = None self._mousePressedButton = QtCore.Qt.NoButton self.installActions() self._lasso = None self._transient = transient self._optionPanel = SelectToolOptions() self._selection = Selection() self._toBeSelected = None self._preSelected = None self._modifiers = None self._pos = None self._timer = QtCore.QTimer() self._timer.setSingleShot(True) self._timer.setInterval(50) self._view.connect(self._timer, QtCore.SIGNAL("timeout()"), self.updatePreSelected)