diff -r ffa851df0825 -r 2fb8b9db1c86 symbian-qemu-0.9.1-12/python-2.6.1/Demo/curses/tclock.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symbian-qemu-0.9.1-12/python-2.6.1/Demo/curses/tclock.py Fri Jul 31 15:01:17 2009 +0100 @@ -0,0 +1,147 @@ +#!/usr/bin/env python +# +# $Id: tclock.py 46626 2006-06-03 23:07:21Z andrew.kuchling $ +# +# From tclock.c, Copyright Howard Jones , September 1994. + +from math import * +import curses, time + +ASPECT = 2.2 + +def sign(_x): + if _x < 0: return -1 + return 1 + +def A2XY(angle, radius): + return (int(round(ASPECT * radius * sin(angle))), + int(round(radius * cos(angle)))) + +def plot(x, y, col): + stdscr.addch(y, x, col) + +# draw a diagonal line using Bresenham's algorithm +def dline(pair, from_x, from_y, x2, y2, ch): + if curses.has_colors(): + stdscr.attrset(curses.color_pair(pair)) + + dx = x2 - from_x + dy = y2 - from_y + + ax = abs(dx * 2) + ay = abs(dy * 2) + + sx = sign(dx) + sy = sign(dy) + + x = from_x + y = from_y + + if ax > ay: + d = ay - ax // 2 + + while True: + plot(x, y, ch) + if x == x2: + return + + if d >= 0: + y += sy + d -= ax + x += sx + d += ay + else: + d = ax - ay // 2 + + while True: + plot(x, y, ch) + if y == y2: + return + + if d >= 0: + x += sx + d -= ay + y += sy + d += ax + +def main(win): + global stdscr + stdscr = win + + lastbeep = -1 + my_bg = curses.COLOR_BLACK + + stdscr.nodelay(1) + stdscr.timeout(0) +# curses.curs_set(0) + if curses.has_colors(): + curses.init_pair(1, curses.COLOR_RED, my_bg) + curses.init_pair(2, curses.COLOR_MAGENTA, my_bg) + curses.init_pair(3, curses.COLOR_GREEN, my_bg) + + cx = (curses.COLS - 1) // 2 + cy = curses.LINES // 2 + ch = min( cy-1, int(cx // ASPECT) - 1) + mradius = (3 * ch) // 4 + hradius = ch // 2 + sradius = 5 * ch // 6 + + for i in range(0, 12): + sangle = (i + 1) * 2.0 * pi / 12.0 + sdx, sdy = A2XY(sangle, sradius) + + stdscr.addstr(cy - sdy, cx + sdx, "%d" % (i + 1)) + + stdscr.addstr(0, 0, + "ASCII Clock by Howard Jones , 1994") + + sradius = max(sradius-4, 8) + + while True: + curses.napms(1000) + + tim = time.time() + t = time.localtime(tim) + + hours = t[3] + t[4] / 60.0 + if hours > 12.0: + hours -= 12.0 + + mangle = t[4] * 2 * pi / 60.0 + mdx, mdy = A2XY(mangle, mradius) + + hangle = hours * 2 * pi / 12.0 + hdx, hdy = A2XY(hangle, hradius) + + sangle = t[5] * 2 * pi / 60.0 + sdx, sdy = A2XY(sangle, sradius) + + dline(3, cx, cy, cx + mdx, cy - mdy, ord('#')) + + stdscr.attrset(curses.A_REVERSE) + dline(2, cx, cy, cx + hdx, cy - hdy, ord('.')) + stdscr.attroff(curses.A_REVERSE) + + if curses.has_colors(): + stdscr.attrset(curses.color_pair(1)) + + plot(cx + sdx, cy - sdy, ord('O')) + + if curses.has_colors(): + stdscr.attrset(curses.color_pair(0)) + + stdscr.addstr(curses.LINES - 2, 0, time.ctime(tim)) + stdscr.refresh() + if (t[5] % 5) == 0 and t[5] != lastbeep: + lastbeep = t[5] + curses.beep() + + ch = stdscr.getch() + if ch == ord('q'): + return 0 + + plot(cx + sdx, cy - sdy, ord(' ')) + dline(0, cx, cy, cx + hdx, cy - hdy, ord(' ')) + dline(0, cx, cy, cx + mdx, cy - mdy, ord(' ')) + +curses.wrapper(main)