"""Utility Functions.""" from typing import NoReturn, Self from PyQt6.QtCore import QCoreApplication, QDir, QStandardPaths, Qt from PyQt6.QtGui import QColor, QFont, QFontDatabase from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkDiskCache from PyQt6.QtSql import QSqlQuery translate = QCoreApplication.translate def query_error(query: QSqlQuery) -> NoReturn: """Standarized query error reporter.""" print( translate("MainWindow", "SQL Error:\n") + "{}\n{}\n{}:{}".format( query.executedQuery(), query.boundValues(), query.lastError().type(), query.lastError().text(), ) ) raise Exception(translate("MainWindow", "SQL Error")) class Resources: _instance = None nam = QNetworkAccessManager() headerFont: QFont labelFont: QFont boldFont: QFont textFont: QFont italicFont: QFont capsFont: QFont smallCapsFont: QFont phonicFont: QFont baseColor: QColor linkColor: QColor subduedColor: QColor def __new__(cls: type[Self]) -> Self: if cls._instance: return cls._instance cls._instance = super(Resources, cls).__new__(cls) # # Fonts # cls.headerFont = QFontDatabase.font("OpenDyslexic", None, 10) cls.headerFont.setPixelSize(48) cls.labelFont = QFont(cls.headerFont) cls.labelFont.setPixelSize(30) cls.boldFont = QFont(cls.headerFont) cls.boldFont.setPixelSize(20) cls.textFont = QFont(cls.boldFont) cls.italicFont = QFont(cls.boldFont) cls.capsFont = QFont(cls.boldFont) cls.smallCapsFont = QFont(cls.boldFont) cls.headerFont.setWeight(QFont.Weight.Bold) cls.boldFont.setBold(True) cls.italicFont.setItalic(True) print(f"Resources().italicFont: {cls.italicFont.toString()}") print(f"Resources().boldFont: {cls.boldFont.toString()}") cls.capsFont.setCapitalization(QFont.Capitalization.AllUppercase) cls.smallCapsFont.setCapitalization(QFont.Capitalization.SmallCaps) cls.phonicFont = QFontDatabase.font("Gentium", None, 10) cls.phonicFont.setPixelSize(20) # # colors # cls.baseColor = QColor(Qt.GlobalColor.white) cls.linkColor = QColor("#4a7d95") cls.subduedColor = QColor(Qt.GlobalColor.gray) # # Setup the Network Manager # cacheDir = QDir( QStandardPaths.writableLocation( QStandardPaths.StandardLocation.GenericCacheLocation ) ) cacheDir.mkdir("Troglodite") cacheDir = QDir(cacheDir.path() + QDir.separator() + "Troglodite") netCache = QNetworkDiskCache() netCache.setCacheDirectory(cacheDir.path()) cls.nam.setCache(netCache) return cls._instance