diff options
author | Jeremy Thurgood <firxen@gmail.com> | 2012-10-08 16:58:12 +0200 |
---|---|---|
committer | Jeremy Thurgood <firxen@gmail.com> | 2012-10-08 16:58:12 +0200 |
commit | 5028d7d597f8036b2e0d2828930c53a0095d2fd2 (patch) | |
tree | bc4e9e3441d99caceb8dd8df331c4319c676124b /demo | |
parent | 5632e2997f26becc2476816a40879b0826f25d0e (diff) | |
download | cffi-5028d7d597f8036b2e0d2828930c53a0095d2fd2.tar.gz |
Implement enough extra bits to make pypy REPL and Twisted trial happy.less-partial-curses-demo
Diffstat (limited to 'demo')
-rw-r--r-- | demo/_curses.py | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/demo/_curses.py b/demo/_curses.py index 8747582..ec41ef3 100644 --- a/demo/_curses.py +++ b/demo/_curses.py @@ -22,6 +22,11 @@ static const int KEY_MIN, KEY_MAX; 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 @@ class Window(object): initscr = Window +_setupterm_called = False + + +def _ensure_setupterm_called(): + if not _setupterm_called: + raise error("must call (at least) setupterm() first") + -def setupterm(term=ffi.NULL, fd=-1): +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 @@ def setupterm(term=ffi.NULL, fd=-1): 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 |