Source code for psi.experiment.preferences

import logging
log = logging.getLogger(__name__)

from atom.api import List, Str, Value
from enaml.core.api import Declarative, d_, d_func


[docs] class Preferences(Declarative): name = d_(Str())
[docs] @d_func def get_object(self, workbench): raise NotImplementedError
[docs] @d_func def set_preferences(self, workbench, preferences): raise NotImplementedError
[docs] @d_func def get_preferences(self, workbench): raise NotImplementedError
class _AutoPreferences(Preferences): auto_save = d_(List()) def get_object(self, workbench): raise NotImplementedError @d_func def set_preferences(self, workbench, preferences): obj = self.get_object(workbench) for m, v in preferences.items(): try: setattr(obj, m, v) except AttributeError as e: log.warn(e) pass @d_func def get_preferences(self, workbench): obj = self.get_object(workbench) return {m: getattr(obj, m) for m in self.auto_save}
[docs] class ItemPreferences(_AutoPreferences): item = d_(Value())
[docs] def get_object(self, workbench): return self.item
[docs] class PluginPreferences(_AutoPreferences): plugin_id = d_(Str())
[docs] def get_object(self, workbench): return workbench.get_plugin(self.plugin_id)