diff --git a/ui/extends/shared/settings.py b/ui/extends/shared/settings.py index ddbdb68..93fded4 100644 --- a/ui/extends/shared/settings.py +++ b/ui/extends/shared/settings.py @@ -1,4 +1,5 @@ -from PySide6.QtCore import QDir, QSettings, QUrl +import sys +from PySide6.QtCore import QSettings, QFileInfo __all__ = [ "DATABASE_URL", @@ -10,7 +11,9 @@ __all__ = [ "Settings", ] -DATABASE_URL = "General/DatabaseUrl" +# a key without slashes will appear in the "General" section +# see https://doc.qt.io/qt-6/qsettings.html#Format-enum for details +DATABASE_URL = "DatabaseUrl" DEVICES_JSON_FILE = "Ocr/DevicesJsonFile" DEVICE_UUID = "Ocr/DeviceUuid" @@ -18,73 +21,76 @@ TESSERACT_FILE = "Ocr/TesseractFile" KNN_MODEL_FILE = "Ocr/KnnModelFile" SIFT_DATABASE_FILE = "Ocr/SiftDatabaseFile" +ANDREAL_PATH = "Andreal/AndrealFolderPath" +ANDREAL_EXECUTABLE = "Andreal/AndrealExecutable" + class Settings(QSettings): def __init__(self, parent=None): super().__init__( - QDir.current().absoluteFilePath("arcaea_offline.ini"), + QFileInfo(sys.argv[0]).dir().absoluteFilePath("arcaea_offline.ini"), QSettings.Format.IniFormat, parent, ) - def databaseUrl(self) -> str | None: - return self.value(DATABASE_URL, None, str) + def _strItem(self, key: str) -> str | None: + return self.value(key, None, str) + + def _setStrItem(self, key: str, value: str): + self.setValue(key, value) + self.sync() + + def _resetStrItem(self, key: str): + self.setValue(key, None) + self.sync() + + def databaseUrl(self): + return self._strItem(DATABASE_URL) def setDatabaseUrl(self, value: str): - self.setValue(DATABASE_URL, value) - self.sync() + self._setStrItem(DATABASE_URL, value) - def devicesJsonFile(self) -> str | None: - return self.value(DEVICES_JSON_FILE, None, str) + def devicesJsonFile(self): + return self._strItem(DEVICES_JSON_FILE) - def setDevicesJsonFile(self, path: str): - self.setValue(DEVICES_JSON_FILE, path) - self.sync() + def setDevicesJsonFile(self, value: str): + self._setStrItem(DEVICES_JSON_FILE, value) def resetDevicesJsonFile(self): - self.setValue(DEVICES_JSON_FILE, None) - self.sync() + self._resetStrItem(DEVICES_JSON_FILE) - def deviceUuid(self) -> str | None: - return self.value(DEVICE_UUID, None, str) + def deviceUuid(self): + return self._strItem(DEVICE_UUID) - def setDeviceUuid(self, uuid: str): - self.setValue(DEVICE_UUID, uuid) - self.sync() + def setDeviceUuid(self, value: str): + self._setStrItem(DEVICE_UUID, value) def resetDeviceUuid(self): - self.setValue(DEVICE_UUID, None) - self.sync() + self._resetStrItem(DEVICE_UUID) def tesseractPath(self): - return self.value(TESSERACT_FILE, None, str) + return self._strItem(TESSERACT_FILE) - def setTesseractPath(self, path: str): - self.setValue(TESSERACT_FILE, path) - self.sync() + def setTesseractPath(self, value: str): + self._setStrItem(TESSERACT_FILE, value) def resetTesseractPath(self): - self.setValue(TESSERACT_FILE, None) - self.sync() + self._resetStrItem(TESSERACT_FILE) - def knnModelFile(self) -> str | None: - return self.value(KNN_MODEL_FILE, None, str) + def knnModelFile(self): + return self._strItem(KNN_MODEL_FILE) - def setKnnModelFile(self, path: str): - self.setValue(KNN_MODEL_FILE, path) - self.sync() + def setKnnModelFile(self, value: str): + self._setStrItem(KNN_MODEL_FILE, value) def resetKnnModelFile(self): - self.setValue(KNN_MODEL_FILE, None) - self.sync() + self._resetStrItem(KNN_MODEL_FILE) - def siftDatabaseFile(self) -> str | None: - return self.value(SIFT_DATABASE_FILE, None, str) + def siftDatabaseFile(self): + return self._strItem(SIFT_DATABASE_FILE) - def setSiftDatabaseFile(self, path: str): - self.setValue(SIFT_DATABASE_FILE, path) - self.sync() + def setSiftDatabaseFile(self, value: str): + self._setStrItem(SIFT_DATABASE_FILE, value) def resetSiftDatabaseFile(self): - self.setValue(SIFT_DATABASE_FILE, None) - self.sync() + self._resetStrItem(SIFT_DATABASE_FILE)