Kalyax
2 years ago
2 changed files with 122 additions and 0 deletions
@ -0,0 +1,78 @@ |
|||||
|
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) |
@ -0,0 +1,44 @@ |
|||||
|
class Colors: |
||||
|
RESET = '\33[0m' |
||||
|
BOLD = '\33[1m' |
||||
|
ITALIC = '\33[3m' |
||||
|
URL = '\33[4m' |
||||
|
BLINK = '\33[5m' |
||||
|
BLINK2 = '\33[6m' |
||||
|
SELECTED = '\33[7m' |
||||
|
|
||||
|
BLACK = '\33[30m' |
||||
|
RED = '\33[31m' |
||||
|
GREEN = '\33[32m' |
||||
|
YELLOW = '\33[33m' |
||||
|
BLUE = '\33[34m' |
||||
|
VIOLET = '\33[35m' |
||||
|
BEIGE = '\33[36m' |
||||
|
WHITE = '\33[37m' |
||||
|
|
||||
|
BLACKBG = '\33[40m' |
||||
|
REDBG = '\33[41m' |
||||
|
GREENBG = '\33[42m' |
||||
|
YELLOWBG = '\33[43m' |
||||
|
BLUEBG = '\33[44m' |
||||
|
VIOLETBG = '\33[45m' |
||||
|
BEIGEBG = '\33[46m' |
||||
|
WHITEBG = '\33[47m' |
||||
|
|
||||
|
GREY = '\33[90m' |
||||
|
RED2 = '\33[91m' |
||||
|
GREEN2 = '\33[92m' |
||||
|
YELLOW2 = '\33[93m' |
||||
|
BLUE2 = '\33[94m' |
||||
|
VIOLET2 = '\33[95m' |
||||
|
BEIGE2 = '\33[96m' |
||||
|
WHITE2 = '\33[97m' |
||||
|
|
||||
|
GREYBG = '\33[100m' |
||||
|
REDBG2 = '\33[101m' |
||||
|
GREENBG2 = '\33[102m' |
||||
|
YELLOWBG2 = '\33[103m' |
||||
|
BLUEBG2 = '\33[104m' |
||||
|
VIOLETBG2 = '\33[105m' |
||||
|
BEIGEBG2 = '\33[106m' |
||||
|
WHITEBG2 = '\33[107m' |
Loading…
Reference in new issue