예제 #1
0
 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()
예제 #2
0
    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)