#! /usr/bin/python from field import Field import curses import logging from curses import wrapper from SourceGenerator import SourceGenerator __VERSION__ = '1.00' logging.basicConfig( format='%(asctime)s [%(levelname)s] %(funcName)s: %(message)s', filename='r4.log', level=logging.DEBUG) field = Field() def display_source(stdscr,source): stdscr.clear() stdscr.addstr(0,0,source) key = stdscr.getch() def display_help(stdscr): stdscr.clear() stdscr.addstr(0,0,f'r4matrixed V {__VERSION__}') stdscr.addstr(1,0,'h - Help') stdscr.addstr(2,0,'g - generate Source') stdscr.addstr(3,0,'q - Quit') stdscr.addstr(6,0,'<>',curses.color_pair(3)) stdscr.getch() def inputLoop(stdscr): exitPrg = False curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK) curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_CYAN) curses.init_pair(3, curses.COLOR_RED, curses.COLOR_BLACK) curses.noecho() curses.cbreak() while not exitPrg: field.print_field(stdscr) key = stdscr.getkey() # field.message = str(key) match key: case 'q': exitPrg = True case 'g': generator = SourceGenerator() source = generator.generate_source(field) display_source(stdscr,source) case 'h': display_help(stdscr) case ' ': field.togglePixel() case '^L': field.print_field(stdscr) case '0': field.clear() case 'KEY_DOWN': if field.cursor[0] < len(field.frame)-1: newcursor = (field.cursor[0] +1,field.cursor[1]) field.cursor = newcursor case 'KEY_RIGHT': curline = field.frame[field.cursor[0]] if field.cursor[1] < len(curline)-1: newcursor = (field.cursor[0],field.cursor[1]+1) field.cursor = newcursor case 'KEY_LEFT': curline = field.frame[field.cursor[0]] if field.cursor[1] > 0: newcursor = (field.cursor[0],field.cursor[1]-1) field.cursor = newcursor case 'KEY_UP': curline = field.frame[field.cursor[0]] if field.cursor[0] > 0: newcursor = (field.cursor[0] -1,field.cursor[1]) field.cursor = newcursor def main(): wrapper(inputLoop) if __name__ == '__main__': main()