diff --git a/demo/_curses.py b/demo/_curses.py index 46d7c3ff403163b407a74834a5ae0267c44ece21_ZGVtby9fY3Vyc2VzLnB5..9793a0cbb33d258028d2a6683d4cef1dc1c37098_ZGVtby9fY3Vyc2VzLnB5 100644 --- 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,4 +210,5 @@ initscr = Window +_setupterm_called = False @@ -208,5 +214,13 @@ -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