Browse Source

qt: add typing to ResizableStackedWidget, add index validation to setCurrentIndex,

return None for currentWidget() if current_index == -1
master
Sander van Grieken 2 years ago
parent
commit
2b3d7096c6
No known key found for this signature in database
GPG Key ID: 9BCF8209EA402EBA
  1. 15
      electrum/gui/qt/util.py

15
electrum/gui/qt/util.py

@ -517,12 +517,12 @@ class ResizableStackedWidget(QWidget):
self.widgets = [] self.widgets = []
self.current_index = -1 self.current_index = -1
def sizeHint(self): def sizeHint(self) -> QSize:
if not self.count() or not self.currentWidget(): if not self.count() or not self.currentWidget():
return super().sizeHint() return super().sizeHint()
return self.currentWidget().sizeHint() return self.currentWidget().sizeHint()
def addWidget(self, widget): def addWidget(self, widget: QWidget) -> int:
self.widgets.append(widget) self.widgets.append(widget)
self.layout().addWidget(widget) self.layout().addWidget(widget)
if len(self.widgets) == 1: # first widget? if len(self.widgets) == 1: # first widget?
@ -530,7 +530,7 @@ class ResizableStackedWidget(QWidget):
self.showCurrentWidget() self.showCurrentWidget()
return len(self.widgets) - 1 return len(self.widgets) - 1
def removeWidget(self, widget): def removeWidget(self, widget: QWidget):
i = self.widgets.index(widget) i = self.widgets.index(widget)
self.widgets.remove(widget) self.widgets.remove(widget)
self.layout().removeWidget(widget) self.layout().removeWidget(widget)
@ -539,12 +539,15 @@ class ResizableStackedWidget(QWidget):
if self.current_index == self.count() - 1: if self.current_index == self.count() - 1:
self.showCurrentWidget() self.showCurrentWidget()
def setCurrentIndex(self, index): def setCurrentIndex(self, index: int):
assert isinstance(index, int) assert isinstance(index, int)
assert 0 <= index < len(self.widgets), f'invalid widget index {index}'
self.current_index = index self.current_index = index
self.showCurrentWidget() self.showCurrentWidget()
def currentWidget(self): def currentWidget(self) -> Optional[QWidget]:
if self.current_index < 0:
return None
return self.widgets[self.current_index] return self.widgets[self.current_index]
def showCurrentWidget(self): def showCurrentWidget(self):
@ -557,7 +560,7 @@ class ResizableStackedWidget(QWidget):
else: else:
k.hide() k.hide()
def count(self): def count(self) -> int:
return len(self.widgets) return len(self.widgets)

Loading…
Cancel
Save