1
0

bug fixes und weiter an der Maske (unfertig)

This commit is contained in:
acn 2016-06-10 14:48:28 +02:00
parent 51844600c9
commit 80843a212a
5 changed files with 30 additions and 25 deletions

View File

@ -65,7 +65,7 @@ btxlogo = (
"\x1b\x7e" # Zeichensatz G1 rechts "\x1b\x7e" # Zeichensatz G1 rechts
"\x9b\x31\x40" # Farbtafel 1 (Halbtöne) "\x9b\x31\x40" # Farbtafel 1 (Halbtöne)
"\x1b\x23\x20\x54" # ganzer Schirm blau "\x1b\x23\x20\x54" # ganzer Schirm blau
"\x1f\x3d1# 200961a\x1f" # Link zur Demo-Startseite 200961a "\x1f\x3d1# 200961a\x1f\x2f" # Link zur Demo-Startseite 200961a
"\x1f\x43\x48\xb8\xa3\x12\x57\xe4" "\x1f\x43\x48\xb8\xa3\x12\x57\xe4"
"\x1f\x44\x47\xea\xa0\x12\x59\xb5" "\x1f\x44\x47\xea\xa0\x12\x59\xb5"
"\x1f\x45\x47\xea \xe8\xfc\xdf\x12\x49\xfc\xb4 \xb5" "\x1f\x45\x47\xea \xe8\xfc\xdf\x12\x49\xfc\xb4 \xb5"

0
rtx.py Normal file → Executable file
View File

View File

@ -11,6 +11,7 @@ import cept
import glob import glob
import logging import logging
import config import config
import rtxMask
def process_byte(in_byte): def process_byte(in_byte):
""" takes the received byte and processes the command line """ takes the received byte and processes the command line
@ -113,8 +114,13 @@ def process_command(cmd):
return return
if cmd == "!2" + cept.TER: if cmd == "!2" + cept.TER:
glob.ser.write(bytes(cept.init_screen, "latin-1")) glob.ser.write(bytes(cept.init_screen, "latin-1"))
maske = rtxMask.rtxMask()
maske.addLine(3,1,10)
maske.addLine(4,4,10)
maske.process_input()
return return
def goto_last_page(): def goto_last_page():
""" go back to the previous page and make the current page the previous page """ go back to the previous page and make the current page the previous page
""" """

View File

@ -19,9 +19,11 @@ class rtxMask:
answers = [] answers = []
def __init__(self): def __init__(self):
return
def addLine(x, y, length): def addLine(self, x, y, length):
""" adds a new line for the mask to the object """ """ adds a new line for the mask to the object """
newLine = {}
newLine['x'] = x newLine['x'] = x
newLine['y'] = y newLine['y'] = y
newLine['length'] = length newLine['length'] = length
@ -31,7 +33,7 @@ class rtxMask:
""" returns the answer for a specific line """ """ returns the answer for a specific line """
if nr >= 0 and nr <= len(self.answers): if nr >= 0 and nr <= len(self.answers):
return self.answers[nr] return self.answers[nr]
else else:
return False return False
def get_answers(self): def get_answers(self):
@ -40,8 +42,7 @@ class rtxMask:
def _pos_cur_to_line(self, line): def _pos_cur_to_line(self, line):
""" positions the cursor to the beginning of a line """ """ positions the cursor to the beginning of a line """
zeile=self.lines[line] self._pos_cur_to_xy(line['x'], line['y'])
self._pos_cur_to_xy(zeile['x'], zeile['y'])
def _pos_cur_to_xy(self, x, y): def _pos_cur_to_xy(self, x, y):
""" positions the cursor to a (x,y) position on screen """ """ positions the cursor to a (x,y) position on screen """
@ -59,21 +60,21 @@ class rtxMask:
zeile += " " zeile += " "
zeile = zeile[:pos-1] + char + zeile[pos:] zeile = zeile[:pos-1] + char + zeile[pos:]
answers[line] = zeile self.answers[line] = zeile
def process_input(self): def process_input(self):
""" reads the input from the client, fills the mask and gets the input """ """ reads the input from the client, fills the mask and gets the input """
# if there have no input lines been defined, no input can be processed - so exit the function # if there have no input lines been defined, no input can be processed - so exit the function
if len(lines) == 0: if len(self.lines) == 0:
logging.debug("Keine Zeilen in der Maske definiert!") logging.debug("Keine Zeilen in der Maske definiert!")
return False return False
# position the cursor into the first field # position the cursor into the first field
self._pos_cur_to_line(lines[0]) self._pos_cur_to_line(self.lines[0])
posx = 0 # cursor position inside the line - max. position is length-1 posx = 0 # cursor position inside the line - max. position is length-1
posy = 0 # the current line - max. number is len(lines)-1 posy = 0 # the current line - max. number is len(self.lines)-1
weiter = True weiter = True
# read input and interpret it # read input and interpret it
@ -88,16 +89,16 @@ class rtxMask:
if instr == cept.TER or instr == cept.CR: if instr == cept.TER or instr == cept.CR:
# go to the beginning of the next line # go to the beginning of the next line
# or finish the mask # or finish the mask
if posy == len(lines)-1: if posy == len(self.lines)-1:
weiter = False weiter = False
self._send_data() self._send_data()
else: else:
# go to the beginning of the next line # go to the beginning of the next line
posy += 1 posy += 1
posx = 0 posx = 0
self._pos_cur_to_line(lines[posy]) self._pos_cur_to_line(self.lines[posy])
elif instr == cept.BSP: elif instr == cept.BSP:
answers[posy] = answers[posy][:-1] self.answers[posy] = self.answers[posy][:-1]
posx -= 1 posx -= 1
elif instr == cept.UP: elif instr == cept.UP:
# if the cursor is in the first line, we can't go higher... # if the cursor is in the first line, we can't go higher...
@ -106,28 +107,28 @@ class rtxMask:
if posy > 0: if posy > 0:
posy -= 1 posy -= 1
posx = 0 posx = 0
self._pos_cur_to_line(lines[posy]) self._pos_cur_to_line(self.lines[posy])
elif instr == cept.DOWN: elif instr == cept.DOWN:
# same here: last line => it can't go lower => ignore # same here: last line => it can't go lower => ignore
echostr = "" # no echo needed, we position the curser ourselves echostr = "" # no echo needed, we position the curser ourselves
if posy < len(self.lines): if posy < len(self.lines):
posy += 1 posy += 1
posx = 0 posx = 0
self._pos_cur_to_line(lines[posy]) self._pos_cur_to_line(self.lines[posy])
elif instr == cept.LEFT: elif instr == cept.LEFT:
if posx > 0: if posx > 0:
posx -= 1 posx -= 1
else: else:
echostr = "" echostr = ""
elif instr == cept.RIGHT: elif instr == cept.RIGHT:
if posx < len(answers[posy]): if posx < len(self.answers[posy]):
posx += 1 posx += 1
else: else:
echostr = "" echostr = ""
elif instr == cept.HOME: elif instr == cept.HOME:
posy = 0 posy = 0
posx = 0 posx = 0
self._pos_cur_to_line(lines[posy]) self._pos_cur_to_line(self.lines[posy])
echostr = "" echostr = ""
elif instr == cept.SEND: # ist das DCT?? elif instr == cept.SEND: # ist das DCT??
weiter = False weiter = False
@ -135,7 +136,7 @@ class rtxMask:
elif instr.isalnum(): elif instr.isalnum():
# "normal" input # "normal" input
# TODO: lineinput == Zeilenende beachten # TODO: lineinput == Zeilenende beachten
self._set_str_at_pos(instr, posx, posy) #self._set_str_at_pos(instr, posx, posy)
posx += 1 posx += 1
else: else:
# ignore the rest and do not echo it :) # ignore the rest and do not echo it :)
@ -151,6 +152,7 @@ class rtxMask:
temp = answer.rstrip() temp = answer.rstrip()
new_answers.append(temp) new_answers.append(temp)
self.answers = new_answers self.answers = new_answers
print(self.answers)

View File

@ -88,7 +88,7 @@ class rtxPage:
with open(filename, "rb") as f: with open(filename, "rb") as f:
self.die_seite = f.read() self.die_seite = f.read()
self.seiten_nummer = page self.seiten_nummer = page
link_liste = self._get_link_list() self.link_liste = self._get_link_list()
return True return True
def _get_link_list(self): def _get_link_list(self):
@ -98,17 +98,14 @@ class rtxPage:
""" """
links = [] links = []
links = re.findall("\x1f\x3d([^\x1f\x9b\x1b]+)", str(self.die_seite, "latin-1")) links = re.findall("\x1f\x3d([^\x1f\x9b\x1b]+)", str(self.die_seite, "latin-1"))
liste = {}
for item in links: for item in links:
if item[0] != "0": if item[0] != "0":
link = item[1:3].strip() link = item[1:3].strip()
target = item[3:].strip() target = item[3:].strip()
self.link_liste[link] = target liste[link] = target
logging.info(self.link_liste) logging.info(liste)
if self.link_liste == {}:
return False
else:
return True
return liste