prefs.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. class Prefs(object):
  2. def __init__(self):
  3. self.prefs = {}
  4. self.callbacks = {}
  5. def set(self, key, value):
  6. """Set the value of `key` preference to `value`."""
  7. if key in self.callbacks:
  8. self.callbacks[key](value)
  9. else:
  10. self.prefs[key] = value
  11. def add(self, key, value):
  12. """Add an entry to a list preference
  13. Add `value` to the list of entries for the `key` preference.
  14. """
  15. if not key in self.prefs:
  16. self.prefs[key] = []
  17. self.prefs[key].append(value)
  18. def get(self, key, default=None):
  19. """Get the value of the key preference"""
  20. return self.prefs.get(key, default)
  21. def add_callback(self, key, callback):
  22. """Add `key` preference with `callback` function
  23. Whenever `key` is set the callback is called with the
  24. given `value` as parameter.
  25. """
  26. self.callbacks[key] = callback
  27. def __setitem__(self, key, value):
  28. self.set(key, value)
  29. def __getitem__(self, key):
  30. return self.get(key)