|
@@ -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 9 16:33:03 2017
|
|
|
+Date: Tue Oct 10 09:18:41 2017
|
|
|
|
|
|
Model author: Yentl Van Tendeloo
|
|
|
Model name: Modelverse Visual Editor - Tkinter Version
|
|
@@ -5945,6 +5945,309 @@ class Popup(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
self.default_targets = self.states["/init"].getEffectiveTargetStates()
|
|
|
RuntimeClassBase.initializeStatechart(self)
|
|
|
|
|
|
+class ChoicePrompt(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
+ def __init__(self, controller, prompt, options = None):
|
|
|
+ if options == None: options = None
|
|
|
+ RuntimeClassBase.__init__(self, controller)
|
|
|
+
|
|
|
+ self.semantics.big_step_maximality = StatechartSemantics.TakeMany
|
|
|
+ self.semantics.internal_event_lifeline = StatechartSemantics.Queue
|
|
|
+ self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
|
|
|
+ self.semantics.priority = StatechartSemantics.SourceParent
|
|
|
+ self.semantics.concurrency = StatechartSemantics.Single
|
|
|
+
|
|
|
+ # build Statechart structure
|
|
|
+ self.build_statechart_structure()
|
|
|
+
|
|
|
+ # call user defined constructor
|
|
|
+ ChoicePrompt.user_defined_constructor(self, prompt, options)
|
|
|
+
|
|
|
+ def user_defined_constructor(self, prompt, options = None):
|
|
|
+ if options == None: options = None
|
|
|
+ tk.Toplevel.__init__(self)
|
|
|
+ SCCDWidget.__init__(self)
|
|
|
+ tk.Label(self, text=prompt).pack()
|
|
|
+
|
|
|
+ self.button_frame = tk.Frame(self)
|
|
|
+ self.button_frame.pack(fill=tk.X)
|
|
|
+
|
|
|
+ self.browser_frame = tk.Frame(self)
|
|
|
+ self.browser_frame.pack(fill=tk.BOTH)
|
|
|
+
|
|
|
+ self.selected_label = None
|
|
|
+ self.labels = {}
|
|
|
+ self.options = options
|
|
|
+
|
|
|
+ def user_defined_destructor(self):
|
|
|
+ self.destroy()
|
|
|
+ # call super class destructors
|
|
|
+ if hasattr(tk.Toplevel, "__del__"):
|
|
|
+ tk.Toplevel.__del__(self)
|
|
|
+ if hasattr(SCCDWidget, "__del__"):
|
|
|
+ SCCDWidget.__del__(self)
|
|
|
+
|
|
|
+
|
|
|
+ # builds Statechart structure
|
|
|
+ def build_statechart_structure(self):
|
|
|
+
|
|
|
+ # state <root>
|
|
|
+ self.states[""] = State(0, "", self)
|
|
|
+
|
|
|
+ # state /all
|
|
|
+ self.states["/all"] = State(1, "/all", self)
|
|
|
+
|
|
|
+ # state /all/init
|
|
|
+ self.states["/all/init"] = State(2, "/all/init", self)
|
|
|
+ self.states["/all/init"].setEnter(self._all_init_enter)
|
|
|
+
|
|
|
+ # state /all/wait_for_packing_OK
|
|
|
+ self.states["/all/wait_for_packing_OK"] = State(3, "/all/wait_for_packing_OK", self)
|
|
|
+
|
|
|
+ # state /all/create_labels
|
|
|
+ self.states["/all/create_labels"] = State(4, "/all/create_labels", self)
|
|
|
+
|
|
|
+ # state /all/create_labels/query
|
|
|
+ self.states["/all/create_labels/query"] = State(5, "/all/create_labels/query", self)
|
|
|
+
|
|
|
+ # state /all/create_labels/add_label
|
|
|
+ self.states["/all/create_labels/add_label"] = State(6, "/all/create_labels/add_label", self)
|
|
|
+ self.states["/all/create_labels/add_label"].setEnter(self._all_create_labels_add_label_enter)
|
|
|
+
|
|
|
+ # state /all/create_labels/pack_label
|
|
|
+ self.states["/all/create_labels/pack_label"] = State(7, "/all/create_labels/pack_label", self)
|
|
|
+
|
|
|
+ # state /all/create_labels/check_continue
|
|
|
+ self.states["/all/create_labels/check_continue"] = State(8, "/all/create_labels/check_continue", self)
|
|
|
+
|
|
|
+ # state /all/waiting
|
|
|
+ self.states["/all/waiting"] = State(9, "/all/waiting", self)
|
|
|
+
|
|
|
+ # state /all/delete_labels
|
|
|
+ self.states["/all/delete_labels"] = State(10, "/all/delete_labels", self)
|
|
|
+
|
|
|
+ # state /all/send_results
|
|
|
+ self.states["/all/send_results"] = State(11, "/all/send_results", self)
|
|
|
+
|
|
|
+ # state /all/closing
|
|
|
+ self.states["/all/closing"] = State(12, "/all/closing", self)
|
|
|
+ self.states["/all/closing"].setEnter(self._all_closing_enter)
|
|
|
+
|
|
|
+ # state /all/close
|
|
|
+ self.states["/all/close"] = State(13, "/all/close", self)
|
|
|
+ self.states["/all/close"].setEnter(self._all_close_enter)
|
|
|
+
|
|
|
+ # add children
|
|
|
+ self.states[""].addChild(self.states["/all"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/init"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/wait_for_packing_OK"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/create_labels"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/waiting"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/delete_labels"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/send_results"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/closing"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/close"])
|
|
|
+ self.states["/all/create_labels"].addChild(self.states["/all/create_labels/query"])
|
|
|
+ self.states["/all/create_labels"].addChild(self.states["/all/create_labels/add_label"])
|
|
|
+ self.states["/all/create_labels"].addChild(self.states["/all/create_labels/pack_label"])
|
|
|
+ self.states["/all/create_labels"].addChild(self.states["/all/create_labels/check_continue"])
|
|
|
+ self.states[""].fixTree()
|
|
|
+ self.states[""].default_state = self.states["/all"]
|
|
|
+ self.states["/all"].default_state = self.states["/all/init"]
|
|
|
+ self.states["/all/create_labels"].default_state = self.states["/all/create_labels/query"]
|
|
|
+
|
|
|
+ # transition /all/init
|
|
|
+ _all_init_0 = Transition(self, self.states["/all/init"], [self.states["/all/wait_for_packing_OK"]])
|
|
|
+ _all_init_0.setAction(self._all_init_0_exec)
|
|
|
+ _all_init_0.setTrigger(Event("instance_created", None))
|
|
|
+ self.states["/all/init"].addTransition(_all_init_0)
|
|
|
+
|
|
|
+ # transition /all/wait_for_packing_OK
|
|
|
+ _all_wait_for_packing_OK_0 = Transition(self, self.states["/all/wait_for_packing_OK"], [self.states["/all/create_labels"]])
|
|
|
+ _all_wait_for_packing_OK_0.setAction(self._all_wait_for_packing_OK_0_exec)
|
|
|
+ _all_wait_for_packing_OK_0.setTrigger(Event("tk_widget", None))
|
|
|
+ self.states["/all/wait_for_packing_OK"].addTransition(_all_wait_for_packing_OK_0)
|
|
|
+
|
|
|
+ # transition /all/create_labels/query
|
|
|
+ _all_create_labels_query_0 = Transition(self, self.states["/all/create_labels/query"], [self.states["/all/create_labels/check_continue"]])
|
|
|
+ _all_create_labels_query_0.setAction(self._all_create_labels_query_0_exec)
|
|
|
+ _all_create_labels_query_0.setTrigger(None)
|
|
|
+ self.states["/all/create_labels/query"].addTransition(_all_create_labels_query_0)
|
|
|
+
|
|
|
+ # transition /all/create_labels/add_label
|
|
|
+ _all_create_labels_add_label_0 = Transition(self, self.states["/all/create_labels/add_label"], [self.states["/all/create_labels/pack_label"]])
|
|
|
+ _all_create_labels_add_label_0.setAction(self._all_create_labels_add_label_0_exec)
|
|
|
+ _all_create_labels_add_label_0.setTrigger(Event("instance_created", None))
|
|
|
+ self.states["/all/create_labels/add_label"].addTransition(_all_create_labels_add_label_0)
|
|
|
+
|
|
|
+ # transition /all/create_labels/pack_label
|
|
|
+ _all_create_labels_pack_label_0 = Transition(self, self.states["/all/create_labels/pack_label"], [self.states["/all/create_labels/check_continue"]])
|
|
|
+ _all_create_labels_pack_label_0.setAction(self._all_create_labels_pack_label_0_exec)
|
|
|
+ _all_create_labels_pack_label_0.setTrigger(Event("tk_widget", None))
|
|
|
+ self.states["/all/create_labels/pack_label"].addTransition(_all_create_labels_pack_label_0)
|
|
|
+
|
|
|
+ # transition /all/create_labels/check_continue
|
|
|
+ _all_create_labels_check_continue_0 = Transition(self, self.states["/all/create_labels/check_continue"], [self.states["/all/waiting"]])
|
|
|
+ _all_create_labels_check_continue_0.setTrigger(None)
|
|
|
+ _all_create_labels_check_continue_0.setGuard(self._all_create_labels_check_continue_0_guard)
|
|
|
+ self.states["/all/create_labels/check_continue"].addTransition(_all_create_labels_check_continue_0)
|
|
|
+ _all_create_labels_check_continue_1 = Transition(self, self.states["/all/create_labels/check_continue"], [self.states["/all/create_labels/add_label"]])
|
|
|
+ _all_create_labels_check_continue_1.setTrigger(None)
|
|
|
+ _all_create_labels_check_continue_1.setGuard(self._all_create_labels_check_continue_1_guard)
|
|
|
+ self.states["/all/create_labels/check_continue"].addTransition(_all_create_labels_check_continue_1)
|
|
|
+
|
|
|
+ # transition /all/waiting
|
|
|
+ _all_waiting_0 = Transition(self, self.states["/all/waiting"], [self.states["/all/waiting"]])
|
|
|
+ _all_waiting_0.setAction(self._all_waiting_0_exec)
|
|
|
+ _all_waiting_0.setTrigger(Event("label_pressed", None))
|
|
|
+ _all_waiting_0.setGuard(self._all_waiting_0_guard)
|
|
|
+ self.states["/all/waiting"].addTransition(_all_waiting_0)
|
|
|
+ _all_waiting_1 = Transition(self, self.states["/all/waiting"], [self.states["/all/waiting"]])
|
|
|
+ _all_waiting_1.setAction(self._all_waiting_1_exec)
|
|
|
+ _all_waiting_1.setTrigger(Event("label_pressed", None))
|
|
|
+ _all_waiting_1.setGuard(self._all_waiting_1_guard)
|
|
|
+ self.states["/all/waiting"].addTransition(_all_waiting_1)
|
|
|
+ _all_waiting_2 = Transition(self, self.states["/all/waiting"], [self.states["/all/delete_labels"]])
|
|
|
+ _all_waiting_2.setTrigger(Event("label_pressed", None))
|
|
|
+ _all_waiting_2.setGuard(self._all_waiting_2_guard)
|
|
|
+ self.states["/all/waiting"].addTransition(_all_waiting_2)
|
|
|
+ _all_waiting_3 = Transition(self, self.states["/all/waiting"], [self.states["/all/delete_labels"]])
|
|
|
+ _all_waiting_3.setTrigger(Event("button_pressed", None))
|
|
|
+ _all_waiting_3.setGuard(self._all_waiting_3_guard)
|
|
|
+ self.states["/all/waiting"].addTransition(_all_waiting_3)
|
|
|
+
|
|
|
+ # transition /all/delete_labels
|
|
|
+ _all_delete_labels_0 = Transition(self, self.states["/all/delete_labels"], [self.states["/all/delete_labels"]])
|
|
|
+ _all_delete_labels_0.setAction(self._all_delete_labels_0_exec)
|
|
|
+ _all_delete_labels_0.setTrigger(None)
|
|
|
+ _all_delete_labels_0.setGuard(self._all_delete_labels_0_guard)
|
|
|
+ self.states["/all/delete_labels"].addTransition(_all_delete_labels_0)
|
|
|
+ _all_delete_labels_1 = Transition(self, self.states["/all/delete_labels"], [self.states["/all/send_results"]])
|
|
|
+ _all_delete_labels_1.setTrigger(None)
|
|
|
+ _all_delete_labels_1.setGuard(self._all_delete_labels_1_guard)
|
|
|
+ self.states["/all/delete_labels"].addTransition(_all_delete_labels_1)
|
|
|
+
|
|
|
+ # transition /all/send_results
|
|
|
+ _all_send_results_0 = Transition(self, self.states["/all/send_results"], [self.states["/all/closing"]])
|
|
|
+ _all_send_results_0.setAction(self._all_send_results_0_exec)
|
|
|
+ _all_send_results_0.setTrigger(None)
|
|
|
+ self.states["/all/send_results"].addTransition(_all_send_results_0)
|
|
|
+
|
|
|
+ # transition /all/closing
|
|
|
+ _all_closing_0 = Transition(self, self.states["/all/closing"], [self.states["/all/closing"]])
|
|
|
+ _all_closing_0.setTrigger(Event("instance_deleted", None))
|
|
|
+ _all_closing_0.setGuard(self._all_closing_0_guard)
|
|
|
+ self.states["/all/closing"].addTransition(_all_closing_0)
|
|
|
+ _all_closing_1 = Transition(self, self.states["/all/closing"], [self.states["/all/close"]])
|
|
|
+ _all_closing_1.setTrigger(Event("instance_deleted", None))
|
|
|
+ _all_closing_1.setGuard(self._all_closing_1_guard)
|
|
|
+ self.states["/all/closing"].addTransition(_all_closing_1)
|
|
|
+
|
|
|
+ # transition /all
|
|
|
+ _all_0 = Transition(self, self.states["/all"], [self.states["/all/closing"]])
|
|
|
+ _all_0.setAction(self._all_0_exec)
|
|
|
+ _all_0.setTrigger(Event("window-close", None))
|
|
|
+ _all_0.setGuard(self._all_0_guard)
|
|
|
+ self.states["/all"].addTransition(_all_0)
|
|
|
+
|
|
|
+ def _all_init_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("create_instance", None, [self, 'buttons', 'Button', {'parent': self.button_frame, 'visual': TextVisual('OK'), 'tooltip_text': 'Commit decision', 'event_parameters': 'OK'}]))
|
|
|
+
|
|
|
+ def _all_create_labels_add_label_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("create_instance", None, [self, 'labels', 'Label', {'parent': self.browser_frame, 'text': self.labels_to_add[0]}]))
|
|
|
+
|
|
|
+ def _all_closing_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("delete_instance", None, [self, self.to_close.pop(0)]))
|
|
|
+
|
|
|
+ def _all_close_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("close_window", None, [])]))
|
|
|
+
|
|
|
+ def _all_0_exec(self, parameters):
|
|
|
+ ID = parameters[0]
|
|
|
+ self.to_close = self.labels.values() + [self.button_ok]
|
|
|
+
|
|
|
+ def _all_0_guard(self, parameters):
|
|
|
+ ID = parameters[0]
|
|
|
+ return ID == id(self)
|
|
|
+
|
|
|
+ def _all_init_0_exec(self, parameters):
|
|
|
+ association_name = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("start_instance", None, [self, association_name]))
|
|
|
+ self.button_ok = association_name
|
|
|
+
|
|
|
+ def _all_wait_for_packing_OK_0_exec(self, parameters):
|
|
|
+ tk_elem = parameters[0]
|
|
|
+ tk_elem.pack(anchor=tk.W, fill=tk.BOTH, expand=tk.TRUE)
|
|
|
+
|
|
|
+ def _all_create_labels_query_0_exec(self, parameters):
|
|
|
+ self.labels_to_add = sorted(self.options)
|
|
|
+ self.all_results = sorted(self.options)
|
|
|
+
|
|
|
+ def _all_create_labels_add_label_0_exec(self, parameters):
|
|
|
+ association_name = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("start_instance", None, [self, association_name]))
|
|
|
+ self.labels[self.labels_to_add.pop(0)] = association_name
|
|
|
+
|
|
|
+ def _all_create_labels_pack_label_0_exec(self, parameters):
|
|
|
+ tk_elem = parameters[0]
|
|
|
+ tk_elem.pack()
|
|
|
+
|
|
|
+ def _all_create_labels_check_continue_0_guard(self, parameters):
|
|
|
+ return len(self.labels_to_add) == 0
|
|
|
+
|
|
|
+ def _all_create_labels_check_continue_1_guard(self, parameters):
|
|
|
+ return len(self.labels_to_add) > 0
|
|
|
+
|
|
|
+ def _all_waiting_0_exec(self, parameters):
|
|
|
+ text = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.labels[text], Event("highlight", None, [])]))
|
|
|
+ self.selected_label = text
|
|
|
+
|
|
|
+ def _all_waiting_0_guard(self, parameters):
|
|
|
+ text = parameters[0]
|
|
|
+ return self.selected_label is None
|
|
|
+
|
|
|
+ def _all_waiting_1_exec(self, parameters):
|
|
|
+ text = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.labels[self.selected_label], Event("unhighlight", None, [])]))
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.labels[text], Event("highlight", None, [])]))
|
|
|
+ self.selected_label = text
|
|
|
+
|
|
|
+ def _all_waiting_1_guard(self, parameters):
|
|
|
+ text = parameters[0]
|
|
|
+ return self.selected_label is not None and self.selected_label != text
|
|
|
+
|
|
|
+ def _all_waiting_2_guard(self, parameters):
|
|
|
+ text = parameters[0]
|
|
|
+ return self.selected_label is not None and self.selected_label == text
|
|
|
+
|
|
|
+ def _all_waiting_3_guard(self, parameters):
|
|
|
+ event_name = parameters[0]
|
|
|
+ return event_name == 'OK' and self.selected_label is not None
|
|
|
+
|
|
|
+ def _all_delete_labels_0_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("delete_instance", None, [self, self.labels.popitem()[1]]))
|
|
|
+
|
|
|
+ def _all_delete_labels_0_guard(self, parameters):
|
|
|
+ return len(self.labels) > 0
|
|
|
+
|
|
|
+ def _all_delete_labels_1_guard(self, parameters):
|
|
|
+ return len(self.labels) == 0
|
|
|
+
|
|
|
+ def _all_send_results_0_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("choice_result", None, [self.selected_label])]))
|
|
|
+ self.to_close = self.labels.values() + [self.button_ok]
|
|
|
+
|
|
|
+ def _all_closing_0_guard(self, parameters):
|
|
|
+ return len(self.to_close) > 0
|
|
|
+
|
|
|
+ def _all_closing_1_guard(self, parameters):
|
|
|
+ return len(self.to_close) == 0
|
|
|
+
|
|
|
+ def initializeStatechart(self):
|
|
|
+ # enter default state
|
|
|
+ self.default_targets = self.states["/all"].getEffectiveTargetStates()
|
|
|
+ RuntimeClassBase.initializeStatechart(self)
|
|
|
+
|
|
|
class Toolbar(RuntimeClassBase, tk.Frame, SCCDWidget):
|
|
|
def __init__(self, controller, parent):
|
|
|
RuntimeClassBase.__init__(self, controller)
|
|
@@ -7147,6 +7450,7 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
self.to_move = {}
|
|
|
|
|
|
self.elems = []
|
|
|
+ self.tmp_line = None
|
|
|
|
|
|
self.currently_selected = None
|
|
|
self.loading = [tk.PhotoImage(file="icons/loading.gif", format="gif -index %i" % i) for i in range(8)]
|
|
@@ -7181,7 +7485,6 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
# state /ready/process_events/creating_line
|
|
|
self.states["/ready/process_events/creating_line"] = State(5, "/ready/process_events/creating_line", self)
|
|
|
self.states["/ready/process_events/creating_line"].setEnter(self._ready_process_events_creating_line_enter)
|
|
|
- self.states["/ready/process_events/creating_line"].setExit(self._ready_process_events_creating_line_exit)
|
|
|
|
|
|
# state /ready/process_events/creating_line/drawing
|
|
|
self.states["/ready/process_events/creating_line/drawing"] = State(6, "/ready/process_events/creating_line/drawing", self)
|
|
@@ -7264,28 +7567,29 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
# transition /ready/process_events/ready
|
|
|
_ready_process_events_ready_0 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/ready"]])
|
|
|
_ready_process_events_ready_0.setAction(self._ready_process_events_ready_0_exec)
|
|
|
- _ready_process_events_ready_0.setTrigger(Event("clear_canvas", None))
|
|
|
+ _ready_process_events_ready_0.setTrigger(Event("select_for_creation", None))
|
|
|
self.states["/ready/process_events/ready"].addTransition(_ready_process_events_ready_0)
|
|
|
- _ready_process_events_ready_1 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/ready"]])
|
|
|
+ _ready_process_events_ready_1 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/creating_element"]])
|
|
|
_ready_process_events_ready_1.setAction(self._ready_process_events_ready_1_exec)
|
|
|
- _ready_process_events_ready_1.setTrigger(Event("select_for_creation", None))
|
|
|
+ _ready_process_events_ready_1.setTrigger(Event("right-click", None))
|
|
|
+ _ready_process_events_ready_1.setGuard(self._ready_process_events_ready_1_guard)
|
|
|
self.states["/ready/process_events/ready"].addTransition(_ready_process_events_ready_1)
|
|
|
- _ready_process_events_ready_2 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/creating_element"]])
|
|
|
+ _ready_process_events_ready_2 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/creating_line"]])
|
|
|
_ready_process_events_ready_2.setAction(self._ready_process_events_ready_2_exec)
|
|
|
- _ready_process_events_ready_2.setTrigger(Event("right-click", None))
|
|
|
- _ready_process_events_ready_2.setGuard(self._ready_process_events_ready_2_guard)
|
|
|
+ _ready_process_events_ready_2.setTrigger(Event("create_line", None))
|
|
|
self.states["/ready/process_events/ready"].addTransition(_ready_process_events_ready_2)
|
|
|
- _ready_process_events_ready_3 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/creating_line"]])
|
|
|
+ _ready_process_events_ready_3 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/creating_group"]])
|
|
|
_ready_process_events_ready_3.setAction(self._ready_process_events_ready_3_exec)
|
|
|
- _ready_process_events_ready_3.setTrigger(Event("create_line", None))
|
|
|
+ _ready_process_events_ready_3.setTrigger(Event("define_group", None))
|
|
|
self.states["/ready/process_events/ready"].addTransition(_ready_process_events_ready_3)
|
|
|
- _ready_process_events_ready_4 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/creating_group"]])
|
|
|
+ _ready_process_events_ready_4 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/ready"]])
|
|
|
_ready_process_events_ready_4.setAction(self._ready_process_events_ready_4_exec)
|
|
|
- _ready_process_events_ready_4.setTrigger(Event("define_group", None))
|
|
|
+ _ready_process_events_ready_4.setTrigger(Event("define_contains", None))
|
|
|
self.states["/ready/process_events/ready"].addTransition(_ready_process_events_ready_4)
|
|
|
_ready_process_events_ready_5 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/ready"]])
|
|
|
_ready_process_events_ready_5.setAction(self._ready_process_events_ready_5_exec)
|
|
|
- _ready_process_events_ready_5.setTrigger(Event("define_contains", None))
|
|
|
+ _ready_process_events_ready_5.setTrigger(Event("draw_canvas", None))
|
|
|
+ _ready_process_events_ready_5.setGuard(self._ready_process_events_ready_5_guard)
|
|
|
self.states["/ready/process_events/ready"].addTransition(_ready_process_events_ready_5)
|
|
|
_ready_process_events_ready_6 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/ready"]])
|
|
|
_ready_process_events_ready_6.setAction(self._ready_process_events_ready_6_exec)
|
|
@@ -7294,17 +7598,12 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
self.states["/ready/process_events/ready"].addTransition(_ready_process_events_ready_6)
|
|
|
_ready_process_events_ready_7 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/ready"]])
|
|
|
_ready_process_events_ready_7.setAction(self._ready_process_events_ready_7_exec)
|
|
|
- _ready_process_events_ready_7.setTrigger(Event("draw_canvas", None))
|
|
|
- _ready_process_events_ready_7.setGuard(self._ready_process_events_ready_7_guard)
|
|
|
+ _ready_process_events_ready_7.setTrigger(Event("instance_created", None))
|
|
|
self.states["/ready/process_events/ready"].addTransition(_ready_process_events_ready_7)
|
|
|
_ready_process_events_ready_8 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/ready"]])
|
|
|
_ready_process_events_ready_8.setAction(self._ready_process_events_ready_8_exec)
|
|
|
- _ready_process_events_ready_8.setTrigger(Event("instance_created", None))
|
|
|
+ _ready_process_events_ready_8.setTrigger(Event("moved_group", None))
|
|
|
self.states["/ready/process_events/ready"].addTransition(_ready_process_events_ready_8)
|
|
|
- _ready_process_events_ready_9 = Transition(self, self.states["/ready/process_events/ready"], [self.states["/ready/process_events/ready"]])
|
|
|
- _ready_process_events_ready_9.setAction(self._ready_process_events_ready_9_exec)
|
|
|
- _ready_process_events_ready_9.setTrigger(Event("moved_group", None))
|
|
|
- self.states["/ready/process_events/ready"].addTransition(_ready_process_events_ready_9)
|
|
|
|
|
|
# transition /ready/process_events/creating_line/drawing
|
|
|
_ready_process_events_creating_line_drawing_0 = Transition(self, self.states["/ready/process_events/creating_line/drawing"], [self.states["/ready/process_events/creating_line/drawing"]])
|
|
@@ -7312,6 +7611,7 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
_ready_process_events_creating_line_drawing_0.setTrigger(Event("motion", None))
|
|
|
self.states["/ready/process_events/creating_line/drawing"].addTransition(_ready_process_events_creating_line_drawing_0)
|
|
|
_ready_process_events_creating_line_drawing_1 = Transition(self, self.states["/ready/process_events/creating_line/drawing"], [self.states["/ready/process_events/ready"]])
|
|
|
+ _ready_process_events_creating_line_drawing_1.setAction(self._ready_process_events_creating_line_drawing_1_exec)
|
|
|
_ready_process_events_creating_line_drawing_1.setTrigger(Event("right-click", None))
|
|
|
_ready_process_events_creating_line_drawing_1.setGuard(self._ready_process_events_creating_line_drawing_1_guard)
|
|
|
self.states["/ready/process_events/creating_line/drawing"].addTransition(_ready_process_events_creating_line_drawing_1)
|
|
@@ -7353,16 +7653,19 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
_ready_process_events_creating_line_create_in_mv_wait_for_response_0.setTrigger(Event("choice_result", None))
|
|
|
self.states["/ready/process_events/creating_line/create_in_mv/wait_for_response"].addTransition(_ready_process_events_creating_line_create_in_mv_wait_for_response_0)
|
|
|
_ready_process_events_creating_line_create_in_mv_wait_for_response_1 = Transition(self, self.states["/ready/process_events/creating_line/create_in_mv/wait_for_response"], [self.states["/ready/process_events/creating_line/create_in_mv/create"]])
|
|
|
- _ready_process_events_creating_line_create_in_mv_wait_for_response_1.setTrigger(Event("window_close", None))
|
|
|
+ _ready_process_events_creating_line_create_in_mv_wait_for_response_1.setAction(self._ready_process_events_creating_line_create_in_mv_wait_for_response_1_exec)
|
|
|
+ _ready_process_events_creating_line_create_in_mv_wait_for_response_1.setTrigger(Event("close_window", None))
|
|
|
_ready_process_events_creating_line_create_in_mv_wait_for_response_1.setGuard(self._ready_process_events_creating_line_create_in_mv_wait_for_response_1_guard)
|
|
|
self.states["/ready/process_events/creating_line/create_in_mv/wait_for_response"].addTransition(_ready_process_events_creating_line_create_in_mv_wait_for_response_1)
|
|
|
_ready_process_events_creating_line_create_in_mv_wait_for_response_2 = Transition(self, self.states["/ready/process_events/creating_line/create_in_mv/wait_for_response"], [self.states["/ready/process_events/ready"]])
|
|
|
- _ready_process_events_creating_line_create_in_mv_wait_for_response_2.setTrigger(Event("window_close", None))
|
|
|
+ _ready_process_events_creating_line_create_in_mv_wait_for_response_2.setAction(self._ready_process_events_creating_line_create_in_mv_wait_for_response_2_exec)
|
|
|
+ _ready_process_events_creating_line_create_in_mv_wait_for_response_2.setTrigger(Event("close_window", None))
|
|
|
_ready_process_events_creating_line_create_in_mv_wait_for_response_2.setGuard(self._ready_process_events_creating_line_create_in_mv_wait_for_response_2_guard)
|
|
|
self.states["/ready/process_events/creating_line/create_in_mv/wait_for_response"].addTransition(_ready_process_events_creating_line_create_in_mv_wait_for_response_2)
|
|
|
|
|
|
# transition /ready/process_events/creating_line/create_in_mv/create
|
|
|
- _ready_process_events_creating_line_create_in_mv_create_0 = Transition(self, self.states["/ready/process_events/creating_line/create_in_mv/create"], [self.states["/ready/process_events/ready"]])
|
|
|
+ _ready_process_events_creating_line_create_in_mv_create_0 = Transition(self, self.states["/ready/process_events/creating_line/create_in_mv/create"], [self.states["/ready/process_events/waiting_for_clear"]])
|
|
|
+ _ready_process_events_creating_line_create_in_mv_create_0.setAction(self._ready_process_events_creating_line_create_in_mv_create_0_exec)
|
|
|
_ready_process_events_creating_line_create_in_mv_create_0.setTrigger(Event("mv_response", None))
|
|
|
self.states["/ready/process_events/creating_line/create_in_mv/create"].addTransition(_ready_process_events_creating_line_create_in_mv_create_0)
|
|
|
|
|
@@ -7388,24 +7691,21 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
_ready_process_events_creating_element_0.setTrigger(Event("mv_response", None))
|
|
|
self.states["/ready/process_events/creating_element"].addTransition(_ready_process_events_creating_element_0)
|
|
|
|
|
|
- # transition /ready/process_events/waiting_for_clear
|
|
|
- _ready_process_events_waiting_for_clear_0 = Transition(self, self.states["/ready/process_events/waiting_for_clear"], [self.states["/ready/process_events/ready"]])
|
|
|
- _ready_process_events_waiting_for_clear_0.setAction(self._ready_process_events_waiting_for_clear_0_exec)
|
|
|
- _ready_process_events_waiting_for_clear_0.setTrigger(Event("clear_canvas", None))
|
|
|
- self.states["/ready/process_events/waiting_for_clear"].addTransition(_ready_process_events_waiting_for_clear_0)
|
|
|
-
|
|
|
# transition /ready/update_loading/updating
|
|
|
_ready_update_loading_updating_0 = Transition(self, self.states["/ready/update_loading/updating"], [self.states["/ready/update_loading/updating"]])
|
|
|
_ready_update_loading_updating_0.setAction(self._ready_update_loading_updating_0_exec)
|
|
|
_ready_update_loading_updating_0.setTrigger(Event("_0after"))
|
|
|
self.states["/ready/update_loading/updating"].addTransition(_ready_update_loading_updating_0)
|
|
|
+
|
|
|
+ # transition /ready/process_events
|
|
|
+ _ready_process_events_0 = Transition(self, self.states["/ready/process_events"], [self.states["/ready/process_events/ready"]])
|
|
|
+ _ready_process_events_0.setAction(self._ready_process_events_0_exec)
|
|
|
+ _ready_process_events_0.setTrigger(Event("clear_canvas", None))
|
|
|
+ self.states["/ready/process_events"].addTransition(_ready_process_events_0)
|
|
|
|
|
|
def _ready_process_events_creating_line_enter(self):
|
|
|
self.tmp_line = self.create_line(self.creating_line[2][0], self.creating_line[2][1], self.last_x, self.last_y)
|
|
|
|
|
|
- def _ready_process_events_creating_line_exit(self):
|
|
|
- self.delete(self.tmp_line)
|
|
|
-
|
|
|
def _ready_process_events_creating_line_create_in_mv_query_type_enter(self):
|
|
|
self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['connections_between', [current_model, self.creating_line[1], self.creating_line[3]]])]))
|
|
|
|
|
@@ -7413,10 +7713,10 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
print("Got allowed types: " + str(self.allowed_types))
|
|
|
|
|
|
def _ready_process_events_creating_line_create_in_mv_request_user_enter(self):
|
|
|
- self.big_step.outputEventOM(Event("create_instance", None, [self, 'prompt', 'ChoicePrompt', self.allowed_types]))
|
|
|
+ self.big_step.outputEventOM(Event("create_instance", None, [self, 'prompt', 'ChoicePrompt', 'Pick desired link type:', self.allowed_types]))
|
|
|
|
|
|
def _ready_process_events_creating_line_create_in_mv_create_enter(self):
|
|
|
- self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['instantiate', [current_model, self.assoc_type, '', (self.creating_line[1], self.creating_line[3])]])]))
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['instantiate', [current_model, self.assoc_type, (self.creating_line[1], self.creating_line[3]), '']])]))
|
|
|
|
|
|
def _ready_process_events_creating_element_enter(self):
|
|
|
self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['instantiate', [current_model, self.currently_selected, None, '']])]))
|
|
@@ -7428,67 +7728,70 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
def _ready_update_loading_updating_exit(self):
|
|
|
self.removeTimer(0)
|
|
|
|
|
|
- def _main_0_exec(self, parameters):
|
|
|
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("tk_widget", None, [self])]))
|
|
|
-
|
|
|
- def _ready_process_events_ready_0_exec(self, parameters):
|
|
|
+ def _ready_process_events_0_exec(self, parameters):
|
|
|
self.big_step.outputEventOM(Event("delete_instance", None, [self, 'elements']))
|
|
|
self.big_step.outputEventOM(Event("delete_instance", None, [self, 'connecting_lines']))
|
|
|
for f in self.elems:
|
|
|
self.delete(f[1])
|
|
|
+ if self.tmp_line is not None:
|
|
|
+ self.delete(self.tmp_line)
|
|
|
+ self.tmp_line = None
|
|
|
self.elems = []
|
|
|
self.group_location = {}
|
|
|
self.layers = []
|
|
|
|
|
|
- def _ready_process_events_ready_1_exec(self, parameters):
|
|
|
+ def _main_0_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("tk_widget", None, [self])]))
|
|
|
+
|
|
|
+ def _ready_process_events_ready_0_exec(self, parameters):
|
|
|
element_name = parameters[0]
|
|
|
self.currently_selected = element_name
|
|
|
|
|
|
- def _ready_process_events_ready_2_exec(self, parameters):
|
|
|
+ def _ready_process_events_ready_1_exec(self, parameters):
|
|
|
ID = parameters[0]
|
|
|
self.create_location = (self.last_x, self.last_y)
|
|
|
|
|
|
- def _ready_process_events_ready_2_guard(self, parameters):
|
|
|
+ def _ready_process_events_ready_1_guard(self, parameters):
|
|
|
ID = parameters[0]
|
|
|
return self.currently_selected is not None and id(self) == ID
|
|
|
|
|
|
- def _ready_process_events_ready_3_exec(self, parameters):
|
|
|
+ def _ready_process_events_ready_2_exec(self, parameters):
|
|
|
cs_element = parameters[0]
|
|
|
as_element = parameters[1]
|
|
|
coordinates = parameters[2]
|
|
|
self.creating_line = (cs_element, as_element, coordinates)
|
|
|
|
|
|
- def _ready_process_events_ready_4_exec(self, parameters):
|
|
|
+ def _ready_process_events_ready_3_exec(self, parameters):
|
|
|
element = parameters[0]
|
|
|
self.creating_id = element["id"]
|
|
|
self.group_location[element['id']] = (element['x'], element['y'])
|
|
|
self.big_step.outputEventOM(Event("create_instance", None, [self, 'elements', 'CanvasElement', self, (element['x'], element['y']), element['id'], element['__asid']]))
|
|
|
|
|
|
- def _ready_process_events_ready_5_exec(self, parameters):
|
|
|
+ def _ready_process_events_ready_4_exec(self, parameters):
|
|
|
element = parameters[0]
|
|
|
self.element_group[element["__target"]] = element["__source"]
|
|
|
|
|
|
- def _ready_process_events_ready_6_exec(self, parameters):
|
|
|
+ def _ready_process_events_ready_5_exec(self, parameters):
|
|
|
element = parameters[0]
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.assoc_links[self.element_group[element['id']]], Event("draw_element", None, [element])]))
|
|
|
|
|
|
- def _ready_process_events_ready_6_guard(self, parameters):
|
|
|
+ def _ready_process_events_ready_5_guard(self, parameters):
|
|
|
element = parameters[0]
|
|
|
return element['type'] != 'ConnectingLine'
|
|
|
|
|
|
- def _ready_process_events_ready_7_exec(self, parameters):
|
|
|
+ def _ready_process_events_ready_6_exec(self, parameters):
|
|
|
element = parameters[0]
|
|
|
self.big_step.outputEventOM(Event("create_instance", None, [self, 'connecting_lines', 'ConnectingLine', self, element]))
|
|
|
|
|
|
- def _ready_process_events_ready_7_guard(self, parameters):
|
|
|
+ def _ready_process_events_ready_6_guard(self, parameters):
|
|
|
element = parameters[0]
|
|
|
return element['type'] == 'ConnectingLine'
|
|
|
|
|
|
- def _ready_process_events_ready_8_exec(self, parameters):
|
|
|
+ def _ready_process_events_ready_7_exec(self, parameters):
|
|
|
result = parameters[0]
|
|
|
self.big_step.outputEventOM(Event("start_instance", None, [self, result]))
|
|
|
|
|
|
- def _ready_process_events_ready_9_exec(self, parameters):
|
|
|
+ def _ready_process_events_ready_8_exec(self, parameters):
|
|
|
group_element = parameters[0]
|
|
|
new_location = parameters[1]
|
|
|
self.group_location[group_element] = new_location
|
|
@@ -7510,6 +7813,11 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
|
|
|
self.coords(self.tmp_line, x, y, self.last_x, self.last_y)
|
|
|
|
|
|
+ def _ready_process_events_creating_line_drawing_1_exec(self, parameters):
|
|
|
+ ID = parameters[0]
|
|
|
+ self.delete(self.tmp_line)
|
|
|
+ self.tmp_line = None
|
|
|
+
|
|
|
def _ready_process_events_creating_line_drawing_1_guard(self, parameters):
|
|
|
ID = parameters[0]
|
|
|
return ID == id(self)
|
|
@@ -7545,12 +7853,24 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
result = parameters[0]
|
|
|
self.assoc_type = result
|
|
|
|
|
|
+ def _ready_process_events_creating_line_create_in_mv_wait_for_response_1_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("delete_instance", None, [self, 'prompt']))
|
|
|
+
|
|
|
def _ready_process_events_creating_line_create_in_mv_wait_for_response_1_guard(self, parameters):
|
|
|
return self.assoc_type is not None
|
|
|
|
|
|
+ def _ready_process_events_creating_line_create_in_mv_wait_for_response_2_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("delete_instance", None, [self, 'prompt']))
|
|
|
+ self.delete(self.tmp_line)
|
|
|
+ self.tmp_line = None
|
|
|
+
|
|
|
def _ready_process_events_creating_line_create_in_mv_wait_for_response_2_guard(self, parameters):
|
|
|
return self.assoc_type is None
|
|
|
|
|
|
+ def _ready_process_events_creating_line_create_in_mv_create_0_exec(self, parameters):
|
|
|
+ ID = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("rerender_model", None, [])]))
|
|
|
+
|
|
|
def _ready_process_events_creating_group_0_exec(self, parameters):
|
|
|
assoc_name = parameters[0]
|
|
|
self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
|
|
@@ -7570,14 +7890,6 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
|
|
|
self.to_move[ID] = self.create_location
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("rerender_model", None, [])]))
|
|
|
|
|
|
- def _ready_process_events_waiting_for_clear_0_exec(self, parameters):
|
|
|
- self.big_step.outputEventOM(Event("delete_instance", None, [self, 'elements']))
|
|
|
- self.big_step.outputEventOM(Event("delete_instance", None, [self, 'connecting_lines']))
|
|
|
- for f in self.elems:
|
|
|
- self.delete(f[1])
|
|
|
- self.group_location = {}
|
|
|
- self.layers = []
|
|
|
-
|
|
|
def _ready_update_loading_updating_0_exec(self, parameters):
|
|
|
for i in self.elems:
|
|
|
self.itemconfigure(i[1], image=self.loading[i[0]])
|
|
@@ -8318,6 +8630,12 @@ class ObjectManager(ObjectManagerBase):
|
|
|
instance.associations = {}
|
|
|
instance.associations["buttons"] = Association("Button", 0, -1)
|
|
|
instance.associations["parent"] = Association("A", 0, -1)
|
|
|
+ elif class_name == "ChoicePrompt":
|
|
|
+ instance = ChoicePrompt(self.controller, construct_params[0], construct_params[1])
|
|
|
+ instance.associations = {}
|
|
|
+ instance.associations["buttons"] = Association("Button", 0, -1)
|
|
|
+ instance.associations["labels"] = Association("Label", 0, -1)
|
|
|
+ instance.associations["parent"] = Association("A", 0, -1)
|
|
|
elif class_name == "Toolbar":
|
|
|
instance = Toolbar(self.controller, construct_params[0])
|
|
|
instance.associations = {}
|