\section{\module{macconsole} ---
         Think C's console package}

\declaremodule{builtin}{macconsole}
  \platform{Mac}
\modulesynopsis{Think C's console package.}


This module is available on the Macintosh, provided Python has been
built using the Think C compiler. It provides an interface to the
Think console package, with which basic text windows can be created.

\begin{datadesc}{options}
An object allowing you to set various options when creating windows,
see below.
\end{datadesc}

\begin{datadesc}{C_ECHO}
\dataline{C_NOECHO}
\dataline{C_CBREAK}
\dataline{C_RAW}
Options for the \code{setmode} method. \constant{C_ECHO} and
\constant{C_CBREAK} enable character echo, the other two disable it,
\constant{C_ECHO} and \constant{C_NOECHO} enable line-oriented input
(erase/kill processing, etc).
\end{datadesc}

\begin{funcdesc}{copen}{}
Open a new console window. Return a console window object.
\end{funcdesc}

\begin{funcdesc}{fopen}{fp}
Return the console window object corresponding with the given file
object. \var{fp} should be one of \code{sys.stdin}, \code{sys.stdout} or
\code{sys.stderr}.
\end{funcdesc}

\subsection{macconsole options object}
These options are examined when a window is created:

\setindexsubitem{(macconsole option)}
\begin{datadesc}{top}
\dataline{left}
The origin of the window.
\end{datadesc}

\begin{datadesc}{nrows}
\dataline{ncols}
The size of the window.
\end{datadesc}

\begin{datadesc}{txFont}
\dataline{txSize}
\dataline{txStyle}
The font, fontsize and fontstyle to be used in the window.
\end{datadesc}

\begin{datadesc}{title}
The title of the window.
\end{datadesc}

\begin{datadesc}{pause_atexit}
If set non-zero, the window will wait for user action before closing.
\end{datadesc}

\subsection{console window object}

\setindexsubitem{(console window attribute)}

\begin{datadesc}{file}
The file object corresponding to this console window. If the file is
buffered, you should call \code{\var{file}.flush()} between
\code{write()} and \code{read()} calls.
\end{datadesc}

\setindexsubitem{(console window method)}

\begin{funcdesc}{setmode}{mode}
Set the input mode of the console to \constant{C_ECHO}, etc.
\end{funcdesc}

\begin{funcdesc}{settabs}{n}
Set the tabsize to \var{n} spaces.
\end{funcdesc}

\begin{funcdesc}{cleos}{}
Clear to end-of-screen.
\end{funcdesc}

\begin{funcdesc}{cleol}{}
Clear to end-of-line.
\end{funcdesc}

\begin{funcdesc}{inverse}{onoff}
Enable inverse-video mode:\ characters with the high bit set are
displayed in inverse video (this disables the upper half of a
non-\ASCII{} character set).
\end{funcdesc}

\begin{funcdesc}{gotoxy}{x, y}
Set the cursor to position \code{(\var{x}, \var{y})}.
\end{funcdesc}

\begin{funcdesc}{hide}{}
Hide the window, remembering the contents.
\end{funcdesc}

\begin{funcdesc}{show}{}
Show the window again.
\end{funcdesc}

\begin{funcdesc}{echo2printer}{}
Copy everything written to the window to the printer as well.
\end{funcdesc}
