|
| 1 | +import subprocess |
| 2 | +from tkinter import Tk, ttk, messagebox |
| 3 | +from .data import Data |
| 4 | + |
| 5 | + |
| 6 | +def main(data: Data) -> None: |
| 7 | + def _deploy(event=None): |
| 8 | + r = messagebox.askyesno("Deploy", "Deploy data to working directory?") |
| 9 | + if r: |
| 10 | + data.deploy() |
| 11 | + |
| 12 | + def _register(event=None): |
| 13 | + r = messagebox.askyesno("Register", "Register annotation result to datafile?") |
| 14 | + if r: |
| 15 | + data.register() |
| 16 | + |
| 17 | + def _open(event=None): |
| 18 | + subprocess.Popen(["explorer", data.workdir], shell=True) |
| 19 | + |
| 20 | + root = Tk() |
| 21 | + frm = ttk.Frame(root, padding=20) |
| 22 | + frm.grid() |
| 23 | + |
| 24 | + row = 0 |
| 25 | + ttk.Label(frm, text="Annotation tool").grid(column=0, row=row, columnspan=2) |
| 26 | + |
| 27 | + for k in ["datafile", "workdir"]: |
| 28 | + row += 1 |
| 29 | + ttk.Label(frm, text=f"{k}: {data.__getattribute__(k)}").grid(column=0, row=row, columnspan=2) |
| 30 | + |
| 31 | + row += 1 |
| 32 | + ttk.Label(frm, text=f"data: {data.count('all')}").grid(column=0, row=row, columnspan=3) |
| 33 | + |
| 34 | + row += 1 |
| 35 | + ttk.Label(frm, text=f"annotated: {data.count('annotated')}").grid(column=0, row=row, columnspan=3) |
| 36 | + |
| 37 | + row += 1 |
| 38 | + ttk.Button(frm, text="[D]eploy", command=_deploy).grid(column=0, row=row) |
| 39 | + ttk.Button(frm, text="[R]egister", command=_register).grid(column=1, row=row) |
| 40 | + |
| 41 | + row += 1 |
| 42 | + ttk.Button(frm, text="[O]pen", command=_open).grid(column=0, row=row) |
| 43 | + |
| 44 | + row += 1 |
| 45 | + ttk.Button(frm, text="Config", command=None).grid(column=0, row=row) |
| 46 | + ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=row) |
| 47 | + |
| 48 | + # keybind |
| 49 | + root.bind("d", _deploy) |
| 50 | + root.bind("r", _register) |
| 51 | + root.bind("o", _open) |
| 52 | + |
| 53 | + root.mainloop() |
0 commit comments