def create_title2(title): data_cept = bytearray(Cept.set_cursor(2, 1)) data_cept.extend(Cept.set_palette(1)) data_cept.extend(Cept.set_screen_bg_color_simple(4)) data_cept.extend(b'\x1b\x28\x40' # load G0 into G0 b'\x0f' # G0 into left charset ) data_cept.extend(Cept.parallel_mode()) data_cept.extend(Cept.set_palette(0)) data_cept.extend(Cept.code_9e()) data_cept.extend(Cept.set_line_bg_color_simple(4)) data_cept.extend(b'\n') data_cept.extend(Cept.set_line_bg_color_simple(4)) data_cept.extend(Cept.set_palette(1)) data_cept.extend(Cept.double_height()) data_cept.extend(b'\r') data_cept.extend(Cept.from_str(title)) data_cept.extend(b'\n\r') data_cept.extend(Cept.set_palette(0)) data_cept.extend(Cept.normal_size()) data_cept.extend(Cept.code_9e()) data_cept.extend(Cept.set_fg_color_simple(7)) return data_cept
def headerfooter(pageid, publisher_name, publisher_color): hide_header_footer = len(publisher_name) == 0 hide_price = False # Early screenshots had a two-line publisher name with # the BTX logo in it for BTX-internal pages. Some .meta # files still reference this, but we should remove this. if publisher_name == "!BTX": # publisher_name = ( # b'\x1b\x22\x41' # parallel mode # b'\x9b\x30\x40' # select palette #0 # b'\x9e' # ??? # b'\x87' # set fg color to #7 # b'\x1b\x28\x20\x40' # load DRCs into G0 # b'\x0f' # G0 into left charset # b'\x21\x22\x23' # "!"#" # b'\n' # b'\r' # b'\x24\x25\x26' # "$%&" # b'\x0b' # cursor up # b'\x09' # cursor right # b'\x1b\x28\x40' # load G0 into G0 # b'\x0f' # G0 into left charset # b'\n' # b'\x8d' # double height # # TODO: this does not draw!! :( # b'Bildschirmtext' # ) publisher_name = "Bildschirmtext" hide_price = True else: publisher_name = publisher_name[:30] hf = bytearray(Cept.set_res_40_24()) hf.extend(Cept.set_cursor(23, 1)) hf.extend(Cept.unprotect_line()) hf.extend(Cept.set_line_fg_color_simple(12)) hf.extend(Cept.parallel_limited_mode()) hf.extend(Cept.set_cursor(24, 1)) hf.extend(Cept.unprotect_line()) hf.extend(b' \b') hf.extend(Cept.clear_line()) hf.extend(Cept.cursor_home()) hf.extend(Cept.unprotect_line()) hf.extend(b' \b') hf.extend(Cept.clear_line()) hf.extend(Cept.serial_limited_mode()) hf.extend(Cept.set_cursor(24, 1)) hf.extend(Cept.set_fg_color(8)) hf.extend(b'\b') hf.extend(Cept.code_9d()) hf.extend(b'\b') if publisher_color < 8: color_string = Cept.set_fg_color(publisher_color) else: color_string = Cept.set_fg_color_simple(publisher_color - 8) hf.extend(color_string) hf.extend(Cept.set_cursor(24, 19)) if not hide_header_footer: hf.extend(Cept.from_str(pageid).rjust(22)) hf.extend(Cept.cursor_home()) hf.extend(Cept.set_palette(1)) hf.extend(Cept.set_fg_color(8)) hf.extend(b'\b') hf.extend(Cept.code_9d()) hf.extend(b'\b') hf.extend(color_string) hf.extend(b'\r') hf.extend(Cept.from_str(publisher_name)) # TODO: price if not hide_header_footer and not hide_price: hf.extend(Cept.set_cursor(1, 31)) hf.extend(b' ') hf.extend(Cept.from_str(Util.format_currency(0))) hf.extend(Cept.cursor_home()) hf.extend(Cept.set_palette(0)) hf.extend(Cept.protect_line()) hf.extend(b'\n') return hf
def messaging_create_compose(user): meta = { "include": "a", "clear_screen": True, "links": { "0": "8" }, "publisher_color": 7, "inputs": { "fields": [{ "name": "user_id", "type": "user_id", "line": 8, "column": 20, "height": 1, "width": 16, "bgcolor": 4, "fgcolor": 3, "validate": "call:Messaging_UI.callback_validate_user_id" }, { "name": "ext", "type": "ext", "line": 8, "column": 37, "height": 1, "width": 1, "bgcolor": 4, "fgcolor": 3, "default": "1", "validate": "call:Messaging_UI.callback_validate_ext" }, { "name": "body", "line": 12, "column": 1, "height": 10, "width": 40, "bgcolor": 4, "fgcolor": 3 }], "action": "send_message", "price": 30, "target": "page:8" } } current_date = datetime.datetime.now().strftime("%d.%m.%Y") current_time = datetime.datetime.now().strftime("%H:%M") data_cept = bytearray(Cept.set_cursor(2, 1)) data_cept.extend(Cept.set_palette(1)) data_cept.extend(Cept.set_screen_bg_color_simple(4)) data_cept.extend(b'\x1b\x28\x40' # load G0 into G0 ) data_cept.extend(b'\x0f' # G0 into left charset ) data_cept.extend(Cept.parallel_mode()) data_cept.extend(Cept.set_palette(0)) data_cept.extend(Cept.code_9e()) data_cept.extend(b'\n\r') data_cept.extend(Cept.set_line_bg_color_simple(4)) data_cept.extend(b'\n') data_cept.extend(Cept.set_line_bg_color_simple(4)) data_cept.extend(Cept.set_palette(1)) data_cept.extend(Cept.double_height()) data_cept.extend(b'\r') data_cept.extend(Cept.from_str("Mitteilungsdienst")) data_cept.extend(b'\n\r') data_cept.extend(Cept.set_palette(0)) data_cept.extend(Cept.normal_size()) data_cept.extend(Cept.code_9e()) data_cept.extend(Cept.set_fg_color_simple(7)) data_cept.extend(Cept.from_str("Absender:")) data_cept.extend(Cept.from_str(user.user_id)) data_cept.extend(Cept.set_cursor(5, 25)) data_cept.extend(Cept.from_str(user.ext)) data_cept.extend(Cept.set_cursor(6, 10)) data_cept.extend(Cept.from_str(user.first_name)) data_cept.extend(Cept.set_cursor(7, 10)) data_cept.extend(Cept.from_str(user.last_name)) data_cept.extend(Cept.set_cursor(5, 31)) data_cept.extend(Cept.from_str(current_date)) data_cept.extend(Cept.set_cursor(6, 31)) data_cept.extend(Cept.from_str(current_time)) data_cept.extend(b'\r\n\n') data_cept.extend(Cept.from_str("Tln.-Nr. Empfänger:")) data_cept.extend(Cept.set_cursor(8, 36)) data_cept.extend(b'-' b'\r\n\n\n') data_cept.extend(b'Text:') data_cept.extend(b'\r\n\n\n\n\n\n\n\n\n\n\n\n') data_cept.extend(Cept.set_line_bg_color_simple(4)) data_cept.extend(b'0') data_cept.extend(b'\x19' # switch to G2 for one character b'\x2b\xfe\x7f' # "+." ) return (meta, data_cept)
def messaging_create_message_detail(user, index, is_read): messages = user.messaging.select(is_read, index, 1) if len(messages) == 0: return None message = messages[0] meta = { "publisher_name": "Bildschirmtext", "include": "11a", "palette": "11a", "clear_screen": True, "links": { "0": "89" if is_read else "88", }, "publisher_color": 7 } from_date = message.from_date() from_time = message.from_time() if message.from_user.personal_data: from_street = message.from_user.street from_zip = message.from_user.zip from_city = message.from_user.city else: from_street = "" from_zip = "" from_city = "" data_cept = bytearray(Cept.parallel_limited_mode()) data_cept.extend(Cept.set_cursor(2, 1)) data_cept.extend(Cept.set_fg_color(3)) data_cept.extend(b'von ') data_cept.extend( Cept.from_str(message.from_user.user_id.ljust(12)) + b' ' + Cept.from_str(message.from_user.ext.rjust(5, '0'))) data_cept.extend(Cept.set_cursor(2, 41 - len(from_date))) data_cept.extend(Cept.from_str(from_date)) data_cept.extend(Cept.repeat(" ", 4)) data_cept.extend(Cept.from_str(message.from_user.org_name)) data_cept.extend(Cept.set_cursor(3, 41 - len(from_time))) data_cept.extend(Cept.from_str(from_time)) data_cept.extend(Cept.repeat(" ", 4)) data_cept.extend(Cept.set_fg_color_simple(0)) data_cept.extend( Cept.from_str(message.from_user.first_name) + b' ' + Cept.from_str(message.from_user.last_name)) data_cept.extend(b'\r\n') data_cept.extend(Cept.repeat(" ", 4)) data_cept.extend(Cept.from_str(from_street)) data_cept.extend(b'\r\n') data_cept.extend(Cept.repeat(" ", 4)) data_cept.extend(Cept.from_str(from_zip)) data_cept.extend(b' ') data_cept.extend(Cept.from_str(from_city)) data_cept.extend(b'\r\n') data_cept.extend(b'an ') data_cept.extend( Cept.from_str(user.user_id.ljust(12)) + b' ' + Cept.from_str(user.ext.rjust(5, '0'))) data_cept.extend(b'\r\n') data_cept.extend(Cept.repeat(" ", 4)) data_cept.extend( Cept.from_str(user.first_name) + b' ' + Cept.from_str(user.last_name)) data_cept.extend(b'\r\n\n') data_cept.extend(Cept.from_str(message.body())) data_cept.extend(Cept.set_cursor(23, 1)) data_cept.extend(b'0') data_cept.extend(b'\x1b\x29\x20\x40' # load DRCs into G1 b'\x1b\x7e' # G1 into right charset ) data_cept.extend(Cept.from_str(" Gesamtübersicht")) data_cept.extend(Cept.repeat(" ", 22)) user.messaging.mark_as_read(message.index) return (meta, data_cept)
def create_start(user): links = { "#": "0" } if user.messaging.has_new_messages(): links["8"] = "88" if user.user_id == "0": links["7"] = "77" meta = { "include": "a", "clear_screen": True, "links": links, "publisher_color": 7 } t = datetime.datetime.now() current_date = t.strftime("%d.%m.%Y %H:%M") if user.stats.last_login is not None: t = datetime.datetime.fromtimestamp(user.stats.last_login) last_date = t.strftime("%d.%m.%Y") last_time = t.strftime("%H:%M") else: last_date = "--.--.----" last_time = "--:--" user_name = "" if user.salutation: user_name += user.salutation + "\n" if user.first_name: user_name += user.first_name + "\n" if user.last_name: user_name += user.last_name + "\n" notifications = Login_UI.notifications(user) data_cept = bytearray() data_cept.extend(Cept.clear_screen()) data_cept.extend(Cept.cursor_home()) data_cept.extend(b'\n') data_cept.extend(Cept.set_palette(1)) data_cept.extend(Cept.set_screen_bg_color_simple(4)) data_cept.extend(Cept.load_g0_g0()) data_cept.extend(Cept.set_left_g0()) data_cept.extend(Cept.parallel_mode()) data_cept.extend(Cept.set_palette(0)) data_cept.extend(Cept.code_9e()) data_cept.extend(Cept.set_fg_color_simple(7)) data_cept.extend(Cept.load_g0_drcs()) data_cept.extend(Cept.set_left_g0()) data_cept.extend(b'!"#\r\n$%&') data_cept.extend(Cept.cursor_up()) data_cept.extend(Cept.cursor_right()) data_cept.extend(Cept.load_g0_g0()) data_cept.extend(Cept.set_left_g0()) data_cept.extend(b'\n') data_cept.extend(Cept.double_height()) data_cept.extend(Cept.from_str("Bildschirmtext")) data_cept.extend(b'\r\n') data_cept.extend(Cept.set_line_bg_color_simple(4)) data_cept.extend(b'\n') data_cept.extend(Cept.set_line_bg_color_simple(4)) data_cept.extend(Cept.set_palette(1)) data_cept.extend(Cept.double_height()) data_cept.extend(b'\r') data_cept.extend(Cept.from_str("Deutsche Bundespost")) data_cept.extend(b'\n\r') data_cept.extend(Cept.set_palette(0)) data_cept.extend(Cept.normal_size()) data_cept.extend(Cept.code_9e()) data_cept.extend(b'\r\n') data_cept.extend(Cept.set_fg_color_simple(3)) data_cept.extend(Cept.from_str(current_date)) data_cept.extend(Cept.set_fg_color_simple(7)) data_cept.extend(b'\r\n\n') data_cept.extend(Cept.from_str("Guten Tag")) data_cept.extend(b'\r\n') data_cept.extend(Cept.from_str(user_name)) data_cept.extend(b'\r\n') data_cept.extend(Cept.set_fg_color_simple(3)) data_cept.extend(Cept.from_str(notifications)) data_cept.extend(Cept.set_fg_color_simple(7)) data_cept.extend(Cept.set_cursor(19, 1)) data_cept.extend(Cept.from_str("Sie benutzten Bildschirmtext zuletzt")) data_cept.extend(b'\r\n') data_cept.extend(Cept.from_str("am ")) data_cept.extend(Cept.set_fg_color_simple(3)) data_cept.extend(Cept.from_str(last_date)) data_cept.extend(Cept.set_fg_color_simple(7)) data_cept.extend(Cept.from_str(" bis ")) data_cept.extend(Cept.set_fg_color_simple(3)) data_cept.extend(Cept.from_str(last_time)) data_cept.extend(Cept.set_fg_color_simple(7)) data_cept.extend(b'\r\n\r\n\r\n') data_cept.extend(Cept.set_line_bg_color_simple(4)) data_cept.extend(Cept.from_str("Weiter mit # oder *Seitennummer#")) return (meta, data_cept)