|
@@ -0,0 +1,108 @@
|
|
|
+from Tkinter import *
|
|
|
+from PIL import Image, ImageTk
|
|
|
+import tkSimpleDialog
|
|
|
+
|
|
|
+import urllib
|
|
|
+import urllib2
|
|
|
+import json
|
|
|
+
|
|
|
+import time
|
|
|
+
|
|
|
+sys.path.append("interface/HUTN")
|
|
|
+sys.path.append("wrappers")
|
|
|
+from modelverse import *
|
|
|
+
|
|
|
+address = "http://127.0.0.1:8001"
|
|
|
+taskname = str(random.random())
|
|
|
+MAX_WIDTH = 500
|
|
|
+MAX_HEIGHT = 500
|
|
|
+
|
|
|
+init()
|
|
|
+login("admin", "admin")
|
|
|
+
|
|
|
+root = Tk()
|
|
|
+canvas = Canvas(root, width=MAX_WIDTH, height=MAX_HEIGHT, bg="white")
|
|
|
+
|
|
|
+class PromptDialog(tkSimpleDialog.Dialog):
|
|
|
+ def __init__(self, master, query):
|
|
|
+ self.query = query
|
|
|
+ tkSimpleDialog.Dialog.__init__(self, master)
|
|
|
+
|
|
|
+ def body(self, master):
|
|
|
+ self.entries = []
|
|
|
+ for i, q in enumerate(self.query):
|
|
|
+ Label(master, text=q).grid(row=i, column=0)
|
|
|
+ self.entries.append(Entry(master))
|
|
|
+ self.entries[-1].grid(row=i, column=1)
|
|
|
+ return self.entries[0]
|
|
|
+
|
|
|
+ def apply(self):
|
|
|
+ self.result = {self.query[i]: self.entries[i].get() for i in range(len(self.entries))}
|
|
|
+
|
|
|
+def open_model():
|
|
|
+ try:
|
|
|
+ # Exit if necessary
|
|
|
+ model_exit()
|
|
|
+ except InvalidMode:
|
|
|
+ pass
|
|
|
+ # Clear the canvas!
|
|
|
+ print("Opening model: " + variable.get())
|
|
|
+ model_modify(variable.get())
|
|
|
+
|
|
|
+def instantiate_model():
|
|
|
+ try:
|
|
|
+ # Exit if necessary
|
|
|
+ model_exit()
|
|
|
+ except InvalidMode:
|
|
|
+ pass
|
|
|
+ d = PromptDialog(root, ["Name:"])
|
|
|
+ if d.result is not None:
|
|
|
+ name = str(d.result["Name:"])
|
|
|
+ print("Creating new model named " + name)
|
|
|
+ model_add(name, variable.get())
|
|
|
+ options.children["menu"].add_command(label=name, command=lambda v=name: variable.set(v))
|
|
|
+ model_modify(name)
|
|
|
+
|
|
|
+def verify_model():
|
|
|
+ try:
|
|
|
+ # Exit if necessary
|
|
|
+ model_exit()
|
|
|
+ except InvalidMode:
|
|
|
+ pass
|
|
|
+ print(verify(variable.get()))
|
|
|
+
|
|
|
+bound_functions = {
|
|
|
+ "open": open_model,
|
|
|
+ "instantiate": instantiate_model,
|
|
|
+ "verify": verify_model,
|
|
|
+ }
|
|
|
+
|
|
|
+buttons = []
|
|
|
+
|
|
|
+models = model_list()
|
|
|
+variable = StringVar(root)
|
|
|
+options = OptionMenu(root, variable, *[i[0] for i in models])
|
|
|
+buttons.append(options)
|
|
|
+
|
|
|
+for k, v in bound_functions.items():
|
|
|
+ buttons.append(Button(root, text=k, command=v))
|
|
|
+
|
|
|
+for i, b in enumerate(buttons):
|
|
|
+ b.grid(row=0, column=i)
|
|
|
+
|
|
|
+canvas.grid(row=1,column=0,columnspan=len(buttons))
|
|
|
+
|
|
|
+def left_clicked():
|
|
|
+ pass
|
|
|
+
|
|
|
+def middle_clicked():
|
|
|
+ pass
|
|
|
+
|
|
|
+def right_clicked():
|
|
|
+ pass
|
|
|
+
|
|
|
+canvas.bind("<Button-1>", left_clicked)
|
|
|
+canvas.bind("<Button-2>", middle_clicked)
|
|
|
+canvas.bind("<Button-3>", right_clicked)
|
|
|
+
|
|
|
+root.mainloop()
|