1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#!/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 <workspace> <show id>" % 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()
|