Fix unicode support in console ui (#1307)

This commit is contained in:
John Garland 2010-06-07 19:49:09 +10:00
parent c06f905702
commit 81a837faed
1 changed files with 6 additions and 14 deletions

View File

@ -308,7 +308,7 @@ class Screen(CursesStdIO):
if c == curses.KEY_ENTER or c == 10: if c == curses.KEY_ENTER or c == 10:
if self.input: if self.input:
self.add_line(">>> " + self.input) self.add_line(">>> " + self.input)
self.command_parser(self.input) self.command_parser(self.input.encode(self.encoding))
if len(self.input_history) == INPUT_HISTORY_SIZE: if len(self.input_history) == INPUT_HISTORY_SIZE:
# Remove the oldest input history if the max history size # Remove the oldest input history if the max history size
# is reached. # is reached.
@ -404,21 +404,13 @@ class Screen(CursesStdIO):
if c > 31 and c < 256: if c > 31 and c < 256:
# Emulate getwch # Emulate getwch
stroke = chr(c) stroke = chr(c)
uchar = ""
uchar = None while not uchar:
while 1:
try: try:
uchar = stroke.decode(self.encoding) uchar = stroke.decode(self.encoding)
except UnicodeDecodeError: except UnicodeDecodeError:
pass c = self.stdscr.getch()
stroke += chr(c)
c = self.stdscr.getch()
if c == -1:
break
stroke += chr(c)
if uchar: if uchar:
if self.input_cursor == len(self.input): if self.input_cursor == len(self.input):
@ -426,7 +418,7 @@ class Screen(CursesStdIO):
else: else:
# Insert into string # Insert into string
self.input = self.input[:self.input_cursor] + uchar + self.input[self.input_cursor:] self.input = self.input[:self.input_cursor] + uchar + self.input[self.input_cursor:]
# Move the cursor forward # Move the cursor forward
self.input_cursor += 1 self.input_cursor += 1