From b2c3245e20b930165b2097df1968ed4d4e86bc4f Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Sun, 10 Nov 2013 13:05:04 -0800 Subject: [PATCH] Preferences partially working now Former-commit-id: 1d8395b26b30b13c2d9af76ef509ac84bada79ec --- ui/preferences.ui | 9 ++++-- yomi_base/defaults.json | 19 +++++------ yomi_base/gen/about_ui.py | 2 +- yomi_base/gen/preferences_ui.py | 23 +++++++------- yomi_base/gen/reader_ui.py | 2 +- yomi_base/gen/resources_rc.py | 2 +- yomi_base/preferences.py | 56 ++++++++++++++++++++++++++------- 7 files changed, 75 insertions(+), 38 deletions(-) diff --git a/ui/preferences.ui b/ui/preferences.ui index ea7209b..6582cdf 100644 --- a/ui/preferences.ui +++ b/ui/preferences.ui @@ -129,6 +129,9 @@ + + false + Anki @@ -197,12 +200,12 @@ - Show settings for + Profile - + Vocabulary @@ -212,7 +215,7 @@ - + Kanji diff --git a/yomi_base/defaults.json b/yomi_base/defaults.json index 1dd6b4d..0f834a9 100644 --- a/yomi_base/defaults.json +++ b/yomi_base/defaults.json @@ -1,13 +1,14 @@ { - "bgColor": 4294967295, - "checkForUpdates": true, - "fontFamily": "Arial", - "fgColor": 4278190080, - "fontSize": 12, - "loadRecentFile": true, - "recentFiles": [], - "scanLength": 16, - "stripReadings": false, + "bgColor": 4294967295, + "checkForUpdates": true, + "fgColor": 4278190080, + "fontFamily": "Arial", + "fontSize": 12, + "loadRecentFile": true, + "profiles": {}, + "recentFiles": [], + "scanLength": 16, + "stripReadings": false, "tags": [], "wordWrap": false } diff --git a/yomi_base/gen/about_ui.py b/yomi_base/gen/about_ui.py index 5229ca4..eabb966 100644 --- a/yomi_base/gen/about_ui.py +++ b/yomi_base/gen/about_ui.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'ui/about.ui' # -# Created: Sun Nov 10 11:59:08 2013 +# Created: Sun Nov 10 12:44:02 2013 # by: PyQt4 UI code generator 4.10 # # WARNING! All changes made in this file will be lost! diff --git a/yomi_base/gen/preferences_ui.py b/yomi_base/gen/preferences_ui.py index e9ae27f..d9b3be1 100644 --- a/yomi_base/gen/preferences_ui.py +++ b/yomi_base/gen/preferences_ui.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'ui/preferences.ui' # -# Created: Sun Nov 10 11:59:08 2013 +# Created: Sun Nov 10 12:44:02 2013 # by: PyQt4 UI code generator 4.10 # # WARNING! All changes made in this file will be lost! @@ -94,6 +94,7 @@ class Ui_DialogPreferences(object): self.verticalLayout_3.addWidget(self.textSample) self.tabWidget.addTab(self.tabAppearance, _fromUtf8("")) self.tabAnki = QtGui.QWidget() + self.tabAnki.setEnabled(False) self.tabAnki.setObjectName(_fromUtf8("tabAnki")) self.verticalLayout_2 = QtGui.QVBoxLayout(self.tabAnki) self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2")) @@ -139,13 +140,13 @@ class Ui_DialogPreferences(object): self.label = QtGui.QLabel(self.tabAnki) self.label.setObjectName(_fromUtf8("label")) self.horizontalLayout_2.addWidget(self.label) - self.radioButtonSettingsVocab = QtGui.QRadioButton(self.tabAnki) - self.radioButtonSettingsVocab.setChecked(True) - self.radioButtonSettingsVocab.setObjectName(_fromUtf8("radioButtonSettingsVocab")) - self.horizontalLayout_2.addWidget(self.radioButtonSettingsVocab) - self.radioButtonSettingsKanji = QtGui.QRadioButton(self.tabAnki) - self.radioButtonSettingsKanji.setObjectName(_fromUtf8("radioButtonSettingsKanji")) - self.horizontalLayout_2.addWidget(self.radioButtonSettingsKanji) + self.radioButtonVocab = QtGui.QRadioButton(self.tabAnki) + self.radioButtonVocab.setChecked(True) + self.radioButtonVocab.setObjectName(_fromUtf8("radioButtonVocab")) + self.horizontalLayout_2.addWidget(self.radioButtonVocab) + self.radioButtonKanji = QtGui.QRadioButton(self.tabAnki) + self.radioButtonKanji.setObjectName(_fromUtf8("radioButtonKanji")) + self.horizontalLayout_2.addWidget(self.radioButtonKanji) spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_2.addItem(spacerItem) self.verticalLayout_2.addLayout(self.horizontalLayout_2) @@ -181,9 +182,9 @@ class Ui_DialogPreferences(object): item.setText(_translate("DialogPreferences", "Field", None)) item = self.tableFields.horizontalHeaderItem(1) item.setText(_translate("DialogPreferences", "Value", None)) - self.label.setText(_translate("DialogPreferences", "Show settings for", None)) - self.radioButtonSettingsVocab.setText(_translate("DialogPreferences", "Vocabulary", None)) - self.radioButtonSettingsKanji.setText(_translate("DialogPreferences", "Kanji", None)) + self.label.setText(_translate("DialogPreferences", "Profile", None)) + self.radioButtonVocab.setText(_translate("DialogPreferences", "Vocabulary", None)) + self.radioButtonKanji.setText(_translate("DialogPreferences", "Kanji", None)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabAnki), _translate("DialogPreferences", "Anki", None)) import resources_rc diff --git a/yomi_base/gen/reader_ui.py b/yomi_base/gen/reader_ui.py index 927d431..f801380 100644 --- a/yomi_base/gen/reader_ui.py +++ b/yomi_base/gen/reader_ui.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'ui/reader.ui' # -# Created: Sun Nov 10 11:59:08 2013 +# Created: Sun Nov 10 12:44:02 2013 # by: PyQt4 UI code generator 4.10 # # WARNING! All changes made in this file will be lost! diff --git a/yomi_base/gen/resources_rc.py b/yomi_base/gen/resources_rc.py index 33ec0dd..5133f26 100644 --- a/yomi_base/gen/resources_rc.py +++ b/yomi_base/gen/resources_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: Sun Nov 10 11:59:08 2013 +# Created: Sun Nov 10 12:44:02 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! diff --git a/yomi_base/preferences.py b/yomi_base/preferences.py index 858b4f0..e78b905 100644 --- a/yomi_base/preferences.py +++ b/yomi_base/preferences.py @@ -18,6 +18,7 @@ from PyQt4 import QtGui, QtCore from gen import preferences_ui +import copy class DialogPreferences(QtGui.QDialog, preferences_ui.Ui_DialogPreferences): @@ -49,14 +50,10 @@ class DialogPreferences(QtGui.QDialog, preferences_ui.Ui_DialogPreferences): self.comboFontFamily.setCurrentFont(font) self.spinFontSize.setValue(font.pointSize()) - self.tabAnki.setEnabled(self.anki is not None) if self.anki is not None: - self.comboBoxDeck.addItems(self.anki.deckNames()) - self.comboBoxDeck.setCurrentIndex(self.comboBoxDeck.findText(self.preferences.ankiDeck)) - self.comboBoxModel.blockSignals(True) - self.comboBoxModel.addItems(self.anki.modelNames()) - self.comboBoxModel.blockSignals(False) - self.comboBoxModel.setCurrentIndex(self.comboBoxModel.findText(self.preferences.ankiModel)) + self.tabAnki.setEnabled(True) + self.profiles = copy.deepcopy(self.preferences['profiles']) + self.profileToDialog() def dialogToData(self): @@ -66,9 +63,30 @@ class DialogPreferences(QtGui.QDialog, preferences_ui.Ui_DialogPreferences): self.preferences['stripReadings'] = self.checkStripReadings.isChecked() if self.anki is not None: - self.preferences.ankiDeck = unicode(self.comboBoxDeck.currentText()) - self.preferences.ankiModel = unicode(self.comboBoxModel.currentText()) - self.preferences.ankiFields = self.ankiFields() + self.dialogToProfile() + self.preferences['profiles'] = self.profiles + + + def dialogToProfile(self): + self.setActiveProfile({ + 'deck': unicode(self.comboBoxDeck.currentText()), + 'model': unicode(self.comboBoxModel.currentText()), + 'fields': self.ankiFields() + }) + + + def profileToDialog(self): + profile = self.activeProfile() + + deck = str() if profile is None else profile['deck'] + model = str() if profile is None else profile['model'] + + self.comboBoxDeck.addItems(self.anki.deckNames()) + self.comboBoxDeck.setCurrentIndex(self.comboBoxDeck.findText(deck)) + self.comboBoxModel.blockSignals(True) + self.comboBoxModel.addItems(self.anki.modelNames()) + self.comboBoxModel.blockSignals(False) + self.comboBoxModel.setCurrentIndex(self.comboBoxModel.findText(model)) def updateSampleText(self): @@ -83,7 +101,7 @@ class DialogPreferences(QtGui.QDialog, preferences_ui.Ui_DialogPreferences): self.textSample.setFont(font) - def setFields(self, fields, fieldsPrefs): + def setAnkiFields(self, fields, fieldsPrefs): if fields is None: fields = list() @@ -145,4 +163,18 @@ class DialogPreferences(QtGui.QDialog, preferences_ui.Ui_DialogPreferences): def onModelChanged(self, index): modelName = self.comboBoxModel.currentText() fieldNames = self.anki.modelFieldNames(modelName) or list() - self.setFields(fieldNames, self.preferences.ankiFields) + + profile = self.activeProfile() + fields = dict() if profile is None else profile['fields'] + + self.setAnkiFields(fieldNames, fields) + + + def activeProfile(self): + key = 'vocab' if self.radioButtonVocab.isChecked() else 'kanji' + return self.profiles.get(key) + + + def setActiveProfile(self, profile): + key = 'vocab' if self.radioButtonVocab.isChecked() else 'kanji' + self.profiles[key] = profile