Jelajahi Sumber

Working AL code in attributes (read/write)

Yentl Van Tendeloo 7 tahun lalu
induk
melakukan
bbcb5d8fbb
3 mengubah file dengan 33 tambahan dan 13 penghapusan
  1. 6 3
      classes/canvas/canvas_element.xml
  2. 10 3
      classes/window/prompt_window.xml
  3. 17 7
      frontend.py

+ 6 - 3
classes/canvas/canvas_element.xml

@@ -256,8 +256,7 @@
                     <transition event="mv_response" target="../check">
                         <parameter name="result"/>
                         <script>
-                            print("Got result: " + str(result))
-                            self.prev_results[self.attr_name] = result
+                            self.prev_results[self.attr_name] = result.rstrip() + "\n"
                         </script>
                     </transition>
                 </state>
@@ -290,7 +289,11 @@
                     <script>
                         for k in results:
                             if results[k] != self.prev_results[k]:
-                                self.diff_results[k] = results[k]
+                                if k in self.al_keys:
+                                    if results[k].strip() != self.prev_results[k].strip():
+                                        self.diff_results[k] = results[k]
+                                else:
+                                    self.diff_results[k] = results[k]
                         self.remaining_responses = len(self.diff_results)
                     </script>
                 </transition>

+ 10 - 3
classes/window/prompt_window.xml

@@ -22,8 +22,12 @@
             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 "")
+                if "\n" in v:
+                    entry = tk.Text(self.frame, **options.get(k, {}))
+                    entry.insert(tk.END, v.strip() if v is not None else "")
+                else:
+                    entry = tk.Entry(self.frame, **options.get(k, {}))
+                    entry.insert(0, v if v is not None else "")
 
                 label.grid(row=counter, column=0)
                 entry.grid(row=counter, column=1)
@@ -80,7 +84,10 @@
                 <script>
                     results = {}
                     for k, v in self.entries.items():
-                        results[k] = v.get()
+                        try:
+                            results[k] = v.get()
+                        except:
+                            results[k] = v.get("1.0", tk.END)
                     print("SENDING DATA")
                 </script>
 

+ 17 - 7
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 16:47:28 2018
+Date:   Wed May 30 09:44:06 2018
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -5151,8 +5151,12 @@ class PromptWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         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 "")
+            if "\n" in v:
+                entry = tk.Text(self.frame, **options.get(k, {}))
+                entry.insert(tk.END, v.strip() if v is not None else "")
+            else:
+                entry = tk.Entry(self.frame, **options.get(k, {}))
+                entry.insert(0, v if v is not None else "")
         
             label.grid(row=counter, column=0)
             entry.grid(row=counter, column=1)
@@ -5259,7 +5263,10 @@ class PromptWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         event_name = parameters[0]
         results = {}
         for k, v in self.entries.items():
-            results[k] = v.get()
+            try:
+                results[k] = v.get()
+            except:
+                results[k] = v.get("1.0", tk.END)
         print("SENDING DATA")
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("prompt_results", None, [results])]))
     
@@ -14728,8 +14735,7 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
     
     def _update_attrs_translate_AL_process_0_exec(self, parameters):
         result = parameters[0]
-        print("Got result: " + str(result))
-        self.prev_results[self.attr_name] = result
+        self.prev_results[self.attr_name] = result.rstrip() + "\n"
     
     def _update_attrs_prompt_0_exec(self, parameters):
         name = parameters[0]
@@ -14740,7 +14746,11 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
         results = parameters[0]
         for k in results:
             if results[k] != self.prev_results[k]:
-                self.diff_results[k] = results[k]
+                if k in self.al_keys:
+                    if results[k].strip() != self.prev_results[k].strip():
+                        self.diff_results[k] = results[k]
+                else:
+                    self.diff_results[k] = results[k]
         self.remaining_responses = len(self.diff_results)
     
     def _update_attrs_wait_for_results_1_exec(self, parameters):