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.

74 lines
1.7 KiB

6 months ago
#! /usr/bin/python
from field import Field
import curses
import logging
from curses import wrapper
from SourceGenerator import SourceGenerator
6 months ago
logging.basicConfig( format='%(asctime)s [%(levelname)s] %(funcName)s: %(message)s',
filename='r4.log',
level=logging.DEBUG)
6 months ago
field = Field()
6 months ago
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)
logging.debug(f'source={source}')
case ' ':
field.togglePixel()
case '^L':
field.print_field(stdscr)
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
6 months ago
def main():
wrapper(inputLoop)
6 months ago
if __name__ == '__main__':
main()