Forráskód Böngészése

Process complex attributes

Yentl Van Tendeloo 7 éve
szülő
commit
34a8aaa27f

+ 2 - 2
classes/canvas/canvas_element.xml

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

+ 0 - 2
classes/window/attribute_editor.xml

@@ -307,7 +307,6 @@
                     <parameter name="event_name"/>
                     <script>
                         self.parameter = event_name.split("optional_", 1)[1]
-                        print("OPTIONAL " + self.parameter)
                     </script>
                 </transition>
 
@@ -315,7 +314,6 @@
                     <parameter name="event_name"/>
                     <script>
                         self.parameter = event_name.split("mandatory_", 1)[1]
-                        print("MANDATORY " + self.parameter)
                     </script>
                 </transition>
 

+ 7 - 2
classes/window/main_window.xml

@@ -1111,6 +1111,7 @@
                                 <parameter name="result"/>
                                 <script>
                                     self.rendered = []
+                                    print("Got model: " + str(result))
 
                                     group_counter = 0
                                     groups = {}
@@ -1162,8 +1163,12 @@
                                             text_counter = 0
                                             for key, value in attrs.items():
                                                 cs_elem_id = str(uuid.uuid4())
-                                                self.rendered.append({"id": cs_elem_id, "type": "Text", "x": 10, "y": 25 + text_counter * 11, "text": "%s = %s" % (key, value), "lineWidth": 3, "lineColour": "black", "layer": 2})
-                                                max_text = max(len("%s = %s" % (key, value)), max_text)
+                                                if isinstance(value, dict):
+                                                    text = "%s = ^%s" % (key, value['AL'])
+                                                else:
+                                                    text = ("%s = %s" % (key, value)) if value is not None else ("(%s)" % key)
+                                                self.rendered.append({"id": cs_elem_id, "type": "Text", "x": 10, "y": 25 + text_counter * 11, "text": text, "lineWidth": 3, "lineColour": "black", "layer": 2})
+                                                max_text = max(len(text), max_text)
                                                 self.rendered.append({"id": str(uuid.uuid4()), "type": "contains", "__source": group_id, "__target": cs_elem_id})
                                                 text_counter += 1
 

+ 1 - 0
classes/window/prompt_window.xml

@@ -21,6 +21,7 @@
             counter = 0
             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 if v is not None else "")
 

+ 14 - 11
frontend.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Tue May 29 09:38:53 2018
+Date:   Tue May 29 13:33:09 2018
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -3059,7 +3059,7 @@ class Modelverse(RuntimeClassBase):
     def _initialized_http_mapper_init_0_exec(self, parameters):
         value = parameters[0]
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.http_clients[0], Event("HTTP_input", None, [urlencode({"op": "set_input", "data": json.dumps(value), "taskname": self.taskname}), None])]))
-        print("Request: " + str(value))
+        #print("Request: " + str(value))
     
     def _initialized_http_mapper_init_0_guard(self, parameters):
         value = parameters[0]
@@ -3068,7 +3068,7 @@ class Modelverse(RuntimeClassBase):
     def _initialized_http_mapper_init_1_exec(self, parameters):
         value = parameters[0]
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.http_clients[0], Event("HTTP_input", None, [urlencode({"op": "set_input", "value": json.dumps(value), "taskname": self.taskname}), None])]))
-        print("Request: " + str(value))
+        #print("Request: " + str(value))
     
     def _initialized_http_mapper_init_1_guard(self, parameters):
         value = parameters[0]
@@ -3218,7 +3218,7 @@ class Modelverse(RuntimeClassBase):
     
     def _initialized_behaviour_operations_alter_context_0_exec(self, parameters):
         self.registered_metamodel[self.parameters[0]] = self.parameters[1]
-        print("Alter context of " + str(self.parameters[0]) + " to " + str(self.parameters[1]))
+        #print("Alter context of " + str(self.parameters[0]) + " to " + str(self.parameters[1]))
     
     def _initialized_behaviour_operations_model_overwrite_init_0_guard(self, parameters):
         return self.parameters[0] in self.registered_metamodel
@@ -4979,7 +4979,6 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     def _all_running_1_exec(self, parameters):
         event_name = parameters[0]
         self.parameter = event_name.split("optional_", 1)[1]
-        print("OPTIONAL " + self.parameter)
     
     def _all_running_1_guard(self, parameters):
         event_name = parameters[0]
@@ -4988,7 +4987,6 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     def _all_running_2_exec(self, parameters):
         event_name = parameters[0]
         self.parameter = event_name.split("mandatory_", 1)[1]
-        print("MANDATORY " + self.parameter)
     
     def _all_running_2_guard(self, parameters):
         event_name = parameters[0]
@@ -5104,6 +5102,7 @@ class PromptWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         counter = 0
         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 if v is not None else "")
         
@@ -6754,6 +6753,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     def _init_init_running_rerender_model_request_render_1_exec(self, parameters):
         result = parameters[0]
         self.rendered = []
+        print("Got model: " + str(result))
         
         group_counter = 0
         groups = {}
@@ -6805,8 +6805,12 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
                 text_counter = 0
                 for key, value in attrs.items():
                     cs_elem_id = str(uuid.uuid4())
-                    self.rendered.append({"id": cs_elem_id, "type": "Text", "x": 10, "y": 25 + text_counter * 11, "text": "%s = %s" % (key, value), "lineWidth": 3, "lineColour": "black", "layer": 2})
-                    max_text = max(len("%s = %s" % (key, value)), max_text)
+                    if isinstance(value, dict):
+                        text = "%s = ^%s" % (key, value['AL'])
+                    else:
+                        text = ("%s = %s" % (key, value)) if value is not None else ("(%s)" % key)
+                    self.rendered.append({"id": cs_elem_id, "type": "Text", "x": 10, "y": 25 + text_counter * 11, "text": text, "lineWidth": 3, "lineColour": "black", "layer": 2})
+                    max_text = max(len(text), max_text)
                     self.rendered.append({"id": str(uuid.uuid4()), "type": "contains", "__source": group_id, "__target": cs_elem_id})
                     text_counter += 1
         
@@ -14552,7 +14556,6 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
     
     def _main_0_exec(self, parameters):
         element = parameters[0]
-        print("MM: " + str(current_metamodel))
         elem_x = self.coordinates[0] + element["x"]
         elem_y = self.coordinates[1] + element["y"]
         if element["type"] == "Rectangle":
@@ -14625,7 +14628,7 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
     
     def _update_attrs_query_0_exec(self, parameters):
         result = parameters[0]
-        self.prev_results = {k: json.dumps(v) for k, v in result.items()}
+        self.prev_results = {k: json.dumps(v) if v is not None else '' for k, v in result.items()}
     
     def _update_attrs_prompt_0_exec(self, parameters):
         name = parameters[0]
@@ -14653,7 +14656,7 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
     
     def _update_attrs_process_results_0_exec(self, parameters):
         k, v = self.diff_results.popitem()
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_assign', [current_model, self.as_element, k, json.loads(v)]])]))
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_assign', [current_model, self.as_element, k, json.loads(v) if v != '' else 'null']])]))
     
     def _update_attrs_process_results_0_guard(self, parameters):
         return len(self.diff_results) > 0