def _readElement(self, element, key): keyType = PARAM_INFO[key][INFO_TYPE] resmgrAttr = { 'Bool': 'asBool', 'Int': 'asInt', 'Float': 'asFloat', 'String': 'asString' } #log.debug('read element as "{}" from section'.format(key)) if keyType in resmgrAttr: try: return getattr(element, resmgrAttr[keyType]) except: log.current_exception() elif keyType == 'Enum': try: v = element.asString e = PARAM_INFO[key][INFO_ENUM] if v in e: return v else: log.warning('found invalid item "{}", available only {}'.format(v, e)) return None except: log.current_exception() elif keyType == 'List': values = [] child = PARAM_INFO[key][INFO_CHILD] for k, v in element.items(): if k == child: v = self._readElement(v, k) if v: values.append(v) else: log.warning('found invalid tag "{}", available only "{}"'.format(k, child)) return values return None
def handleKeyEvent(self, event): if event.isKeyDown() and not event.isRepeatedEvent(): callback = self._callbacks.get(event.key, None) if callback: try: callback() except Exception: log.current_exception() return False
def __event_handler(prepend, e, m, *a, **k): try: if prepend: e.fire(*a, **k) r = m(*a, **k) else: r = m(*a, **k) e.fire(*a, **k) return r except: log.current_exception()