Files
superqt/tests/zz_test_sliders/_testutil.py
Talley Lambert 16f9ef9d3d style: use ruff format instead of black, update pre-commit, restrict pyside6 tests (#235)
* style: use ruff format

* fix import

* disallow pyside 6.6.2

* pin in tests too

* pyside6.4 on windows

* fix greedy imports

* double quote

* run sliders last

* try 6.6.1 again
2024-03-06 15:42:51 -05:00

89 lines
2.3 KiB
Python

from contextlib import suppress
from platform import system
import pytest
from qtpy import QT_VERSION
from qtpy.QtCore import QEvent, QPoint, QPointF, Qt
from qtpy.QtGui import QHoverEvent, QMouseEvent, QWheelEvent
QT_VERSION = tuple(int(x) for x in QT_VERSION.split("."))
SYS_DARWIN = system() == "Darwin"
skip_on_linux_qt6 = pytest.mark.skipif(
system() == "Linux" and QT_VERSION >= (6, 0),
reason="hover events not working on linux pyqt6",
)
_PointF = QPointF()
def _mouse_event(pos=_PointF, type_=QEvent.Type.MouseMove):
"""Create a mouse event of `type_` at `pos`."""
return QMouseEvent(
type_,
QPointF(pos), # localPos
QPointF(), # windowPos / globalPos
Qt.MouseButton.LeftButton, # button
Qt.MouseButton.LeftButton, # buttons
Qt.KeyboardModifier.NoModifier, # modifiers
)
def _wheel_event(arc):
"""Create a wheel event with `arc`."""
with suppress(TypeError):
return QWheelEvent(
QPointF(),
QPointF(),
QPoint(arc, arc),
QPoint(arc, arc),
Qt.MouseButton.NoButton,
Qt.KeyboardModifier.NoModifier,
Qt.ScrollPhase.ScrollBegin,
False,
Qt.MouseEventSource.MouseEventSynthesizedByQt,
)
with suppress(TypeError):
return QWheelEvent(
QPointF(),
QPointF(),
QPoint(-arc, -arc),
QPoint(-arc, -arc),
1,
Qt.Orientation.Vertical,
Qt.MouseButton.NoButton,
Qt.KeyboardModifier.NoModifier,
Qt.ScrollPhase.ScrollBegin,
False,
Qt.MouseEventSource.MouseEventSynthesizedByQt,
)
return QWheelEvent(
QPointF(),
QPointF(),
QPoint(arc, arc),
QPoint(arc, arc),
1,
Qt.Orientation.Vertical,
Qt.MouseButton.NoButton,
Qt.KeyboardModifier.NoModifier,
)
def _hover_event(_type, position, old_position, widget=None):
with suppress(TypeError):
return QHoverEvent(
_type,
position,
widget.mapToGlobal(position),
old_position,
)
return QHoverEvent(_type, position, old_position)
def _linspace(start: int, stop: int, n: int):
h = (stop - start) / (n - 1)
for i in range(n):
yield start + h * i