60 lines
2 KiB
Text
60 lines
2 KiB
Text
python early hide:
|
|
|
|
class _ObjectNamespace(object):
|
|
def __init__(self, nso, name):
|
|
self.nso = nso
|
|
self.name = name
|
|
|
|
def set(self, name, value):
|
|
setattr(self.nso, name, value)
|
|
|
|
def set_default(self, name, value):
|
|
raise Exception("The default statement can not be used with the {} namespace.".format(self.name))
|
|
|
|
class _PersistentNamespace(object):
|
|
def set(self, name, value):
|
|
if getattr(persistent, name) is None:
|
|
setattr(persistent, name, value)
|
|
|
|
def set_default(self, name, value):
|
|
if getattr(persistent, name) is None:
|
|
setattr(persistent, name, value)
|
|
|
|
class _PreferencesNamespace(object):
|
|
|
|
def set(self, name, value):
|
|
raise Exception("The define statement can not be used with the preferences namespace.")
|
|
|
|
def set_default(self, name, value):
|
|
|
|
undefined = object()
|
|
|
|
if not isinstance(persistent._preference_default, dict):
|
|
persistent._preference_default = { }
|
|
|
|
old_default = persistent._preference_default.get(name, undefined)
|
|
|
|
if old_default != value:
|
|
setattr(_preferences, name, value)
|
|
persistent._preference_default[name] = value
|
|
|
|
default_field = "default_" + name
|
|
|
|
# This ensures we don't conflict with the old way of doing
|
|
# things.
|
|
if hasattr(config, default_field):
|
|
setattr(config, default_field, value)
|
|
|
|
class _GuiNamespace(object):
|
|
def set(self, name, value):
|
|
setattr(gui, name, value)
|
|
|
|
def set_default(self, name, value):
|
|
setattr(gui, name, value)
|
|
|
|
|
|
config.special_namespaces["store.config"] = _ObjectNamespace(config, "config")
|
|
config.special_namespaces["store.persistent"] = _PersistentNamespace()
|
|
config.special_namespaces["store.preferences"] = _PreferencesNamespace()
|
|
config.special_namespaces["store.gui"] = _GuiNamespace()
|
|
|