def main(): sys.excepthook = exception_logger os.environ['QT_MAC_WANTS_LAYER'] = '1' # Workaround for https://bugreports.qt.io/browse/QTBUG-87014 error = init_and_check_db(get_app_path()) if error.code == LedgerInitError.EmptyDbInitialized: # If DB was just created from SQL - initialize it again error = init_and_check_db(get_app_path()) app = QApplication([]) language = JalDB().get_language_code(JalSettings().getValue('Language', default=1)) translator = QTranslator(app) language_file = get_app_path() + Setup.LANG_PATH + os.sep + language + '.qm' translator.load(language_file) app.installTranslator(translator) if error.code == LedgerInitError.OutdatedDbSchema: error = update_db_schema(get_app_path()) if error.code == LedgerInitError.DbInitSuccess: error = init_and_check_db(get_app_path()) if error.code != LedgerInitError.DbInitSuccess: window = QMessageBox() window.setAttribute(Qt.WA_DeleteOnClose) window.setWindowTitle("JAL: Start-up aborted") window.setIcon(QMessageBox.Critical) window.setText(error.message) window.setInformativeText(error.details) else: window = MainWindow(language) window.show() app.exec() app.removeTranslator(translator)
def showInvalidConfigErrorDialog(self: Any) -> QMessageBox: messagebox = QMessageBox(self) messagebox.setWindowTitle('Invalid game path' if self else getTitleString('Invalid game path')) messagebox.setText(f''' <p style="margin:10px 15px 10px 5px;"><b>Invalid game or config path.</b><br> Please restart w3modmanager and enter the paths of<br> your The Witcher 3 installation and the game config folder<br> (usually <code>User/Documents/The Witcher 3</code>). </p> <p style="margin:10px 15px 10px 5px;"><small> For updates and information visit <br> <a href="{w3modmanager.URL_WEB}" style="text-decoration:none;">\ {removeUrlScheme(w3modmanager.URL_WEB)}\ </a> </small></p> ''') messagebox.setTextFormat(Qt.RichText) messagebox.setIconPixmap(messagebox.windowIcon().pixmap( messagebox.windowIcon().actualSize(QSize(64, 64)))) messagebox.setStandardButtons(QMessageBox.Ok) messagebox.setAttribute(Qt.WA_DeleteOnClose) messagebox.layout().setContentsMargins(5, 5, 5, 5) messagebox.setModal(True) messagebox.open() return messagebox
def showAboutDialog(self: Any) -> QMessageBox: messagebox = QMessageBox(self) messagebox.setWindowTitle('About' if self else getTitleString('About')) messagebox.setText(f''' <p style="margin:0 15px 0 0;"> <b>{w3modmanager.TITLE} {w3modmanager.VERSION}</b> <small>{f'({w3modmanager.VERSION_HASH})' if w3modmanager.VERSION_HASH else ''}</small><br> {w3modmanager.SUBTITLE}<br> <br> For updates and information visit <br> <a href="{w3modmanager.URL_WEB}" style="text-decoration:none;">\ {removeUrlScheme(w3modmanager.URL_WEB)}\ </a><br> <br> Thank you for using {w3modmanager.TITLE}! </p> ''') # TODO: enhancement: check if new version is available messagebox.setTextFormat(Qt.RichText) messagebox.setIconPixmap(messagebox.windowIcon().pixmap( messagebox.windowIcon().actualSize(QSize(64, 64)))) messagebox.setMinimumSize(QSize(500, 500)) messagebox.setStandardButtons(QMessageBox.Ok) messagebox.setAttribute(Qt.WA_DeleteOnClose) messagebox.layout().setContentsMargins(5, 5, 5, 5) messagebox.setModal(True) messagebox.open() return messagebox
def showAboutWindow(self): about_box = QMessageBox(self) about_box.setAttribute(Qt.WA_DeleteOnClose) about_box.setWindowTitle(self.tr("About")) title = self.tr("<h3>JAL</h3><p>Just Another Ledger, version {version}</p>".format(version=__version__)) about_box.setText(title) about = self.tr("<p>More information, manuals and problem reports are at " "<a href=https://github.com/titov-vv/jal>github home page</a></p>" "<p>Questions, comments, help or donations:</p>" "<p><a href=mailto:[email protected]>[email protected]</a></p>" "<p><a href=https://t.me/jal_support>Telegram</a></p>") about_box.setInformativeText(about) about_box.show()