Source code for progressive.cursor
import os
from blessings import Terminal
[docs]class Cursor(object):
"""Common methods for cursor manipulation
:type term: NoneType|blessings.Terminal
:param term: Terminal instance; if not given, will be created by the class
"""
def __init__(self, term=None):
self.term = Terminal() if term is None else term
self._stream = self.term.stream
self._saved = False
[docs] def write(self, s):
"""Writes ``s`` to the terminal output stream
Writes can be disabled by setting the environment variable
`PROGRESSIVE_NOWRITE` to `'True'`
"""
should_write_s = os.getenv('PROGRESSIVE_NOWRITE') != "True"
if should_write_s:
self._stream.write(s)
[docs] def save(self):
"""Saves current cursor position, so that it can be restored later"""
self.write(self.term.save)
self._saved = True
[docs] def restore(self):
"""Restores cursor to the previously saved location
Cursor position will only be restored IF it was previously saved
by this instance (and not by any external force)
"""
if self._saved:
self.write(self.term.restore)
[docs] def flush(self):
"""Flush buffer of terminal output stream"""
self._stream.flush()
[docs] def newline(self):
"""Effects a newline by moving the cursor down and clearing"""
self.write(self.term.move_down)
self.write(self.term.clear_bol)
[docs] def clear_lines(self, num_lines=0):
for i in range(num_lines):
self.write(self.term.clear_eol)
self.write(self.term.move_down)
for i in range(num_lines):
self.write(self.term.move_up)