hub/venv/lib/python3.7/site-packages/prompt_toolkit/output/base.py

268 lines
6.2 KiB
Python
Raw Normal View History

"""
Interface for an output.
"""
from abc import ABCMeta, abstractmethod
from prompt_toolkit.data_structures import Size
from prompt_toolkit.styles import Attrs
from .color_depth import ColorDepth
__all__ = [
"Output",
"DummyOutput",
]
class Output(metaclass=ABCMeta):
"""
Base class defining the output interface for a
:class:`~prompt_toolkit.renderer.Renderer`.
Actual implementations are
:class:`~prompt_toolkit.output.vt100.Vt100_Output` and
:class:`~prompt_toolkit.output.win32.Win32Output`.
"""
@abstractmethod
def fileno(self) -> int:
" Return the file descriptor to which we can write for the output. "
@abstractmethod
def encoding(self) -> str:
"""
Return the encoding for this output, e.g. 'utf-8'.
(This is used mainly to know which characters are supported by the
output the data, so that the UI can provide alternatives, when
required.)
"""
@abstractmethod
def write(self, data: str) -> None:
" Write text (Terminal escape sequences will be removed/escaped.) "
@abstractmethod
def write_raw(self, data: str) -> None:
" Write text. "
@abstractmethod
def set_title(self, title: str) -> None:
" Set terminal title. "
@abstractmethod
def clear_title(self) -> None:
" Clear title again. (or restore previous title.) "
@abstractmethod
def flush(self) -> None:
" Write to output stream and flush. "
@abstractmethod
def erase_screen(self) -> None:
"""
Erases the screen with the background colour and moves the cursor to
home.
"""
@abstractmethod
def enter_alternate_screen(self) -> None:
" Go to the alternate screen buffer. (For full screen applications). "
@abstractmethod
def quit_alternate_screen(self) -> None:
" Leave the alternate screen buffer. "
@abstractmethod
def enable_mouse_support(self) -> None:
" Enable mouse. "
@abstractmethod
def disable_mouse_support(self) -> None:
" Disable mouse. "
@abstractmethod
def erase_end_of_line(self) -> None:
"""
Erases from the current cursor position to the end of the current line.
"""
@abstractmethod
def erase_down(self) -> None:
"""
Erases the screen from the current line down to the bottom of the
screen.
"""
@abstractmethod
def reset_attributes(self) -> None:
" Reset color and styling attributes. "
@abstractmethod
def set_attributes(self, attrs: Attrs, color_depth: ColorDepth) -> None:
" Set new color and styling attributes. "
@abstractmethod
def disable_autowrap(self) -> None:
" Disable auto line wrapping. "
@abstractmethod
def enable_autowrap(self) -> None:
" Enable auto line wrapping. "
@abstractmethod
def cursor_goto(self, row: int = 0, column: int = 0) -> None:
" Move cursor position. "
@abstractmethod
def cursor_up(self, amount: int) -> None:
" Move cursor `amount` place up. "
@abstractmethod
def cursor_down(self, amount: int) -> None:
" Move cursor `amount` place down. "
@abstractmethod
def cursor_forward(self, amount: int) -> None:
" Move cursor `amount` place forward. "
@abstractmethod
def cursor_backward(self, amount: int) -> None:
" Move cursor `amount` place backward. "
@abstractmethod
def hide_cursor(self) -> None:
" Hide cursor. "
@abstractmethod
def show_cursor(self) -> None:
" Show cursor. "
def ask_for_cpr(self) -> None:
"""
Asks for a cursor position report (CPR).
(VT100 only.)
"""
@abstractmethod
def get_size(self) -> Size:
" Return the size of the output window. "
def bell(self) -> None:
" Sound bell. "
def enable_bracketed_paste(self) -> None:
" For vt100 only. "
def disable_bracketed_paste(self) -> None:
" For vt100 only. "
def scroll_buffer_to_prompt(self) -> None:
" For Win32 only. "
def get_rows_below_cursor_position(self) -> int:
" For Windows only. "
raise NotImplementedError
class DummyOutput(Output):
"""
For testing. An output class that doesn't render anything.
"""
def fileno(self) -> int:
" There is no sensible default for fileno(). "
raise NotImplementedError
def encoding(self) -> str:
return "utf-8"
def write(self, data: str) -> None:
pass
def write_raw(self, data: str) -> None:
pass
def set_title(self, title: str) -> None:
pass
def clear_title(self) -> None:
pass
def flush(self) -> None:
pass
def erase_screen(self) -> None:
pass
def enter_alternate_screen(self) -> None:
pass
def quit_alternate_screen(self) -> None:
pass
def enable_mouse_support(self) -> None:
pass
def disable_mouse_support(self) -> None:
pass
def erase_end_of_line(self) -> None:
pass
def erase_down(self) -> None:
pass
def reset_attributes(self) -> None:
pass
def set_attributes(self, attrs: Attrs, color_depth: ColorDepth) -> None:
pass
def disable_autowrap(self) -> None:
pass
def enable_autowrap(self) -> None:
pass
def cursor_goto(self, row: int = 0, column: int = 0) -> None:
pass
def cursor_up(self, amount: int) -> None:
pass
def cursor_down(self, amount: int) -> None:
pass
def cursor_forward(self, amount: int) -> None:
pass
def cursor_backward(self, amount: int) -> None:
pass
def hide_cursor(self) -> None:
pass
def show_cursor(self) -> None:
pass
def ask_for_cpr(self) -> None:
pass
def bell(self) -> None:
pass
def enable_bracketed_paste(self) -> None:
pass
def disable_bracketed_paste(self) -> None:
pass
def scroll_buffer_to_prompt(self) -> None:
pass
def get_size(self) -> Size:
return Size(rows=40, columns=80)
def get_rows_below_cursor_position(self) -> int:
return 40