瀏覽代碼

Patches for new version of the Modelverse

Yentl Van Tendeloo 7 年之前
父節點
當前提交
3cdce1d8f2

+ 2 - 2
classes/canvas/canvas.xml

@@ -258,8 +258,8 @@
                                 <transition event="mv_response" target="../check_next">
                                     <parameter name="result"/>
                                     <script>
-                                        if 'name' in result and result['name'] != "null":
-                                            self.new_allowed_types[result['name'][1:-1]] = self.allowed_types[0]
+                                        if 'name' in result and result['name'] is not None:
+                                            self.new_allowed_types[result['name']] = self.allowed_types[0]
                                         self.allowed_types.pop(0)
                                     </script>
                                 </transition>

+ 3 - 3
classes/canvas/canvas_element.xml

@@ -229,7 +229,7 @@
                 <transition event="mv_response" target="../prompt">
                     <parameter name="result"/>
                     <script>
-                        self.prev_results = result
+                        self.prev_results = {k: json.dumps(v) for k, v in result.items()}
                     </script>
                 </transition>
             </state>
@@ -261,7 +261,7 @@
                     <script>
                         for k in results:
                             if results[k] != self.prev_results[k]:
-                                self.diff_results[k] = json.loads(results[k])
+                                self.diff_results[k] = results[k]
                         self.remaining_responses = len(self.diff_results)
                     </script>
                 </transition>
@@ -286,7 +286,7 @@
                     </script>
                     <raise event="mv_request" scope="broad">
                         <parameter expr="'attr_assign'"/>
-                        <parameter expr="[current_model, self.as_element, k, v]"/>
+                        <parameter expr="[current_model, self.as_element, k, json.loads(v)]"/>
                     </raise>
                 </transition>
                 <transition cond="self.remaining_responses == 0" target="../mark_dirty"/>

+ 1 - 1
classes/canvas/connecting_line.xml

@@ -205,7 +205,7 @@
                     <script>
                         for k in results:
                             if results[k] != self.prev_results[k]:
-                                self.diff_results[k] = json.loads(results[k])
+                                self.diff_results[k] = results[k]
                         self.remaining_responses = len(self.diff_results)
                     </script>
                 </transition>

+ 4 - 13
classes/main_app.xml

@@ -105,6 +105,10 @@
                                 <parameter expr="'init'"/>
                                 <parameter expr="[data['mv_address'], data['timeout']]"/>
                             </raise>
+                            <script>
+                                print("INITIALIZING")
+                                print("Data: " + str(data))
+                            </script>
 
                             <raise event="update_status" scope="narrow" target="self.splash_window">
                                 <parameter expr="30"/>
@@ -394,25 +398,12 @@
 
             <state id="forward_requests">
                 <state id="forward">
-                    <transition event="mv_request_context" target=".">
-                        <parameter name="name"/>
-                        <parameter name="params"/>
-                        <parameter name="context" default="None"/>
-                        <raise event="action" scope="narrow" target="'modelverse'">
-                            <parameter expr="name"/>
-                            <parameter expr="None"/>
-                            <parameter expr="context"/>
-                            <parameter expr="params"/>
-                        </raise>
-                    </transition>
-
                     <transition event="mv_request" target=".">
                         <parameter name="name"/>
                         <parameter name="params"/>
                         <raise event="action" scope="narrow" target="'modelverse'">
                             <parameter expr="name"/>
                             <parameter expr="None"/>
-                            <parameter expr="None"/>
                             <parameter expr="params"/>
                         </raise>
                     </transition>

+ 3 - 3
classes/toolbar/dsl_toolbar.xml

@@ -39,13 +39,13 @@
                     </raise>
                 </onentry>
 
-                <transition event="mv_response" cond="'name' in result and result['name'] != 'null'" target="../create_buttons">
+                <transition event="mv_response" cond="'name' in result and result['name'] is not None" target="../create_buttons">
                     <parameter name="result"/>
                     <script>
-                        self.button_text = result["name"][1:-1]
+                        self.button_text = result["name"]
                     </script>
                 </transition>
-                <transition event="mv_response" cond="'name' not in result or result['name'] == 'null'" target="../next_button">
+                <transition event="mv_response" cond="'name' not in result or result['name'] is None" target="../next_button">
                     <parameter name="result"/>
                     <script>
                         print("Skipping button for %s as it has no name attribute defined" % self.to_create[0])

+ 2 - 2
classes/window/browser.xml

@@ -241,14 +241,14 @@
                                 </raise>
                             </onentry>
 
-                            <transition event="mv_response" cond="len(set(result).intersection(set(self.filter_metamodels))) == 0" target="../check_type">
+                            <transition event="mv_response" cond="len(set([i[0] for i in result]).intersection(set(self.filter_metamodels))) == 0" target="../check_type">
                                 <parameter name="result"/>
                                 <script>
                                     self.labels_to_add.pop(0)
                                 </script>
                             </transition>
 
-                            <transition event="mv_response" cond="len(set(result).intersection(set(self.filter_metamodels))) > 0" target="../add_label">
+                            <transition event="mv_response" cond="len(set([i[0] for i in result]).intersection(set(self.filter_metamodels))) > 0" target="../add_label">
                                 <parameter name="result"/>
                             </transition>
                         </state>

+ 2 - 3
classes/window/main_window.xml

@@ -633,7 +633,7 @@
                                 <script>
                                     global current_metamodel
                                     if len(result) > 0:
-                                        current_metamodel = next(iter(result))
+                                        current_metamodel = next(iter(result))[0]
                                     else:
                                         current_metamodel = 'formalisms/Bottom'
                                     self.allowed_metamodels = result
@@ -1083,7 +1083,6 @@
                                                 attrs[key] = value
                                         max_text = 0
 
-                                        #TODO doesn't work yet
                                         if is_edge:
                                             edge_edge = len([x for x in result if (x["id"] == element_source or x["id"] == element_target) and "__source" in x]) > 0
                                         else:
@@ -1091,7 +1090,7 @@
 
                                         if is_edge:
                                             cs_elem_id = str(uuid.uuid4())
-                                            edges.append({"id": cs_elem_id, "type": "ConnectingLine", "offsetSourceX": 0 if edge_edge else 100, "offsetSourceY": 0 if edge_edge else 30, "offsetTargetX": 0 if edge_edge else 100, "offsetTargetY": 0 if edge_edge else 30, "lineWidth": 3, "lineColour": "black", "arrow": True, "__asid": element_id, "layer": 0, "__source": element_source, "__target": element_target})
+                                            edges.append({"id": cs_elem_id, "type": "ConnectingLine", "offsetSourceX": 0 if edge_edge else 100, "offsetSourceY": 0 if edge_edge else 30, "offsetTargetX": 100, "offsetTargetY": 30, "lineWidth": 3, "lineColour": "black", "arrow": True, "__asid": element_id, "layer": 0, "__source": element_source, "__target": element_target})
                                             groups[element_id] = cs_elem_id
                                         else:
                                             # Add the group

+ 1 - 1
classes/window/process_enact.xml

@@ -223,7 +223,7 @@
                             <parameter name="result"/>
                             <script>
                                 print("Got attrs: " + str(result))
-                                self.current = result["name"][1:-1]
+                                self.current = result["name"]
                             </script>
                         </transition>
                     </state>

+ 4 - 1
classes/window/prompt_window.xml

@@ -12,6 +12,9 @@
         <super class="tk.TopLevel"/>
         <super class="SCCDWidget"/>
         <body>
+            print("Making prompt")
+            print(entries)
+            print(options)
             self.entries = {}
 
             self.frame = tk.Frame(self)
@@ -19,7 +22,7 @@
             for k, v in entries.items():
                 label = tk.Label(self.frame, text=k)
                 entry = tk.Entry(self.frame, **options.get(k, {}))
-                entry.insert(0, v)
+                entry.insert(0, v if v is not None else "")
 
                 label.grid(row=counter, column=0)
                 entry.grid(row=counter, column=1)

文件差異過大導致無法顯示
+ 541 - 373
frontend.py


+ 5 - 0
frontend.xml

@@ -16,6 +16,11 @@
         
         global current_model
         global current_metamodel
+
+        try:
+            from urllib.parse import urlencode as urlencode
+        except Exception:
+            from urllib import urlencode as urlencode
     </top>
 
     <inport name="input"/>