summaryrefslogtreecommitdiff
path: root/demo
diff options
context:
space:
mode:
authorJeremy Thurgood <firxen@gmail.com>2012-10-08 16:58:12 +0200
committerJeremy Thurgood <firxen@gmail.com>2012-10-08 16:58:12 +0200
commit5028d7d597f8036b2e0d2828930c53a0095d2fd2 (patch)
treebc4e9e3441d99caceb8dd8df331c4319c676124b /demo
parent5632e2997f26becc2476816a40879b0826f25d0e (diff)
downloadcffi-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.py43
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