Browse Source

Working AL code in attributes (read/write)

Yentl Van Tendeloo 7 years ago
parent
commit
bbcb5d8fbb
3 changed files with 33 additions and 13 deletions
  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">
                     <transition event="mv_response" target="../check">
                         <parameter name="result"/>
                         <parameter name="result"/>
                         <script>
                         <script>
-                            print("Got result: " + str(result))
-                            self.prev_results[self.attr_name] = result
+                            self.prev_results[self.attr_name] = result.rstrip() + "\n"
                         </script>
                         </script>
                     </transition>
                     </transition>
                 </state>
                 </state>
@@ -290,7 +289,11 @@
                     <script>
                     <script>
                         for k in results:
                         for k in results:
                             if results[k] != self.prev_results[k]:
                             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)
                         self.remaining_responses = len(self.diff_results)
                     </script>
                     </script>
                 </transition>
                 </transition>

+ 10 - 3
classes/window/prompt_window.xml

@@ -22,8 +22,12 @@
             for k, v in entries.items():
             for k, v in entries.items():
                 label = tk.Label(self.frame, text=k)
                 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)
                 label.grid(row=counter, column=0)
                 entry.grid(row=counter, column=1)
                 entry.grid(row=counter, column=1)
@@ -80,7 +84,10 @@
                 <script>
                 <script>
                     results = {}
                     results = {}
                     for k, v in self.entries.items():
                     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")
                     print("SENDING DATA")
                 </script>
                 </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)
 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 author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -5151,8 +5151,12 @@ class PromptWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         for k, v in entries.items():
         for k, v in entries.items():
             label = tk.Label(self.frame, text=k)
             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)
             label.grid(row=counter, column=0)
             entry.grid(row=counter, column=1)
             entry.grid(row=counter, column=1)
@@ -5259,7 +5263,10 @@ class PromptWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         event_name = parameters[0]
         event_name = parameters[0]
         results = {}
         results = {}
         for k, v in self.entries.items():
         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")
         print("SENDING DATA")
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("prompt_results", None, [results])]))
         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):
     def _update_attrs_translate_AL_process_0_exec(self, parameters):
         result = parameters[0]
         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):
     def _update_attrs_prompt_0_exec(self, parameters):
         name = parameters[0]
         name = parameters[0]
@@ -14740,7 +14746,11 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
         results = parameters[0]
         results = parameters[0]
         for k in results:
         for k in results:
             if results[k] != self.prev_results[k]:
             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)
         self.remaining_responses = len(self.diff_results)
     
     
     def _update_attrs_wait_for_results_1_exec(self, parameters):
     def _update_attrs_wait_for_results_1_exec(self, parameters):