فهرست منبع

Added exception handling code for canvas/* elements

Yentl Van Tendeloo 7 سال پیش
والد
کامیت
2be76af262
3فایلهای تغییر یافته به همراه159 افزوده شده و 0 حذف شده
  1. 36 0
      classes/canvas/canvas.xml
  2. 42 0
      classes/canvas/connecting_line.xml
  3. 81 0
      frontend.py

+ 36 - 0
classes/canvas/canvas.xml

@@ -215,6 +215,15 @@
                                     self.allowed_types = result
                                 </script>
                             </transition>
+
+                            <transition event="mv_exception" target="../../../ready">
+                                <parameter name="ID"/>
+                                <parameter name="exception_name"/>
+                                <parameter name="description"/>
+                                <raise event="errorlog_log" scope="broad">
+                                    <parameter expr="'Could not query connections between elements: %s -- %s' % (exception_name, description)"/>
+                                </raise>
+                            </transition>
                         </state>
 
                         <state id="check_types">
@@ -263,6 +272,15 @@
                                         self.allowed_types.pop(0)
                                     </script>
                                 </transition>
+
+                                <transition event="mv_exception" target="../../../../ready">
+                                    <parameter name="ID"/>
+                                    <parameter name="exception_name"/>
+                                    <parameter name="description"/>
+                                    <raise event="errorlog_log" scope="broad">
+                                        <parameter expr="'Could not read attributes: %s -- %s' % (exception_name, description)"/>
+                                    </raise>
+                                </transition>
                             </state>
 
                             <state id="request">
@@ -324,6 +342,15 @@
                                 <parameter name="ID"/>
                                 <raise event="minimal_rerender_model" scope="narrow" target="'parent'"/>
                             </transition>
+
+                            <transition event="mv_exception" target="../../../ready">
+                                <parameter name="ID"/>
+                                <parameter name="exception_name"/>
+                                <parameter name="description"/>
+                                <raise event="errorlog_log" scope="broad">
+                                    <parameter expr="'Could not instantiate element: %s -- %s' % (exception_name, description)"/>
+                                </raise>
+                            </transition>
                         </state>
                     </state>
                 </state>
@@ -377,6 +404,15 @@
                         </script>
                         <raise event="minimal_rerender_model" scope="narrow" target="'parent'"/>
                     </transition>
+
+                    <transition event="mv_exception" target="../ready">
+                        <parameter name="ID"/>
+                        <parameter name="exception_name"/>
+                        <parameter name="description"/>
+                        <raise event="errorlog_log" scope="broad">
+                            <parameter expr="'Could not instantiate element: %s -- %s' % (exception_name, description)"/>
+                        </raise>
+                    </transition>
                 </state>
 
                 <state id="waiting_for_clear"/>

+ 42 - 0
classes/canvas/connecting_line.xml

@@ -159,6 +159,15 @@
 
             <transition event="mv_response" target="../main">
             </transition>
+
+            <transition event="mv_exception" target="../main">
+                <parameter name="ID"/>
+                <parameter name="exception_name"/>
+                <parameter name="description"/>
+                <raise event="errorlog_log" scope="broad">
+                    <parameter expr="'Could not delete element: %s -- %s' % (exception_name, description)"/>
+                </raise>
+            </transition>
         </state>
 
         <state id="update_attrs" initial="query">
@@ -176,6 +185,15 @@
                         self.prev_results = {k: json.dumps(v) for k, v in result.items()}
                     </script>
                 </transition>
+
+                <transition event="mv_exception" target="../../main">
+                    <parameter name="ID"/>
+                    <parameter name="exception_name"/>
+                    <parameter name="description"/>
+                    <raise event="errorlog_log" scope="broad">
+                        <parameter expr="'Could not read attributes: %s -- %s' % (exception_name, description)"/>
+                    </raise>
+                </transition>
             </state>
 
             <state id="prompt">
@@ -233,12 +251,26 @@
                         <parameter expr="[current_model, self.as_element, k, json.loads(v)]"/>
                     </raise>
                 </transition>
+
                 <transition cond="self.remaining_responses == 0" target="../mark_dirty"/>
+
                 <transition event="mv_response" target=".">
                     <script>
                         self.remaining_responses -= 1
                     </script>
                 </transition>
+
+                <transition event="mv_exception" target=".">
+                    <parameter name="ID"/>
+                    <parameter name="exception_name"/>
+                    <parameter name="description"/>
+                    <raise event="errorlog_log" scope="broad">
+                        <parameter expr="'Could not assign attributes: %s -- %s' % (exception_name, description)"/>
+                    </raise>
+                    <script>
+                        self.remaining_responses -= 1
+                    </script>
+                </transition>
             </state>
 
             <state id="mark_dirty">
@@ -248,9 +280,19 @@
                         <parameter expr="[current_rendered_model, self.cs_element['id'], 'dirty', True]"/>
                     </raise>
                 </onentry>
+
                 <transition event="mv_response" target="../../main">
                     <raise event="minimal_rerender_model" scope="narrow" target="'parent/parent'"/>
                 </transition>
+
+                <transition event="mv_exception" target="../../main">
+                    <parameter name="ID"/>
+                    <parameter name="exception_name"/>
+                    <parameter name="description"/>
+                    <raise event="errorlog_log" scope="broad">
+                        <parameter expr="'Could not mark element as dirty: %s -- %s' % (exception_name, description)"/>
+                    </raise>
+                </transition>
             </state>
         </state>
     </scxml>

+ 81 - 0
frontend.py

@@ -13699,6 +13699,10 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
         _ready_process_events_creating_line_create_in_mv_query_type_0.setAction(self._ready_process_events_creating_line_create_in_mv_query_type_0_exec)
         _ready_process_events_creating_line_create_in_mv_query_type_0.setTrigger(Event("mv_response", None))
         self.states["/ready/process_events/creating_line/create_in_mv/query_type"].addTransition(_ready_process_events_creating_line_create_in_mv_query_type_0)
+        _ready_process_events_creating_line_create_in_mv_query_type_1 = Transition(self, self.states["/ready/process_events/creating_line/create_in_mv/query_type"], [self.states["/ready/process_events/ready"]])
+        _ready_process_events_creating_line_create_in_mv_query_type_1.setAction(self._ready_process_events_creating_line_create_in_mv_query_type_1_exec)
+        _ready_process_events_creating_line_create_in_mv_query_type_1.setTrigger(Event("mv_exception", None))
+        self.states["/ready/process_events/creating_line/create_in_mv/query_type"].addTransition(_ready_process_events_creating_line_create_in_mv_query_type_1)
         
         # transition /ready/process_events/creating_line/create_in_mv/check_types
         _ready_process_events_creating_line_create_in_mv_check_types_0 = Transition(self, self.states["/ready/process_events/creating_line/create_in_mv/check_types"], [self.states["/ready/process_events/ready"]])
@@ -13732,6 +13736,10 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
         _ready_process_events_creating_line_create_in_mv_request_user_convert_to_name_0.setAction(self._ready_process_events_creating_line_create_in_mv_request_user_convert_to_name_0_exec)
         _ready_process_events_creating_line_create_in_mv_request_user_convert_to_name_0.setTrigger(Event("mv_response", None))
         self.states["/ready/process_events/creating_line/create_in_mv/request_user/convert_to_name"].addTransition(_ready_process_events_creating_line_create_in_mv_request_user_convert_to_name_0)
+        _ready_process_events_creating_line_create_in_mv_request_user_convert_to_name_1 = Transition(self, self.states["/ready/process_events/creating_line/create_in_mv/request_user/convert_to_name"], [self.states["/ready/process_events/ready"]])
+        _ready_process_events_creating_line_create_in_mv_request_user_convert_to_name_1.setAction(self._ready_process_events_creating_line_create_in_mv_request_user_convert_to_name_1_exec)
+        _ready_process_events_creating_line_create_in_mv_request_user_convert_to_name_1.setTrigger(Event("mv_exception", None))
+        self.states["/ready/process_events/creating_line/create_in_mv/request_user/convert_to_name"].addTransition(_ready_process_events_creating_line_create_in_mv_request_user_convert_to_name_1)
         
         # transition /ready/process_events/creating_line/create_in_mv/request_user/request
         _ready_process_events_creating_line_create_in_mv_request_user_request_0 = Transition(self, self.states["/ready/process_events/creating_line/create_in_mv/request_user/request"], [self.states["/ready/process_events/creating_line/create_in_mv/request_user/wait_for_response"]])
@@ -13760,6 +13768,10 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
         _ready_process_events_creating_line_create_in_mv_create_0.setAction(self._ready_process_events_creating_line_create_in_mv_create_0_exec)
         _ready_process_events_creating_line_create_in_mv_create_0.setTrigger(Event("mv_response", None))
         self.states["/ready/process_events/creating_line/create_in_mv/create"].addTransition(_ready_process_events_creating_line_create_in_mv_create_0)
+        _ready_process_events_creating_line_create_in_mv_create_1 = Transition(self, self.states["/ready/process_events/creating_line/create_in_mv/create"], [self.states["/ready/process_events/ready"]])
+        _ready_process_events_creating_line_create_in_mv_create_1.setAction(self._ready_process_events_creating_line_create_in_mv_create_1_exec)
+        _ready_process_events_creating_line_create_in_mv_create_1.setTrigger(Event("mv_exception", None))
+        self.states["/ready/process_events/creating_line/create_in_mv/create"].addTransition(_ready_process_events_creating_line_create_in_mv_create_1)
         
         # transition /ready/process_events/creating_group
         _ready_process_events_creating_group_0 = Transition(self, self.states["/ready/process_events/creating_group"], [self.states["/ready/process_events/wait_canvas_element_ready"]])
@@ -13782,6 +13794,10 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
         _ready_process_events_creating_element_0.setAction(self._ready_process_events_creating_element_0_exec)
         _ready_process_events_creating_element_0.setTrigger(Event("mv_response", None))
         self.states["/ready/process_events/creating_element"].addTransition(_ready_process_events_creating_element_0)
+        _ready_process_events_creating_element_1 = Transition(self, self.states["/ready/process_events/creating_element"], [self.states["/ready/process_events/ready"]])
+        _ready_process_events_creating_element_1.setAction(self._ready_process_events_creating_element_1_exec)
+        _ready_process_events_creating_element_1.setTrigger(Event("mv_exception", None))
+        self.states["/ready/process_events/creating_element"].addTransition(_ready_process_events_creating_element_1)
         
         # transition /ready/update_loading/updating
         _ready_update_loading_updating_0 = Transition(self, self.states["/ready/update_loading/updating"], [self.states["/ready/update_loading/updating"]])
@@ -13933,6 +13949,12 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
         result = parameters[0]
         self.allowed_types = result
     
+    def _ready_process_events_creating_line_create_in_mv_query_type_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not query connections between elements: %s -- %s' % (exception_name, description)])]))
+    
     def _ready_process_events_creating_line_create_in_mv_check_types_0_guard(self, parameters):
         return len(self.allowed_types) == 0
     
@@ -13963,6 +13985,12 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
             self.new_allowed_types[result['name']] = self.allowed_types[0]
         self.allowed_types.pop(0)
     
+    def _ready_process_events_creating_line_create_in_mv_request_user_convert_to_name_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not read attributes: %s -- %s' % (exception_name, description)])]))
+    
     def _ready_process_events_creating_line_create_in_mv_request_user_request_0_exec(self, parameters):
         assoc_name = parameters[0]
         self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
@@ -13990,6 +14018,12 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
         ID = parameters[0]
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("minimal_rerender_model", None, [])]))
     
+    def _ready_process_events_creating_line_create_in_mv_create_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not instantiate element: %s -- %s' % (exception_name, description)])]))
+    
     def _ready_process_events_creating_group_0_exec(self, parameters):
         assoc_name = parameters[0]
         self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
@@ -14009,6 +14043,12 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
         self.to_move[ID] = self.create_location
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("minimal_rerender_model", None, [])]))
     
+    def _ready_process_events_creating_element_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not instantiate element: %s -- %s' % (exception_name, description)])]))
+    
     def _ready_update_loading_updating_0_exec(self, parameters):
         for i in self.elems:
             self.itemconfigure(i[1], image=self.loading[i[0]])
@@ -14158,12 +14198,20 @@ class ConnectingLine(RuntimeClassBase, SCCDWidget):
         _remove_element_0 = Transition(self, self.states["/remove_element"], [self.states["/main"]])
         _remove_element_0.setTrigger(Event("mv_response", None))
         self.states["/remove_element"].addTransition(_remove_element_0)
+        _remove_element_1 = Transition(self, self.states["/remove_element"], [self.states["/main"]])
+        _remove_element_1.setAction(self._remove_element_1_exec)
+        _remove_element_1.setTrigger(Event("mv_exception", None))
+        self.states["/remove_element"].addTransition(_remove_element_1)
         
         # transition /update_attrs/query
         _update_attrs_query_0 = Transition(self, self.states["/update_attrs/query"], [self.states["/update_attrs/prompt"]])
         _update_attrs_query_0.setAction(self._update_attrs_query_0_exec)
         _update_attrs_query_0.setTrigger(Event("mv_response", None))
         self.states["/update_attrs/query"].addTransition(_update_attrs_query_0)
+        _update_attrs_query_1 = Transition(self, self.states["/update_attrs/query"], [self.states["/main"]])
+        _update_attrs_query_1.setAction(self._update_attrs_query_1_exec)
+        _update_attrs_query_1.setTrigger(Event("mv_exception", None))
+        self.states["/update_attrs/query"].addTransition(_update_attrs_query_1)
         
         # transition /update_attrs/prompt
         _update_attrs_prompt_0 = Transition(self, self.states["/update_attrs/prompt"], [self.states["/update_attrs/wait_for_results"]])
@@ -14201,12 +14249,20 @@ class ConnectingLine(RuntimeClassBase, SCCDWidget):
         _update_attrs_process_results_2.setAction(self._update_attrs_process_results_2_exec)
         _update_attrs_process_results_2.setTrigger(Event("mv_response", None))
         self.states["/update_attrs/process_results"].addTransition(_update_attrs_process_results_2)
+        _update_attrs_process_results_3 = Transition(self, self.states["/update_attrs/process_results"], [self.states["/update_attrs/process_results"]])
+        _update_attrs_process_results_3.setAction(self._update_attrs_process_results_3_exec)
+        _update_attrs_process_results_3.setTrigger(Event("mv_exception", None))
+        self.states["/update_attrs/process_results"].addTransition(_update_attrs_process_results_3)
         
         # transition /update_attrs/mark_dirty
         _update_attrs_mark_dirty_0 = Transition(self, self.states["/update_attrs/mark_dirty"], [self.states["/main"]])
         _update_attrs_mark_dirty_0.setAction(self._update_attrs_mark_dirty_0_exec)
         _update_attrs_mark_dirty_0.setTrigger(Event("mv_response", None))
         self.states["/update_attrs/mark_dirty"].addTransition(_update_attrs_mark_dirty_0)
+        _update_attrs_mark_dirty_1 = Transition(self, self.states["/update_attrs/mark_dirty"], [self.states["/main"]])
+        _update_attrs_mark_dirty_1.setAction(self._update_attrs_mark_dirty_1_exec)
+        _update_attrs_mark_dirty_1.setTrigger(Event("mv_exception", None))
+        self.states["/update_attrs/mark_dirty"].addTransition(_update_attrs_mark_dirty_1)
     
     def _remove_element_enter(self):
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['delete_element', [current_model, self.as_element]])]))
@@ -14316,10 +14372,22 @@ class ConnectingLine(RuntimeClassBase, SCCDWidget):
         element = parameters[0]
         return element == self.cs_element['__source'] or element == self.cs_element['__target']
     
+    def _remove_element_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not delete element: %s -- %s' % (exception_name, description)])]))
+    
     def _update_attrs_query_0_exec(self, parameters):
         result = parameters[0]
         self.prev_results = {k: json.dumps(v) for k, v in result.items()}
     
+    def _update_attrs_query_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not read attributes: %s -- %s' % (exception_name, description)])]))
+    
     def _update_attrs_prompt_0_exec(self, parameters):
         name = parameters[0]
         self.big_step.outputEventOM(Event("start_instance", None, [self, name]))
@@ -14357,9 +14425,22 @@ class ConnectingLine(RuntimeClassBase, SCCDWidget):
     def _update_attrs_process_results_2_exec(self, parameters):
         self.remaining_responses -= 1
     
+    def _update_attrs_process_results_3_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not assign attributes: %s -- %s' % (exception_name, description)])]))
+        self.remaining_responses -= 1
+    
     def _update_attrs_mark_dirty_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/parent', Event("minimal_rerender_model", None, [])]))
     
+    def _update_attrs_mark_dirty_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not mark element as dirty: %s -- %s' % (exception_name, description)])]))
+    
     def initializeStatechart(self):
         # enter default state
         self.default_targets = self.states["/init"].getEffectiveTargetStates()