#!/usr/bin/env python3 """Basic testing for Show rendering with Tk output.""" import threading import time from tkinter import Tk, N, E, S, W, Label, Button import sys from blc.workspace import Workspace from blc.tk import TkOutput from blc.render import BasicRenderer def update(m, l, sl, r): """Update GUI elements.""" if r.stall_lock.acquire(blocking=False): r.stall_lock.release() sl.config(text="Running") else: sl.config(text="Stalled") l.config(text="%.1f" % ((time.monotonic() - r.start_time) if r.start_time is not None else 0)) m.after(50, lambda: update(m,l,sl,r)) if len(sys.argv) != 3: print("Usage: %s " % sys.argv[0]) sys.exit(1) w = Workspace.load(sys.argv[1]) s = w.functions[int(sys.argv[2])] root = Tk() root.columnconfigure(0, weight=1) root.rowconfigure(0, weight=1) output = TkOutput(root) output.grid(row=0, sticky=N+E+S+W) label = Label(root) label.grid(row=1,sticky=N+E+S+W) slabel = Label(root) slabel.grid(row=2,sticky=N+E+S+W) root.wm_title("BLC+ TkTest - "+s.name) renderer = BasicRenderer(s, output, minnx=13) rthread = threading.Thread(target=renderer.start) rthread.start() Button(root,text="Advance",command=lambda *args: renderer.advance()).grid(row=3, sticky=N+E+S+W) root.after(50, lambda: update(root, label, slabel, renderer)) root.mainloop()