1d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling"""curses 2d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling 3d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. KuchlingThe main package for curses support for Python. Normally used by importing 4d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchlingthe package, and perhaps a particular module inside it. 5d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling 6d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling import curses 7d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling from curses import textpad 814e27d896f5d07eb4f24aee1f76f3cafd66c2b2bAndrew Svetlov curses.initscr() 9d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling ... 10182b5aca27d376b08a2904bed42b751496f932f3Tim Peters 11d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling""" 12d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling 13d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling__revision__ = "$Id$" 14d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling 15d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchlingfrom _curses import * 16d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchlingfrom curses.wrapper import wrapper 17322349e31b3c1472543428382b84a32d2fc2dfc7Andrew M. Kuchlingimport os as _os 18734451a4bcc900fd9d159b0c6d4fcdca17cc31bbAndrew M. Kuchlingimport sys as _sys 19d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling 20289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling# Some constants, most notably the ACS_* ones, are only added to the C 21289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling# _curses module's dictionary after initscr() is called. (Some 22289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling# versions of SGI's curses don't define values for those constants 23289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling# until initscr() has been called.) This wrapper function calls the 24289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling# underlying C initscr(), and then copies the constants from the 25289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling# _curses module to the curses package's dictionary. Don't do 'from 26289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling# curses import *' if you'll be needing the ACS_* constants. 27289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling 28289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchlingdef initscr(): 29289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling import _curses, curses 30322349e31b3c1472543428382b84a32d2fc2dfc7Andrew M. Kuchling # we call setupterm() here because it raises an error 31322349e31b3c1472543428382b84a32d2fc2dfc7Andrew M. Kuchling # instead of calling exit() in error cases. 32734451a4bcc900fd9d159b0c6d4fcdca17cc31bbAndrew M. Kuchling setupterm(term=_os.environ.get("TERM", "unknown"), 33734451a4bcc900fd9d159b0c6d4fcdca17cc31bbAndrew M. Kuchling fd=_sys.__stdout__.fileno()) 34289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling stdscr = _curses.initscr() 35289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling for key, value in _curses.__dict__.items(): 36289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'): 37289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling setattr(curses, key, value) 38182b5aca27d376b08a2904bed42b751496f932f3Tim Peters 39289d9d422707d4ae3ab00e658c262d6dd3f75963Andrew M. Kuchling return stdscr 40d0939fa592ea5d4e3c627cc2355072e90acd2459Andrew M. Kuchling 4137f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchling# This is a similar wrapper for start_color(), which adds the COLORS and 4237f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchling# COLOR_PAIRS variables which are only available after start_color() is 4337f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchling# called. 44182b5aca27d376b08a2904bed42b751496f932f3Tim Peters 4537f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchlingdef start_color(): 4637f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchling import _curses, curses 4737f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchling retval = _curses.start_color() 4837f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchling if hasattr(_curses, 'COLORS'): 4937f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchling curses.COLORS = _curses.COLORS 5037f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchling if hasattr(_curses, 'COLOR_PAIRS'): 5137f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchling curses.COLOR_PAIRS = _curses.COLOR_PAIRS 52182b5aca27d376b08a2904bed42b751496f932f3Tim Peters return retval 5337f026381167db43ab3ccce59bfe26a098eeac56Andrew M. Kuchling 54b45bd325b5e816a939c78fc4a3f421cf65a9dc19Andrew M. Kuchling# Import Python has_key() implementation if _curses doesn't contain has_key() 55b45bd325b5e816a939c78fc4a3f421cf65a9dc19Andrew M. Kuchling 56b45bd325b5e816a939c78fc4a3f421cf65a9dc19Andrew M. Kuchlingtry: 57b45bd325b5e816a939c78fc4a3f421cf65a9dc19Andrew M. Kuchling has_key 58b45bd325b5e816a939c78fc4a3f421cf65a9dc19Andrew M. Kuchlingexcept NameError: 59b45bd325b5e816a939c78fc4a3f421cf65a9dc19Andrew M. Kuchling from has_key import has_key 60