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)