[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r9065 - trunk/gnue-forms/src/uidrivers/curses/widgets
From: |
johannes |
Subject: |
[gnue] r9065 - trunk/gnue-forms/src/uidrivers/curses/widgets |
Date: |
Mon, 27 Nov 2006 04:03:28 -0600 (CST) |
Author: johannes
Date: 2006-11-27 04:03:27 -0600 (Mon, 27 Nov 2006)
New Revision: 9065
Modified:
trunk/gnue-forms/src/uidrivers/curses/widgets/page.py
Log:
Improved get_key() method so it supports all utf encodings (and it's
prepared for resize events)
Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/page.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/page.py 2006-11-25
11:47:42 UTC (rev 9064)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/page.py 2006-11-27
10:03:27 UTC (rev 9065)
@@ -87,9 +87,35 @@
# -------------------------------------------------------------------------
+ def __get_next_key(self):
+
+ # In nodelay mode the result of getch() is -1 if there is no input.
+ # This appears to be returned after a window resize (RESIZE event) too.
+ code = -1
+ while code < 0:
+ code = self.__window.getch()
+
+ return code
+
+ # -------------------------------------------------------------------------
+
+ def __get_hibits(self, value):
+ """ Returns the number of set bits starting at the MSB """
+
+ result = 0
+ for i in range(7, -1, -1):
+ if value & (1 << i):
+ result += 1
+ else:
+ break
+
+ return result
+
+ # -------------------------------------------------------------------------
+
def __get_key(self):
- key = self.__window.getch()
+ key = self.__get_next_key()
# Function keys are returned as key-code
if key > 255:
@@ -97,8 +123,8 @@
result = [key]
if i18n.encoding.startswith('utf'):
- if (key > 127 and key <= 255):
- result.append(self.__window.getch())
+ for i in range(self.__get_hibits(key)-1):
+ result.append(self.__get_next_key())
return unicode("".join([chr(i) for i in result]), i18n.encoding)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r9065 - trunk/gnue-forms/src/uidrivers/curses/widgets,
johannes <=