Sfoglia il codice sorgente

Mostly working window for activity execution

Yentl Van Tendeloo 8 anni fa
parent
commit
1334abe6ce
3 ha cambiato i file con 427 aggiunte e 68 eliminazioni
  1. 7 0
      classes/widgets/entry.xml
  2. 179 23
      classes/window/activity.xml
  3. 241 45
      frontend.py

+ 7 - 0
classes/widgets/entry.xml

@@ -66,6 +66,13 @@
                         self.name = new_name
                     </script>
                 </transition>
+
+                <transition event="change_value" target=".">
+                    <parameter name="new_value"/>
+                    <script>
+                        self.strvar.set(new_value)
+                    </script>
+                </transition>
             </state>
         </state>
     </scxml>

+ 179 - 23
classes/window/activity.xml

@@ -2,8 +2,9 @@
     <relationships>
         <inheritance class="tk.Toplevel" priority="1"/>
         <inheritance class="SCCDWidget" priority="0"/>
-        <association name="activity_browse_button" class="Button"/>
+        <association name="activity_browse" class="A"/>
         <association name="model_browse_button" class="Button"/>
+        <association name="model_browse_entry" class="Entry"/>
         <association name="model_browse_label" class="Label"/>
         <association name="browsers" class="Browser"/>
         <association name="parent" class="A"/>
@@ -13,17 +14,19 @@
         <super class="tk.TopLevel"/>
         <super class="SCCDWidget"/>
         <body>
+            self.activity_frame = tk.Frame(self)
             self.input_frame = tk.Frame(self)
             self.output_frame = tk.Frame(self)
 
-            tk.Label(self, text="Activity").grid(row=0, column=0)
-            tk.Label(self, text="Inputs").grid(row=1, column=0)
-            self.input_frame.grid(row=2,column=0)
-            tk.Label(self, text="Outputs").grid(row=3, column=0)
-            self.output_frame.grid(row=4, column=0)
+            self.activity_frame.pack()
+            tk.Label(self, text="Inputs").pack()
+            self.input_frame.pack()
+            tk.Label(self, text="Outputs").pack()
+            self.output_frame.pack()
 
             self.associations = {}
             self.current = None
+            self.activity = None
         </body>
     </constructor>
 
@@ -33,14 +36,73 @@
         </body>
     </destructor>
 
-    <scxml initial="create_activity_browse_button">
+    <scxml initial="create_activity_browse_label">
+        <state id="create_activity_browse_label" initial="create">
+            <state id="create">
+                <onentry>
+                    <raise event="create_instance" scope="cd">
+                        <parameter expr="'activity_browse'"/>
+                        <parameter expr="'Label'"/>
+                        <parameter expr="{'parent': self.activity_frame, 'text': 'Activity'}"/>
+                    </raise>
+                </onentry>
+
+                <transition event="instance_created" target="../pack">
+                    <parameter name="assoc_name"/>
+                    <raise event="start_instance" scope="cd">
+                        <parameter expr="assoc_name"/>
+                    </raise>
+                </transition>
+            </state>
+
+            <state id="pack">
+                <transition event="tk_widget" target="../../create_activity_browse_entry">
+                    <parameter name="tk_widget"/>
+                    <script>
+                        tk_widget.grid(row=0,column=0)
+                    </script>
+                </transition>
+            </state>
+        </state>
+
+        <state id="create_activity_browse_entry" initial="create">
+            <state id="create">
+                <onentry>
+                    <raise event="create_instance" scope="cd">
+                        <parameter expr="'activity_browse'"/>
+                        <parameter expr="'Entry'"/>
+                        <parameter expr="{'parent': self.activity_frame, 'name': 'activity_entry', 'value': '(none)', 'readonly': True}"/>
+                    </raise>
+                </onentry>
+
+                <transition event="instance_created" target="../pack">
+                    <parameter name="assoc_name"/>
+                    <raise event="start_instance" scope="cd">
+                        <parameter expr="assoc_name"/>
+                    </raise>
+                    <script>
+                        self.activity_entry = assoc_name
+                    </script>
+                </transition>
+            </state>
+
+            <state id="pack">
+                <transition event="tk_widget" target="../../create_activity_browse_button">
+                    <parameter name="tk_widget"/>
+                    <script>
+                        tk_widget.grid(row=0,column=1)
+                    </script>
+                </transition>
+            </state>
+        </state>
+
         <state id="create_activity_browse_button" initial="create">
             <state id="create">
                 <onentry>
                     <raise event="create_instance" scope="cd">
-                        <parameter expr="'activity_browse_button'"/>
+                        <parameter expr="'activity_browse'"/>
                         <parameter expr="'Button'"/>
-                        <parameter expr="{'parent': self, 'event_parameters': 'browse_activity', 'visual': TextVisual('(none)'), 'tooltip_text': 'Browse for a activity'}"/>
+                        <parameter expr="{'parent': self.activity_frame, 'event_parameters': 'browse_activity', 'visual': TextVisual('...'), 'tooltip_text': 'Browse for a activity'}"/>
                     </raise>
                 </onentry>
 
@@ -56,7 +118,7 @@
                 <transition event="tk_widget" target="../../ready">
                     <parameter name="tk_widget"/>
                     <script>
-                        tk_widget.grid(row=0,column=1)
+                        tk_widget.grid(row=0,column=2)
                     </script>
                 </transition>
             </state>
@@ -99,6 +161,9 @@
                     <script>
                         self.activity = activity
                     </script>
+                    <raise event="change_text" target="self.activity_entry">
+                        <parameter expr="self.activity"/>
+                    </raise>
                 </transition>
 
                 <transition event="close_window" target="../../redraw_signature">
@@ -173,7 +238,7 @@
                 </state>
 
                 <state id="pack_label">
-                    <transition event="tk_widget" target="../create_button">
+                    <transition event="tk_widget" target="../create_entry">
                         <parameter name="tk_widget"/>
                         <script>
                             tk_widget.grid(row=self.counter,column=0)
@@ -183,12 +248,43 @@
                     </transition>
                 </state>
 
+                <state id="create_entry">
+                    <onentry>
+                        <raise event="create_instance" scope="cd">
+                            <parameter expr="'model_browse_entry'"/>
+                            <parameter expr="'Entry'"/>
+                            <parameter expr="{'parent': self.input_frame, 'name': 'input_%s' % self.current[0], 'value': '(none)', 'readonly': True}"/>
+                        </raise>
+                    </onentry>
+
+                    <transition event="instance_created" target="../pack_entry">
+                        <parameter name="assoc_name"/>
+                        <raise event="start_instance" scope="cd">
+                            <parameter expr="assoc_name"/>
+                        </raise>
+                        <script>
+                            self.associations["input_%s" % self.current[0]] = assoc_name
+                        </script>
+                    </transition>
+                </state>
+
+                <state id="pack_entry">
+                    <transition event="tk_widget" target="../create_button">
+                        <parameter name="tk_widget"/>
+                        <script>
+                            tk_widget.grid(row=self.counter, column=0)
+                            print("Adding input for " + str(self.current))
+                            print("At row " + str(self.counter))
+                        </script>
+                    </transition>
+                </state>
+
                 <state id="create_button">
                     <onentry>
                         <raise event="create_instance" scope="cd">
                             <parameter expr="'model_browse_button'"/>
                             <parameter expr="'Button'"/>
-                            <parameter expr="{'parent': self.input_frame, 'visual': TextVisual('(none)'), 'tooltip_text': 'Select input model for tag %s.' % self.current[0], 'event_parameters': 'input_%s' % self.current[0]}"/>
+                            <parameter expr="{'parent': self.input_frame, 'visual': TextVisual('...'), 'tooltip_text': 'Select input model for tag %s.' % self.current[0], 'event_parameters': 'input_%s' % self.current[0]}"/>
                         </raise>
                     </onentry>
 
@@ -197,9 +293,6 @@
                         <raise event="start_instance" scope="cd">
                             <parameter expr="assoc_name"/>
                         </raise>
-                        <script>
-                            self.associations["input_%s" % self.current[0]] = assoc_name
-                        </script>
                     </transition>
                 </state>
 
@@ -207,7 +300,7 @@
                     <transition event="tk_widget" target="../check_next">
                         <parameter name="tk_widget"/>
                         <script>
-                            tk_widget.grid(row=self.counter, column=1)
+                            tk_widget.grid(row=self.counter, column=2)
                         </script>
                     </transition>
                 </state>
@@ -248,6 +341,37 @@
                 </state>
 
                 <state id="pack_label">
+                    <transition event="tk_widget" target="../create_entry">
+                        <parameter name="tk_widget"/>
+                        <script>
+                            tk_widget.grid(row=self.counter, column=0)
+                            print("Adding output for " + str(self.current))
+                            print("At row " + str(self.counter))
+                        </script>
+                    </transition>
+                </state>
+
+                <state id="create_entry">
+                    <onentry>
+                        <raise event="create_instance" scope="cd">
+                            <parameter expr="'model_browse_entry'"/>
+                            <parameter expr="'Entry'"/>
+                            <parameter expr="{'parent': self.output_frame, 'name': 'output_%s' % self.current[0], 'value': '(none)', 'readonly': False}"/>
+                        </raise>
+                    </onentry>
+
+                    <transition event="instance_created" target="../pack_entry">
+                        <parameter name="assoc_name"/>
+                        <raise event="start_instance" scope="cd">
+                            <parameter expr="assoc_name"/>
+                        </raise>
+                        <script>
+                            self.associations["output_%s" % self.current[0]] = assoc_name
+                        </script>
+                    </transition>
+                </state>
+
+                <state id="pack_entry">
                     <transition event="tk_widget" target="../create_button">
                         <parameter name="tk_widget"/>
                         <script>
@@ -263,7 +387,7 @@
                         <raise event="create_instance" scope="cd">
                             <parameter expr="'model_browse_button'"/>
                             <parameter expr="'Button'"/>
-                            <parameter expr="{'parent': self.output_frame, 'visual': TextVisual('(none)'), 'tooltip_text': 'Select output model for tag %s.' % self.current[0], 'event_parameters': 'output_%s' % self.current[0]}"/>
+                            <parameter expr="{'parent': self.output_frame, 'visual': TextVisual('...'), 'tooltip_text': 'Select output model for tag %s.' % self.current[0], 'event_parameters': 'output_%s' % self.current[0]}"/>
                         </raise>
                     </onentry>
 
@@ -272,9 +396,6 @@
                         <raise event="start_instance" scope="cd">
                             <parameter expr="assoc_name"/>
                         </raise>
-                        <script>
-                            self.associations["output_%s" % self.current[0]] = assoc_name
-                        </script>
                     </transition>
                 </state>
 
@@ -282,14 +403,46 @@
                     <transition event="tk_widget" target="../check_next">
                         <parameter name="tk_widget"/>
                         <script>
-                            tk_widget.grid(row=self.counter, column=1)
+                            tk_widget.grid(row=self.counter, column=2)
                         </script>
                     </transition>
                 </state>
             </state>
         </state>
 
-        <state id="browse_model">
+        <state id="browse_model" initial="create_browser">
+            <state id="create_browser">
+                <onentry>
+                    <raise event="create_instance" scope="cd">
+                        <parameter expr="'browsers'"/>
+                        <parameter expr="'Browser'"/>
+                        <parameter expr="'Select model to use.'"/>
+                        <parameter expr="None"/>
+                    </raise>
+                </onentry>
+
+                <transition event="instance_created" target="../waiting_for_decision">
+                    <parameter name="assoc_name"/>
+                    <raise event="start_instance" scope="cd">
+                        <parameter expr="assoc_name"/>
+                    </raise>
+                </transition>
+            </state>
+
+            <state id="waiting_for_decision">
+                <transition event="browse_result" target=".">
+                    <parameter name="model"/>
+                    <raise event="change_value" scope="narrow" target="self.associations[self.current]">
+                        <parameter expr="model"/>
+                    </raise>
+                </transition>
+
+                <transition event="close_window" target="../../ready">
+                    <raise event="delete_instance" scope="cd">
+                        <parameter expr="'browsers'"/>
+                    </raise>
+                </transition>
+            </state>
         </state>
 
         <state id="closing">
@@ -301,7 +454,10 @@
                     <parameter expr="'model_browse_button'"/>
                 </raise>
                 <raise event="delete_instance" scope="cd">
-                    <parameter expr="'activity_browse_button'"/>
+                    <parameter expr="'model_browse_entry'"/>
+                </raise>
+                <raise event="delete_instance" scope="cd">
+                    <parameter expr="'activity_browse'"/>
                 </raise>
             </transition>
         </state>

+ 241 - 45
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:   Mon Oct 16 16:05:21 2017
+Date:   Mon Oct 16 16:47:33 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -7250,17 +7250,19 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     def user_defined_constructor(self):
         tk.Toplevel.__init__(self)
         SCCDWidget.__init__(self)
+        self.activity_frame = tk.Frame(self)
         self.input_frame = tk.Frame(self)
         self.output_frame = tk.Frame(self)
         
-        tk.Label(self, text="Activity").grid(row=0, column=0)
-        tk.Label(self, text="Inputs").grid(row=1, column=0)
-        self.input_frame.grid(row=2,column=0)
-        tk.Label(self, text="Outputs").grid(row=3, column=0)
-        self.output_frame.grid(row=4, column=0)
+        self.activity_frame.pack()
+        tk.Label(self, text="Inputs").pack()
+        self.input_frame.pack()
+        tk.Label(self, text="Outputs").pack()
+        self.output_frame.pack()
         
         self.associations = {}
         self.current = None
+        self.activity = None
     
     def user_defined_destructor(self):
         self.destroy()
@@ -7277,92 +7279,135 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         # state <root>
         self.states[""] = State(0, "", self)
         
+        # state /create_activity_browse_label
+        self.states["/create_activity_browse_label"] = State(1, "/create_activity_browse_label", self)
+        
+        # state /create_activity_browse_label/create
+        self.states["/create_activity_browse_label/create"] = State(2, "/create_activity_browse_label/create", self)
+        self.states["/create_activity_browse_label/create"].setEnter(self._create_activity_browse_label_create_enter)
+        
+        # state /create_activity_browse_label/pack
+        self.states["/create_activity_browse_label/pack"] = State(3, "/create_activity_browse_label/pack", self)
+        
+        # state /create_activity_browse_entry
+        self.states["/create_activity_browse_entry"] = State(4, "/create_activity_browse_entry", self)
+        
+        # state /create_activity_browse_entry/create
+        self.states["/create_activity_browse_entry/create"] = State(5, "/create_activity_browse_entry/create", self)
+        self.states["/create_activity_browse_entry/create"].setEnter(self._create_activity_browse_entry_create_enter)
+        
+        # state /create_activity_browse_entry/pack
+        self.states["/create_activity_browse_entry/pack"] = State(6, "/create_activity_browse_entry/pack", self)
+        
         # state /create_activity_browse_button
-        self.states["/create_activity_browse_button"] = State(1, "/create_activity_browse_button", self)
+        self.states["/create_activity_browse_button"] = State(7, "/create_activity_browse_button", self)
         
         # state /create_activity_browse_button/create
-        self.states["/create_activity_browse_button/create"] = State(2, "/create_activity_browse_button/create", self)
+        self.states["/create_activity_browse_button/create"] = State(8, "/create_activity_browse_button/create", self)
         self.states["/create_activity_browse_button/create"].setEnter(self._create_activity_browse_button_create_enter)
         
         # state /create_activity_browse_button/pack
-        self.states["/create_activity_browse_button/pack"] = State(3, "/create_activity_browse_button/pack", self)
+        self.states["/create_activity_browse_button/pack"] = State(9, "/create_activity_browse_button/pack", self)
         
         # state /ready
-        self.states["/ready"] = State(4, "/ready", self)
+        self.states["/ready"] = State(10, "/ready", self)
         
         # state /browse_activity
-        self.states["/browse_activity"] = State(5, "/browse_activity", self)
+        self.states["/browse_activity"] = State(11, "/browse_activity", self)
         
         # state /browse_activity/create_browser
-        self.states["/browse_activity/create_browser"] = State(6, "/browse_activity/create_browser", self)
+        self.states["/browse_activity/create_browser"] = State(12, "/browse_activity/create_browser", self)
         self.states["/browse_activity/create_browser"].setEnter(self._browse_activity_create_browser_enter)
         
         # state /browse_activity/waiting_for_decision
-        self.states["/browse_activity/waiting_for_decision"] = State(7, "/browse_activity/waiting_for_decision", self)
+        self.states["/browse_activity/waiting_for_decision"] = State(13, "/browse_activity/waiting_for_decision", self)
         
         # state /redraw_signature
-        self.states["/redraw_signature"] = State(8, "/redraw_signature", self)
+        self.states["/redraw_signature"] = State(14, "/redraw_signature", self)
         
         # state /redraw_signature/clear_previous
-        self.states["/redraw_signature/clear_previous"] = State(9, "/redraw_signature/clear_previous", self)
+        self.states["/redraw_signature/clear_previous"] = State(15, "/redraw_signature/clear_previous", self)
         
         # state /redraw_signature/read_signature
-        self.states["/redraw_signature/read_signature"] = State(10, "/redraw_signature/read_signature", self)
+        self.states["/redraw_signature/read_signature"] = State(16, "/redraw_signature/read_signature", self)
         self.states["/redraw_signature/read_signature"].setEnter(self._redraw_signature_read_signature_enter)
         
         # state /redraw_signature/add_input
-        self.states["/redraw_signature/add_input"] = State(11, "/redraw_signature/add_input", self)
+        self.states["/redraw_signature/add_input"] = State(17, "/redraw_signature/add_input", self)
         self.states["/redraw_signature/add_input"].setEnter(self._redraw_signature_add_input_enter)
         
         # state /redraw_signature/add_input/check_next
-        self.states["/redraw_signature/add_input/check_next"] = State(12, "/redraw_signature/add_input/check_next", self)
+        self.states["/redraw_signature/add_input/check_next"] = State(18, "/redraw_signature/add_input/check_next", self)
         
         # state /redraw_signature/add_input/create_label
-        self.states["/redraw_signature/add_input/create_label"] = State(13, "/redraw_signature/add_input/create_label", self)
+        self.states["/redraw_signature/add_input/create_label"] = State(19, "/redraw_signature/add_input/create_label", self)
         self.states["/redraw_signature/add_input/create_label"].setEnter(self._redraw_signature_add_input_create_label_enter)
         
         # state /redraw_signature/add_input/pack_label
-        self.states["/redraw_signature/add_input/pack_label"] = State(14, "/redraw_signature/add_input/pack_label", self)
+        self.states["/redraw_signature/add_input/pack_label"] = State(20, "/redraw_signature/add_input/pack_label", self)
+        
+        # state /redraw_signature/add_input/create_entry
+        self.states["/redraw_signature/add_input/create_entry"] = State(21, "/redraw_signature/add_input/create_entry", self)
+        self.states["/redraw_signature/add_input/create_entry"].setEnter(self._redraw_signature_add_input_create_entry_enter)
+        
+        # state /redraw_signature/add_input/pack_entry
+        self.states["/redraw_signature/add_input/pack_entry"] = State(22, "/redraw_signature/add_input/pack_entry", self)
         
         # state /redraw_signature/add_input/create_button
-        self.states["/redraw_signature/add_input/create_button"] = State(15, "/redraw_signature/add_input/create_button", self)
+        self.states["/redraw_signature/add_input/create_button"] = State(23, "/redraw_signature/add_input/create_button", self)
         self.states["/redraw_signature/add_input/create_button"].setEnter(self._redraw_signature_add_input_create_button_enter)
         
         # state /redraw_signature/add_input/pack_button
-        self.states["/redraw_signature/add_input/pack_button"] = State(16, "/redraw_signature/add_input/pack_button", self)
+        self.states["/redraw_signature/add_input/pack_button"] = State(24, "/redraw_signature/add_input/pack_button", self)
         
         # state /redraw_signature/add_output
-        self.states["/redraw_signature/add_output"] = State(17, "/redraw_signature/add_output", self)
+        self.states["/redraw_signature/add_output"] = State(25, "/redraw_signature/add_output", self)
         self.states["/redraw_signature/add_output"].setEnter(self._redraw_signature_add_output_enter)
         
         # state /redraw_signature/add_output/check_next
-        self.states["/redraw_signature/add_output/check_next"] = State(18, "/redraw_signature/add_output/check_next", self)
+        self.states["/redraw_signature/add_output/check_next"] = State(26, "/redraw_signature/add_output/check_next", self)
         
         # state /redraw_signature/add_output/create_label
-        self.states["/redraw_signature/add_output/create_label"] = State(19, "/redraw_signature/add_output/create_label", self)
+        self.states["/redraw_signature/add_output/create_label"] = State(27, "/redraw_signature/add_output/create_label", self)
         self.states["/redraw_signature/add_output/create_label"].setEnter(self._redraw_signature_add_output_create_label_enter)
         
         # state /redraw_signature/add_output/pack_label
-        self.states["/redraw_signature/add_output/pack_label"] = State(20, "/redraw_signature/add_output/pack_label", self)
+        self.states["/redraw_signature/add_output/pack_label"] = State(28, "/redraw_signature/add_output/pack_label", self)
+        
+        # state /redraw_signature/add_output/create_entry
+        self.states["/redraw_signature/add_output/create_entry"] = State(29, "/redraw_signature/add_output/create_entry", self)
+        self.states["/redraw_signature/add_output/create_entry"].setEnter(self._redraw_signature_add_output_create_entry_enter)
+        
+        # state /redraw_signature/add_output/pack_entry
+        self.states["/redraw_signature/add_output/pack_entry"] = State(30, "/redraw_signature/add_output/pack_entry", self)
         
         # state /redraw_signature/add_output/create_button
-        self.states["/redraw_signature/add_output/create_button"] = State(21, "/redraw_signature/add_output/create_button", self)
+        self.states["/redraw_signature/add_output/create_button"] = State(31, "/redraw_signature/add_output/create_button", self)
         self.states["/redraw_signature/add_output/create_button"].setEnter(self._redraw_signature_add_output_create_button_enter)
         
         # state /redraw_signature/add_output/pack_button
-        self.states["/redraw_signature/add_output/pack_button"] = State(22, "/redraw_signature/add_output/pack_button", self)
+        self.states["/redraw_signature/add_output/pack_button"] = State(32, "/redraw_signature/add_output/pack_button", self)
         
         # state /browse_model
-        self.states["/browse_model"] = State(23, "/browse_model", self)
+        self.states["/browse_model"] = State(33, "/browse_model", self)
+        
+        # state /browse_model/create_browser
+        self.states["/browse_model/create_browser"] = State(34, "/browse_model/create_browser", self)
+        self.states["/browse_model/create_browser"].setEnter(self._browse_model_create_browser_enter)
+        
+        # state /browse_model/waiting_for_decision
+        self.states["/browse_model/waiting_for_decision"] = State(35, "/browse_model/waiting_for_decision", self)
         
         # state /closing
-        self.states["/closing"] = State(24, "/closing", self)
+        self.states["/closing"] = State(36, "/closing", self)
         
         # state /closed
-        self.states["/closed"] = State(25, "/closed", self)
+        self.states["/closed"] = State(37, "/closed", self)
         self.states["/closed"].setEnter(self._closed_enter)
         
         # add children
+        self.states[""].addChild(self.states["/create_activity_browse_label"])
+        self.states[""].addChild(self.states["/create_activity_browse_entry"])
         self.states[""].addChild(self.states["/create_activity_browse_button"])
         self.states[""].addChild(self.states["/ready"])
         self.states[""].addChild(self.states["/browse_activity"])
@@ -7370,6 +7415,10 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.states[""].addChild(self.states["/browse_model"])
         self.states[""].addChild(self.states["/closing"])
         self.states[""].addChild(self.states["/closed"])
+        self.states["/create_activity_browse_label"].addChild(self.states["/create_activity_browse_label/create"])
+        self.states["/create_activity_browse_label"].addChild(self.states["/create_activity_browse_label/pack"])
+        self.states["/create_activity_browse_entry"].addChild(self.states["/create_activity_browse_entry/create"])
+        self.states["/create_activity_browse_entry"].addChild(self.states["/create_activity_browse_entry/pack"])
         self.states["/create_activity_browse_button"].addChild(self.states["/create_activity_browse_button/create"])
         self.states["/create_activity_browse_button"].addChild(self.states["/create_activity_browse_button/pack"])
         self.states["/browse_activity"].addChild(self.states["/browse_activity/create_browser"])
@@ -7381,20 +7430,53 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.states["/redraw_signature/add_input"].addChild(self.states["/redraw_signature/add_input/check_next"])
         self.states["/redraw_signature/add_input"].addChild(self.states["/redraw_signature/add_input/create_label"])
         self.states["/redraw_signature/add_input"].addChild(self.states["/redraw_signature/add_input/pack_label"])
+        self.states["/redraw_signature/add_input"].addChild(self.states["/redraw_signature/add_input/create_entry"])
+        self.states["/redraw_signature/add_input"].addChild(self.states["/redraw_signature/add_input/pack_entry"])
         self.states["/redraw_signature/add_input"].addChild(self.states["/redraw_signature/add_input/create_button"])
         self.states["/redraw_signature/add_input"].addChild(self.states["/redraw_signature/add_input/pack_button"])
         self.states["/redraw_signature/add_output"].addChild(self.states["/redraw_signature/add_output/check_next"])
         self.states["/redraw_signature/add_output"].addChild(self.states["/redraw_signature/add_output/create_label"])
         self.states["/redraw_signature/add_output"].addChild(self.states["/redraw_signature/add_output/pack_label"])
+        self.states["/redraw_signature/add_output"].addChild(self.states["/redraw_signature/add_output/create_entry"])
+        self.states["/redraw_signature/add_output"].addChild(self.states["/redraw_signature/add_output/pack_entry"])
         self.states["/redraw_signature/add_output"].addChild(self.states["/redraw_signature/add_output/create_button"])
         self.states["/redraw_signature/add_output"].addChild(self.states["/redraw_signature/add_output/pack_button"])
+        self.states["/browse_model"].addChild(self.states["/browse_model/create_browser"])
+        self.states["/browse_model"].addChild(self.states["/browse_model/waiting_for_decision"])
         self.states[""].fixTree()
-        self.states[""].default_state = self.states["/create_activity_browse_button"]
+        self.states[""].default_state = self.states["/create_activity_browse_label"]
+        self.states["/create_activity_browse_label"].default_state = self.states["/create_activity_browse_label/create"]
+        self.states["/create_activity_browse_entry"].default_state = self.states["/create_activity_browse_entry/create"]
         self.states["/create_activity_browse_button"].default_state = self.states["/create_activity_browse_button/create"]
         self.states["/browse_activity"].default_state = self.states["/browse_activity/create_browser"]
         self.states["/redraw_signature"].default_state = self.states["/redraw_signature/clear_previous"]
         self.states["/redraw_signature/add_input"].default_state = self.states["/redraw_signature/add_input/check_next"]
         self.states["/redraw_signature/add_output"].default_state = self.states["/redraw_signature/add_output/check_next"]
+        self.states["/browse_model"].default_state = self.states["/browse_model/create_browser"]
+        
+        # transition /create_activity_browse_label/create
+        _create_activity_browse_label_create_0 = Transition(self, self.states["/create_activity_browse_label/create"], [self.states["/create_activity_browse_label/pack"]])
+        _create_activity_browse_label_create_0.setAction(self._create_activity_browse_label_create_0_exec)
+        _create_activity_browse_label_create_0.setTrigger(Event("instance_created", None))
+        self.states["/create_activity_browse_label/create"].addTransition(_create_activity_browse_label_create_0)
+        
+        # transition /create_activity_browse_label/pack
+        _create_activity_browse_label_pack_0 = Transition(self, self.states["/create_activity_browse_label/pack"], [self.states["/create_activity_browse_entry"]])
+        _create_activity_browse_label_pack_0.setAction(self._create_activity_browse_label_pack_0_exec)
+        _create_activity_browse_label_pack_0.setTrigger(Event("tk_widget", None))
+        self.states["/create_activity_browse_label/pack"].addTransition(_create_activity_browse_label_pack_0)
+        
+        # transition /create_activity_browse_entry/create
+        _create_activity_browse_entry_create_0 = Transition(self, self.states["/create_activity_browse_entry/create"], [self.states["/create_activity_browse_entry/pack"]])
+        _create_activity_browse_entry_create_0.setAction(self._create_activity_browse_entry_create_0_exec)
+        _create_activity_browse_entry_create_0.setTrigger(Event("instance_created", None))
+        self.states["/create_activity_browse_entry/create"].addTransition(_create_activity_browse_entry_create_0)
+        
+        # transition /create_activity_browse_entry/pack
+        _create_activity_browse_entry_pack_0 = Transition(self, self.states["/create_activity_browse_entry/pack"], [self.states["/create_activity_browse_button"]])
+        _create_activity_browse_entry_pack_0.setAction(self._create_activity_browse_entry_pack_0_exec)
+        _create_activity_browse_entry_pack_0.setTrigger(Event("tk_widget", None))
+        self.states["/create_activity_browse_entry/pack"].addTransition(_create_activity_browse_entry_pack_0)
         
         # transition /create_activity_browse_button/create
         _create_activity_browse_button_create_0 = Transition(self, self.states["/create_activity_browse_button/create"], [self.states["/create_activity_browse_button/pack"]])
@@ -7465,11 +7547,23 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.states["/redraw_signature/add_input/create_label"].addTransition(_redraw_signature_add_input_create_label_0)
         
         # transition /redraw_signature/add_input/pack_label
-        _redraw_signature_add_input_pack_label_0 = Transition(self, self.states["/redraw_signature/add_input/pack_label"], [self.states["/redraw_signature/add_input/create_button"]])
+        _redraw_signature_add_input_pack_label_0 = Transition(self, self.states["/redraw_signature/add_input/pack_label"], [self.states["/redraw_signature/add_input/create_entry"]])
         _redraw_signature_add_input_pack_label_0.setAction(self._redraw_signature_add_input_pack_label_0_exec)
         _redraw_signature_add_input_pack_label_0.setTrigger(Event("tk_widget", None))
         self.states["/redraw_signature/add_input/pack_label"].addTransition(_redraw_signature_add_input_pack_label_0)
         
+        # transition /redraw_signature/add_input/create_entry
+        _redraw_signature_add_input_create_entry_0 = Transition(self, self.states["/redraw_signature/add_input/create_entry"], [self.states["/redraw_signature/add_input/pack_entry"]])
+        _redraw_signature_add_input_create_entry_0.setAction(self._redraw_signature_add_input_create_entry_0_exec)
+        _redraw_signature_add_input_create_entry_0.setTrigger(Event("instance_created", None))
+        self.states["/redraw_signature/add_input/create_entry"].addTransition(_redraw_signature_add_input_create_entry_0)
+        
+        # transition /redraw_signature/add_input/pack_entry
+        _redraw_signature_add_input_pack_entry_0 = Transition(self, self.states["/redraw_signature/add_input/pack_entry"], [self.states["/redraw_signature/add_input/create_button"]])
+        _redraw_signature_add_input_pack_entry_0.setAction(self._redraw_signature_add_input_pack_entry_0_exec)
+        _redraw_signature_add_input_pack_entry_0.setTrigger(Event("tk_widget", None))
+        self.states["/redraw_signature/add_input/pack_entry"].addTransition(_redraw_signature_add_input_pack_entry_0)
+        
         # transition /redraw_signature/add_input/create_button
         _redraw_signature_add_input_create_button_0 = Transition(self, self.states["/redraw_signature/add_input/create_button"], [self.states["/redraw_signature/add_input/pack_button"]])
         _redraw_signature_add_input_create_button_0.setAction(self._redraw_signature_add_input_create_button_0_exec)
@@ -7500,11 +7594,23 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.states["/redraw_signature/add_output/create_label"].addTransition(_redraw_signature_add_output_create_label_0)
         
         # transition /redraw_signature/add_output/pack_label
-        _redraw_signature_add_output_pack_label_0 = Transition(self, self.states["/redraw_signature/add_output/pack_label"], [self.states["/redraw_signature/add_output/create_button"]])
+        _redraw_signature_add_output_pack_label_0 = Transition(self, self.states["/redraw_signature/add_output/pack_label"], [self.states["/redraw_signature/add_output/create_entry"]])
         _redraw_signature_add_output_pack_label_0.setAction(self._redraw_signature_add_output_pack_label_0_exec)
         _redraw_signature_add_output_pack_label_0.setTrigger(Event("tk_widget", None))
         self.states["/redraw_signature/add_output/pack_label"].addTransition(_redraw_signature_add_output_pack_label_0)
         
+        # transition /redraw_signature/add_output/create_entry
+        _redraw_signature_add_output_create_entry_0 = Transition(self, self.states["/redraw_signature/add_output/create_entry"], [self.states["/redraw_signature/add_output/pack_entry"]])
+        _redraw_signature_add_output_create_entry_0.setAction(self._redraw_signature_add_output_create_entry_0_exec)
+        _redraw_signature_add_output_create_entry_0.setTrigger(Event("instance_created", None))
+        self.states["/redraw_signature/add_output/create_entry"].addTransition(_redraw_signature_add_output_create_entry_0)
+        
+        # transition /redraw_signature/add_output/pack_entry
+        _redraw_signature_add_output_pack_entry_0 = Transition(self, self.states["/redraw_signature/add_output/pack_entry"], [self.states["/redraw_signature/add_output/create_button"]])
+        _redraw_signature_add_output_pack_entry_0.setAction(self._redraw_signature_add_output_pack_entry_0_exec)
+        _redraw_signature_add_output_pack_entry_0.setTrigger(Event("tk_widget", None))
+        self.states["/redraw_signature/add_output/pack_entry"].addTransition(_redraw_signature_add_output_pack_entry_0)
+        
         # transition /redraw_signature/add_output/create_button
         _redraw_signature_add_output_create_button_0 = Transition(self, self.states["/redraw_signature/add_output/create_button"], [self.states["/redraw_signature/add_output/pack_button"]])
         _redraw_signature_add_output_create_button_0.setAction(self._redraw_signature_add_output_create_button_0_exec)
@@ -7517,6 +7623,22 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         _redraw_signature_add_output_pack_button_0.setTrigger(Event("tk_widget", None))
         self.states["/redraw_signature/add_output/pack_button"].addTransition(_redraw_signature_add_output_pack_button_0)
         
+        # transition /browse_model/create_browser
+        _browse_model_create_browser_0 = Transition(self, self.states["/browse_model/create_browser"], [self.states["/browse_model/waiting_for_decision"]])
+        _browse_model_create_browser_0.setAction(self._browse_model_create_browser_0_exec)
+        _browse_model_create_browser_0.setTrigger(Event("instance_created", None))
+        self.states["/browse_model/create_browser"].addTransition(_browse_model_create_browser_0)
+        
+        # transition /browse_model/waiting_for_decision
+        _browse_model_waiting_for_decision_0 = Transition(self, self.states["/browse_model/waiting_for_decision"], [self.states["/browse_model/waiting_for_decision"]])
+        _browse_model_waiting_for_decision_0.setAction(self._browse_model_waiting_for_decision_0_exec)
+        _browse_model_waiting_for_decision_0.setTrigger(Event("browse_result", None))
+        self.states["/browse_model/waiting_for_decision"].addTransition(_browse_model_waiting_for_decision_0)
+        _browse_model_waiting_for_decision_1 = Transition(self, self.states["/browse_model/waiting_for_decision"], [self.states["/ready"]])
+        _browse_model_waiting_for_decision_1.setAction(self._browse_model_waiting_for_decision_1_exec)
+        _browse_model_waiting_for_decision_1.setTrigger(Event("close_window", None))
+        self.states["/browse_model/waiting_for_decision"].addTransition(_browse_model_waiting_for_decision_1)
+        
         # transition /closing
         _closing_0 = Transition(self, self.states["/closing"], [self.states["/closed"]])
         _closing_0.setAction(self._closing_0_exec)
@@ -7529,8 +7651,14 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     def _redraw_signature_add_output_enter(self):
         self.counter = -1
     
+    def _create_activity_browse_label_create_enter(self):
+        self.big_step.outputEventOM(Event("create_instance", None, [self, 'activity_browse', 'Label', {'parent': self.activity_frame, 'text': 'Activity'}]))
+    
+    def _create_activity_browse_entry_create_enter(self):
+        self.big_step.outputEventOM(Event("create_instance", None, [self, 'activity_browse', 'Entry', {'parent': self.activity_frame, 'name': 'activity_entry', 'value': '(none)', 'readonly': True}]))
+    
     def _create_activity_browse_button_create_enter(self):
-        self.big_step.outputEventOM(Event("create_instance", None, [self, 'activity_browse_button', 'Button', {'parent': self, 'event_parameters': 'browse_activity', 'visual': TextVisual('(none)'), 'tooltip_text': 'Browse for a activity'}]))
+        self.big_step.outputEventOM(Event("create_instance", None, [self, 'activity_browse', 'Button', {'parent': self.activity_frame, 'event_parameters': 'browse_activity', 'visual': TextVisual('...'), 'tooltip_text': 'Browse for a activity'}]))
     
     def _browse_activity_create_browser_enter(self):
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'browsers', 'Browser', 'Select activity to execute.', None]))
@@ -7541,25 +7669,51 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     def _redraw_signature_add_input_create_label_enter(self):
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'model_browse_label', 'Label', {'parent': self.input_frame, 'text': self.current[0]}]))
     
+    def _redraw_signature_add_input_create_entry_enter(self):
+        self.big_step.outputEventOM(Event("create_instance", None, [self, 'model_browse_entry', 'Entry', {'parent': self.input_frame, 'name': 'input_%s' % self.current[0], 'value': '(none)', 'readonly': True}]))
+    
     def _redraw_signature_add_input_create_button_enter(self):
-        self.big_step.outputEventOM(Event("create_instance", None, [self, 'model_browse_button', 'Button', {'parent': self.input_frame, 'visual': TextVisual('(none)'), 'tooltip_text': 'Select input model for tag %s.' % self.current[0], 'event_parameters': 'input_%s' % self.current[0]}]))
+        self.big_step.outputEventOM(Event("create_instance", None, [self, 'model_browse_button', 'Button', {'parent': self.input_frame, 'visual': TextVisual('...'), 'tooltip_text': 'Select input model for tag %s.' % self.current[0], 'event_parameters': 'input_%s' % self.current[0]}]))
     
     def _redraw_signature_add_output_create_label_enter(self):
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'model_browse_label', 'Label', {'parent': self.output_frame, 'text': self.current[0]}]))
     
+    def _redraw_signature_add_output_create_entry_enter(self):
+        self.big_step.outputEventOM(Event("create_instance", None, [self, 'model_browse_entry', 'Entry', {'parent': self.output_frame, 'name': 'output_%s' % self.current[0], 'value': '(none)', 'readonly': False}]))
+    
     def _redraw_signature_add_output_create_button_enter(self):
-        self.big_step.outputEventOM(Event("create_instance", None, [self, 'model_browse_button', 'Button', {'parent': self.output_frame, 'visual': TextVisual('(none)'), 'tooltip_text': 'Select output model for tag %s.' % self.current[0], 'event_parameters': 'output_%s' % self.current[0]}]))
+        self.big_step.outputEventOM(Event("create_instance", None, [self, 'model_browse_button', 'Button', {'parent': self.output_frame, 'visual': TextVisual('(...)'), 'tooltip_text': 'Select output model for tag %s.' % self.current[0], 'event_parameters': 'output_%s' % self.current[0]}]))
+    
+    def _browse_model_create_browser_enter(self):
+        self.big_step.outputEventOM(Event("create_instance", None, [self, 'browsers', 'Browser', 'Select model to use.', None]))
     
     def _closed_enter(self):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("window_close", None, [])]))
     
+    def _create_activity_browse_label_create_0_exec(self, parameters):
+        assoc_name = parameters[0]
+        self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
+    
+    def _create_activity_browse_label_pack_0_exec(self, parameters):
+        tk_widget = parameters[0]
+        tk_widget.grid(row=0,column=0)
+    
+    def _create_activity_browse_entry_create_0_exec(self, parameters):
+        assoc_name = parameters[0]
+        self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
+        self.activity_entry = assoc_name
+    
+    def _create_activity_browse_entry_pack_0_exec(self, parameters):
+        tk_widget = parameters[0]
+        tk_widget.grid(row=0,column=1)
+    
     def _create_activity_browse_button_create_0_exec(self, parameters):
         assoc_name = parameters[0]
         self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
     
     def _create_activity_browse_button_pack_0_exec(self, parameters):
         tk_widget = parameters[0]
-        tk_widget.grid(row=0,column=1)
+        tk_widget.grid(row=0,column=2)
     
     def _ready_0_guard(self, parameters):
         event_name = parameters[0]
@@ -7580,6 +7734,7 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     def _browse_activity_waiting_for_decision_0_exec(self, parameters):
         activity = parameters[0]
         self.activity = activity
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.activity_entry, Event("change_text", None, [self.activity])]))
     
     def _browse_activity_waiting_for_decision_1_exec(self, parameters):
         self.big_step.outputEventOM(Event("delete_instance", None, [self, 'browsers']))
@@ -7613,14 +7768,24 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         print("Adding input for " + str(self.current))
         print("At row " + str(self.counter))
     
-    def _redraw_signature_add_input_create_button_0_exec(self, parameters):
+    def _redraw_signature_add_input_create_entry_0_exec(self, parameters):
         assoc_name = parameters[0]
         self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
         self.associations["input_%s" % self.current[0]] = assoc_name
     
+    def _redraw_signature_add_input_pack_entry_0_exec(self, parameters):
+        tk_widget = parameters[0]
+        tk_widget.grid(row=self.counter, column=0)
+        print("Adding input for " + str(self.current))
+        print("At row " + str(self.counter))
+    
+    def _redraw_signature_add_input_create_button_0_exec(self, parameters):
+        assoc_name = parameters[0]
+        self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
+    
     def _redraw_signature_add_input_pack_button_0_exec(self, parameters):
         tk_widget = parameters[0]
-        tk_widget.grid(row=self.counter, column=1)
+        tk_widget.grid(row=self.counter, column=2)
     
     def _redraw_signature_add_output_check_next_0_exec(self, parameters):
         self.counter += 1
@@ -7642,23 +7807,45 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         print("Adding output for " + str(self.current))
         print("At row " + str(self.counter))
     
-    def _redraw_signature_add_output_create_button_0_exec(self, parameters):
+    def _redraw_signature_add_output_create_entry_0_exec(self, parameters):
         assoc_name = parameters[0]
         self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
         self.associations["output_%s" % self.current[0]] = assoc_name
     
+    def _redraw_signature_add_output_pack_entry_0_exec(self, parameters):
+        tk_widget = parameters[0]
+        tk_widget.grid(row=self.counter, column=0)
+        print("Adding output for " + str(self.current))
+        print("At row " + str(self.counter))
+    
+    def _redraw_signature_add_output_create_button_0_exec(self, parameters):
+        assoc_name = parameters[0]
+        self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
+    
     def _redraw_signature_add_output_pack_button_0_exec(self, parameters):
         tk_widget = parameters[0]
-        tk_widget.grid(row=self.counter, column=1)
+        tk_widget.grid(row=self.counter, column=2)
+    
+    def _browse_model_create_browser_0_exec(self, parameters):
+        assoc_name = parameters[0]
+        self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
+    
+    def _browse_model_waiting_for_decision_0_exec(self, parameters):
+        model = parameters[0]
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations[self.current], Event("change_value", None, [model])]))
+    
+    def _browse_model_waiting_for_decision_1_exec(self, parameters):
+        self.big_step.outputEventOM(Event("delete_instance", None, [self, 'browsers']))
     
     def _closing_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("delete_instance", None, [self, 'model_browse_label']))
         self.big_step.outputEventOM(Event("delete_instance", None, [self, 'model_browse_button']))
-        self.big_step.outputEventOM(Event("delete_instance", None, [self, 'activity_browse_button']))
+        self.big_step.outputEventOM(Event("delete_instance", None, [self, 'model_browse_entry']))
+        self.big_step.outputEventOM(Event("delete_instance", None, [self, 'activity_browse']))
     
     def initializeStatechart(self):
         # enter default state
-        self.default_targets = self.states["/create_activity_browse_button"].getEffectiveTargetStates()
+        self.default_targets = self.states["/create_activity_browse_label"].getEffectiveTargetStates()
         RuntimeClassBase.initializeStatechart(self)
 
 class Toolbar(RuntimeClassBase, tk.Frame, SCCDWidget):
@@ -8642,6 +8829,10 @@ class Entry(RuntimeClassBase):
         _main_ready_3.setAction(self._main_ready_3_exec)
         _main_ready_3.setTrigger(Event("change_event_name", None))
         self.states["/main/ready"].addTransition(_main_ready_3)
+        _main_ready_4 = Transition(self, self.states["/main/ready"], [self.states["/main/ready"]])
+        _main_ready_4.setAction(self._main_ready_4_exec)
+        _main_ready_4.setTrigger(Event("change_value", None))
+        self.states["/main/ready"].addTransition(_main_ready_4)
     
     def _main_initializing_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("tk_widget", None, [self.entry])]))
@@ -8666,6 +8857,10 @@ class Entry(RuntimeClassBase):
         new_name = parameters[0]
         self.name = new_name
     
+    def _main_ready_4_exec(self, parameters):
+        new_value = parameters[0]
+        self.strvar.set(new_value)
+    
     def initializeStatechart(self):
         # enter default state
         self.default_targets = self.states["/main"].getEffectiveTargetStates()
@@ -10680,8 +10875,9 @@ class ObjectManager(ObjectManagerBase):
         elif class_name == "ActivityExecutor":
             instance = ActivityExecutor(self.controller)
             instance.associations = {}
-            instance.associations["activity_browse_button"] = Association("Button", 0, -1)
+            instance.associations["activity_browse"] = Association("A", 0, -1)
             instance.associations["model_browse_button"] = Association("Button", 0, -1)
+            instance.associations["model_browse_entry"] = Association("Entry", 0, -1)
             instance.associations["model_browse_label"] = Association("Label", 0, -1)
             instance.associations["browsers"] = Association("Browser", 0, -1)
             instance.associations["parent"] = Association("A", 0, -1)