コード例 #1
0
ファイル: _curses.py プロジェクト: abhinavthomas/pypy
def tigetstr(capname):
    _ensure_initialised_setupterm()
    if isinstance(capname, unicode):
        capname = capname.encode('ascii')
    val = lib.tigetstr(capname)
    if int(ffi.cast("intptr_t", val)) in (0, -1):
        return None
    return ffi.string(val)
コード例 #2
0
ファイル: _curses.py プロジェクト: solarmagic/hashcode
 def keyname(ch):
     _ensure_initialised()
     if ch < 0:
         raise error("invalid key number")
     knp = lib.keyname(ch)
     if knp == ffi.NULL:
         return ""
     return ffi.string(knp)
コード例 #3
0
def tigetstr(capname):
    _ensure_initialised_setupterm()
    if isinstance(capname, unicode):
        capname = capname.encode('ascii')
    val = lib.tigetstr(capname)
    if int(ffi.cast("intptr_t", val)) in (0, -1):
        return None
    return ffi.string(val)
コード例 #4
0
ファイル: _curses.py プロジェクト: abhinavthomas/pypy
 def keyname(ch):
     _ensure_initialised()
     if ch < 0:
         raise error("invalid key number")
     knp = lib.keyname(ch)
     if knp == ffi.NULL:
         return ""
     return ffi.string(knp)
コード例 #5
0
ファイル: _curses.py プロジェクト: abhinavthomas/pypy
    def instr(self, y, x, n=1023):
        n = min(n, 1023)
        buf = ffi.new("char[1024]")  # /* This should be big enough.. I hope */
        if y is None:
            code = lib.winnstr(self._win, buf, n)
        else:
            code = lib.mvwinnstr(self._win, y, x, buf, n)

        if code == lib.ERR:
            return ""
        return ffi.string(buf)
コード例 #6
0
ファイル: _curses.py プロジェクト: solarmagic/hashcode
    def instr(self, y, x, n=1023):
        n = min(n, 1023)
        buf = ffi.new("char[1024]")  # /* This should be big enough.. I hope */
        if y is None:
            code = lib.winnstr(self._win, buf, n)
        else:
            code = lib.mvwinnstr(self._win, y, x, buf, n)

        if code == lib.ERR:
            return ""
        return ffi.string(buf)
コード例 #7
0
ファイル: _curses.py プロジェクト: solarmagic/hashcode
def tparm(fmt, i1=0, i2=0, i3=0, i4=0, i5=0, i6=0, i7=0, i8=0, i9=0):
    args = [ffi.cast("int", i) for i in (i1, i2, i3, i4, i5, i6, i7, i8, i9)]
    # fmt is expected to be a byte string; CPython 3.x complains
    # "TypeError: 'str' does not support the buffer interface", but we
    # can do better.
    if isinstance(fmt, str):
        # error message modeled on "TypeError: must be str, not bytes"
        # that you get if you call curses.tigetstr(b'...') on CPython 3.x
        raise TypeError('must be bytes, not str')
    result = lib.tparm(fmt, *args)
    if result == ffi.NULL:
        raise error("tparm() returned NULL")
    return ffi.string(result)
コード例 #8
0
    def instr(self, y, x, n=1023):
        n = min(n, 1023)
        if n < 0:
            raise ValueError("'n' must be nonnegative")
        buf = ffi.new("char[1024]")  # /* This should be big enough.. I hope */
        if y is None:
            code = lib.winnstr(self._win, buf, n)
        else:
            code = lib.mvwinnstr(self._win, y, x, buf, n)

        if code == lib.ERR:
            return ""
        return ffi.string(buf)
コード例 #9
0
ファイル: _curses.py プロジェクト: Qointum/pypy
def tparm(fmt, i1=0, i2=0, i3=0, i4=0, i5=0, i6=0, i7=0, i8=0, i9=0):
    args = [ffi.cast("int", i) for i in (i1, i2, i3, i4, i5, i6, i7, i8, i9)]
    # fmt is expected to be a byte string; CPython 3.x complains
    # "TypeError: 'str' does not support the buffer interface", but we
    # can do better.
    if isinstance(fmt, str):
        # error message modeled on "TypeError: must be str, not bytes"
        # that you get if you call curses.tigetstr(b'...') on CPython 3.x
        raise TypeError('must be bytes, not str')
    result = lib.tparm(fmt, *args)
    if result == ffi.NULL:
        raise error("tparm() returned NULL")
    return ffi.string(result)
コード例 #10
0
ファイル: _curses.py プロジェクト: abhinavthomas/pypy
def _setup():
    for name in ['ERR', 'OK', 'KEY_MIN', 'KEY_MAX',
                 'A_ATTRIBUTES', 'A_NORMAL', 'A_STANDOUT', 'A_UNDERLINE',
                 'A_REVERSE', 'A_BLINK', 'A_DIM', 'A_BOLD', 'A_ALTCHARSET',
                 'A_PROTECT', 'A_CHARTEXT', 'A_COLOR',
                 'COLOR_BLACK', 'COLOR_RED', 'COLOR_GREEN', 'COLOR_YELLOW',
                 'COLOR_BLUE', 'COLOR_MAGENTA', 'COLOR_CYAN', 'COLOR_WHITE',
                 ]:
        _copy_to_globals(name)

    if not lib._m_NetBSD:
        _copy_to_globals('A_INVIS')

    for name in ['A_HORIZONTAL', 'A_LEFT', 'A_LOW', 'A_RIGHT', 'A_TOP',
                 'A_VERTICAL',
                 ]:
        if hasattr(lib, name):
            _copy_to_globals(name)

    if lib._m_NCURSES_MOUSE_VERSION:
        for name in ["BUTTON1_PRESSED", "BUTTON1_RELEASED", "BUTTON1_CLICKED",
                     "BUTTON1_DOUBLE_CLICKED", "BUTTON1_TRIPLE_CLICKED",
                     "BUTTON2_PRESSED", "BUTTON2_RELEASED", "BUTTON2_CLICKED",
                     "BUTTON2_DOUBLE_CLICKED", "BUTTON2_TRIPLE_CLICKED",
                     "BUTTON3_PRESSED", "BUTTON3_RELEASED", "BUTTON3_CLICKED",
                     "BUTTON3_DOUBLE_CLICKED", "BUTTON3_TRIPLE_CLICKED",
                     "BUTTON4_PRESSED", "BUTTON4_RELEASED", "BUTTON4_CLICKED",
                     "BUTTON4_DOUBLE_CLICKED", "BUTTON4_TRIPLE_CLICKED",
                     "BUTTON_SHIFT", "BUTTON_CTRL", "BUTTON_ALT",
                     "ALL_MOUSE_EVENTS", "REPORT_MOUSE_POSITION",
                     ]:
            _copy_to_globals(name)

    if not lib._m_NetBSD:
        for key in range(lib.KEY_MIN, lib.KEY_MAX):
            key_n = lib.keyname(key)
            if key_n == ffi.NULL:
                continue
            key_n = ffi.string(key_n)
            if key_n == b"UNKNOWN KEY":
                continue
            if not isinstance(key_n, str):   # python 3
                key_n = key_n.decode()
            key_n = key_n.replace('(', '').replace(')', '')
            globals()[key_n] = key
コード例 #11
0
ファイル: _curses.py プロジェクト: solarmagic/hashcode
    def getkey(self, *args):
        if len(args) == 0:
            val = lib.wgetch(self._win)
        elif len(args) == 2:
            val = lib.mvwgetch(self._win, *args)
        else:
            raise error("getkey requires 0 or 2 arguments")

        if val == lib.ERR:
            raise error("no input")
        elif val <= 255:
            return chr(val)
        else:
            # XXX: The following line is different if `__NetBSD__` is defined.
            val = lib.keyname(val)
            if val == ffi.NULL:
                return ""
            return ffi.string(val)
コード例 #12
0
ファイル: _curses.py プロジェクト: abhinavthomas/pypy
    def getkey(self, *args):
        if len(args) == 0:
            val = lib.wgetch(self._win)
        elif len(args) == 2:
            val = lib.mvwgetch(self._win, *args)
        else:
            raise error("getkey requires 0 or 2 arguments")

        if val == lib.ERR:
            raise error("no input")
        elif val <= 255:
            return chr(val)
        else:
            # XXX: The following line is different if `__NetBSD__` is defined.
            val = lib.keyname(val)
            if val == ffi.NULL:
                return ""
            return ffi.string(val)
コード例 #13
0
ファイル: _curses.py プロジェクト: captainsafia/livebook
def _setup():
    for name in [
        "ERR",
        "OK",
        "KEY_MIN",
        "KEY_MAX",
        "A_ATTRIBUTES",
        "A_NORMAL",
        "A_STANDOUT",
        "A_UNDERLINE",
        "A_REVERSE",
        "A_BLINK",
        "A_DIM",
        "A_BOLD",
        "A_ALTCHARSET",
        "A_PROTECT",
        "A_CHARTEXT",
        "A_COLOR",
        "COLOR_BLACK",
        "COLOR_RED",
        "COLOR_GREEN",
        "COLOR_YELLOW",
        "COLOR_BLUE",
        "COLOR_MAGENTA",
        "COLOR_CYAN",
        "COLOR_WHITE",
    ]:
        _copy_to_globals(name)

    if not lib._m_NetBSD:
        _copy_to_globals("A_INVIS")

    for name in ["A_HORIZONTAL", "A_LEFT", "A_LOW", "A_RIGHT", "A_TOP", "A_VERTICAL"]:
        if hasattr(lib, name):
            _copy_to_globals(name)

    if lib._m_NCURSES_MOUSE_VERSION:
        for name in [
            "BUTTON1_PRESSED",
            "BUTTON1_RELEASED",
            "BUTTON1_CLICKED",
            "BUTTON1_DOUBLE_CLICKED",
            "BUTTON1_TRIPLE_CLICKED",
            "BUTTON2_PRESSED",
            "BUTTON2_RELEASED",
            "BUTTON2_CLICKED",
            "BUTTON2_DOUBLE_CLICKED",
            "BUTTON2_TRIPLE_CLICKED",
            "BUTTON3_PRESSED",
            "BUTTON3_RELEASED",
            "BUTTON3_CLICKED",
            "BUTTON3_DOUBLE_CLICKED",
            "BUTTON3_TRIPLE_CLICKED",
            "BUTTON4_PRESSED",
            "BUTTON4_RELEASED",
            "BUTTON4_CLICKED",
            "BUTTON4_DOUBLE_CLICKED",
            "BUTTON4_TRIPLE_CLICKED",
            "BUTTON_SHIFT",
            "BUTTON_CTRL",
            "BUTTON_ALT",
            "ALL_MOUSE_EVENTS",
            "REPORT_MOUSE_POSITION",
        ]:
            _copy_to_globals(name)

    if not lib._m_NetBSD:
        for key in range(lib.KEY_MIN, lib.KEY_MAX):
            key_n = lib.keyname(key)
            if key_n == ffi.NULL:
                continue
            key_n = ffi.string(key_n)
            if key_n == b"UNKNOWN KEY":
                continue
            if not isinstance(key_n, str):  # python 3
                key_n = key_n.decode()
            key_n = key_n.replace("(", "").replace(")", "")
            globals()[key_n] = key
コード例 #14
0
ファイル: _curses.py プロジェクト: abhinavthomas/pypy
def tparm(fmt, i1=0, i2=0, i3=0, i4=0, i5=0, i6=0, i7=0, i8=0, i9=0):
    args = [ffi.cast("int", i) for i in (i1, i2, i3, i4, i5, i6, i7, i8, i9)]
    result = lib.tparm(fmt, *args)
    if result == ffi.NULL:
        raise error("tparm() returned NULL")
    return ffi.string(result)
コード例 #15
0
def tparm(fmt, i1=0, i2=0, i3=0, i4=0, i5=0, i6=0, i7=0, i8=0, i9=0):
    args = [ffi.cast("int", i) for i in (i1, i2, i3, i4, i5, i6, i7, i8, i9)]
    result = lib.tparm(fmt, *args)
    if result == ffi.NULL:
        raise error("tparm() returned NULL")
    return ffi.string(result)
コード例 #16
0
ファイル: _curses.py プロジェクト: solarmagic/hashcode
def tigetstr(capname):
    _ensure_initialised_setupterm()
    val = lib.tigetstr(capname.encode())
    if int(ffi.cast("intptr_t", val)) in (0, -1):
        return None
    return ffi.string(val)
コード例 #17
0
ファイル: _curses.py プロジェクト: solarmagic/hashcode
def _setup():
    for name in [
            'ERR',
            'OK',
            'KEY_MIN',
            'KEY_MAX',
            'A_ATTRIBUTES',
            'A_NORMAL',
            'A_STANDOUT',
            'A_UNDERLINE',
            'A_REVERSE',
            'A_BLINK',
            'A_DIM',
            'A_BOLD',
            'A_ALTCHARSET',
            'A_PROTECT',
            'A_CHARTEXT',
            'A_COLOR',
            'COLOR_BLACK',
            'COLOR_RED',
            'COLOR_GREEN',
            'COLOR_YELLOW',
            'COLOR_BLUE',
            'COLOR_MAGENTA',
            'COLOR_CYAN',
            'COLOR_WHITE',
    ]:
        _copy_to_globals(name)

    if not lib._m_NetBSD:
        _copy_to_globals('A_INVIS')

    for name in [
            'A_HORIZONTAL',
            'A_LEFT',
            'A_LOW',
            'A_RIGHT',
            'A_TOP',
            'A_VERTICAL',
    ]:
        if hasattr(lib, name):
            _copy_to_globals(name)

    if lib._m_NCURSES_MOUSE_VERSION:
        for name in [
                "BUTTON1_PRESSED",
                "BUTTON1_RELEASED",
                "BUTTON1_CLICKED",
                "BUTTON1_DOUBLE_CLICKED",
                "BUTTON1_TRIPLE_CLICKED",
                "BUTTON2_PRESSED",
                "BUTTON2_RELEASED",
                "BUTTON2_CLICKED",
                "BUTTON2_DOUBLE_CLICKED",
                "BUTTON2_TRIPLE_CLICKED",
                "BUTTON3_PRESSED",
                "BUTTON3_RELEASED",
                "BUTTON3_CLICKED",
                "BUTTON3_DOUBLE_CLICKED",
                "BUTTON3_TRIPLE_CLICKED",
                "BUTTON4_PRESSED",
                "BUTTON4_RELEASED",
                "BUTTON4_CLICKED",
                "BUTTON4_DOUBLE_CLICKED",
                "BUTTON4_TRIPLE_CLICKED",
                "BUTTON_SHIFT",
                "BUTTON_CTRL",
                "BUTTON_ALT",
                "ALL_MOUSE_EVENTS",
                "REPORT_MOUSE_POSITION",
        ]:
            _copy_to_globals(name)

    if not lib._m_NetBSD:
        for key in range(lib.KEY_MIN, lib.KEY_MAX):
            key_n = lib.keyname(key)
            if key_n == ffi.NULL:
                continue
            key_n = ffi.string(key_n)
            if key_n == b"UNKNOWN KEY":
                continue
            if not isinstance(key_n, str):  # python 3
                key_n = key_n.decode()
            key_n = key_n.replace('(', '').replace(')', '')
            globals()[key_n] = key
コード例 #18
0
ファイル: _curses.py プロジェクト: captainsafia/livebook
def tigetstr(capname):
    _ensure_initialised_setupterm()
    val = lib.tigetstr(capname)
    if int(ffi.cast("intptr_t", val)) in (0, -1):
        return None
    return ffi.string(val)