Ticket #1140: unicode_input.diff
File unicode_input.diff, 2.2 KB (added by nullie, 14 years ago) |
---|
-
trunk/deluge/ui/console/screen.py
385 385 self.display_lines_offset = 0 386 386 self.refresh() 387 387 388 # We remove the tab count if the key wasn't a tab 389 if c != 9: 390 self.tab_count = 0 391 388 392 # Delete a character in the input string based on cursor position 389 393 if c == curses.KEY_BACKSPACE or c == 127: 390 394 if self.input and self.input_cursor > 0: … … 397 401 398 402 # A key to add to the input string 399 403 else: 400 if c > 31 and c < 127: 401 if self.input_cursor == len(self.input): 402 self.input += chr(c) 403 else: 404 # Insert into string 405 self.input = self.input[:self.input_cursor] + chr(c) + self.input[self.input_cursor:] 406 # Move the cursor forward 407 self.input_cursor += 1 404 if c > 31 and c < 256: 405 # Emulate getwch 406 stroke = chr(c) 408 407 409 # We remove the tab count if the key wasn't a tab 410 if c != 9: 411 self.tab_count = 0 408 uchar = None 412 409 410 while 1: 411 try: 412 uchar = stroke.decode(self.encoding) 413 except UnicodeDecodeError: 414 pass 415 416 c = self.stdscr.getch() 417 418 if c == -1: 419 break 420 421 stroke += chr(c) 422 423 if uchar: 424 if self.input_cursor == len(self.input): 425 self.input += uchar 426 else: 427 # Insert into string 428 self.input = self.input[:self.input_cursor] + uchar + self.input[self.input_cursor:] 429 430 # Move the cursor forward 431 self.input_cursor += 1 432 413 433 # Update the input string on the screen 414 434 self.add_string(self.rows - 1, self.input) 415 435 self.stdscr.move(self.rows - 1, self.input_cursor)