# HG changeset patch # User Radek Brich # Date 1317983774 -7200 # Node ID 472a753664f90b3587320b2edc16d0840e765fdd # Parent 5e78d52ebb2428c55a3d075bb14e6b4d53eefacf Update utf8 character input to Python3. Reorganize tests. diff -r 5e78d52ebb24 -r 472a753664f9 .hgignore --- a/.hgignore Fri Oct 07 12:02:33 2011 +0200 +++ b/.hgignore Fri Oct 07 12:36:14 2011 +0200 @@ -2,3 +2,7 @@ tuikit/.*\.pyc docs/_build tuikit\.log +old +\.project +\.pydevproject +\.settings diff -r 5e78d52ebb24 -r 472a753664f9 demo_input.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/demo_input.py Fri Oct 07 12:36:14 2011 +0200 @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import locale +locale.setlocale(locale.LC_ALL, '') + +from tuikit import * + + +class MyApplication(Application): + def __init__(self): + Application.__init__(self) + self.top.connect('keypress', self.globalkeypress) + + self.text = '' + textedit = TextEdit(100, 40, self.text) + self.top.add(textedit) + textedit.x = 2 + self.textedit = textedit + + + def globalkeypress(self, keyname, char): + if char == 'q': + self.terminate() + self.text += 'keyname: %s char: %s\n' % (keyname, char) + self.textedit.settext(self.text) + self.textedit.scrolltoend() + + +if __name__ == '__main__': + app = MyApplication() + app.start() + diff -r 5e78d52ebb24 -r 472a753664f9 tests/curses_getkey.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/curses_getkey.py Fri Oct 07 12:36:14 2011 +0200 @@ -0,0 +1,18 @@ +#!/usr/bin/python +# coding=UTF-8 + +import curses +import locale + +locale.setlocale(locale.LC_ALL, "") + +def doStuff(stdscr): + message = "Press 'q' to quit.\n" + stdscr.addstr(0, 0, message, 0) + while True: + c = stdscr.getkey() # pauses until a key's hit + if c == 'q': + break + stdscr.addstr('%s %r\n' % (c, c)) + +curses.wrapper(doStuff) diff -r 5e78d52ebb24 -r 472a753664f9 tests/curses_keycodes.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/curses_keycodes.py Fri Oct 07 12:36:14 2011 +0200 @@ -0,0 +1,28 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import curses +import locale + +locale.setlocale(locale.LC_ALL,"") + +def doStuff(screen): + screen.addstr('termname: %s\n' % curses.termname()) + screen.keypad(0) + screen.scrollok(1) + curses.nl() + curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION) + while True: + c = screen.getch() + + screen.nodelay(1) + while c != -1: + screen.addstr('0x%02x,' % c) + c = screen.getch() + screen.nodelay(0) + + screen.addstr('\n') + + screen.refresh() + +curses.wrapper(doStuff) diff -r 5e78d52ebb24 -r 472a753664f9 tests/curses_mouse.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/curses_mouse.py Fri Oct 07 12:36:14 2011 +0200 @@ -0,0 +1,29 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import curses +import locale + +locale.setlocale(locale.LC_ALL,"") + +def doStuff(screen): + screen.addstr('%s\n' % curses.termname()) + screen.keypad(1) + screen.scrollok(1) + curses.nl() + curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION) + curses.mouseinterval(0) # do not wait to detect clicks, we use only press/release + while True: + c = screen.getch() + char = ' ' + if c < 256: + char = curses.unctrl(c) + screen.addstr('key: %x %s\n' % (c, char)) + + if c == curses.KEY_MOUSE: + m = curses.getmouse() + screen.addstr('(%d %d %d %d %x)\n' % m) + + screen.refresh() + +curses.wrapper(doStuff) diff -r 5e78d52ebb24 -r 472a753664f9 tests/curses_unicode.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/curses_unicode.py Fri Oct 07 12:36:14 2011 +0200 @@ -0,0 +1,18 @@ +#!/usr/bin/python +# coding=UTF-8 + +import curses +import locale + +locale.setlocale(locale.LC_ALL, "") + +def doStuff(stdscr): + message = "Žlutý kůň.\nPress 'q' to quit.\n" + stdscr.addstr(0, 0, message, 0) + while True: + c = stdscr.getch() # pauses until a key's hit + if c == ord('q'): + break + stdscr.addch(c) + +curses.wrapper(doStuff) diff -r 5e78d52ebb24 -r 472a753664f9 tests/input.py --- a/tests/input.py Fri Oct 07 12:02:33 2011 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import locale -locale.setlocale(locale.LC_ALL, '') - -from tuikit import * - - -class MyApplication(Application): - def __init__(self): - Application.__init__(self) - self.top.connect('keypress', self.globalkeypress) - - self.text = '' - textedit = TextEdit(100, 40, self.text) - self.top.add(textedit) - textedit.x = 2 - self.textedit = textedit - - - def globalkeypress(self, keyname, char): - if char == 'q': - self.terminate() - self.text += 'keyname: %s char: %s\n' % (keyname, char) - self.textedit.settext(self.text) - self.textedit.scrolltoend() - - -if __name__ == '__main__': - app = MyApplication() - app.start() - diff -r 5e78d52ebb24 -r 472a753664f9 tests/keycodes.py --- a/tests/keycodes.py Fri Oct 07 12:02:33 2011 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -import curses -import locale - -locale.setlocale(locale.LC_ALL,"") - -def doStuff(screen): - screen.addstr('termname: %s\n' % curses.termname()) - screen.keypad(0) - screen.scrollok(1) - curses.nl() - curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION) - while True: - c = screen.getch() - - screen.nodelay(1) - while c != -1: - screen.addstr('0x%02x,' % c) - c = screen.getch() - screen.nodelay(0) - - screen.addstr('\n') - - screen.refresh() - -curses.wrapper(doStuff) diff -r 5e78d52ebb24 -r 472a753664f9 tests/mouse.py --- a/tests/mouse.py Fri Oct 07 12:02:33 2011 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -import curses -import locale - -locale.setlocale(locale.LC_ALL,"") - -def doStuff(screen): - screen.addstr('%s\n' % curses.termname()) - screen.keypad(1) - screen.scrollok(1) - curses.nl() - curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION) - curses.mouseinterval(0) # do not wait to detect clicks, we use only press/release - while True: - c = screen.getch() - char = ' ' - if c < 256: - char = curses.unctrl(c) - screen.addstr('key: %x %s\n' % (c, char)) - - if c == curses.KEY_MOUSE: - m = curses.getmouse() - screen.addstr('(%d %d %d %d %x)\n' % m) - - screen.refresh() - -curses.wrapper(doStuff) diff -r 5e78d52ebb24 -r 472a753664f9 tests/unicode.py --- a/tests/unicode.py Fri Oct 07 12:02:33 2011 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -#!/usr/bin/python -# coding=UTF-8 - -import curses -import locale - -locale.setlocale(locale.LC_ALL, "") - -def doStuff(stdscr): - message = "Žlutý kůň.\nPress 'q' to quit.\n" - stdscr.addstr(0, 0, message, 0) - while True: - c = stdscr.getch() # pauses until a key's hit - if c == ord('q'): - break - stdscr.addch(c) - -curses.wrapper(doStuff) diff -r 5e78d52ebb24 -r 472a753664f9 tuikit/backend_curses.py --- a/tuikit/backend_curses.py Fri Oct 07 12:02:33 2011 +0200 +++ b/tuikit/backend_curses.py Fri Oct 07 12:36:14 2011 +0200 @@ -448,12 +448,12 @@ def process_utf8_chars(self): #FIXME read exact number of chars as defined by utf-8 - utf = '' + utf = [] while len(utf) <= 6: c = self.inputqueue_get_wait() - utf += chr(c) + utf.append(c) try: - uni = str(utf, 'utf-8') + uni = str(bytes(utf), 'utf-8') return [('keypress', None, uni)] except UnicodeDecodeError: continue