--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tuikit/core/events.py Wed Sep 03 19:14:43 2014 +0200
@@ -0,0 +1,53 @@
+from collections import OrderedDict
+
+
+class Event:
+
+ """Base class for events."""
+
+ def __init__(self, event_name=None, arg_names=(), arg_values=()):
+ self.name = event_name
+ self.args = OrderedDict(zip(arg_names, arg_values))
+
+ def __getattr__(self, item):
+ if item in self.args:
+ return self.args[item]
+ else:
+ raise AttributeError(item)
+
+ def __getitem__(self, key):
+ return self.args[key]
+
+ def __repr__(self):
+ return '{}({})'.format(self.__class__.__name__,
+ ', '.join("%s=%r" % (k,v) for k,v
+ in self.args.items()))
+
+
+class ResizeEvent(Event):
+
+ def __init__(self, w, h):
+ Event.__init__(self, 'resize', ('w', 'h'), (w, h))
+
+
+class KeypressEvent(Event):
+
+ def __init__(self, keyname, char, mods):
+ Event.__init__(self, 'keypress',
+ ('keyname', 'char', 'mods'),
+ (keyname, char, mods))
+
+ def mod_key(self, sep='+'):
+ """Return combined key with modifiers.
+
+ E.g. "shift+tab"
+
+ Order of modifiers is fixed: ctrl, alt, meta, shift
+
+ """
+ res = []
+ for mod in ('ctrl', 'alt', 'meta', 'shift'):
+ if mod in self.mods:
+ res.append(mod)
+ res.append(self.keyname or self.char)
+ return sep.join(res)