소스 검색

Mostly fixed reading function data and uploading it

Yentl Van Tendeloo 7 년 전
부모
커밋
5cd92ac91b
2개의 변경된 파일350개의 추가작업 그리고 195개의 파일을 삭제
  1. 49 4
      classes/canvas/canvas_element.xml
  2. 301 191
      frontend.py

+ 49 - 4
classes/canvas/canvas_element.xml

@@ -226,14 +226,43 @@
                     </raise>
                 </onentry>
 
-                <transition event="mv_response" target="../prompt">
+                <transition event="mv_response" target="../translate_AL">
                     <parameter name="result"/>
                     <script>
-                        self.prev_results = {k: json.dumps(v) if v is not None else '' 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() if not isinstance(v, dict)}
+                        self.al = {k: v for k, v in result.items() if isinstance(v, dict)}
+                        self.al_keys = self.al.keys()
+                        print("AL KEYS: " + str(self.al_keys))
                     </script>
                 </transition>
             </state>
 
+            <state id="translate_AL" initial="check">
+                <state id="check">
+                    <transition cond="not self.al" target="../../prompt"/>
+                    <transition cond="self.al" target="../process">
+                        <script>
+                            self.attr_name, self.attr_dict = self.al.popitem()
+                            print("Request...")
+                        </script>
+                        <raise event="mv_request" scope="broad">
+                            <parameter expr="'AL_text'"/>
+                            <parameter expr="[self.attr_dict['AL']]"/>
+                        </raise>
+                    </transition>
+                </state>
+
+                <state id="process">
+                    <transition event="mv_response" target="../check">
+                        <parameter name="result"/>
+                        <script>
+                            print("Got result: " + str(result))
+                            self.prev_results[self.attr_name] = result
+                        </script>
+                    </transition>
+                </state>
+            </state>
+
             <state id="prompt">
                 <onentry>
                     <raise event="create_instance" scope="cd">
@@ -280,16 +309,32 @@
             </state>
 
             <state id="process_results">
+                <onentry>
+                    <script>
+                    </script>
+                </onentry>
+
                 <transition cond="len(self.diff_results) > 0" target=".">
                     <script>
                         k, v = self.diff_results.popitem()
+                        print("KEY: " + str(k))
+                        if k in self.al_keys:
+                            print("CODE")
+                            op = "attr_assign_code"
+                            params = [current_model, self.as_element, k, v]
+                        else:
+                            print("VALUE")
+                            op = "attr_assign"
+                            params = [current_model, self.as_element, k, json.loads(v) if v != '' else 'null']
                     </script>
                     <raise event="mv_request" scope="broad">
-                        <parameter expr="'attr_assign'"/>
-                        <parameter expr="[current_model, self.as_element, k, json.loads(v) if v != '' else 'null']"/>
+                        <parameter expr="op"/>
+                        <parameter expr="params"/>
                     </raise>
                 </transition>
+
                 <transition cond="self.remaining_responses == 0" target="../mark_dirty"/>
+
                 <transition event="mv_response" target=".">
                     <script>
                         self.remaining_responses -= 1

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 301 - 191
frontend.py