# HG changeset patch # User Dirk Olmes # Date 1273842135 -7200 # Node ID be990ac6e47868eb5ac9f6fa3539de4de51e6a03 # Parent 12ed8b5fa08c251b16587805a71089886cba3602 saving the preference "start maximized" from GUI implemented diff -r 12ed8b5fa08c -r be990ac6e478 Preference.py --- a/Preference.py Fri May 14 08:31:46 2010 +0200 +++ b/Preference.py Fri May 14 15:02:15 2010 +0200 @@ -1,12 +1,8 @@ class Preference(object): @staticmethod - def valueForKey(key, session): - pref = session.query(Preference).filter(Preference.key == key).first() - if pref is not None: - return pref.value - else: - return None + def forKey(key, session): + return session.query(Preference).filter(Preference.key == key).first() def __init__(self, key, value): self.key = key diff -r 12ed8b5fa08c -r be990ac6e478 Preferences.py --- a/Preferences.py Fri May 14 08:31:46 2010 +0200 +++ b/Preferences.py Fri May 14 15:02:15 2010 +0200 @@ -7,10 +7,27 @@ class Preferences(object): def __init__(self, session): self.session = session + self.cache = {} + + def _cachedPreference(self, key, defaultValue=None): + if self.cache.has_key(key): + return self.cache[key] + else: + pref = Preference.forKey(key, self.session) + if pref is None: + pref = Preference(key, defaultValue) + self.session.add(pref) + self.cache[key] = pref + return pref def startMaximized(self): - value = Preference.valueForKey(START_MAXIMIZED, self.session) - if value is not None: - return util.str2bool(value) - else: - return False + pref = self._cachedPreference(START_MAXIMIZED, False) + return util.str2bool(pref.value) + + def setStartMaximized(self, flag): + """ Convert flag to boolean so that a defined value is stored in the DB """ + boolValue = False + if flag: + boolValue = True + pref = self._cachedPreference(START_MAXIMIZED) + pref.value = boolValue diff -r 12ed8b5fa08c -r be990ac6e478 PreferencesDialog.py --- a/PreferencesDialog.py Fri May 14 08:31:46 2010 +0200 +++ b/PreferencesDialog.py Fri May 14 15:02:15 2010 +0200 @@ -17,14 +17,14 @@ self.ui.startMaximized.setChecked(maximized) def startMaximizedChanged(self, change): - print("start maximized: " + str(change)) + self.preferences.setStartMaximized(change) def accept(self): - # TODO save the session + self.session.commit() QtGui.QDialog.accept(self) def reject(self): - # TODO revert the session + self.session.rollback() QtGui.QDialog.reject(self) \ No newline at end of file