72 lines
1.8 KiB
Python
72 lines
1.8 KiB
Python
|
displays = {}
|
||
|
windows = {}
|
||
|
tabs = {}
|
||
|
|
||
|
class Display:
|
||
|
def __init__(self, uuid):
|
||
|
self.uuid = uuid
|
||
|
self.connections = [] # maybe set()?
|
||
|
self.windows = [] # maybe set()?
|
||
|
|
||
|
def attach(self, connection):
|
||
|
self.connections.append(connection)
|
||
|
|
||
|
def detach(self, connection):
|
||
|
self.connections.remove(connection)
|
||
|
|
||
|
class Window:
|
||
|
def __init__(self, uuid,
|
||
|
title = "__unnamed__",
|
||
|
grid_column = (0, 0),
|
||
|
grid_row = (0, 0)):
|
||
|
self.uuid = uuid
|
||
|
self.title = title
|
||
|
|
||
|
self.grid_column = grid_column
|
||
|
self.grid_row = grid_row
|
||
|
|
||
|
self.parents = set()
|
||
|
|
||
|
self.tabs = [] # Maybe set()?
|
||
|
|
||
|
def set_title(self, title):
|
||
|
self.title = title
|
||
|
# TODO: PUSH TITLE CHANGE
|
||
|
|
||
|
def set_grid_column(self, grid_column):
|
||
|
self.grid_column = grid_column
|
||
|
# TODO: PUSH CHANGE
|
||
|
|
||
|
def set_grid_row(self, grid_row):
|
||
|
self.grid_row = grid_row
|
||
|
# TODO: PUSH CHANGE
|
||
|
|
||
|
def add_tab(self, tab):
|
||
|
self.tabs.append(tab)
|
||
|
# TODO: PUSH CHANGE
|
||
|
|
||
|
def remove_tab(self, tab):
|
||
|
self.tabs.remove(tab)
|
||
|
# TODO: CHECK REF COUNT AND FREE IF 0
|
||
|
# TODO: PUSH CHANGE
|
||
|
|
||
|
class Tab:
|
||
|
def __init__(self, uuid,
|
||
|
title = "__unnamed__"):
|
||
|
self.uuid = uuid
|
||
|
self.content = ""
|
||
|
|
||
|
def clear(self):
|
||
|
self.content = ""
|
||
|
# TODO: PUSH CHANGE
|
||
|
|
||
|
def write_ln(self, data):
|
||
|
self.write(data + "\n")
|
||
|
|
||
|
def write(self, data):
|
||
|
self.content += data
|
||
|
# TODO: PUSH CHANGE
|
||
|
|
||
|
def write_index(self, data, cursor): # Maybe also send snippet of before and after incase of multiedit?
|
||
|
self.content = self.content[:cursor] + data + self.content[cursor:]
|
||
|
# TODO: PUSH CHANGE
|