Explorar o código

Allow undefine of attributes

Yentl Van Tendeloo %!s(int64=8) %!d(string=hai) anos
pai
achega
871de8ee8d
Modificáronse 3 ficheiros con 81 adicións e 29 borrados
  1. 22 2
      classes/modelverse/modelverse.xml
  2. 2 2
      classes/window/attribute_editor.xml
  3. 57 25
      frontend.py

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 22 - 2
classes/modelverse/modelverse.xml


+ 2 - 2
classes/window/attribute_editor.xml

@@ -210,7 +210,7 @@
                                     <raise event="create_instance" scope="cd">
                                         <parameter expr="'delete'"/>
                                         <parameter expr="'Button'"/>
-                                        <parameter expr="{'parent': self, 'event_parameters': self.current_attr['name'], 'visual': TextVisual('delete'), 'tooltip_text': 'Delete attribute'}"/>
+                                        <parameter expr="{'parent': self, 'event_parameters': 'delete_%s' % self.current_attr['name'], 'visual': TextVisual('delete'), 'tooltip_text': 'Delete attribute'}"/>
                                     </raise>
                                 </onentry>
 
@@ -436,7 +436,7 @@
             <state id="delete_entry">
                 <onentry>
                     <raise event="mv_request" scope="broad">
-                        <parameter expr="'attr_del'"/>
+                        <parameter expr="'undefine_attribute'"/>
                         <parameter expr="[current_model, self.as_element, self.parameter]"/>
                     </raise>
                 </onentry>

+ 57 - 25
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:   Fri Oct 13 15:25:44 2017
+Date:   Fri Oct 13 18:44:26 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -959,61 +959,65 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/operations/define_attribute"] = State(108, "/initialized/behaviour/operations/define_attribute", self)
         self.states["/initialized/behaviour/operations/define_attribute"].setEnter(self._initialized_behaviour_operations_define_attribute_enter)
         
+        # state /initialized/behaviour/operations/undefine_attribute
+        self.states["/initialized/behaviour/operations/undefine_attribute"] = State(109, "/initialized/behaviour/operations/undefine_attribute", self)
+        self.states["/initialized/behaviour/operations/undefine_attribute"].setEnter(self._initialized_behaviour_operations_undefine_attribute_enter)
+        
         # state /initialized/behaviour/operations/all_instances
-        self.states["/initialized/behaviour/operations/all_instances"] = State(109, "/initialized/behaviour/operations/all_instances", self)
+        self.states["/initialized/behaviour/operations/all_instances"] = State(110, "/initialized/behaviour/operations/all_instances", self)
         self.states["/initialized/behaviour/operations/all_instances"].setEnter(self._initialized_behaviour_operations_all_instances_enter)
         
         # state /initialized/behaviour/operations/save
-        self.states["/initialized/behaviour/operations/save"] = State(110, "/initialized/behaviour/operations/save", self)
+        self.states["/initialized/behaviour/operations/save"] = State(111, "/initialized/behaviour/operations/save", self)
         self.states["/initialized/behaviour/operations/save"].setEnter(self._initialized_behaviour_operations_save_enter)
         
         # state /initialized/behaviour/wait_for_action
-        self.states["/initialized/behaviour/wait_for_action"] = State(111, "/initialized/behaviour/wait_for_action", self)
+        self.states["/initialized/behaviour/wait_for_action"] = State(112, "/initialized/behaviour/wait_for_action", self)
         
         # state /initialized/behaviour/wait_for_action/disconnected
-        self.states["/initialized/behaviour/wait_for_action/disconnected"] = State(112, "/initialized/behaviour/wait_for_action/disconnected", self)
+        self.states["/initialized/behaviour/wait_for_action/disconnected"] = State(113, "/initialized/behaviour/wait_for_action/disconnected", self)
         
         # state /initialized/behaviour/wait_for_action/connected
-        self.states["/initialized/behaviour/wait_for_action/connected"] = State(113, "/initialized/behaviour/wait_for_action/connected", self)
+        self.states["/initialized/behaviour/wait_for_action/connected"] = State(114, "/initialized/behaviour/wait_for_action/connected", self)
         
         # state /initialized/behaviour/wait_for_action/megamodelling
-        self.states["/initialized/behaviour/wait_for_action/megamodelling"] = State(114, "/initialized/behaviour/wait_for_action/megamodelling", self)
+        self.states["/initialized/behaviour/wait_for_action/megamodelling"] = State(115, "/initialized/behaviour/wait_for_action/megamodelling", self)
         
         # state /initialized/behaviour/wait_for_action/modelling
-        self.states["/initialized/behaviour/wait_for_action/modelling"] = State(115, "/initialized/behaviour/wait_for_action/modelling", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling"] = State(116, "/initialized/behaviour/wait_for_action/modelling", self)
         
         # state /initialized/behaviour/wait_for_action/modelling/recognized
-        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"] = State(116, "/initialized/behaviour/wait_for_action/modelling/recognized", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"] = State(117, "/initialized/behaviour/wait_for_action/modelling/recognized", self)
         
         # state /initialized/behaviour/wait_for_action/modelling/recognized/manual
-        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/manual"] = State(117, "/initialized/behaviour/wait_for_action/modelling/recognized/manual", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/manual"] = State(118, "/initialized/behaviour/wait_for_action/modelling/recognized/manual", self)
         
         # state /initialized/behaviour/wait_for_action/modelling/recognized/scripted
-        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/scripted"] = State(118, "/initialized/behaviour/wait_for_action/modelling/recognized/scripted", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/scripted"] = State(119, "/initialized/behaviour/wait_for_action/modelling/recognized/scripted", self)
         
         # state /initialized/behaviour/wait_for_action/finished
-        self.states["/initialized/behaviour/wait_for_action/finished"] = State(119, "/initialized/behaviour/wait_for_action/finished", self)
+        self.states["/initialized/behaviour/wait_for_action/finished"] = State(120, "/initialized/behaviour/wait_for_action/finished", self)
         
         # state /initialized/behaviour/wait_for_action/history
-        self.states["/initialized/behaviour/wait_for_action/history"] = DeepHistoryState(120, "/initialized/behaviour/wait_for_action/history", self)
+        self.states["/initialized/behaviour/wait_for_action/history"] = DeepHistoryState(121, "/initialized/behaviour/wait_for_action/history", self)
         
         # state /initialized/behaviour/going_manual
-        self.states["/initialized/behaviour/going_manual"] = State(121, "/initialized/behaviour/going_manual", self)
+        self.states["/initialized/behaviour/going_manual"] = State(122, "/initialized/behaviour/going_manual", self)
         self.states["/initialized/behaviour/going_manual"].setEnter(self._initialized_behaviour_going_manual_enter)
         
         # state /initialized/behaviour/going_scripted
-        self.states["/initialized/behaviour/going_scripted"] = State(122, "/initialized/behaviour/going_scripted", self)
+        self.states["/initialized/behaviour/going_scripted"] = State(123, "/initialized/behaviour/going_scripted", self)
         self.states["/initialized/behaviour/going_scripted"].setEnter(self._initialized_behaviour_going_scripted_enter)
         
         # state /initialized/behaviour/leaving_manual
-        self.states["/initialized/behaviour/leaving_manual"] = State(123, "/initialized/behaviour/leaving_manual", self)
+        self.states["/initialized/behaviour/leaving_manual"] = State(124, "/initialized/behaviour/leaving_manual", self)
         self.states["/initialized/behaviour/leaving_manual"].setEnter(self._initialized_behaviour_leaving_manual_enter)
         
         # state /initialized/queue
-        self.states["/initialized/queue"] = State(124, "/initialized/queue", self)
+        self.states["/initialized/queue"] = State(125, "/initialized/queue", self)
         
         # state /initialized/queue/queue
-        self.states["/initialized/queue/queue"] = State(125, "/initialized/queue/queue", self)
+        self.states["/initialized/queue/queue"] = State(126, "/initialized/queue/queue", self)
         
         # add children
         self.states[""].addChild(self.states["/init"])
@@ -1086,6 +1090,7 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_association_destination"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/connections_between"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/define_attribute"])
+        self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/undefine_attribute"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/all_instances"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/save"])
         self.states["/initialized/behaviour/operations/login"].addChild(self.states["/initialized/behaviour/operations/login/wait_prompt_1"])
@@ -1837,6 +1842,13 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_operations_define_attribute_0.setGuard(self._initialized_behaviour_operations_define_attribute_0_guard)
         self.states["/initialized/behaviour/operations/define_attribute"].addTransition(_initialized_behaviour_operations_define_attribute_0)
         
+        # transition /initialized/behaviour/operations/undefine_attribute
+        _initialized_behaviour_operations_undefine_attribute_0 = Transition(self, self.states["/initialized/behaviour/operations/undefine_attribute"], [self.states["/initialized/behaviour/wait_for_action/history"]])
+        _initialized_behaviour_operations_undefine_attribute_0.setAction(self._initialized_behaviour_operations_undefine_attribute_0_exec)
+        _initialized_behaviour_operations_undefine_attribute_0.setTrigger(None)
+        _initialized_behaviour_operations_undefine_attribute_0.setGuard(self._initialized_behaviour_operations_undefine_attribute_0_guard)
+        self.states["/initialized/behaviour/operations/undefine_attribute"].addTransition(_initialized_behaviour_operations_undefine_attribute_0)
+        
         # transition /initialized/behaviour/operations/all_instances
         _initialized_behaviour_operations_all_instances_0 = Transition(self, self.states["/initialized/behaviour/operations/all_instances"], [self.states["/initialized/behaviour/wait_for_action/history"]])
         _initialized_behaviour_operations_all_instances_0.setAction(self._initialized_behaviour_operations_all_instances_0_exec)
@@ -2282,16 +2294,21 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_wait_for_action_modelling_recognized_21.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_21.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_21_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_21)
-        _initialized_behaviour_wait_for_action_modelling_recognized_22 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/all_instances"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_22 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/undefine_attribute"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_22.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_22_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_22.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_22.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_22_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_22)
-        _initialized_behaviour_wait_for_action_modelling_recognized_23 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/save"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_23 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/all_instances"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_23.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_23_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_23.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_23.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_23_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_23)
+        _initialized_behaviour_wait_for_action_modelling_recognized_24 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/save"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_24.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_24_exec)
+        _initialized_behaviour_wait_for_action_modelling_recognized_24.setTrigger(None)
+        _initialized_behaviour_wait_for_action_modelling_recognized_24.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_24_guard)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_24)
     
     def _initialized_enter(self):
         self.raiseInternalEvent(Event("ready", None, []))
@@ -2503,6 +2520,9 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_define_attribute_enter(self):
         self.raiseInternalEvent(Event("request", None, [['define_attribute', self.parameters[1], self.parameters[2], self.parameters[3]]]))
     
+    def _initialized_behaviour_operations_undefine_attribute_enter(self):
+        self.raiseInternalEvent(Event("request", None, [['undefine_attribute', self.parameters[1], self.parameters[2]]]))
+    
     def _initialized_behaviour_operations_all_instances_enter(self):
         self.raiseInternalEvent(Event("request", None, [['all_instances', self.parameters[1]]]))
     
@@ -2705,12 +2725,18 @@ class Modelverse(RuntimeClassBase):
         self.load_action(self.context)
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_22_guard(self, parameters):
-        return self.expect_action(self.context, 'all_instances')
+        return self.expect_action(self.context, 'undefine_attribute')
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_23_exec(self, parameters):
         self.load_action(self.context)
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_23_guard(self, parameters):
+        return self.expect_action(self.context, 'all_instances')
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_24_exec(self, parameters):
+        self.load_action(self.context)
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_24_guard(self, parameters):
         return self.expect_action(self.context, 'save')
     
     def _init_0_exec(self, parameters):
@@ -3295,7 +3321,13 @@ class Modelverse(RuntimeClassBase):
         self.raiseInternalEvent(Event("result", None, [None]))
     
     def _initialized_behaviour_operations_define_attribute_0_guard(self, parameters):
-        return self.expect_response_partial('Success: ')
+        return self.expect_response('Success')
+    
+    def _initialized_behaviour_operations_undefine_attribute_0_exec(self, parameters):
+        self.raiseInternalEvent(Event("result", None, [None]))
+    
+    def _initialized_behaviour_operations_undefine_attribute_0_guard(self, parameters):
+        return self.expect_response('Success')
     
     def _initialized_behaviour_operations_all_instances_0_exec(self, parameters):
         self.raiseInternalEvent(Event("result", None, [set(self.split_response(self.responses.pop(0)))]))
@@ -3538,7 +3570,7 @@ class Modelverse(RuntimeClassBase):
         return self.expect_action(None, 'model_types')
     
     def _initialized_behaviour_wait_for_action_megamodelling_36_guard(self, parameters):
-        return self.expect_action(None, ['element_list', 'element_list_nice', 'types', 'types_full', 'read_info', 'read_attrs', 'read_defined_attrs', 'instantiate', 'delete_element', 'attr_assign', 'attr_assign_code', 'attr_delete', 'read_outgoing', 'read_incoming', 'read_association_source', 'read_association_destination', 'connections_between', 'define_attribute', 'all_instances', 'attr_optional', 'attr_type', 'attr_name'])
+        return self.expect_action(None, ['element_list', 'element_list_nice', 'types', 'types_full', 'read_info', 'read_attrs', 'read_defined_attrs', 'instantiate', 'delete_element', 'attr_assign', 'attr_assign_code', 'attr_delete', 'read_outgoing', 'read_incoming', 'read_association_source', 'read_association_destination', 'connections_between', 'define_attribute', 'undefine_attribute', 'all_instances', 'attr_optional', 'attr_type', 'attr_name'])
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_manual_0_guard(self, parameters):
         return self.expect_action(self.context, 'exit')
@@ -4361,7 +4393,7 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'optional', 'ToggleButton', {'parent': self, 'on_activate': 'optional_%s' % self.current_attr['name'], 'on_deactivate': 'mandatory_%s' % self.current_attr['name'], 'active': self.current_attr['optional'], 'tooltip_text': 'Optional attribute?', 'visual': TextVisual('optional')}]))
     
     def _all_init_create_entries_create_entry_delete_button_create_enter(self):
-        self.big_step.outputEventOM(Event("create_instance", None, [self, 'delete', 'Button', {'parent': self, 'event_parameters': self.current_attr['name'], 'visual': TextVisual('delete'), 'tooltip_text': 'Delete attribute'}]))
+        self.big_step.outputEventOM(Event("create_instance", None, [self, 'delete', 'Button', {'parent': self, 'event_parameters': 'delete_%s' % self.current_attr['name'], 'visual': TextVisual('delete'), 'tooltip_text': 'Delete attribute'}]))
     
     def _all_init_add_new_attribute_create_enter(self):
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'add_attribute_button', 'Button', {'parent': self, 'event_parameters': 'create', 'visual': TextVisual('new'), 'tooltip_text': 'Add a new attribute'}]))
@@ -4389,7 +4421,7 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_optional', [current_model, self.as_element, self.parameter, False]])]))
     
     def _all_delete_entry_enter(self):
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_del', [current_model, self.as_element, self.parameter]])]))
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['undefine_attribute', [current_model, self.as_element, self.parameter]])]))
     
     def _all_closing_enter(self):
         self.big_step.outputEventOM(Event("delete_instance", None, [self, 'names']))