refactor: global Settings class

This commit is contained in:
283375 2023-09-07 18:32:35 +08:00
parent 88bd04ad92
commit 7bc8780cb0

View File

@ -1,4 +1,5 @@
from PySide6.QtCore import QDir, QSettings, QUrl import sys
from PySide6.QtCore import QSettings, QFileInfo
__all__ = [ __all__ = [
"DATABASE_URL", "DATABASE_URL",
@ -10,7 +11,9 @@ __all__ = [
"Settings", "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" DEVICES_JSON_FILE = "Ocr/DevicesJsonFile"
DEVICE_UUID = "Ocr/DeviceUuid" DEVICE_UUID = "Ocr/DeviceUuid"
@ -18,73 +21,76 @@ TESSERACT_FILE = "Ocr/TesseractFile"
KNN_MODEL_FILE = "Ocr/KnnModelFile" KNN_MODEL_FILE = "Ocr/KnnModelFile"
SIFT_DATABASE_FILE = "Ocr/SiftDatabaseFile" SIFT_DATABASE_FILE = "Ocr/SiftDatabaseFile"
ANDREAL_PATH = "Andreal/AndrealFolderPath"
ANDREAL_EXECUTABLE = "Andreal/AndrealExecutable"
class Settings(QSettings): class Settings(QSettings):
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__( super().__init__(
QDir.current().absoluteFilePath("arcaea_offline.ini"), QFileInfo(sys.argv[0]).dir().absoluteFilePath("arcaea_offline.ini"),
QSettings.Format.IniFormat, QSettings.Format.IniFormat,
parent, parent,
) )
def databaseUrl(self) -> str | None: def _strItem(self, key: str) -> str | None:
return self.value(DATABASE_URL, None, str) 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): def setDatabaseUrl(self, value: str):
self.setValue(DATABASE_URL, value) self._setStrItem(DATABASE_URL, value)
self.sync()
def devicesJsonFile(self) -> str | None: def devicesJsonFile(self):
return self.value(DEVICES_JSON_FILE, None, str) return self._strItem(DEVICES_JSON_FILE)
def setDevicesJsonFile(self, path: str): def setDevicesJsonFile(self, value: str):
self.setValue(DEVICES_JSON_FILE, path) self._setStrItem(DEVICES_JSON_FILE, value)
self.sync()
def resetDevicesJsonFile(self): def resetDevicesJsonFile(self):
self.setValue(DEVICES_JSON_FILE, None) self._resetStrItem(DEVICES_JSON_FILE)
self.sync()
def deviceUuid(self) -> str | None: def deviceUuid(self):
return self.value(DEVICE_UUID, None, str) return self._strItem(DEVICE_UUID)
def setDeviceUuid(self, uuid: str): def setDeviceUuid(self, value: str):
self.setValue(DEVICE_UUID, uuid) self._setStrItem(DEVICE_UUID, value)
self.sync()
def resetDeviceUuid(self): def resetDeviceUuid(self):
self.setValue(DEVICE_UUID, None) self._resetStrItem(DEVICE_UUID)
self.sync()
def tesseractPath(self): def tesseractPath(self):
return self.value(TESSERACT_FILE, None, str) return self._strItem(TESSERACT_FILE)
def setTesseractPath(self, path: str): def setTesseractPath(self, value: str):
self.setValue(TESSERACT_FILE, path) self._setStrItem(TESSERACT_FILE, value)
self.sync()
def resetTesseractPath(self): def resetTesseractPath(self):
self.setValue(TESSERACT_FILE, None) self._resetStrItem(TESSERACT_FILE)
self.sync()
def knnModelFile(self) -> str | None: def knnModelFile(self):
return self.value(KNN_MODEL_FILE, None, str) return self._strItem(KNN_MODEL_FILE)
def setKnnModelFile(self, path: str): def setKnnModelFile(self, value: str):
self.setValue(KNN_MODEL_FILE, path) self._setStrItem(KNN_MODEL_FILE, value)
self.sync()
def resetKnnModelFile(self): def resetKnnModelFile(self):
self.setValue(KNN_MODEL_FILE, None) self._resetStrItem(KNN_MODEL_FILE)
self.sync()
def siftDatabaseFile(self) -> str | None: def siftDatabaseFile(self):
return self.value(SIFT_DATABASE_FILE, None, str) return self._strItem(SIFT_DATABASE_FILE)
def setSiftDatabaseFile(self, path: str): def setSiftDatabaseFile(self, value: str):
self.setValue(SIFT_DATABASE_FILE, path) self._setStrItem(SIFT_DATABASE_FILE, value)
self.sync()
def resetSiftDatabaseFile(self): def resetSiftDatabaseFile(self):
self.setValue(SIFT_DATABASE_FILE, None) self._resetStrItem(SIFT_DATABASE_FILE)
self.sync()