1
0
Fork 0
mirror of synced 2024-07-03 05:31:23 +12:00
Rare/rare/components/dialogs/launch_dialog.py

91 lines
2.8 KiB
Python
Raw Normal View History

import os
2021-02-18 06:19:37 +13:00
from logging import getLogger
2021-08-17 08:50:31 +12:00
from PyQt5.QtCore import Qt, QThread, pyqtSignal
from PyQt5.QtWidgets import QDialog
2021-04-23 00:34:06 +12:00
from requests.exceptions import ConnectionError
2021-02-18 06:19:37 +13:00
from legendary.core import LegendaryCore
2021-08-17 09:08:15 +12:00
from rare import image_dir
2021-08-23 08:43:08 +12:00
2021-04-08 08:39:23 +12:00
from rare.components.dialogs.login import LoginDialog
from rare.ui.components.dialogs.launch_dialog import Ui_LaunchDialog
from rare.utils.utils import download_images
2021-02-23 07:02:49 +13:00
2021-02-18 06:19:37 +13:00
logger = getLogger("Login")
2021-02-23 07:02:49 +13:00
class ImageThread(QThread):
2021-02-18 06:19:37 +13:00
download_progess = pyqtSignal(int)
def __init__(self, core: LegendaryCore, parent=None):
super(ImageThread, self).__init__(parent)
2021-02-18 06:19:37 +13:00
self.core = core
def run(self):
download_images(self.download_progess, self.core)
self.download_progess.emit(100)
2021-02-18 06:19:37 +13:00
class LaunchDialog(QDialog, Ui_LaunchDialog):
quit_app = pyqtSignal(int)
2021-04-20 01:44:28 +12:00
start_app = pyqtSignal(bool)
def __init__(self, core: LegendaryCore, offline=False, parent=None):
super(LaunchDialog, self).__init__(parent=parent)
self.setupUi(self)
2021-06-04 09:33:36 +12:00
self.setAttribute(Qt.WA_DeleteOnClose, True)
2021-02-18 06:19:37 +13:00
self.core = core
self.offline = offline
self.image_thread = None
2021-04-20 01:44:28 +12:00
def login(self):
do_launch = True
try:
if self.offline:
pass
else:
if self.core.login():
logger.info("You are logged in")
else:
raise ValueError("You are not logged in. Open Login Window")
except ValueError as e:
logger.info(str(e))
do_launch = LoginDialog(core=self.core, parent=self).login()
except ConnectionError as e:
logger.warning(e)
self.offline = True
finally:
if do_launch:
self.show()
self.launch()
else:
self.quit_app.emit(0)
def launch(self):
2021-03-19 00:45:59 +13:00
# self.core = core
2021-08-17 09:08:15 +12:00
if not os.path.exists(image_dir):
os.makedirs(image_dir)
if not self.offline:
self.image_info.setText(self.tr("Downloading Images"))
self.image_thread = ImageThread(self.core, self)
self.image_thread.download_progess.connect(self.update_image_progbar)
self.image_thread.finished.connect(self.finish)
self.image_thread.finished.connect(lambda: self.image_info.setText(self.tr("Ready")))
self.image_thread.finished.connect(self.image_thread.quit)
self.image_thread.finished.connect(self.image_thread.deleteLater)
self.image_thread.start()
2021-06-12 10:29:55 +12:00
else:
self.finish()
def update_image_progbar(self, i: int):
self.image_prog_bar.setValue(i)
def finish(self):
self.image_info.setText(self.tr("Starting..."))
self.image_prog_bar.setValue(100)
self.start_app.emit(self.offline)