# HG changeset patch # User Jeremy Thurgood <firxen@gmail.com> # Date 1349708292 -7200 # Mon Oct 08 16:58:12 2012 +0200 # Branch less-partial-curses-demo # Node ID 9793a0cbb33d258028d2a6683d4cef1dc1c37098 # Parent 46d7c3ff403163b407a74834a5ae0267c44ece21 Implement enough extra bits to make pypy REPL and Twisted trial happy. diff --git a/demo/_curses.py b/demo/_curses.py --- a/demo/_curses.py +++ b/demo/_curses.py @@ -22,6 +22,11 @@ int setupterm(char *term, int fildes, int *errret); +int tigetflag(char *); +int tigetnum(char *); +char *tigetstr(char *); +char *tparm (char *, ...); + int cbreak(void); int nocbreak(void); int echo(void); @@ -205,8 +210,17 @@ initscr = Window +_setupterm_called = False -def setupterm(term=ffi.NULL, fd=-1): + +def _ensure_setupterm_called(): + if not _setupterm_called: + raise error("must call (at least) setupterm() first") + + +def setupterm(term=None, fd=-1): + if term is None: + term = ffi.NULL if fd < 0: import sys fd = sys.stdout.fileno() @@ -219,6 +233,33 @@ else: s = "setupterm: unknown error %d" % err[0] raise error(s) + global _setupterm_called + _setupterm_called = True + + +def tigetflag(capname): + _ensure_setupterm_called() + return lib.tigetflag(capname) + + +def tigetnum(capname): + _ensure_setupterm_called() + return lib.tigetnum(capname) + + +def tigetstr(capname): + _ensure_setupterm_called() + out = lib.tigetstr(capname) + if out == ffi.NULL: + return None + return ffi.string(out) + + +def tparm(name, *args): + _ensure_setupterm_called() + cargs = [ffi.cast("long", arg) for arg in args] + return ffi.string(lib.tparm(name, *cargs)) + def color_pair(n): return n << 8