Beispiel #1
0
 def set(self, x):
     if self._xtype is not None:
         if not isinstance(x, self._xtype):
             raise TTypeError(
                 "Invalid value for option `%s`: expected %s, "
                 "instead got %s" %
                 (self._name, name_type(self._xtype), name_type(type(x))))
     self._value = x
     if self._onchange is not None:
         self._onchange(x)
Beispiel #2
0
 def __setattr__(self, key, val):
     opt = self._get_opt(key)
     if isinstance(opt, DtOption):
         if is_type(val, opt.xtype):
             opt.value = val
         else:
             fullkey = self._prefix + key
             exptype = name_type(opt.xtype)
             acttype = name_type(type(val))
             raise TTypeError("Invalid value for option `%s`: expected "
                              "type %s, got %s instead" %
                              (fullkey, exptype, acttype))
     else:
         raise DtAttributeError("Cannot modify group of options `%s`" %
                                (self._prefix + key))
Beispiel #3
0
 def register_option(self, key, xtype, default, doc=None):
     assert isinstance(key, str)
     idot = key.find(".")
     if idot == 0:
         raise TValueError("Invalid option name `%s`" % key)
     elif idot > 0:
         prekey = key[:idot]
         preval = self._keyvals.get(prekey, None)
         if preval is None:
             preval = DtConfig(self._prefix + prekey)
             self._keyvals[prekey] = preval
         if isinstance(preval, DtConfig):
             subkey = key[idot + 1:]
             preval.register_option(subkey, xtype, default, doc)
         else:
             fullkey = self._prefix + key
             fullprekey = self._prefix + prekey
             raise TValueError("Cannot register option `%s` because `%s` "
                               "is already registered as an option"
                               % (fullkey, fullprekey))
     elif key in self._keyvals:
         fullkey = self._prefix + key
         raise TValueError("Option `%s` already registered" % fullkey)
     elif not (xtype is callable or is_type(default, xtype)):
         raise TValueError("Default value `%s` is not of type %s"
                           % (default, name_type(xtype)))
     else:
         opt = DtOption(xtype=xtype, default=default, doc=doc,
                        name=self._prefix + key)
         self._keyvals[key] = opt
Beispiel #4
0
 def __init__(self, name, default, doc=None, xtype=None, onchange=None):
     self._name = name
     self._default = default
     self._doc = doc
     self._value = default
     self._xtype = xtype
     self._onchange = onchange
     if xtype and not isinstance(default, xtype):
         raise TTypeError("Default value `%r` is not of type %s" %
                          (default, name_type(xtype)))