瀏覽代碼

Making an attribute empty means that it must be deleted

Yentl Van Tendeloo 7 年之前
父節點
當前提交
275d663fad
共有 2 個文件被更改,包括 22 次插入18 次删除
  1. 11 9
      classes/canvas/canvas_element.xml
  2. 11 9
      frontend.py

+ 11 - 9
classes/canvas/canvas_element.xml

@@ -362,21 +362,23 @@
                 <transition cond="len(self.diff_results) > 0" target=".">
                     <script>
                         k, v = self.diff_results.popitem()
-                        if k in self.al_keys:
-                            op = "attr_assign_code"
-                            params = [current_model, self.as_element, k, v]
+                        v = v.strip()
+                        if v == "":
+                            op = "attr_delete"
+                            params = [current_model, self.as_element, k]
                         else:
-                            op = "attr_assign"
-                            if v != "":
+                            if k in self.al_keys:
+                                op = "attr_assign_code"
+                                params = [current_model, self.as_element, k, v]
+                            else:
+                                op = "attr_assign"
                                 try:
                                     v = json.loads(v)
                                 except:
                                     print("WARNING: Could not decode attr value as JSON: " + v)
                                     print("Attempting to send as string!")
                                     v = str(v)
-                            else:
-                                v = "null"
-                            params = [current_model, self.as_element, k, v]
+                                params = [current_model, self.as_element, k, v]
                     </script>
                     <raise event="mv_request" scope="broad">
                         <parameter expr="op"/>
@@ -391,7 +393,7 @@
                     <parameter name="exception_name"/>
                     <parameter name="description"/>
                     <raise event="errorlog_log" scope="broad">
-                        <parameter expr="'Failed to compile AL: %s - %s' % (exception_name, description)"/>
+                        <parameter expr="'Failed to set attribute: %s - %s' % (exception_name, description)"/>
                     </raise>
                     <script>
                         self.remaining_responses -= 1

+ 11 - 9
frontend.py

@@ -14970,21 +14970,23 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
     
     def _update_attrs_process_results_0_exec(self, parameters):
         k, v = self.diff_results.popitem()
-        if k in self.al_keys:
-            op = "attr_assign_code"
-            params = [current_model, self.as_element, k, v]
+        v = v.strip()
+        if v == "":
+            op = "attr_delete"
+            params = [current_model, self.as_element, k]
         else:
-            op = "attr_assign"
-            if v != "":
+            if k in self.al_keys:
+                op = "attr_assign_code"
+                params = [current_model, self.as_element, k, v]
+            else:
+                op = "attr_assign"
                 try:
                     v = json.loads(v)
                 except:
                     print("WARNING: Could not decode attr value as JSON: " + v)
                     print("Attempting to send as string!")
                     v = str(v)
-            else:
-                v = "null"
-            params = [current_model, self.as_element, k, v]
+                params = [current_model, self.as_element, k, v]
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, [op, params])]))
     
     def _update_attrs_process_results_0_guard(self, parameters):
@@ -14997,7 +14999,7 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
         ID = parameters[0]
         exception_name = parameters[1]
         description = parameters[2]
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Failed to compile AL: %s - %s' % (exception_name, description)])]))
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Failed to set attribute: %s - %s' % (exception_name, description)])]))
         self.remaining_responses -= 1
     
     def _update_attrs_process_results_3_exec(self, parameters):