KeyPress/src/utils/settings.py

45 lines
2.6 KiB
Python

from PyQt5.QtCore import QSettings
class SettingsManager:
def __init__(self, company="FinnSoft", application="KeyPresser"):
self.settings = QSettings(company, application)
def save_settings(self, widget):
"""Save current settings from the main widget"""
self.settings.setValue("spaceCheckBox", widget.spaceCheckBox.isChecked())
self.settings.setValue("spaceIntervalLineEdit", widget.spaceIntervalLineEdit.text())
self.settings.setValue("mouseCheckBox", widget.mouseCheckBox.isChecked())
self.settings.setValue("mouseIntervalLineEdit", widget.mouseIntervalLineEdit.text())
self.settings.setValue("modeIndex", widget.modeComboBox.currentIndex())
self.settings.setValue("attachThread", widget.attachThreadCheckBox.isChecked())
self.settings.setValue("hotkeyIndex", widget.hotkeyComboBox.currentIndex())
for i in range(10):
self.settings.setValue(f"keyCheckBox{i}", widget.keyCheckBoxes[i].isChecked())
self.settings.setValue(f"keyCombo{i}", widget.keyCombos[i].currentIndex())
self.settings.setValue(f"intervalLineEdit{i}", widget.intervalLineEdits[i].text())
def load_settings(self, widget):
"""Load saved settings into the main widget"""
widget.mouseCheckBox.setChecked(self.settings.value("mouseCheckBox", False, type=bool))
widget.mouseIntervalLineEdit.setText(self.settings.value("mouseIntervalLineEdit", "1000"))
widget.spaceCheckBox.setChecked(self.settings.value("spaceCheckBox", False, type=bool))
widget.spaceIntervalLineEdit.setText(self.settings.value("spaceIntervalLineEdit", "1000"))
mode_index = self.settings.value("modeIndex", 0, type=int)
if 0 <= mode_index < widget.modeComboBox.count():
widget.modeComboBox.setCurrentIndex(mode_index)
widget.attachThreadCheckBox.setChecked(self.settings.value("attachThread", True, type=bool))
for i in range(10):
widget.keyCheckBoxes[i].setChecked(self.settings.value(f"keyCheckBox{i}", False, type=bool))
combo_index = self.settings.value(f"keyCombo{i}", 0, type=int)
if 0 <= combo_index < widget.keyCombos[i].count():
widget.keyCombos[i].setCurrentIndex(combo_index)
widget.intervalLineEdits[i].setText(self.settings.value(f"intervalLineEdit{i}", "1000"))
hotkey_index = self.settings.value("hotkeyIndex", 47, type=int) # Default to Home key
if 0 <= hotkey_index < widget.hotkeyComboBox.count():
widget.hotkeyComboBox.setCurrentIndex(hotkey_index)