tuikit/widgets/textbox.py
changeset 111 b055add74b18
parent 109 105b1affc3c2
child 112 ce2e67e7bbb8
--- a/tuikit/widgets/textbox.py	Wed Sep 03 19:13:37 2014 +0200
+++ b/tuikit/widgets/textbox.py	Wed Sep 03 19:14:43 2014 +0200
@@ -60,28 +60,38 @@
                 buffer.puts(line, 0, j)
             #self.cursor = (self._spot.x, self._spot.y)
 
-    def keypress(self, keyname, char, mod=0):
-        if keyname:
-            if keyname == 'left':        self.move_left()
-            if keyname == 'right':       self.move_right()
-            if keyname == 'home':        self.move_home()
-            if keyname == 'end':         self.move_end()
-            if keyname == 'up':          self.move_up()
-            if keyname == 'down':        self.move_down()
-            if keyname == 'pageup':      self.move_pageup()
-            if keyname == 'pagedown':    self.move_pagedown()
-            if keyname == 'backspace':   self.backspace()
-            if keyname == 'delete':      self.del_char()
-            if keyname == 'enter':       self.add_newline(move=True)
-            if mod == MOD_CTRL:
-                if keyname == 'home':    self.move_top()
-                if keyname == 'end':     self.move_bottom()
+    def keypress_event(self, ev):
+        if ev.keyname and not ev.mods:
+            consumed = True
+            if   ev.keyname == 'left':        self.move_left()
+            elif ev.keyname == 'right':       self.move_right()
+            elif ev.keyname == 'home':        self.move_home()
+            elif ev.keyname == 'end':         self.move_end()
+            elif ev.keyname == 'up':          self.move_up()
+            elif ev.keyname == 'down':        self.move_down()
+            elif ev.keyname == 'pageup':      self.move_pageup()
+            elif ev.keyname == 'pagedown':    self.move_pagedown()
+            elif ev.keyname == 'backspace':   self.backspace()
+            elif ev.keyname == 'delete':      self.del_char()
+            elif ev.keyname == 'enter':       self.add_newline(move=True)
+            else:
+                consumed = False
+            if consumed:
+                return True
+        if ev.mods:
+            consumed = True
+            mk = ev.mod_key()
+            if   mk == 'ctrl+home':    self.move_top()
+            elif mk == 'ctrl+end':     self.move_bottom()
+            else:
+                consumed = False
+            if consumed:
+                return True
 
-        if char:
-            self.add_char(char)
+        if ev.char and not ev.keyname:
+            self.add_char(ev.char)
             self.move_right()
-
-        #self.redraw()
+            return True
 
     def on_mousedown(self, ev):
         y = ev.wy