Launch Dialog while Main app starting
This commit is contained in:
parent
dd094f44d3
commit
b3da3d50c9
|
@ -47,6 +47,7 @@ class LoginThread(QThread):
|
|||
|
||||
|
||||
class LaunchDialog(QDialog):
|
||||
start_app = pyqtSignal()
|
||||
def __init__(self, core: LegendaryCore):
|
||||
super(LaunchDialog, self).__init__()
|
||||
self.core = core
|
||||
|
@ -74,7 +75,7 @@ class LaunchDialog(QDialog):
|
|||
|
||||
def launch(self):
|
||||
# self.core = core
|
||||
self.info_pb.setMaximum(len(self.core.get_game_list()))
|
||||
self.pb_size = len(self.core.get_game_list())
|
||||
self.info_text.setText(self.tr("Downloading Images"))
|
||||
self.thread = LaunchThread(self.core, self)
|
||||
self.thread.download_progess.connect(self.update_pb)
|
||||
|
@ -82,9 +83,12 @@ class LaunchDialog(QDialog):
|
|||
self.thread.start()
|
||||
|
||||
def update_pb(self, i: int):
|
||||
self.info_pb.setValue(i)
|
||||
self.info_pb.setValue(i/self.pb_size*100)
|
||||
|
||||
def info(self, text: str):
|
||||
if text == "finish":
|
||||
self.close()
|
||||
self.info_text.setText(text)
|
||||
self.info_text.setText(self.tr("Starting..."))
|
||||
self.info_pb.setValue(100)
|
||||
self.start_app.emit()
|
||||
else:
|
||||
self.info_text.setText(text)
|
||||
|
|
37
Rare/Components/TabUtils.py
Normal file
37
Rare/Components/TabUtils.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
from PyQt5.QtCore import QSize
|
||||
from PyQt5.QtGui import QFont
|
||||
from PyQt5.QtWidgets import QTabBar, QToolButton, QMenu, QWidgetAction
|
||||
from Rare.Components.Tabs.Account.AccountWidget import MiniWidget
|
||||
from qtawesome import icon
|
||||
|
||||
|
||||
class TabBar(QTabBar):
|
||||
def __init__(self, expanded):
|
||||
super(TabBar, self).__init__()
|
||||
self._expanded = expanded
|
||||
self.setObjectName("main_tab_bar")
|
||||
self.setFont(QFont("Arial", 13))
|
||||
# self.setContentsMargins(0,10,0,10)
|
||||
|
||||
def tabSizeHint(self, index):
|
||||
size = super(TabBar, self).tabSizeHint(index)
|
||||
if index == self._expanded:
|
||||
offset = self.width()
|
||||
for index in range(self.count()):
|
||||
offset -= super(TabBar, self).tabSizeHint(index).width()
|
||||
size.setWidth(max(size.width(), size.width() + offset))
|
||||
return size
|
||||
|
||||
|
||||
class TabButtonWidget(QToolButton):
|
||||
def __init__(self, core):
|
||||
super(TabButtonWidget, self).__init__()
|
||||
self.setText("Icon")
|
||||
self.setPopupMode(QToolButton.InstantPopup)
|
||||
self.setIcon(icon("mdi.account-circle", color="white", scale_factor=1.25))
|
||||
self.setToolTip("Account")
|
||||
self.setIconSize(QSize(25, 25))
|
||||
self.setMenu(QMenu())
|
||||
action = QWidgetAction(self)
|
||||
action.setDefaultWidget(MiniWidget(core))
|
||||
self.menu().addAction(action)
|
|
@ -1,10 +1,8 @@
|
|||
from PyQt5.QtCore import QSize
|
||||
from PyQt5.QtGui import QFont
|
||||
from PyQt5.QtWidgets import QTabWidget, QTabBar, QWidget, QToolButton, QWidgetAction, QMenu
|
||||
from PyQt5.QtWidgets import QTabWidget, QWidget
|
||||
from qtawesome import icon
|
||||
|
||||
# from Rare.Components.Tabs.Account.AccountWidget import MiniWidget
|
||||
from Rare.Components.Tabs.Account.AccountWidget import MiniWidget
|
||||
from Rare.Components.TabUtils import TabBar, TabButtonWidget
|
||||
from Rare.Components.Tabs.CloudSaves.CloudSaves import SyncSaves
|
||||
from Rare.Components.Tabs.Downloads.DownloadTab import DownloadTab
|
||||
from Rare.Components.Tabs.Games.GamesTab import GameTab
|
||||
|
@ -24,7 +22,7 @@ class TabWidget(QTabWidget):
|
|||
updates = self.game_list.default_widget.game_list.updates
|
||||
self.addTab(self.game_list, self.tr("Games"))
|
||||
self.downloadTab = DownloadTab(core, updates)
|
||||
self.addTab(self.downloadTab, "Downloads")
|
||||
self.addTab(self.downloadTab, "Downloads" + (" " + str(len(updates)) if len(updates) != 0 else ""))
|
||||
self.downloadTab.finished.connect(self.game_list.default_widget.game_list.update_list)
|
||||
self.game_list.default_widget.game_list.install_game.connect(lambda x: self.downloadTab.install_game(x))
|
||||
|
||||
|
@ -38,7 +36,7 @@ class TabWidget(QTabWidget):
|
|||
self.addTab(self.cloud_saves, "Cloud Saves")
|
||||
|
||||
# Space Tab
|
||||
self.addTab(QWidget(), "")
|
||||
self.addTab(None, "")
|
||||
self.setTabEnabled(disabled_tab, False)
|
||||
|
||||
self.account = QWidget()
|
||||
|
@ -52,35 +50,3 @@ class TabWidget(QTabWidget):
|
|||
def resizeEvent(self, event):
|
||||
self.tabBar().setMinimumWidth(self.width())
|
||||
super(TabWidget, self).resizeEvent(event)
|
||||
|
||||
|
||||
class TabBar(QTabBar):
|
||||
def __init__(self, expanded):
|
||||
super(TabBar, self).__init__()
|
||||
self._expanded = expanded
|
||||
self.setObjectName("main_tab_bar")
|
||||
self.setFont(QFont("Arial", 13))
|
||||
# self.setContentsMargins(0,10,0,10)
|
||||
|
||||
def tabSizeHint(self, index):
|
||||
size = super(TabBar, self).tabSizeHint(index)
|
||||
if index == self._expanded:
|
||||
offset = self.width()
|
||||
for index in range(self.count()):
|
||||
offset -= super(TabBar, self).tabSizeHint(index).width()
|
||||
size.setWidth(max(size.width(), size.width() + offset))
|
||||
return size
|
||||
|
||||
|
||||
class TabButtonWidget(QToolButton):
|
||||
def __init__(self, core):
|
||||
super(TabButtonWidget, self).__init__()
|
||||
self.setText("Icon")
|
||||
self.setPopupMode(QToolButton.InstantPopup)
|
||||
self.setIcon(icon("mdi.account-circle", color="white", scale_factor=1.25))
|
||||
self.setToolTip("Account")
|
||||
self.setIconSize(QSize(25, 25))
|
||||
self.setMenu(QMenu())
|
||||
action = QWidgetAction(self)
|
||||
action.setDefaultWidget(MiniWidget(core))
|
||||
self.menu().addAction(action)
|
||||
|
|
|
@ -88,7 +88,6 @@ class SyncSaves(QScrollArea):
|
|||
self.setWidget(self.widget)
|
||||
|
||||
def reload(self):
|
||||
print("reload")
|
||||
self.setWidget(QWidget())
|
||||
self.load_saves()
|
||||
self.update()
|
||||
|
|
|
@ -32,8 +32,10 @@ class GameWidgetInstalled(QWidget):
|
|||
settings = QSettings()
|
||||
self.info_text = ""
|
||||
self.IMAGE_DIR = settings.value("img_dir", os.path.expanduser("~/.cache/rare"))
|
||||
|
||||
self.update_available = self.core.get_asset(self.game.app_name, True).build_version != game.version
|
||||
try:
|
||||
self.update_available = self.core.get_asset(self.game.app_name, True).build_version != game.version
|
||||
except:
|
||||
self.update_available = False
|
||||
if self.update_available:
|
||||
logger.info("Update available for game: " + self.game.app_name)
|
||||
self.info_text = self.tr("Update available")
|
||||
|
|
60
Rare/Main.py
60
Rare/Main.py
|
@ -1,5 +1,6 @@
|
|||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
from PyQt5.QtCore import QSettings, QTranslator
|
||||
from PyQt5.QtGui import QIcon
|
||||
|
@ -18,28 +19,41 @@ logging.basicConfig(
|
|||
logger = logging.getLogger("Rare")
|
||||
|
||||
|
||||
class App(QApplication):
|
||||
def __init__(self):
|
||||
super(App, self).__init__(sys.argv)
|
||||
self.core = LegendaryCore()
|
||||
self.setApplicationName("Rare")
|
||||
self.setOrganizationName("Rare")
|
||||
settings = QSettings()
|
||||
|
||||
# Translator
|
||||
self.translator = QTranslator()
|
||||
lang = settings.value("language", get_lang(), type=str)
|
||||
if os.path.exists(lang_path + lang + ".qm"):
|
||||
self.translator.load(lang_path + lang + ".qm")
|
||||
logger.info("Your language is supported")
|
||||
elif not lang == "en":
|
||||
logger.info("Your language is not supported")
|
||||
self.installTranslator(self.translator)
|
||||
|
||||
# Style
|
||||
self.setStyleSheet(open(style_path + "RareStyle.qss").read())
|
||||
self.setWindowIcon(QIcon(style_path + "Logo.png"))
|
||||
|
||||
self.launch_dialog = LaunchDialog(self.core)
|
||||
self.launch_dialog.start_app.connect(self.start_app)
|
||||
self.launch_dialog.show()
|
||||
|
||||
def start_app(self):
|
||||
self.mainwindow = MainWindow(self.core)
|
||||
self.launch_dialog.close()
|
||||
|
||||
|
||||
def main():
|
||||
core = LegendaryCore()
|
||||
app = QApplication([])
|
||||
app.setApplicationName("Rare")
|
||||
app.setOrganizationName("Rare")
|
||||
# app.setQuitOnLastWindowClosed(False)
|
||||
|
||||
settings = QSettings()
|
||||
# Translator
|
||||
translator = QTranslator()
|
||||
lang = settings.value("language", get_lang(), type=str)
|
||||
|
||||
if os.path.exists(lang_path + lang + ".qm"):
|
||||
translator.load(lang_path + lang + ".qm")
|
||||
elif not lang == "en":
|
||||
logger.info("Your language is not supported")
|
||||
app.installTranslator(translator)
|
||||
# Style
|
||||
app.setStyleSheet(open(style_path + "RareStyle.qss").read())
|
||||
app.setWindowIcon(QIcon(style_path + "Logo.png"))
|
||||
launch_dialog = LaunchDialog(core)
|
||||
launch_dialog.exec_()
|
||||
mainwindow = MainWindow(core)
|
||||
|
||||
app = App()
|
||||
app.exec_()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
Loading…
Reference in a new issue