first version of new api

This commit is contained in:
2017-10-22 09:48:08 +02:00
parent 8e91f94379
commit 22a4aa81dc
12 changed files with 1250 additions and 35 deletions

View File

@ -270,7 +270,7 @@ class Property(object):
raise ConfigError(_('cannot add those properties: {0}').format(propname))
self._properties.add(propname)
if save:
self._setting._setproperties(self._properties, self._opt, self._path, force=True)
self._setting.setproperties(self._properties, self._opt, self._path, force=True)
def remove(self, propname):
"""Removes a property named propname
@ -280,7 +280,7 @@ class Property(object):
"""
if propname in self._properties:
self._properties.remove(propname)
self._setting._setproperties(self._properties, self._opt, self._path)
self._setting.setproperties(self._properties, self._opt, self._path)
def extend(self, propnames):
"""Extends properties to the existing properties
@ -290,7 +290,7 @@ class Property(object):
"""
for propname in propnames:
self._append(propname, save=False)
self._setting._setproperties(self._properties, self._opt, self._path)
self._setting.setproperties(self._properties, self._opt, self._path)
def reset(self):
"""resets the properties (does not **clear** the properties,
@ -353,11 +353,14 @@ class Settings(object):
path = opt.impl_getpath(self._getcontext())
return self.getproperties(opt, path)
def getproperties(self, opt, path, setting_properties=undefined):
return Property(self,
self._getproperties(opt, path,
setting_properties=setting_properties),
opt, path)
def getproperties(self, opt, path, setting_properties=undefined, index=None, obj=True):
"""get properties for a specified option
"""
properties = self._getproperties(opt, path, index=index,
setting_properties=setting_properties)
if obj:
return Property(self, properties, opt, path)
return properties
def __setitem__(self, opt, value): # pragma: optional cover
raise ValueError(_('you should only append/remove properties'))
@ -435,20 +438,25 @@ class Settings(object):
props = self._p_.getproperties(None, default_properties)
if propname not in props:
props.add(propname)
self._setproperties(props, None, None)
self.setproperties(props, None, None)
def remove(self, propname):
"deletes property propname in the Config's properties attribute"
props = self._p_.getproperties(None, default_properties)
if propname in props:
props.remove(propname)
self._setproperties(props, None, None)
self.setproperties(props, None, None)
def extend(self, propnames):
for propname in propnames:
self.append(propname)
def _setproperties(self, properties, opt, path, force=False):
"""just for compatibility
"""
self.setproperties(properties, opt, path, force)
def setproperties(self, properties, opt, path, force=False):
"""save properties for specified path
(never save properties if same has option properties)
"""
@ -617,7 +625,7 @@ class Settings(object):
props = props | append
modified = True
if modified:
self._setproperties(props, None, None)
self.setproperties(props, None, None)
def read_only(self):
"convenience method to freeze, hide and disable"