ソースを参照

Added exception handling to the toolbar

Yentl Van Tendeloo 7 年 前
コミット
5335a7e3f0
2 ファイル変更22 行追加0 行削除
  1. 11 0
      classes/toolbar/dsl_toolbar.xml
  2. 11 0
      frontend.py

+ 11 - 0
classes/toolbar/dsl_toolbar.xml

@@ -53,6 +53,17 @@
                         self.to_create.pop(0)
                     </script>
                 </transition>
+                <transition event="mv_exception" target="../next_button">
+                    <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>
+                    <script>
+                        self.to_create.pop(0)
+                    </script>
+                </transition>
             </state>
             
             <state id="create_buttons">

+ 11 - 0
frontend.py

@@ -11954,6 +11954,10 @@ class DSLToolbar(Toolbar):
         _init_init_buttons_1.setTrigger(Event("mv_response", None))
         _init_init_buttons_1.setGuard(self._init_init_buttons_1_guard)
         self.states["/init/init_buttons"].addTransition(_init_init_buttons_1)
+        _init_init_buttons_2 = Transition(self, self.states["/init/init_buttons"], [self.states["/init/next_button"]])
+        _init_init_buttons_2.setAction(self._init_init_buttons_2_exec)
+        _init_init_buttons_2.setTrigger(Event("mv_exception", None))
+        self.states["/init/init_buttons"].addTransition(_init_init_buttons_2)
         
         # transition /init/create_buttons
         _init_create_buttons_0 = Transition(self, self.states["/init/create_buttons"], [self.states["/init/pack_button"]])
@@ -12035,6 +12039,13 @@ class DSLToolbar(Toolbar):
         result = parameters[0]
         return "ELSE_GUARD"
     
+    def _init_init_buttons_2_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)])]))
+        self.to_create.pop(0)
+    
     def _init_create_buttons_0_exec(self, parameters):
         association_name = parameters[0]
         self.big_step.outputEventOM(Event("start_instance", None, [self, association_name]))