From 2ba39a7495015c994e451f64ee4603b4385932c9 Mon Sep 17 00:00:00 2001 From: acn Date: Tue, 31 May 2016 15:59:33 +0200 Subject: [PATCH] v0.1 fertig machen --- rtxMask.py | 101 ----------------------------------------------------- 1 file changed, 101 deletions(-) delete mode 100644 rtxMask.py diff --git a/rtxMask.py b/rtxMask.py deleted file mode 100644 index 1142e52..0000000 --- a/rtxMask.py +++ /dev/null @@ -1,101 +0,0 @@ -# -*- coding: UTF-8 -*- -''' -rtx - RetroText -rtxMask: Klasse zur Verarbeitung einer Eingabemaske -by Anna Christina Naß -released under GPL -''' - -import glob -import logging -import config -import cept - -class rtxMask: - """ Klasse zur Verarbeitung einer Eingabemaske - """ - - lines = [] - answers = [] - - def __init__(self): - - def addLine(x, y, length): - """ adds a new line for the mask to the object """ - newLine['x'] = x - newLine['y'] = y - newLine['length'] = length - self.lines.append(newLine) - - def get_answer(self, nr): - """ returns the answer for a specific line """ - if nr >= 0 and nr <= len(self.answers): - return self.answers[nr] - else - return False - - def get_answers(self): - """ returns the array of all answers """ - return self.answers - - def _pos_cur_to_line(self, line): - """ positions the cursor to the beginning of a line """ - zeile=self.lines[line] - self._pos_cur_to_xy(zeile['x'], zeile['y']) - - def _pos_cur_to_xy(self, x, y): - """ positions the cursor to a (x,y) position on screen """ - toX=0x41 + x - toY=0x41 + y - gotoString = "\x1f" + chr(toX) + chr(toY) - glob.ser.write(bytes(gotoString, "latin-1")) - - def _set_str_at_pos(self, char, pos, line): - """ changes the 'char' at a position 'pos' of a specific answer 'line' """ - zeile = self.answers[line] - - # if the line is shorter than the position, add spaces - while len(zeile) < pos: - zeile += " " - - zeile = zeile[:pos-1] + char + zeile[pos:] - answers[line] = zeile - - def process_input(self): - """ reads the input from the client, fills the mask and gets the input """ - - if len(lines) == 0: - logging.debug("Keine Zeilen in der Maske definiert!") - return False - - # position the cursor into the first field - self._pos_cur_to_line(lines[1]) - posx = 1 # cursor position inside the line - posy = 0 # the current line - - weiter = True - # read input and interpret it - while weiter==True: - #if config.MODE == "modem" and glob.ser.getCD() == False: - # weiter=False - in_byte = glob.ser.read(1) - instr = str(in_byte, encoding="latin-1") - echostr = instr - - if instr == cept.TER or instr == cept.CR: - # TODO: weiter in nächster Zeile - elif instr.isalnum(): - self._set_str_at_pos(instr, posx, posy) - posx += 1 - elif instr == cept.BSP: - answers[posy] = answers[posy][:-1] - posx -= 1 - else: - echostr = "" - - # lineinput == Zeilenende beachten - # dafür aber die Konstruktion von lines nochmal umbauen, um auf "length" zugreifen zu können... - - glob.ser.write(bytes(echostr, "latin-1")) - -