def print_logs(message_list: List[MsgTuple], export: bool, msg_to_load: int, window: Union['TxWindow', 'RxWindow'], contact_list: 'ContactList', group_list: 'GroupList', settings: 'Settings' ) -> None: """Print list of logged messages to screen or export them to file.""" terminal_width = get_terminal_width() system, m_dir = {TX: ("Transmitter", "sent to"), RX: ("Receiver", "to/from")}[settings.software_operation] f_name = open(f"{system} - Plaintext log ({window.name})", 'w+') if export else sys.stdout subset = '' if msg_to_load == 0 else f"{msg_to_load} most recent " title = textwrap.fill(f"Log file of {subset}message(s) {m_dir} {window.type} {window.name}", terminal_width) packet_list = PacketList(settings, contact_list) log_window = RxWindow(window.uid, contact_list, group_list, settings, packet_list) log_window.is_active = True log_window.message_log = message_list if message_list: if not export: clear_screen() print(title, file=f_name) print(terminal_width * '═', file=f_name) log_window.redraw( file=f_name) print("<End of log file>\n", file=f_name) else: raise FunctionReturn(f"No logged messages for {window.type} '{window.name}'.", head_clear=True) if export: f_name.close()
def create_window(self, uid: bytes): """Create new RxWindow object.""" return RxWindow(uid, self.contact_list, self.group_list, self.settings, self.packet_list)