1
0

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

return None for currentWidget() if current_index == -1
This commit is contained in:
Sander van Grieken
2024-01-16 11:13:57 +01:00
parent d19dd817d3
commit 2b3d7096c6

View File

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