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)