main.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. from Tkinter import *
  2. from PIL import Image, ImageTk
  3. import tkSimpleDialog
  4. import urllib
  5. import urllib2
  6. import json
  7. import time
  8. sys.path.append("interface/HUTN")
  9. sys.path.append("wrappers")
  10. from modelverse import *
  11. address = "http://127.0.0.1:8001"
  12. taskname = str(random.random())
  13. MAX_WIDTH = 500
  14. MAX_HEIGHT = 500
  15. init()
  16. login("admin", "admin")
  17. root = Tk()
  18. canvas = Canvas(root, width=MAX_WIDTH, height=MAX_HEIGHT, bg="white")
  19. class PromptDialog(tkSimpleDialog.Dialog):
  20. def __init__(self, master, query):
  21. self.query = query
  22. tkSimpleDialog.Dialog.__init__(self, master)
  23. def body(self, master):
  24. self.entries = []
  25. for i, q in enumerate(self.query):
  26. Label(master, text=q).grid(row=i, column=0)
  27. self.entries.append(Entry(master))
  28. self.entries[-1].grid(row=i, column=1)
  29. return self.entries[0]
  30. def apply(self):
  31. self.result = {self.query[i]: self.entries[i].get() for i in range(len(self.entries))}
  32. def open_model():
  33. try:
  34. # Exit if necessary
  35. model_exit()
  36. except InvalidMode:
  37. pass
  38. # Clear the canvas!
  39. print("Opening model: " + variable.get())
  40. model_modify(variable.get())
  41. def instantiate_model():
  42. try:
  43. # Exit if necessary
  44. model_exit()
  45. except InvalidMode:
  46. pass
  47. d = PromptDialog(root, ["Name:"])
  48. if d.result is not None:
  49. name = str(d.result["Name:"])
  50. print("Creating new model named " + name)
  51. model_add(name, variable.get())
  52. options.children["menu"].add_command(label=name, command=lambda v=name: variable.set(v))
  53. model_modify(name)
  54. def verify_model():
  55. try:
  56. # Exit if necessary
  57. model_exit()
  58. except InvalidMode:
  59. pass
  60. print(verify(variable.get()))
  61. bound_functions = {
  62. "open": open_model,
  63. "instantiate": instantiate_model,
  64. "verify": verify_model,
  65. }
  66. buttons = []
  67. models = model_list()
  68. variable = StringVar(root)
  69. options = OptionMenu(root, variable, *[i[0] for i in models])
  70. buttons.append(options)
  71. for k, v in bound_functions.items():
  72. buttons.append(Button(root, text=k, command=v))
  73. for i, b in enumerate(buttons):
  74. b.grid(row=0, column=i)
  75. canvas.grid(row=1,column=0,columnspan=len(buttons))
  76. def left_clicked():
  77. pass
  78. def middle_clicked():
  79. pass
  80. def right_clicked():
  81. pass
  82. canvas.bind("<Button-1>", left_clicked)
  83. canvas.bind("<Button-2>", middle_clicked)
  84. canvas.bind("<Button-3>", right_clicked)
  85. root.mainloop()