mirror of
https://github.com/pyapp-kit/superqt.git
synced 2025-07-21 04:01:07 +02:00
fix: less Slider signal renaming, make alternate signal types public (#283)
* fix: less signal renaming * style: [pre-commit.ci] auto fixes [...] * lint * more renames * style: [pre-commit.ci] auto fixes [...] * warn napari * lint * add comment * remove napari getattr * style: [pre-commit.ci] auto fixes [...] * add back values changed --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -29,19 +29,21 @@ class _GenericRangeSlider(_GenericSlider):
|
||||
"""
|
||||
|
||||
# Emitted when the slider value has changed, with the new slider values
|
||||
_valuesChanged = Signal(tuple)
|
||||
valuesChanged = Signal(tuple)
|
||||
# this is just a hack to allow napari v0.4.19 tests to pass)
|
||||
# since it used the presence of this private signal as a duck-typing check.
|
||||
_valuesChanged = valuesChanged
|
||||
|
||||
# Emitted when sliderDown is true and the slider moves
|
||||
# This usually happens when the user is dragging the slider
|
||||
# The value is the positions of *all* handles.
|
||||
_slidersMoved = Signal(tuple)
|
||||
slidersMoved = Signal(tuple)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self._style = RangeSliderStyle()
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
self.valueChanged = self._valuesChanged
|
||||
self.sliderMoved = self._slidersMoved
|
||||
|
||||
# list of values
|
||||
self._value: list[_T] = [20, 80]
|
||||
|
||||
@@ -64,6 +66,10 @@ class _GenericRangeSlider(_GenericSlider):
|
||||
|
||||
self.setStyleSheet("")
|
||||
|
||||
def _rename_signals(self) -> None:
|
||||
self.valueChanged = self.valuesChanged
|
||||
self.sliderMoved = self.slidersMoved
|
||||
|
||||
# ############### New Public API #######################
|
||||
|
||||
def barIsRigid(self) -> bool:
|
||||
|
@@ -22,7 +22,7 @@ QRangeSlider.
|
||||
|
||||
import os
|
||||
import platform
|
||||
from typing import TypeVar
|
||||
from typing import Any, TypeVar
|
||||
|
||||
from qtpy import QT_VERSION, QtGui
|
||||
from qtpy.QtCore import QEvent, QPoint, QPointF, QRect, Qt, Signal
|
||||
@@ -60,13 +60,13 @@ USE_MAC_SLIDER_PATCH = (
|
||||
|
||||
|
||||
class _GenericSlider(QSlider):
|
||||
_fvalueChanged = Signal(int)
|
||||
_fsliderMoved = Signal(int)
|
||||
_frangeChanged = Signal(int, int)
|
||||
fvalueChanged = Signal(float)
|
||||
fsliderMoved = Signal(float)
|
||||
frangeChanged = Signal(float, float)
|
||||
|
||||
MAX_DISPLAY = 5000
|
||||
|
||||
def __init__(self, *args, **kwargs) -> None:
|
||||
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
||||
self._minimum = 0.0
|
||||
self._maximum = 99.0
|
||||
self._pageStep = 10.0
|
||||
@@ -90,15 +90,18 @@ class _GenericSlider(QSlider):
|
||||
self._control_fraction = 0.04
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
self.valueChanged = self._fvalueChanged
|
||||
self.sliderMoved = self._fsliderMoved
|
||||
self.rangeChanged = self._frangeChanged
|
||||
self._rename_signals()
|
||||
|
||||
self.setAttribute(Qt.WidgetAttribute.WA_Hover)
|
||||
self.setStyleSheet("")
|
||||
if USE_MAC_SLIDER_PATCH:
|
||||
self.applyMacStylePatch()
|
||||
|
||||
def _rename_signals(self) -> None:
|
||||
self.valueChanged = self.fvalueChanged
|
||||
self.sliderMoved = self.fsliderMoved
|
||||
self.rangeChanged = self.frangeChanged
|
||||
|
||||
def applyMacStylePatch(self) -> None:
|
||||
"""Apply a QSS patch to fix sliders on macos>=12 with QT < 6.
|
||||
|
||||
|
@@ -162,9 +162,6 @@ def _handle_overloaded_slider_sig(
|
||||
|
||||
class QLabeledSlider(_SliderProxy, QAbstractSlider):
|
||||
editingFinished = Signal()
|
||||
_ivalueChanged = Signal(int)
|
||||
_isliderMoved = Signal(int)
|
||||
_irangeChanged = Signal(int, int)
|
||||
|
||||
_slider_class = QSlider
|
||||
_slider: QSlider
|
||||
@@ -283,18 +280,15 @@ class QLabeledSlider(_SliderProxy, QAbstractSlider):
|
||||
"""Convert the value from float to int before setting the slider value."""
|
||||
self._slider.setValue(int(value))
|
||||
|
||||
def _rename_signals(self) -> None:
|
||||
self.valueChanged = self._ivalueChanged
|
||||
self.sliderMoved = self._isliderMoved
|
||||
self.rangeChanged = self._irangeChanged
|
||||
def _rename_signals(self) -> None: ...
|
||||
|
||||
|
||||
class QLabeledDoubleSlider(QLabeledSlider):
|
||||
_slider_class = QDoubleSlider
|
||||
_slider: QDoubleSlider
|
||||
_fvalueChanged = Signal(float)
|
||||
_fsliderMoved = Signal(float)
|
||||
_frangeChanged = Signal(float, float)
|
||||
fvalueChanged = Signal(float)
|
||||
fsliderMoved = Signal(float)
|
||||
frangeChanged = Signal(float, float)
|
||||
|
||||
@overload
|
||||
def __init__(self, parent: QWidget | None = ...) -> None: ...
|
||||
@@ -313,9 +307,9 @@ class QLabeledDoubleSlider(QLabeledSlider):
|
||||
self._slider.setValue(value)
|
||||
|
||||
def _rename_signals(self) -> None:
|
||||
self.valueChanged = self._fvalueChanged
|
||||
self.sliderMoved = self._fsliderMoved
|
||||
self.rangeChanged = self._frangeChanged
|
||||
self.valueChanged = self.fvalueChanged
|
||||
self.sliderMoved = self.fsliderMoved
|
||||
self.rangeChanged = self.frangeChanged
|
||||
|
||||
def decimals(self) -> int:
|
||||
return self._label.decimals()
|
||||
@@ -325,9 +319,7 @@ class QLabeledDoubleSlider(QLabeledSlider):
|
||||
|
||||
|
||||
class QLabeledRangeSlider(_SliderProxy, QAbstractSlider):
|
||||
_valueChanged = Signal(tuple)
|
||||
_sliderPressed = Signal()
|
||||
_sliderReleased = Signal()
|
||||
valuesChanged = Signal(tuple)
|
||||
editingFinished = Signal()
|
||||
|
||||
_slider_class = QRangeSlider
|
||||
@@ -359,7 +351,7 @@ class QLabeledRangeSlider(_SliderProxy, QAbstractSlider):
|
||||
self._slider.sliderPressed.connect(self.sliderPressed.emit)
|
||||
self._slider.sliderReleased.connect(self.sliderReleased.emit)
|
||||
self._slider.rangeChanged.connect(self.rangeChanged.emit)
|
||||
self.sliderMoved = self._slider._slidersMoved
|
||||
self.sliderMoved = self._slider.slidersMoved
|
||||
|
||||
self._min_label = SliderLabel(
|
||||
self._slider,
|
||||
@@ -492,9 +484,7 @@ class QLabeledRangeSlider(_SliderProxy, QAbstractSlider):
|
||||
|
||||
# ------------- private methods ----------------
|
||||
def _rename_signals(self) -> None:
|
||||
self.valueChanged = self._valueChanged
|
||||
self.sliderReleased = self._sliderReleased
|
||||
self.sliderPressed = self._sliderPressed
|
||||
self.valueChanged = self.valuesChanged
|
||||
|
||||
def _reposition_labels(self) -> None:
|
||||
if (
|
||||
@@ -602,7 +592,7 @@ class QLabeledRangeSlider(_SliderProxy, QAbstractSlider):
|
||||
class QLabeledDoubleRangeSlider(QLabeledRangeSlider):
|
||||
_slider_class = QDoubleRangeSlider
|
||||
_slider: QDoubleRangeSlider
|
||||
_frangeChanged = Signal(float, float)
|
||||
frangeChanged = Signal(float, float)
|
||||
|
||||
@overload
|
||||
def __init__(self, parent: QWidget | None = ...) -> None: ...
|
||||
@@ -618,7 +608,7 @@ class QLabeledDoubleRangeSlider(QLabeledRangeSlider):
|
||||
|
||||
def _rename_signals(self) -> None:
|
||||
super()._rename_signals()
|
||||
self.rangeChanged = self._frangeChanged
|
||||
self.rangeChanged = self.frangeChanged
|
||||
|
||||
def decimals(self) -> int:
|
||||
return self._min_label.decimals()
|
||||
|
@@ -14,10 +14,6 @@ class _IntMixin:
|
||||
|
||||
|
||||
class _FloatMixin:
|
||||
_fvalueChanged = Signal(float)
|
||||
_fsliderMoved = Signal(float)
|
||||
_frangeChanged = Signal(float, float)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self._singleStep = 0.01
|
||||
@@ -41,7 +37,9 @@ class QRangeSlider(_IntMixin, _GenericRangeSlider):
|
||||
|
||||
|
||||
class QDoubleRangeSlider(_FloatMixin, QRangeSlider):
|
||||
pass
|
||||
def _rename_signals(self) -> None:
|
||||
super()._rename_signals()
|
||||
self.rangeChanged = self.frangeChanged
|
||||
|
||||
|
||||
# QRangeSlider.__doc__ += "\n" + textwrap.indent(QSlider.__doc__, " ")
|
||||
|
Reference in New Issue
Block a user