Add typing to the custom layouts and fix stacked widet page naming
This commit is contained in:
parent
25def92a41
commit
e7a47a48e1
4 changed files with 56 additions and 51 deletions
|
@ -87,7 +87,7 @@ class TabWidget(QTabWidget):
|
|||
|
||||
def mouse_clicked(self, tab_num):
|
||||
if tab_num == 0:
|
||||
self.games_tab.setCurrentWidget(self.games_tab)
|
||||
self.games_tab.setCurrentWidget(self.games_tab.games_page)
|
||||
|
||||
if not self.args.offline and tab_num == 2:
|
||||
self.store.load()
|
||||
|
|
|
@ -44,23 +44,23 @@ class GamesTab(QStackedWidget):
|
|||
self.dlcs: Dict[str, List[Game]] = self.api_results.dlcs
|
||||
self.no_assets: List[Game] = self.api_results.no_asset_games
|
||||
|
||||
self.games = QWidget(parent=self)
|
||||
self.games.setLayout(QVBoxLayout())
|
||||
self.addWidget(self.games)
|
||||
self.games_page = QWidget(parent=self)
|
||||
self.games_page.setLayout(QVBoxLayout())
|
||||
self.addWidget(self.games_page)
|
||||
|
||||
self.head_bar = GameListHeadBar(parent=self.games)
|
||||
self.head_bar = GameListHeadBar(parent=self.games_page)
|
||||
self.head_bar.goto_import.connect(self.show_import)
|
||||
self.head_bar.goto_egl_sync.connect(self.show_egl_sync)
|
||||
self.head_bar.goto_eos_ubisoft.connect(self.show_eos_ubisoft)
|
||||
self.games.layout().addWidget(self.head_bar)
|
||||
self.games_page.layout().addWidget(self.head_bar)
|
||||
|
||||
self.game_info_tabs = GameInfoTabs(self)
|
||||
self.game_info_tabs.back_clicked.connect(lambda: self.setCurrentWidget(self.games))
|
||||
self.addWidget(self.game_info_tabs)
|
||||
self.game_info_page = GameInfoTabs(self)
|
||||
self.game_info_page.back_clicked.connect(lambda: self.setCurrentWidget(self.games_page))
|
||||
self.addWidget(self.game_info_page)
|
||||
|
||||
self.integrations_tabs = IntegrationsTabs(self)
|
||||
self.integrations_tabs.back_clicked.connect(lambda: self.setCurrentWidget(self.games))
|
||||
self.addWidget(self.integrations_tabs)
|
||||
self.integrations_page = IntegrationsTabs(self)
|
||||
self.integrations_page.back_clicked.connect(lambda: self.setCurrentWidget(self.games_page))
|
||||
self.addWidget(self.integrations_page)
|
||||
|
||||
self.no_asset_names = []
|
||||
if not self.args.offline:
|
||||
|
@ -69,7 +69,7 @@ class GamesTab(QStackedWidget):
|
|||
else:
|
||||
self.no_assets = []
|
||||
|
||||
self.view_stack = SlidingStackedWidget(self.games)
|
||||
self.view_stack = SlidingStackedWidget(self.games_page)
|
||||
self.view_stack.setFrameStyle(QFrame.NoFrame)
|
||||
self.icon_view_scroll = QScrollArea(self.view_stack)
|
||||
self.icon_view_scroll.setWidgetResizable(True)
|
||||
|
@ -92,7 +92,7 @@ class GamesTab(QStackedWidget):
|
|||
self.list_view_scroll.setWidget(self.list_view)
|
||||
self.view_stack.addWidget(self.icon_view_scroll)
|
||||
self.view_stack.addWidget(self.list_view_scroll)
|
||||
self.games.layout().addWidget(self.view_stack)
|
||||
self.games_page.layout().addWidget(self.view_stack)
|
||||
|
||||
if not self.settings.value("icon_view", True, bool):
|
||||
self.view_stack.setCurrentWidget(self.list_view_scroll)
|
||||
|
@ -134,23 +134,23 @@ class GamesTab(QStackedWidget):
|
|||
|
||||
@pyqtSlot()
|
||||
def show_import(self):
|
||||
self.setCurrentWidget(self.integrations_tabs)
|
||||
self.integrations_tabs.show_import()
|
||||
self.setCurrentWidget(self.integrations_page)
|
||||
self.integrations_page.show_import()
|
||||
|
||||
@pyqtSlot()
|
||||
def show_egl_sync(self):
|
||||
self.setCurrentWidget(self.integrations_tabs)
|
||||
self.integrations_tabs.show_egl_sync()
|
||||
self.setCurrentWidget(self.integrations_page)
|
||||
self.integrations_page.show_egl_sync()
|
||||
|
||||
@pyqtSlot()
|
||||
def show_eos_ubisoft(self):
|
||||
self.setCurrentWidget(self.integrations_tabs)
|
||||
self.integrations_tabs.show_eos_ubisoft()
|
||||
self.setCurrentWidget(self.integrations_page)
|
||||
self.integrations_page.show_eos_ubisoft()
|
||||
|
||||
@pyqtSlot(RareGame)
|
||||
def show_game_info(self, rgame):
|
||||
self.setCurrentWidget(self.game_info_tabs)
|
||||
self.game_info_tabs.update_game(rgame)
|
||||
self.setCurrentWidget(self.game_info_page)
|
||||
self.game_info_page.update_game(rgame)
|
||||
|
||||
@pyqtSlot()
|
||||
def update_count_games_label(self):
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
from typing import Optional
|
||||
|
||||
from PyQt5.QtCore import (
|
||||
Qt,
|
||||
QRect,
|
||||
|
@ -8,6 +10,7 @@ from PyQt5.QtWidgets import (
|
|||
QLayout,
|
||||
QStyle,
|
||||
QSizePolicy,
|
||||
QLayoutItem,
|
||||
)
|
||||
|
||||
|
||||
|
@ -23,8 +26,8 @@ class FlowLayout(QLayout):
|
|||
def __del__(self):
|
||||
del self._items[:]
|
||||
|
||||
def addItem(self, item):
|
||||
self._items.append(item)
|
||||
def addItem(self, a0: QLayoutItem) -> None:
|
||||
self._items.append(a0)
|
||||
|
||||
def horizontalSpacing(self):
|
||||
if self._hspacing >= 0:
|
||||
|
@ -38,34 +41,36 @@ class FlowLayout(QLayout):
|
|||
else:
|
||||
return self.smartSpacing(QStyle.PM_LayoutVerticalSpacing)
|
||||
|
||||
def count(self):
|
||||
def count(self) -> int:
|
||||
return len(self._items)
|
||||
|
||||
def itemAt(self, index):
|
||||
def itemAt(self, index: int) -> Optional[QLayoutItem]:
|
||||
if 0 <= index < len(self._items):
|
||||
return self._items[index]
|
||||
return None
|
||||
|
||||
def takeAt(self, index):
|
||||
def takeAt(self, index: int) -> Optional[QLayoutItem]:
|
||||
if 0 <= index < len(self._items):
|
||||
return self._items.pop(index)
|
||||
return None
|
||||
|
||||
def expandingDirections(self):
|
||||
return Qt.Orientations(0)
|
||||
def expandingDirections(self) -> Qt.Orientations:
|
||||
return Qt.Orientations(Qt.Orientation(0))
|
||||
|
||||
def hasHeightForWidth(self):
|
||||
def hasHeightForWidth(self) -> bool:
|
||||
return True
|
||||
|
||||
def heightForWidth(self, width):
|
||||
return self.doLayout(QRect(0, 0, width, 0), True)
|
||||
def heightForWidth(self, a0: int) -> int:
|
||||
return self.doLayout(QRect(0, 0, a0, 0), True)
|
||||
|
||||
def setGeometry(self, rect):
|
||||
super(FlowLayout, self).setGeometry(rect)
|
||||
self.doLayout(rect, False)
|
||||
def setGeometry(self, a0: QRect) -> None:
|
||||
super(FlowLayout, self).setGeometry(a0)
|
||||
self.doLayout(a0, False)
|
||||
|
||||
def sizeHint(self):
|
||||
def sizeHint(self) -> QSize:
|
||||
return self.minimumSize()
|
||||
|
||||
def minimumSize(self):
|
||||
def minimumSize(self) -> QSize:
|
||||
size = QSize()
|
||||
for item in self._items:
|
||||
size = size.expandedTo(item.minimumSize())
|
||||
|
|
|
@ -22,12 +22,12 @@ class LibraryLayout(FlowLayout):
|
|||
# self.doLayout(self.parent().rect(), False)
|
||||
# e.accept()
|
||||
|
||||
def expandingDirections(self):
|
||||
def expandingDirections(self) -> Qt.Orientations:
|
||||
return Qt.Orientations(Qt.Horizontal | Qt.Vertical)
|
||||
|
||||
def setGeometry(self, rect):
|
||||
super(FlowLayout, self).setGeometry(rect)
|
||||
self.doLayout(rect, False)
|
||||
def setGeometry(self, a0: QRect) -> None:
|
||||
super(FlowLayout, self).setGeometry(a0)
|
||||
self.doLayout(a0, False)
|
||||
|
||||
def doLayout(self, rect, testonly):
|
||||
"""!
|
||||
|
@ -131,17 +131,17 @@ class LibraryLayout(FlowLayout):
|
|||
lineheight = max(lineheight, item.sizeHint().height())
|
||||
return y + lineheight - rect.y() + bottom
|
||||
|
||||
def sort(self, key: Callable, reverse=False):
|
||||
def sort(self, key: Callable, reverse=False) -> None:
|
||||
self._items.sort(key=key, reverse=reverse)
|
||||
self.setGeometry(self.parent().rect())
|
||||
|
||||
# These are used to pop and insert the installing widget, remove them when no longer needed
|
||||
def remove(self, name: str) -> QWidget:
|
||||
widget = next(filter(lambda x: x.widget().objectName() == name, self._items), None)
|
||||
self._items.remove(widget)
|
||||
self.setGeometry(self.parent().rect())
|
||||
return widget
|
||||
|
||||
def insert(self, index: int, widget: QWidget):
|
||||
self._items.insert(index, widget)
|
||||
self.setGeometry(self.parent().rect())
|
||||
# def remove(self, name: str) -> QWidget:
|
||||
# widget = next(filter(lambda x: x.widget().objectName() == name, self._items), None)
|
||||
# self._items.remove(widget)
|
||||
# self.setGeometry(self.parent().rect())
|
||||
# return widget
|
||||
#
|
||||
# def insert(self, index: int, widget: QWidget):
|
||||
# self._items.insert(index, widget)
|
||||
# self.setGeometry(self.parent().rect())
|
||||
|
|
Loading…
Reference in a new issue