Ejemplo n.º 1
0
    def __init__(self, amount=10.0):
        super(AutoPanController, self).__init__()

        self._enabled = False
        self._amount = amount
        self._auto_pan_delta = QVector2D(0.0, 0.0)
        self._been_outside = False
Ejemplo n.º 2
0
 def update(self, rect, pos):
     if self._enabled:
         if pos.x() < 0:
             self._auto_pan_delta = QVector2D(-self._amount, 0.0)
             self._been_outside = True
             self._amount = mathlib.clamp(abs(pos.x()) * 0.3, 0.0, 25.0)
         if pos.x() > rect.width():
             self._auto_pan_delta = QVector2D(self._amount, 0.0)
             self._been_outside = True
             self._amount = mathlib.clamp(
                 abs(rect.width() - pos.x()) * 0.3, 0.0, 25.0)
         if pos.y() < 0:
             self._auto_pan_delta = QVector2D(0.0, -self._amount)
             self._been_outside = True
             self._amount = mathlib.clamp(abs(pos.y()) * 0.3, 0.0, 25.0)
         if pos.y() > rect.height():
             self._auto_pan_delta = QVector2D(0.0, self._amount)
             self._been_outside = True
             self._amount = mathlib.clamp(
                 abs(rect.height() - pos.y()) * 0.3, 0.0, 25.0)
         if self._been_outside and rect.contains(pos):
             self.reset()
Ejemplo n.º 3
0
    def mousePressEvent(self, event):
        super(BaseGraphicsView, self).mousePressEvent(event)

        self._pressed_item = self.itemAt(event.pos())
        self._mouse_pressed_pos = event.pos()

        modifiers = event.modifiers()

        if self._pressed_item and isinstance(self._pressed_item,
                                             QGraphicsItem):
            self._auto_pan_controller.start()

        if not self._pressed_item:
            if event.button() == Qt.LeftButton:
                self._is_rubber_rect_selection = True
            if event.button() == Qt.RightButton and modifiers == Qt.NoModifier:
                self._is_panning = True
            self._init_scrollbars_pos = QVector2D(
                self.horizontalScrollBar().value(),
                self.verticalScrollBar().value())
Ejemplo n.º 4
0
    def __init__(self, min_scale=0.5, max_scale=2.0, parent=None, **kwargs):
        super(BaseGraphicsView, self).__init__(parent=parent)

        self._min_scale = min_scale
        self._max_scale = max_scale
        self._factor = 1.0
        self._factor_diff = 0.0
        self._scale = 1.0
        self._pan_speed = 1.0
        self._is_panning = False
        self._init_scrollbars_pos = QVector2D(
            self.horizontalScrollBar().value(),
            self.verticalScrollBar().value())
        self._is_rubber_rect_selection = False
        self._use_opengl = kwargs.get('use_opengl', False)
        self.log = kwargs.get('log', LOGGER)

        self._mouse_pressed = False
        self._pressed_item = None
        self._released_item = None
        self._mouse_pressed_pos = QPoint(0, 0)
        self._mouse_release_pos = QPoint(0, 0)
        self._mouse_pos = QPoint(0, 0)
        self._last_mouse_pos = QPoint(0, 0)

        self._auto_pan_controller = AutoPanController()
        self._rubber_rect = RubberRect(name='RubberRect')

        self.initialize_scene_view()

        self.setInteractive(True)
        self.setMouseTracking(True)
        self.setRenderHint(QPainter.Antialiasing, True)
        self.setRenderHint(QPainter.TextAntialiasing, True)
        self.setRenderHint(QPainter.HighQualityAntialiasing, True)
        self.setRenderHint(QPainter.SmoothPixmapTransform, True)
        self.setRenderHint(QPainter.NonCosmeticDefaultPen, True)
        self.setAttribute(Qt.WA_AlwaysShowToolTips)
        self.setRubberBandSelectionMode(Qt.IntersectsItemShape)
Ejemplo n.º 5
0
 def dot(self, vec):
     return QVector2D.dotProduct(self, vec)
Ejemplo n.º 6
0
 def reset(self):
     self._been_outside = False
     self._auto_pan_delta = QVector2D(0.0, 0.0)