Fix staticMetaObject handling in qenum_key.
Since we checked on klass instead of base, there never was a staticMetaObject and the slower path was always taken - this corrects that.
This commit is contained in:
parent
10298e9692
commit
caedb57e56
@ -106,19 +106,21 @@ def qenum_key(base, value, add_base=False, klass=None):
|
|||||||
klass = value.__class__
|
klass = value.__class__
|
||||||
if klass == int:
|
if klass == int:
|
||||||
raise TypeError("Can't guess enum class of an int!")
|
raise TypeError("Can't guess enum class of an int!")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
idx = klass.staticMetaObject.indexOfEnumerator(klass.__name__)
|
idx = base.staticMetaObject.indexOfEnumerator(klass.__name__)
|
||||||
|
ret = base.staticMetaObject.enumerator(idx).valueToKey(value)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
idx = -1
|
ret = None
|
||||||
if idx != -1:
|
|
||||||
ret = klass.staticMetaObject.enumerator(idx).valueToKey(value)
|
if ret is None:
|
||||||
else:
|
|
||||||
for name, obj in vars(base).items():
|
for name, obj in vars(base).items():
|
||||||
if isinstance(obj, klass) and obj == value:
|
if isinstance(obj, klass) and obj == value:
|
||||||
ret = name
|
ret = name
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
ret = '0x{:04x}'.format(int(value))
|
ret = '0x{:04x}'.format(int(value))
|
||||||
|
|
||||||
if add_base and hasattr(base, '__name__'):
|
if add_base and hasattr(base, '__name__'):
|
||||||
return '.'.join([base.__name__, ret])
|
return '.'.join([base.__name__, ret])
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user