Преглед изворни кода

Initial graphical interface for concrete syntax

Yentl Van Tendeloo пре 8 година
родитељ
комит
37313170de
2 измењених фајлова са 109 додато и 1 уклоњено
  1. 108 0
      interface/graphical/main.py
  2. 1 1
      wrappers/modelverse.py

+ 108 - 0
interface/graphical/main.py

@@ -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()

+ 1 - 1
wrappers/modelverse.py

@@ -148,7 +148,7 @@ def login(username, password):
         raise InvalidMode()
     _output("Log on as which user?")
     _input(username)
-    if _output() == "User password?":
+    if _output() == "Password for existing user?":
         _input(password)
         if _output() == "Welcome to the Model Management Interface v2.0!":
             _output("Use the 'help' command for a list of possible commands")