Source code for common.text_window

#!/usr/bin/env python3
import os
import time
import subprocess
from openpilot.common.basedir import BASEDIR


[docs] class TextWindow: def __init__(self, text): try: self.text_proc = subprocess.Popen(["./text", text], stdin=subprocess.PIPE, cwd=os.path.join(BASEDIR, "selfdrive", "ui"), close_fds=True) except OSError: self.text_proc = None
[docs] def get_status(self): if self.text_proc is not None: self.text_proc.poll() return self.text_proc.returncode return None
def __enter__(self): return self
[docs] def close(self): if self.text_proc is not None: self.text_proc.terminate() self.text_proc = None
[docs] def wait_for_exit(self): if self.text_proc is not None: while True: if self.get_status() == 1: return time.sleep(0.1)
def __del__(self): self.close() def __exit__(self, exc_type, exc_value, traceback): self.close()
if __name__ == "__main__": text = """Traceback (most recent call last): File "./controlsd.py", line 608, in <module> main() File "./controlsd.py", line 604, in main controlsd_thread(sm, pm, logcan) File "./controlsd.py", line 455, in controlsd_thread 1/0 ZeroDivisionError: division by zero""" print(text) with TextWindow(text) as s: for _ in range(100): if s.get_status() == 1: print("Got exit button") break time.sleep(0.1) print("gone")