def gproperty(name, ptype, default=None, nick='', blurb='',
              flags=gobject.PARAM_READWRITE, **kwargs):
    """Add a GObject property to the current object.

    :param name:   name of property
    :param ptype:   type of property
    :param default:  default value
    :param nick:     short description
    :param blurb:    long description
    :param flags:    parameter flags, a combination of:
      - PARAM_READABLE
      - PARAM_READWRITE
      - PARAM_WRITABLE
      - PARAM_CONSTRUCT
      - PARAM_CONSTRUCT_ONLY
      - PARAM_LAX_VALIDATION

    Optional, only for int, float, long types:

    :param minimum: minimum allowed value
    :param: maximum: maximum allowed value
    """

    # General type checking
    if default is None:
        default = _DEFAULT_VALUES.get(ptype)
    elif not isinstance(default, ptype):
        raise TypeError("default must be of type %s, not %r" % (
            ptype, default))
    if not isinstance(nick, str):
        raise TypeError('nick for property %s must be a string, not %r' % (
            name, nick))
    nick = nick or name
    if not isinstance(blurb, str):
        raise TypeError('blurb for property %s must be a string, not %r' % (
            name, blurb))

    # Specific type checking
    if ptype == int or ptype == float or ptype == long:
        default = (kwargs.get('minimum', ptype(0)),
                   kwargs.get('maximum', _MAX_VALUES[ptype]),
                   default)
    elif ptype == bool:
        if default is not True and default is not False:
            raise TypeError("default must be True or False, not %r" % default)
        default = default,
    elif gobject.type_is_a(ptype, gobject.GEnum):
        if default is None:
            raise TypeError("enum properties needs a default value")
        elif not isinstance(default, ptype):
            raise TypeError("enum value %s must be an instance of %r" %
                            (default, ptype))
        default = default,
    elif ptype == str:
        default = default,
    elif ptype == object:
        if default is not None:
            raise TypeError("object types does not have default values")
        default = ()
    else:
        raise NotImplementedError("type %r" % ptype)

    if flags < 0 or flags > 32:
        raise TypeError("invalid flag value: %r" % (flags,))

    frame = sys._getframe(1)
    try:
        locals = frame.f_locals
        dict = locals.setdefault('__gproperties__', {})
    finally:
        del frame

    dict[name] = (ptype, nick, blurb) + default + (flags,)
def gproperty ( name , ptype , default = None , nick = '' , blurb = '' , flags = gobject . PARAM_READWRITE , ** kwargs ) : if default is None : default = _DEFAULT_VALUES . get ( ptype ) elif not isinstance ( default , ptype ) : raise TypeError ( "default must be of type %s, not %r" % ( ptype , default ) ) if not isinstance ( nick , str ) : raise TypeError ( 'nick for property %s must be a string, not %r' % ( name , nick ) ) nick = nick or name if not isinstance ( blurb , str ) : raise TypeError ( 'blurb for property %s must be a string, not %r' % ( name , blurb ) ) if ptype == int or ptype == float or ptype == long : default = ( kwargs . get ( 'minimum' , ptype ( 0 ) ) , kwargs . get ( 'maximum' , _MAX_VALUES [ ptype ] ) , default ) elif ptype == bool : if default is not True and default is not False : raise TypeError ( "default must be True or False, not %r" % default ) default = default , elif gobject . type_is_a ( ptype , gobject . GEnum ) : if default is None : raise TypeError ( "enum properties needs a default value" ) elif not isinstance ( default , ptype ) : raise TypeError ( "enum value %s must be an instance of %r" % ( default , ptype ) ) default = default , elif ptype == str : default = default , elif ptype == object : if default is not None : raise TypeError ( "object types does not have default values" ) default = ( ) else : raise NotImplementedError ( "type %r" % ptype ) if flags < 0 or flags > 32 : raise TypeError ( "invalid flag value: %r" % ( flags , ) ) frame = sys . _getframe ( 1 ) try : locals = frame . f_locals dict = locals . setdefault ( '__gproperties__' , { } ) finally : del frame dict [ name ] = ( ptype , nick , blurb ) + default + ( flags , )
Add a GObject property to the current object.

    :param name:   name of property
    :param ptype:   type of property
    :param default:  default value
    :param nick:     short description
    :param blurb:    long description
    :param flags:    parameter flags, a combination of:
      - PARAM_READABLE
      - PARAM_READWRITE
      - PARAM_WRITABLE
      - PARAM_CONSTRUCT
      - PARAM_CONSTRUCT_ONLY
      - PARAM_LAX_VALIDATION

    Optional, only for int, float, long types:

    :param minimum: minimum allowed value
    :param: maximum: maximum allowed value