Further simplification and refactoring of display

This commit is contained in:
Andrew Kay
2019-07-03 20:17:00 -05:00
parent ac3c0f7508
commit 0429f86fc1
4 changed files with 46 additions and 80 deletions

View File

@@ -88,7 +88,7 @@ class Controller:
self.logger.info(f'Rows = {rows}, Columns = {columns}, Keymap = {keymap_name}')
self.terminal.display.clear(include_status_line=True)
self.terminal.display.clear(clear_status_line=True)
# Show the attached indicator on the status line.
self.terminal.display.status_line.write_string(0, 'S')

View File

@@ -170,11 +170,9 @@ class Display:
self.status_line = StatusLine(self.interface, columns)
def move_cursor(self, address=None, index=None, row=None, column=None,
force_load=False):
def move_cursor(self, row, column, force_load=False):
"""Load the address counter."""
if address is None:
address = self._calculate_address(index=index, row=row, column=column)
address = self._calculate_address(row=row, column=column)
# TODO: Verify that the address is within range - exclude status line.
@@ -187,12 +185,8 @@ class Display:
return True
def write_buffer(self, byte, index=None, row=None, column=None):
if index is None:
if row is not None and column is not None:
index = self._get_index(row, column)
else:
raise ValueError('Either index or row and column is required')
def buffered_write(self, byte, row, column):
index = self._get_index(row, column)
# TODO: Verify that index is within range.
@@ -209,11 +203,11 @@ class Display:
for (start_index, end_index) in self._get_dirty_ranges():
self._flush_range(start_index, end_index)
def clear(self, include_status_line=False):
def clear(self, clear_status_line=False):
"""Clear the screen."""
(rows, columns) = self.dimensions
if include_status_line:
if clear_status_line:
address = 0
repeat = ((rows + 1) * columns) - 1
else:
@@ -228,7 +222,7 @@ class Display:
self.dirty.clear()
self.move_cursor(index=0, force_load=True)
self.move_cursor(0, 0, force_load=True)
def _get_index(self, row, column):
return (row * self.dimensions.columns) + column

View File

@@ -99,7 +99,7 @@ class VT100Session(Session):
self.terminal.display.status_line.write_string(45, 'VT100')
# Reset the cursor.
self.terminal.display.move_cursor(row=0, column=0)
self.terminal.display.move_cursor(0, 0)
def terminate(self):
if self.host_process:
@@ -195,7 +195,7 @@ class VT100Session(Session):
# TODO: Add additional mapping for special cases such as '^'...
byte = encode_ascii_character(ord(character.data)) if len(character.data) == 1 else 0x00
self.terminal.display.write_buffer(byte, row=row, column=column)
self.terminal.display.buffered_write(byte, row, column)
def _flush(self):
self.terminal.display.flush()
@@ -204,4 +204,4 @@ class VT100Session(Session):
# reliable - maybe it needs to be forced sometimes.
cursor = self.vt100_screen.cursor
self.terminal.display.move_cursor(row=cursor.y, column=cursor.x)
self.terminal.display.move_cursor(cursor.y, cursor.x)