Source code for RWESharp.ui.splashuiconnector
import os.path
from RWESharp.ui.uiscripts.splash import Ui_Splash
from PySide6.QtWidgets import QSplashScreen
from RWESharp.Loaders.Loader import Loader
from RWESharp.utils import log
from PySide6.QtWidgets import QMessageBox
from RWESharp.info import drizzle_exists, REPO_DATABASE, PATH_DRIZZLE
from RWESharp.Loaders.Database import RWESharpDatabase
[docs]
class SplashDialog(QSplashScreen):
[docs]
def __init__(self, callback, parent=None):
super().__init__(parent)
# self.manager = manager
self.ui = Ui_Splash()
self.ui.setupUi(self)
self.hasdrizzle = self.check_drizzle()
self.loader = Loader(self)
self.loader.finished.connect(callback)
# self.loader.finished.connect(self.loader.deleteLater)
self.loader.finished.connect(self.close)
self.loader.start()
log("Loading Drizzle Data...")
self.show()
# self.setWindowFlag(Qt.WindowType.SplashScreen, True)
# self.layout = QVBoxLayout(self.ui.widget)
# self.ui.widget.setLayout(self.layout)
# self.vid = QVideoWidget(self.ui.widget)
# self.player = QMediaPlayer()
# self.layout.addWidget(self.vid)
# self.player.setSource("F:/Desktop/RWE#/Every 2012 intro.mp4")
# self.player.setVideoOutput(self.vid)
# self.audio_output = QAudioOutput()
# self.player.setAudioOutput(self.audio_output)
# self.player.play()
# self.player.mediaStatusChanged.connect(self.frame) # hehe funny thing
# @Slot(QMediaPlayer.MediaStatus)
# def frame(self, status: QMediaPlayer.MediaStatus):
# if status == status.EndOfMedia:
# print("end")
[docs]
def check_drizzle(self):
if not drizzle_exists:
message = QMessageBox()
message.setIcon(QMessageBox.Icon.Warning)
text = f"Drizzle is not installed!\nWould you like for RWE# to download it automatically from Database?"
message.setText(text)
message.setDetailedText("RWE# cannot function without drizzle!")
# todo insert server link
message.setStandardButtons(QMessageBox.StandardButton.Close | QMessageBox.StandardButton.Yes)
message.setDefaultButton(QMessageBox.StandardButton.Close)
value = message.exec()
if value == QMessageBox.StandardButton.Close:
return False
database = RWESharpDatabase(REPO_DATABASE)
connection = database.connect()
if not connection:
print("Failed to connect to Database! No way to install Drizzle")
return False
link = database.get_drizzle_link()
if link is None:
print("Drizzle not found! Cannot proceed without Drizzle")
return False
installed = database.install_drizzle_from_link(link)
if not installed:
print("Drizzle is failed to install! Cannot proceed without Drizzle")
return False
return os.path.exists(PATH_DRIZZLE)
return True
[docs]
def printmessage(self, message, message2=None):
self.ui.label.setText(message)
if message2 is not None:
self.ui.label_2.setText(message2)