1
0
Fork 0
mirror of synced 2024-06-21 12:00:25 +12:00

Add typing to the custom layouts and fix stacked widet page naming

This commit is contained in:
loathingKernel 2023-01-30 13:59:47 +02:00
parent 25def92a41
commit e7a47a48e1
4 changed files with 56 additions and 51 deletions

View file

@ -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()

View file

@ -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):

View file

@ -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())

View file

@ -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())