update min/max for scaledScrollbar

has some issues when scrolling to the end
This commit is contained in:
2022-12-17 18:04:42 +01:00
parent ed94d7bc67
commit b8433306fa
2 changed files with 19 additions and 31 deletions

View File

@@ -10,9 +10,6 @@ log = logging.getLogger("scaledScrollBar")
class ScaledScrollBar(QScrollBar):
is_huge = False
_range_start = 0;
_range_end = -1
scaledValueChanged = Signal(str)
"""Signal emitted when the scroll bar value changes.
**Note**: The value is a string and must be parsed into an int.
@@ -29,32 +26,12 @@ class ScaledScrollBar(QScrollBar):
self.real_maximum = self.maximum()
super().valueChanged.connect(self._valueChanged)
def set_range(self, range_start: int, range_end: int):
old_range_start = self._range_start
self._range_start = range_start
self._range_end = range_end
new_max = range_end - range_start
old_value = self._real_value()
new_value = old_value - range_start
self.setMaximum(new_max)
self.setValue(new_value)
print(f"old_value: {old_value} new_value {new_value}")
def setValue(self, value: int) -> None:
if self.is_huge:
real_position = value / self.real_maximum
super().setValue(round(self.maximum() * real_position))
else:
super().setValue(value - self._range_start)
def _real_value(self):
value = self.value()
if self.is_huge:
real_value = self._range_start + (value / self.maximum()) * self.real_maximum
# print("scaled value changed: %d -> %d (%f)" % (value, real_value, value / self.maximum()))
return int(real_value)
else:
return int(self._range_start + value)
super().setValue(value)
def setMaximum(self, maximum: int) -> None:
if maximum > 2 ** 31:
@@ -73,4 +50,9 @@ class ScaledScrollBar(QScrollBar):
def _valueChanged(self, value: int):
self.scrolled_to_end.emit(value == self.maximum() and value > 0)
self.scaledValueChanged.emit(str(self._real_value()))
if self.is_huge:
real_value = (value / self.maximum()) * self.real_maximum
# print("scaled value changed: %d -> %d (%f)" % (value, real_value, value / self.maximum()))
self.scaledValueChanged.emit(str(int(real_value)))
else:
self.scaledValueChanged.emit(str(int(value)))