summaryrefslogtreecommitdiff
path: root/silx/gui/widgets/FrameBrowser.py
diff options
context:
space:
mode:
Diffstat (limited to 'silx/gui/widgets/FrameBrowser.py')
-rw-r--r--silx/gui/widgets/FrameBrowser.py75
1 files changed, 45 insertions, 30 deletions
diff --git a/silx/gui/widgets/FrameBrowser.py b/silx/gui/widgets/FrameBrowser.py
index a8c0349..b4f88fc 100644
--- a/silx/gui/widgets/FrameBrowser.py
+++ b/silx/gui/widgets/FrameBrowser.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -33,6 +33,7 @@
"""
from silx.gui import qt
from silx.gui import icons
+from silx.utils import deprecation
__authors__ = ["V.A. Sole", "P. Knobel"]
__license__ = "MIT"
@@ -50,7 +51,9 @@ class FrameBrowser(qt.QWidget):
:param QWidget parent: Parent widget
:param int n: Number of frames. This will set the range
of frame indices to 0--n-1.
- If None, the range is initialized to the default QSlider range (0--99)."""
+ If None, the range is initialized to the default QSlider range (0--99).
+ """
+
sigIndexChanged = qt.pyqtSignal(object)
def __init__(self, parent=None, n=None):
@@ -123,25 +126,19 @@ class FrameBrowser(qt.QWidget):
def _firstClicked(self):
"""Select first/lowest frame number"""
- self._lineEdit.setText("%d" % self._lineEdit.validator().bottom())
- self._textChangedSlot()
+ self.setValue(self.getRange()[0])
def _previousClicked(self):
"""Select previous frame number"""
- if self._index > self._lineEdit.validator().bottom():
- self._lineEdit.setText("%d" % (self._index - 1))
- self._textChangedSlot()
+ self.setValue(self.getValue() - 1)
def _nextClicked(self):
"""Select next frame number"""
- if self._index < (self._lineEdit.validator().top()):
- self._lineEdit.setText("%d" % (self._index + 1))
- self._textChangedSlot()
+ self.setValue(self.getValue() + 1)
def _lastClicked(self):
"""Select last/highest frame number"""
- self._lineEdit.setText("%d" % self._lineEdit.validator().top())
- self._textChangedSlot()
+ self.setValue(self.getRange()[1])
def _textChangedSlot(self):
"""Select frame number typed in the line edit widget"""
@@ -161,17 +158,17 @@ class FrameBrowser(qt.QWidget):
self._index = new_value
self.sigIndexChanged.emit(ddict)
- def setRange(self, first, last):
- """Set minimum and maximum frame indices
- Initialize the frame index to *first*.
- Update the label text to *" limits: first, last"*
+ def getRange(self):
+ """Returns frame range
- :param int first: Minimum frame index
- :param int last: Maximum frame index"""
- return self.setLimits(first, last)
+ :return: (first_index, last_index)
+ """
+ validator = self.lineEdit().validator()
+ return validator.bottom(), validator.top()
- def setLimits(self, first, last):
+ def setRange(self, first, last):
"""Set minimum and maximum frame indices.
+
Initialize the frame index to *first*.
Update the label text to *" limits: first, last"*
@@ -181,34 +178,52 @@ class FrameBrowser(qt.QWidget):
top = max(first, last)
self._lineEdit.validator().setTop(top)
self._lineEdit.validator().setBottom(bottom)
- self._index = bottom
- self._lineEdit.setText("%d" % self._index)
+ self.setValue(bottom)
+
+ # Update limits
self._label.setText(" limits: %d, %d " % (bottom, top))
+ @deprecation.deprecated(replacement="FrameBrowser.setRange",
+ since_version="0.8")
+ def setLimits(self, first, last):
+ return self.setRange(first, last)
+
def setNFrames(self, nframes):
"""Set minimum=0 and maximum=nframes-1 frame numbers.
+
Initialize the frame index to 0.
Update the label text to *"1 of nframes"*
:param int nframes: Number of frames"""
- bottom = 0
top = nframes - 1
- self._lineEdit.validator().setTop(top)
- self._lineEdit.validator().setBottom(bottom)
- self._index = bottom
- self._lineEdit.setText("%d" % self._index)
+ self.setRange(0, top)
# display 1-based index in label
- self._label.setText(" %d of %d " % (self._index + 1, top + 1))
+ self._label.setText(" of %d " % top)
+ @deprecation.deprecated(replacement="FrameBrowser.getValue",
+ since_version="0.8")
def getCurrentIndex(self):
- """Get 0-based frame index
- """
+ return self._index
+
+ def getValue(self):
+ """Return current frame index"""
return self._index
def setValue(self, value):
"""Set 0-based frame index
+ Value is clipped to current range.
+
:param int value: Frame number"""
+ bottom = self.lineEdit().validator().bottom()
+ top = self.lineEdit().validator().top()
+ value = int(value)
+
+ if value < bottom:
+ value = bottom
+ elif value > top:
+ value = top
+
self._lineEdit.setText("%d" % value)
self._textChangedSlot()