1
0
Fork 0
mirror of synced 2024-06-02 18:54:41 +12:00

Launch Dialog while Main app starting

This commit is contained in:
Dummerle 2021-03-24 17:01:12 +01:00
parent dd094f44d3
commit b3da3d50c9
6 changed files with 90 additions and 68 deletions

View file

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

View 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)

View file

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

View file

@ -88,7 +88,6 @@ class SyncSaves(QScrollArea):
self.setWidget(self.widget)
def reload(self):
print("reload")
self.setWidget(QWidget())
self.load_saves()
self.update()

View file

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

View file

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