|
|
@@ -67,7 +67,7 @@
|
|
|
</script>
|
|
|
</transition>
|
|
|
|
|
|
- <transition event="right-click" cond="self.currently_selected is not None and id(self) == ID" target="../creating_element">
|
|
|
+ <transition event="right-click" cond="self.currently_selected is not None and id(self) == ID and not control_pressed" target="../creating_element">
|
|
|
<parameter name="ID"/>
|
|
|
<script>
|
|
|
self.create_location = (self.last_x, self.last_y)
|
|
|
@@ -170,7 +170,7 @@
|
|
|
</script>
|
|
|
</transition>
|
|
|
|
|
|
- <transition event="right-click" cond="ID == id(self)" target="../../ready">
|
|
|
+ <transition event="right-click" cond="ID == id(self) and not control_pressed" target="../../ready">
|
|
|
<parameter name="ID"/>
|
|
|
<script>
|
|
|
self.delete(self.tmp_line)
|
|
|
@@ -217,53 +217,92 @@
|
|
|
self.assoc_type = self.allowed_types.pop()
|
|
|
</script>
|
|
|
</transition>
|
|
|
- <transition cond="len(self.allowed_types) > 1" target="../request_user"/>
|
|
|
- </state>
|
|
|
-
|
|
|
- <state id="request_user">
|
|
|
- <onentry>
|
|
|
- <raise event="create_instance" scope="cd">
|
|
|
- <parameter expr="'prompt'"/>
|
|
|
- <parameter expr="'ChoicePrompt'"/>
|
|
|
- <parameter expr="'Pick desired link type:'"/>
|
|
|
- <parameter expr="self.allowed_types"/>
|
|
|
- </raise>
|
|
|
- </onentry>
|
|
|
-
|
|
|
- <transition event="instance_created" target="../wait_for_response">
|
|
|
- <parameter name="assoc_name"/>
|
|
|
- <raise event="start_instance" scope="cd">
|
|
|
- <parameter expr="assoc_name"/>
|
|
|
- </raise>
|
|
|
+ <transition cond="len(self.allowed_types) > 1" target="../request_user">
|
|
|
<script>
|
|
|
- self.assoc_type = None
|
|
|
+ self.allowed_types = list(self.allowed_types)
|
|
|
</script>
|
|
|
</transition>
|
|
|
</state>
|
|
|
|
|
|
- <state id="wait_for_response">
|
|
|
- <transition event="choice_result" target=".">
|
|
|
- <parameter name="result"/>
|
|
|
+ <state id="request_user" initial="check_next">
|
|
|
+ <onentry>
|
|
|
<script>
|
|
|
- self.assoc_type = result
|
|
|
+ self.new_allowed_types = {}
|
|
|
</script>
|
|
|
- </transition>
|
|
|
-
|
|
|
- <transition event="close_window" cond="self.assoc_type is not None" target="../create">
|
|
|
- <raise event="delete_instance" scope="cd">
|
|
|
- <parameter expr="'prompt'"/>
|
|
|
- </raise>
|
|
|
- </transition>
|
|
|
+ </onentry>
|
|
|
|
|
|
- <transition event="close_window" cond="self.assoc_type is None" target="../../../ready">
|
|
|
- <raise event="delete_instance" scope="cd">
|
|
|
- <parameter expr="'prompt'"/>
|
|
|
- </raise>
|
|
|
- <script>
|
|
|
- self.delete(self.tmp_line)
|
|
|
- self.tmp_line = None
|
|
|
- </script>
|
|
|
- </transition>
|
|
|
+ <state id="check_next">
|
|
|
+ <transition cond="len(self.allowed_types) > 0" target="../convert_to_name"/>
|
|
|
+ <transition cond="len(self.allowed_types) == 0" target="../request">
|
|
|
+ <script>
|
|
|
+ self.allowed_types = self.new_allowed_types
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="convert_to_name">
|
|
|
+ <onentry>
|
|
|
+ <raise event="mv_request" scope="broad">
|
|
|
+ <parameter expr="'read_attrs'"/>
|
|
|
+ <parameter expr="[current_metamodel, self.allowed_types[0]]"/>
|
|
|
+ </raise>
|
|
|
+ </onentry>
|
|
|
+
|
|
|
+ <transition event="mv_response" target="../check_next">
|
|
|
+ <parameter name="result"/>
|
|
|
+ <script>
|
|
|
+ if 'name' in result and result['name'] != "null":
|
|
|
+ self.new_allowed_types[result['name'][1:-1]] = self.allowed_types[0]
|
|
|
+ self.allowed_types.pop(0)
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="request">
|
|
|
+ <onentry>
|
|
|
+ <raise event="create_instance" scope="cd">
|
|
|
+ <parameter expr="'prompt'"/>
|
|
|
+ <parameter expr="'ChoicePrompt'"/>
|
|
|
+ <parameter expr="'Pick desired link type:'"/>
|
|
|
+ <parameter expr="self.allowed_types.keys()"/>
|
|
|
+ </raise>
|
|
|
+ </onentry>
|
|
|
+
|
|
|
+ <transition event="instance_created" target="../wait_for_response">
|
|
|
+ <parameter name="assoc_name"/>
|
|
|
+ <raise event="start_instance" scope="cd">
|
|
|
+ <parameter expr="assoc_name"/>
|
|
|
+ </raise>
|
|
|
+ <script>
|
|
|
+ self.assoc_type = None
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="wait_for_response">
|
|
|
+ <transition event="choice_result" target=".">
|
|
|
+ <parameter name="result"/>
|
|
|
+ <script>
|
|
|
+ self.assoc_type = self.allowed_types[result]
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+
|
|
|
+ <transition event="close_window" cond="self.assoc_type is not None" target="../../create">
|
|
|
+ <raise event="delete_instance" scope="cd">
|
|
|
+ <parameter expr="'prompt'"/>
|
|
|
+ </raise>
|
|
|
+ </transition>
|
|
|
+
|
|
|
+ <transition event="close_window" cond="self.assoc_type is None" target="../../../../ready">
|
|
|
+ <raise event="delete_instance" scope="cd">
|
|
|
+ <parameter expr="'prompt'"/>
|
|
|
+ </raise>
|
|
|
+ <script>
|
|
|
+ self.delete(self.tmp_line)
|
|
|
+ self.tmp_line = None
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
</state>
|
|
|
|
|
|
<state id="create">
|