1
0
Fork 0
mirror of synced 2024-06-02 18:54:41 +12:00
Rare/rare/components/tabs/__init__.py

96 lines
3.9 KiB
Python
Raw Normal View History

from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QMenu, QTabWidget, QWidget, QWidgetAction, QShortcut
from qtawesome import icon
from rare import shared
from rare.components.tabs.account import MiniWidget
from rare.components.tabs.downloads import DownloadTab
from rare.components.tabs.games import GamesTab
from rare.components.tabs.settings import SettingsTab
from rare.components.tabs.settings.debug import DebugSettings
from rare.components.tabs.shop import Shop
from rare.components.tabs.tab_utils import MainTabBar, TabButtonWidget
class TabWidget(QTabWidget):
def __init__(self, parent):
super(TabWidget, self).__init__(parent=parent)
disabled_tab = 3 if not shared.args.offline else 1
self.core = shared.core
self.signals = shared.signals
self.setTabBar(MainTabBar(disabled_tab))
# lk: Figure out why this adds a white line at the top
# lk: despite setting qproperty-drawBase to 0 in the stylesheet
# self.setDocumentMode(True)
# Generate Tabs
self.games_tab = GamesTab()
self.addTab(self.games_tab, self.tr("Games"))
if not shared.args.offline:
# updates = self.games_tab.default_widget.game_list.updates
self.downloadTab = DownloadTab(self.games_tab.updates)
self.addTab(self.downloadTab, "Downloads" + (
" (" + str(len(self.games_tab.updates)) + ")" if len(self.games_tab.updates) != 0 else ""))
self.store = Shop(self.core)
self.addTab(self.store, self.tr("Store (Beta)"))
2021-11-17 10:54:23 +13:00
self.settings = SettingsTab(self)
if shared.args.debug:
self.settings.addTab(DebugSettings(), "Debug")
# Space Tab
self.addTab(QWidget(), "")
self.setTabEnabled(disabled_tab, False)
# Button
self.account = QWidget()
self.addTab(self.account, "")
self.setTabEnabled(disabled_tab + 1, False)
self.mini_widget = MiniWidget()
account_action = QWidgetAction(self)
account_action.setDefaultWidget(self.mini_widget)
account_button = TabButtonWidget('mdi.account-circle', 'Account')
account_button.setMenu(QMenu())
account_button.menu().addAction(account_action)
self.tabBar().setTabButton(disabled_tab + 1, self.tabBar().RightSide, account_button)
self.addTab(self.settings, icon("fa.gear"), "")
self.settings.about.update_available_ready.connect(lambda: self.tabBar().setTabText(5, "(!)"))
# Signals
# set current index
self.signals.set_main_tab_index.connect(self.setCurrentIndex)
# update dl tab text
self.signals.update_download_tab_text.connect(self.update_dl_tab_text)
# Open game list on click on Games tab button
self.tabBarClicked.connect(self.mouse_clicked)
self.setIconSize(QSize(25, 25))
# shortcuts
QShortcut("Alt+1", self).activated.connect(lambda: self.setCurrentIndex(0))
QShortcut("Alt+2", self).activated.connect(lambda: self.setCurrentIndex(1))
QShortcut("Alt+3", self).activated.connect(lambda: self.setCurrentIndex(2))
QShortcut("Alt+4", self).activated.connect(lambda: self.setCurrentIndex(5))
def update_dl_tab_text(self):
num_downloads = len(set([i.options.app_name for i in self.downloadTab.dl_queue] + [i for i in
self.downloadTab.update_widgets.keys()]))
if num_downloads != 0:
self.setTabText(1, f"Downloads ({num_downloads})")
else:
self.setTabText(1, "Downloads")
def mouse_clicked(self, tab_num):
if tab_num == 0:
self.games_tab.layout().setCurrentIndex(0)
if not shared.args.offline and tab_num == 2:
self.store.load()
def resizeEvent(self, event):
self.tabBar().setMinimumWidth(self.width())
super(TabWidget, self).resizeEvent(event)