|
@@ -8,12 +8,12 @@
|
|
|
</relationships>
|
|
|
|
|
|
<constructor>
|
|
|
- <parameter name="entries"/>
|
|
|
- <parameter name="options"/>
|
|
|
+ <parameter name="prompt"/>
|
|
|
+ <parameter name="filter_metamodel" default="None"/>
|
|
|
<super class="tk.TopLevel"/>
|
|
|
<super class="MvKWidget"/>
|
|
|
<body>
|
|
|
- print("STart up")
|
|
|
+ tk.Label(self, text=prompt).pack()
|
|
|
self.browser_frame = tk.Frame(self)
|
|
|
self.browser_frame.pack()
|
|
|
|
|
@@ -24,6 +24,7 @@
|
|
|
self.selected_label = None
|
|
|
self.labels = []
|
|
|
self.closing = False
|
|
|
+ self.filter_metamodel = filter_metamodel
|
|
|
</body>
|
|
|
</constructor>
|
|
|
|
|
@@ -127,7 +128,7 @@
|
|
|
</raise>
|
|
|
</onentry>
|
|
|
|
|
|
- <transition event="mv_response" target="../add_label">
|
|
|
+ <transition event="mv_response" target="../add_labels">
|
|
|
<parameter name="result"/>
|
|
|
<script>
|
|
|
self.labels_to_add = sorted(result)
|
|
@@ -135,39 +136,66 @@
|
|
|
</transition>
|
|
|
</state>
|
|
|
|
|
|
- <state id="add_label">
|
|
|
- <onentry>
|
|
|
- <raise event="create_instance" scope="cd">
|
|
|
- <parameter expr="'labels'"/>
|
|
|
- <parameter expr="'Label'"/>
|
|
|
- <parameter expr="{'parent': self.browser_frame, 'text': self.labels_to_add[0]}"/>
|
|
|
- </raise>
|
|
|
-
|
|
|
- <script>
|
|
|
- print("Create label for " + str(self.labels_to_add[0]))
|
|
|
- self.labels_to_add.pop(0)
|
|
|
- </script>
|
|
|
- </onentry>
|
|
|
-
|
|
|
- <transition event="instance_created" cond="len(self.labels_to_add) > 0" target=".">
|
|
|
- <parameter name="association_name"/>
|
|
|
- <raise event="start_instance" scope="cd">
|
|
|
- <parameter expr="association_name"/>
|
|
|
- </raise>
|
|
|
- <script>
|
|
|
- self.labels.append(association_name)
|
|
|
- </script>
|
|
|
- </transition>
|
|
|
-
|
|
|
- <transition event="instance_created" cond="len(self.labels_to_add) == 0" target="../../waiting">
|
|
|
- <parameter name="association_name"/>
|
|
|
- <raise event="start_instance" scope="cd">
|
|
|
- <parameter expr="association_name"/>
|
|
|
- </raise>
|
|
|
- <script>
|
|
|
- self.labels.append(association_name)
|
|
|
- </script>
|
|
|
- </transition>
|
|
|
+ <state id="add_labels" initial="check_type">
|
|
|
+ <state id="check_type">
|
|
|
+ <transition cond="len(self.labels_to_add) == 0" target="../waiting"/>
|
|
|
+ <transition cond="self.filter_metamodel is None" target="../add_label"/>
|
|
|
+ <transition cond="self.filter_metamodel is not None and self.labels_to_add[0][-1] == '/'" target="../add_label"/>
|
|
|
+ <transition cond="self.filter_metamodel is not None and self.labels_to_add[0][-1] != '/'" target="../check_types"/>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="check_types">
|
|
|
+ <onentry>
|
|
|
+ <raise event="mv_request" scope="broad">
|
|
|
+ <parameter expr="'model_types'"/>
|
|
|
+ <parameter expr="[self.labels_to_add[0]]"/>
|
|
|
+ </raise>
|
|
|
+ </onentry>
|
|
|
+
|
|
|
+ <transition event="mv_response" cond="len(set(result).intersection(set(self.filter_metamodels))) > 0" target="../check_type">
|
|
|
+ <parameter name="result"/>
|
|
|
+ </transition>
|
|
|
+
|
|
|
+ <transition event="mv_response" cond="len(set(result).intersection(set(self.filter_metamodels))) == 0" target="../add_label">
|
|
|
+ <parameter name="result"/>
|
|
|
+ <script>
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="add_label">
|
|
|
+ <onentry>
|
|
|
+ <raise event="create_instance" scope="cd">
|
|
|
+ <parameter expr="'labels'"/>
|
|
|
+ <parameter expr="'Label'"/>
|
|
|
+ <parameter expr="{'parent': self.browser_frame, 'text': self.labels_to_add[0]}"/>
|
|
|
+ </raise>
|
|
|
+
|
|
|
+ <script>
|
|
|
+ self.labels_to_add.pop(0)
|
|
|
+ </script>
|
|
|
+ </onentry>
|
|
|
+
|
|
|
+ <transition event="instance_created" cond="len(self.labels_to_add) > 0" target=".">
|
|
|
+ <parameter name="association_name"/>
|
|
|
+ <raise event="start_instance" scope="cd">
|
|
|
+ <parameter expr="association_name"/>
|
|
|
+ </raise>
|
|
|
+ <script>
|
|
|
+ self.labels.append(association_name)
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+
|
|
|
+ <transition event="instance_created" cond="len(self.labels_to_add) == 0" target="../../waiting">
|
|
|
+ <parameter name="association_name"/>
|
|
|
+ <raise event="start_instance" scope="cd">
|
|
|
+ <parameter expr="association_name"/>
|
|
|
+ </raise>
|
|
|
+ <script>
|
|
|
+ self.labels.append(association_name)
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
</state>
|
|
|
</state>
|
|
|
|
|
@@ -198,7 +226,6 @@
|
|
|
</state>
|
|
|
|
|
|
<transition event="close_complete" target="../close"/>
|
|
|
-
|
|
|
</parallel>
|
|
|
|
|
|
<state id="close">
|