Use a metaclass for Enums for easier reverse mapping
This commit is contained in:
parent
4ebe643ea6
commit
9cf713cbe4
@ -226,7 +226,7 @@ class HintManager(QObject):
|
|||||||
target = Target.bgtab
|
target = Target.bgtab
|
||||||
else:
|
else:
|
||||||
target = self._target
|
target = self._target
|
||||||
self.set_open_target.emit(Target.reverse_mapping[target])
|
self.set_open_target.emit(Target[target])
|
||||||
point = elem.geometry().topLeft()
|
point = elem.geometry().topLeft()
|
||||||
scrollpos = self._frame.scrollPosition()
|
scrollpos = self._frame.scrollPosition()
|
||||||
logging.debug("Clicking on \"{}\" at {}/{} - {}/{}".format(
|
logging.debug("Clicking on \"{}\" at {}/{} - {}/{}".format(
|
||||||
|
@ -27,7 +27,6 @@ _UNSET = object()
|
|||||||
|
|
||||||
|
|
||||||
def enum(*items, **named):
|
def enum(*items, **named):
|
||||||
|
|
||||||
"""Factory for simple enumerations.
|
"""Factory for simple enumerations.
|
||||||
|
|
||||||
We really don't need more complex things here, so we don't use python3.4's
|
We really don't need more complex things here, so we don't use python3.4's
|
||||||
@ -40,9 +39,19 @@ def enum(*items, **named):
|
|||||||
**named: Items to have a given position/number.
|
**named: Items to have a given position/number.
|
||||||
"""
|
"""
|
||||||
enums = dict(zip(items, range(len(items))), **named)
|
enums = dict(zip(items, range(len(items))), **named)
|
||||||
reverse = dict((v, k) for k, v in enums.items())
|
return EnumBase('Enum', (), enums)
|
||||||
enums['reverse_mapping'] = reverse
|
|
||||||
return type('Enum', (), enums)
|
|
||||||
|
class EnumBase(type):
|
||||||
|
|
||||||
|
"""Metaclass for enums to provide __getitem__ for reverse mapping."""
|
||||||
|
|
||||||
|
def __init__(cls, name, base, fields):
|
||||||
|
super().__init__(name, base, fields)
|
||||||
|
cls._mapping = dict((v, k) for k, v in fields.items())
|
||||||
|
|
||||||
|
def __getitem__(cls, key):
|
||||||
|
return cls._mapping[key]
|
||||||
|
|
||||||
|
|
||||||
class NeighborList:
|
class NeighborList:
|
||||||
|
Loading…
Reference in New Issue
Block a user