예제 #1
0
    def eventFilter(self, obj, event, *args, **kwargs):
        if event.type() == QEvent.MouseButtonPress:
            obj._dragging = not obj._dragging

            if obj._dragging:
                self.slidebar = self.getBreedWidget()
                self.slidebar.setWidgetPosition(self.getAlignment(),
                                                widget=self._display_widget)
                self.slidebar.show()
            else:
                try:
                    self.slidebar.close()
                except AttributeError:
                    pass

            return QWidget.eventFilter(self, obj, event, *args, **kwargs)

        # mouse move
        elif event.type() == QEvent.MouseMove:
            if not hasattr(self, 'sliderbar'):
                return QWidget.eventFilter(self, obj, event, *args, **kwargs)
            self.slidebar.update(math.fabs(obj._slider_pos))
            return QWidget.eventFilter(self, obj, event, *args, **kwargs)

        elif event.type() == QEvent.Leave:
            try:
                self.slidebar.update(math.fabs(obj._slider_pos))
            except AttributeError:
                pass

        return QWidget.eventFilter(self, obj, event, *args, **kwargs)
예제 #2
0
    def eventFilter(self, source, event):
        if event.type() == QEvent.Close:
            if not self._w:
                return True
            return self._w.close()

        return QWidget.eventFilter(self, source, event)
예제 #3
0
    def eventFilter(self, obj, event, *args, **kwargs):
        """
        # catch init failures
        try:
            self._init_pos
        except AttributeError:
            return QWidget.eventFilter(self, obj, event, *args, **kwargs)
        """

        # pen down
        if event.type() == QEvent.MouseButtonPress:
            self._init_pos = obj.mapToGlobal(event.pos())
            obj.window().setCursor(Qt.BlankCursor)

        # pen move
        if event.type() == QEvent.MouseMove:
            pos = obj.mapToGlobal(event.pos())

            # wrap cursor
            if pos.x() > self._screen_resolution:
                y_pos = pos.y()
                QCursor().setPos(QPoint(1, y_pos))
            elif pos.x() < 1:
                y_pos = pos.y()
                QCursor().setPos(QPoint(self._screen_resolution - 1, y_pos))

        # pen release
        if event.type() == QEvent.MouseButtonRelease:

            obj.window().unsetCursor()
            QCursor().setPos(self._init_pos)

        # return
        return QWidget.eventFilter(self, obj, event, *args, **kwargs)
예제 #4
0
    def eventFilter(self, widget, event):
        if (event.type() == QEvent.KeyPress):
            key = event.key()

            if key == Qt.Key_Delete or key == Qt.Key_Backspace:
                for roi in self._rois:
                    if roi.mouseHovering:
                        roi.sigRemoveRequested.emit(roi)

                return True

        return QWidget.eventFilter(self, widget, event)
예제 #5
0
 def eventFilter(self, obj, ev):
     e = ev.type()
     if obj == self:
         if e == QEvent.WindowDeactivate:
             obj.hide()
     elif obj == self.codeBox:
         if e == QEvent.KeyPress:
             if (ev.key(), ev.modifiers()) == (Qt.Key_Return,
                                               Qt.ControlModifier):
                 self.apply()
                 return True
     return QWidget.eventFilter(self, obj, ev)
예제 #6
0
    def eventFilter(self, obj, event, *args, **kwargs):
        """
        This will assuming that sticky drag has been turned on.

        Attributes:
            _updating (bool): essentially keeps track of the event loop. To ensure
                that recursion does not happen as this event filter is installed
                on 3 widgets.  This makes sure that a click only happens once.
        """
        # preflight
        if not hasattr(obj, '_invisible_widget_data'): return False

        # interface
        hide_widget = obj._invisible_widget_data['hide_widget']
        parent_widget = obj._invisible_widget_data['parent']
        activation_widget = obj._invisible_widget_data['activation_widget']

        if event.type() == QEvent.MouseButtonPress:
            # preflight
            # ensure this is only run once per click
            if self._updating is True: return False

            # ensure that the user clicked on the right widget
            if obj != activation_widget and hide_widget._hide_widget_filter_INVISIBLE is False:
                return False

            # toggle display flag
            hide_widget._hide_widget_filter_INVISIBLE = not hide_widget._hide_widget_filter_INVISIBLE
            # todo something here?
            # print("toggly joe? %s"%obj)
            # hide
            if hide_widget._hide_widget_filter_INVISIBLE is True:
                if self._updating is False:
                    if obj == activation_widget:
                        self._updating = True
                        region = QRegion(parent_widget.frameGeometry())
                        hide_widget.setMask(region)

            # show
            else:
                if self._updating is False:
                    self._updating = True
                    width = hide_widget.width()
                    height = hide_widget.height()
                    region = QRegion(0, 0, width, height)
                    hide_widget.setMask(QRegion())

        if event.type() == QEvent.MouseButtonRelease:
            self._updating = False

        return QWidget.eventFilter(self, obj, event, *args, **kwargs)
예제 #7
0
    def eventFilter(self, widget, event):
        """A filter to control the zooming and panning of the figure canvas."""

        # ---- Zooming
        if event.type() == QEvent.Wheel and not self.auto_fit_plotting:
            modifiers = QApplication.keyboardModifiers()
            if modifiers == Qt.ControlModifier:
                if event.angleDelta().y() > 0:
                    self.zoom_in()
                else:
                    self.zoom_out()
                return True
            else:
                return False

        # ---- Scaling
        elif event.type() == QEvent.Paint and self.auto_fit_plotting:
            self.scale_image()

        # ---- Panning
        # Set ClosedHandCursor:
        elif event.type() == QEvent.MouseButtonPress:
            if event.button() == Qt.LeftButton:
                QApplication.setOverrideCursor(Qt.ClosedHandCursor)
                self._ispanning = True
                self.xclick = event.globalX()
                self.yclick = event.globalY()

        # Reset Cursor:
        elif event.type() == QEvent.MouseButtonRelease:
            QApplication.restoreOverrideCursor()
            self._ispanning = False

        # Move  ScrollBar:
        elif event.type() == QEvent.MouseMove:
            if self._ispanning:
                dx = self.xclick - event.globalX()
                self.xclick = event.globalX()

                dy = self.yclick - event.globalY()
                self.yclick = event.globalY()

                scrollBarH = self.horizontalScrollBar()
                scrollBarH.setValue(scrollBarH.value() + dx)

                scrollBarV = self.verticalScrollBar()
                scrollBarV.setValue(scrollBarV.value() + dy)

        return QWidget.eventFilter(self, widget, event)
예제 #8
0
    def eventFilter(self, widget, event):
        """A filter to control the zooming and panning of the figure canvas."""

        # ---- Zooming
        if event.type() == QEvent.Wheel:
            modifiers = QApplication.keyboardModifiers()
            if modifiers == Qt.ControlModifier:
                if event.angleDelta().y() > 0:
                    self.zoom_in()
                else:
                    self.zoom_out()
                return True
            else:
                return False

        # ---- Panning
        # Set ClosedHandCursor:
        elif event.type() == QEvent.MouseButtonPress:
            if event.button() == Qt.LeftButton:
                QApplication.setOverrideCursor(Qt.ClosedHandCursor)
                self._ispanning = True
                self.xclick = event.globalX()
                self.yclick = event.globalY()

        # Reset Cursor:
        elif event.type() == QEvent.MouseButtonRelease:
            QApplication.restoreOverrideCursor()
            self._ispanning = False

        # Move  ScrollBar:
        elif event.type() == QEvent.MouseMove:
            if self._ispanning:
                dx = self.xclick - event.globalX()
                self.xclick = event.globalX()

                dy = self.yclick - event.globalY()
                self.yclick = event.globalY()

                scrollBarH = self.horizontalScrollBar()
                scrollBarH.setValue(scrollBarH.value() + dx)

                scrollBarV = self.verticalScrollBar()
                scrollBarV.setValue(scrollBarV.value() + dy)

        return QWidget.eventFilter(self, widget, event)