aboutsummaryrefslogtreecommitdiff
path: root/TermIO/out/__init__.py
blob: 1a690212640c7044a66c71a94a5f00f8187a8002 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import sys


class Cursor():

    def SetPos(col, row, flush=True):
        sys.stdout.write(u"\u001b[{0};{1}H".format(int(row), int(col)))
        if flush: sys.stdout.flush()

    def Left(n, flush=True):
        sys.stdout.write(u"\u001b[{0}D".format(str(n)))
        if flush: sys.stdout.flush()

    def Right(n, flush=True):
        sys.stdout.write(u"\u001b[{0}C".format(str(n)))
        if flush: sys.stdout.flush()

    def Up(n, flush=True):
        sys.stdout.write(u"\u001b[{0}A".format(str(n)))
        if flush: sys.stdout.flush()

    def Down(n, flush=True):
        sys.stdout.write(u"\u001b[{0}B".format(str(n)))
        if flush: sys.stdout.flush()


class Screen():

    def Clear(flush=True):
        sys.stdout.write(u"\u001b[2J")  # Clear screen
        if flush: sys.stdout.flush()

    def Flush():
        sys.stdout.flush()

    def Decorate(fg=None, bg=None, dec=None, flush=True):
        if (fg is None) and (bg is None) and (dec is None):
            sys.stdout.write(u"\u001b[0m")

        if fg is not None:
            sys.stdout.write(u"\u001b[38;5;{0}m".format(str(fg)))
        if bg is not None:
            sys.stdout.write(u"\u001b[48;5;{0}m".format(str(fg)))
        if dec is not None:
            if type(dec) == list:
                for thing in dec:
                    if (thing == "reversed"): sys.stdout.write(u"\u001b[7m")
                    elif (thing == "underline"): sys.stdout.write(u"\u001b[4m")
                    elif (thing == "bold"): sys.stdout.write(u"\u001b[1m")
                    else:
                        raise ValueError('"{}" Not rekognized as a decoration'.format(thing))

            elif type(dec) == str:
                if (dec == "reversed"): sys.stdout.write(u"\u001b[7m")
                elif (dec == "underline"): sys.stdout.write(u"\u001b[4m")
                elif (dec == "bold"): sys.stdout.write(u"\u001b[1m")
            else:
                raise ValueError('"{}" Not rekognized as a decoration'.format(dec))

        if flush: sys.stdout.flush()

    def Write(outStr, flush=True):
        sys.stdout.write(str(outStr))
        if flush: sys.stdout.flush()