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("", left_clicked) canvas.bind("", middle_clicked) canvas.bind("", right_clicked) root.mainloop()