You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.2 KiB
78 lines
2.2 KiB
import os
|
|
from time import sleep
|
|
from typing import Dict
|
|
from colors import Colors
|
|
|
|
class Layer:
|
|
def __init__(self, x, y):
|
|
self.screen = {}
|
|
self.x = x
|
|
self.y = y
|
|
|
|
def clear(self):
|
|
self.screen = {}
|
|
|
|
def put_char(self, char, x, y, *colors):
|
|
if x > self.x or x < 0 or y > self.y or y < 0:
|
|
raise ValueError("unexcepted value")
|
|
self.screen[(x, y)] = "".join(colors) + char + Colors.RESET
|
|
|
|
def put_string(self, string, x, y, *colors):
|
|
if x > self.x or x < 0 or y > self.y or y < 0:
|
|
raise ValueError("unexcepted value")
|
|
line_y = 0
|
|
for line in string.split("\n"):
|
|
for char_x in range(len(line)):
|
|
self.screen[(x+char_x, y+line_y)] = "".join(colors) + line[char_x] + Colors.RESET
|
|
line_y += 1
|
|
|
|
|
|
class CLI:
|
|
def __init__(self):
|
|
size = os.get_terminal_size()
|
|
self.x = size[1] - 2 #hauteur
|
|
self.y = size[0] #largeur
|
|
self.screen = {}
|
|
self.__layers = {}
|
|
|
|
def set_layer(self, name: str, layer: Layer):
|
|
self.__layers[name] = layer
|
|
|
|
def get_layer(self, name: str) -> Layer:
|
|
return self.__layers[name]
|
|
|
|
def get_layers(self) -> Dict[str, Layer]:
|
|
return self.__layers
|
|
|
|
def __combine_layers(self):
|
|
layers = self.get_layers()
|
|
#for layer in layers:
|
|
# for y in range(layer.x):
|
|
# for x in range(layer.y):
|
|
# if (x, y) in layer.screen:
|
|
# content += layer.screen[(x, y)]
|
|
# else:
|
|
# content += " "
|
|
# content += "\n"
|
|
|
|
#def draw(self):
|
|
# print("\033[H\033[J", end="")
|
|
# content = ""
|
|
# for y in range(self.x):
|
|
# for x in range(self.y):
|
|
# if (x, y) in self.screen:
|
|
# content += self.screen[(x, y)]
|
|
# else:
|
|
# content += " "
|
|
# content += "\n"
|
|
# print(content)
|
|
|
|
|
|
cli = CLI()
|
|
cli.put_char("t", 5, 6, Colors.BLUEBG, Colors.BLACK)
|
|
cli.put_string("tttaaaaaa ttt \n ttttttttttnnnnnn t", 8, 9, Colors.BEIGEBG)
|
|
#cli.draw()
|
|
|
|
while True:
|
|
cli.draw()
|
|
sleep(0.1)
|