summaryrefslogtreecommitdiff
path: root/tktest.py
blob: 8f9bf1e430883e9ef11f620cb66f7f774ab1d9fc (plain)
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()