|
|
@@ -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: Thu Oct 12 14:24:42 2017
|
|
|
+Date: Thu Oct 12 16:26:49 2017
|
|
|
|
|
|
Model author: Yentl Van Tendeloo
|
|
|
Model name: Modelverse Visual Editor - Tkinter Version
|
|
|
@@ -3841,6 +3841,612 @@ class HTTPClient(RuntimeClassBase):
|
|
|
self.default_targets = self.states["/init"].getEffectiveTargetStates()
|
|
|
RuntimeClassBase.initializeStatechart(self)
|
|
|
|
|
|
+class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
+ def __init__(self, controller, as_element, allowed_types):
|
|
|
+ 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
|
|
|
+ AttributeEditor.user_defined_constructor(self, as_element, allowed_types)
|
|
|
+
|
|
|
+ def user_defined_constructor(self, as_element, allowed_types):
|
|
|
+ tk.Toplevel.__init__(self)
|
|
|
+ SCCDWidget.__init__(self)
|
|
|
+ self.as_element = element
|
|
|
+ self.allowed_types = allowed_types
|
|
|
+
|
|
|
+ self.attrs = None
|
|
|
+ self.associations_name = {}
|
|
|
+ self.associations_type = {}
|
|
|
+ self.associations_optional = {}
|
|
|
+ self.associations_delete = {}
|
|
|
+ self.dirty = None
|
|
|
+
|
|
|
+ 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)
|
|
|
+
|
|
|
+
|
|
|
+ # user defined method
|
|
|
+ def get_unique_attr_name(self):
|
|
|
+ i = 0
|
|
|
+ while 1:
|
|
|
+ attr_name = "attr%i" % i
|
|
|
+ if attr_name not in self.associations_name:
|
|
|
+ return attr_name
|
|
|
+ else:
|
|
|
+ i += 1
|
|
|
+
|
|
|
+
|
|
|
+ # 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)
|
|
|
+
|
|
|
+ # state /all/init/get_defined_attrs
|
|
|
+ self.states["/all/init/get_defined_attrs"] = State(3, "/all/init/get_defined_attrs", self)
|
|
|
+ self.states["/all/init/get_defined_attrs"].setEnter(self._all_init_get_defined_attrs_enter)
|
|
|
+
|
|
|
+ # state /all/init/create_entries
|
|
|
+ self.states["/all/init/create_entries"] = State(4, "/all/init/create_entries", self)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/check_list
|
|
|
+ self.states["/all/init/create_entries/check_list"] = State(5, "/all/init/create_entries/check_list", self)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry
|
|
|
+ self.states["/all/init/create_entries/create_entry"] = State(6, "/all/init/create_entries/create_entry", self)
|
|
|
+ self.states["/all/init/create_entries/create_entry"].setEnter(self._all_init_create_entries_create_entry_enter)
|
|
|
+ self.states["/all/init/create_entries/create_entry"].setExit(self._all_init_create_entries_create_entry_exit)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/name_entry
|
|
|
+ self.states["/all/init/create_entries/create_entry/name_entry"] = State(7, "/all/init/create_entries/create_entry/name_entry", self)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/name_entry/create
|
|
|
+ self.states["/all/init/create_entries/create_entry/name_entry/create"] = State(8, "/all/init/create_entries/create_entry/name_entry/create", self)
|
|
|
+ self.states["/all/init/create_entries/create_entry/name_entry/create"].setEnter(self._all_init_create_entries_create_entry_name_entry_create_enter)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/name_entry/pack
|
|
|
+ self.states["/all/init/create_entries/create_entry/name_entry/pack"] = State(9, "/all/init/create_entries/create_entry/name_entry/pack", self)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/type_dropdown
|
|
|
+ self.states["/all/init/create_entries/create_entry/type_dropdown"] = State(10, "/all/init/create_entries/create_entry/type_dropdown", self)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/type_dropdown/create
|
|
|
+ self.states["/all/init/create_entries/create_entry/type_dropdown/create"] = State(11, "/all/init/create_entries/create_entry/type_dropdown/create", self)
|
|
|
+ self.states["/all/init/create_entries/create_entry/type_dropdown/create"].setEnter(self._all_init_create_entries_create_entry_type_dropdown_create_enter)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/type_dropdown/pack
|
|
|
+ self.states["/all/init/create_entries/create_entry/type_dropdown/pack"] = State(12, "/all/init/create_entries/create_entry/type_dropdown/pack", self)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/optional_button
|
|
|
+ self.states["/all/init/create_entries/create_entry/optional_button"] = State(13, "/all/init/create_entries/create_entry/optional_button", self)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/optional_button/create
|
|
|
+ self.states["/all/init/create_entries/create_entry/optional_button/create"] = State(14, "/all/init/create_entries/create_entry/optional_button/create", self)
|
|
|
+ self.states["/all/init/create_entries/create_entry/optional_button/create"].setEnter(self._all_init_create_entries_create_entry_optional_button_create_enter)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/optional_button/pack
|
|
|
+ self.states["/all/init/create_entries/create_entry/optional_button/pack"] = State(15, "/all/init/create_entries/create_entry/optional_button/pack", self)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/delete_button
|
|
|
+ self.states["/all/init/create_entries/create_entry/delete_button"] = State(16, "/all/init/create_entries/create_entry/delete_button", self)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/delete_button/create
|
|
|
+ self.states["/all/init/create_entries/create_entry/delete_button/create"] = State(17, "/all/init/create_entries/create_entry/delete_button/create", self)
|
|
|
+ self.states["/all/init/create_entries/create_entry/delete_button/create"].setEnter(self._all_init_create_entries_create_entry_delete_button_create_enter)
|
|
|
+
|
|
|
+ # state /all/init/create_entries/create_entry/delete_button/pack
|
|
|
+ self.states["/all/init/create_entries/create_entry/delete_button/pack"] = State(18, "/all/init/create_entries/create_entry/delete_button/pack", self)
|
|
|
+
|
|
|
+ # state /all/init/add_new_attribute
|
|
|
+ self.states["/all/init/add_new_attribute"] = State(19, "/all/init/add_new_attribute", self)
|
|
|
+
|
|
|
+ # state /all/init/add_new_attribute/create
|
|
|
+ self.states["/all/init/add_new_attribute/create"] = State(20, "/all/init/add_new_attribute/create", self)
|
|
|
+ self.states["/all/init/add_new_attribute/create"].setEnter(self._all_init_add_new_attribute_create_enter)
|
|
|
+
|
|
|
+ # state /all/init/add_new_attribute/pack
|
|
|
+ self.states["/all/init/add_new_attribute/pack"] = State(21, "/all/init/add_new_attribute/pack", self)
|
|
|
+
|
|
|
+ # state /all/running
|
|
|
+ self.states["/all/running"] = State(22, "/all/running", self)
|
|
|
+
|
|
|
+ # state /all/change_type
|
|
|
+ self.states["/all/change_type"] = State(23, "/all/change_type", self)
|
|
|
+ self.states["/all/change_type"].setEnter(self._all_change_type_enter)
|
|
|
+
|
|
|
+ # state /all/change_name
|
|
|
+ self.states["/all/change_name"] = State(24, "/all/change_name", self)
|
|
|
+ self.states["/all/change_name"].setEnter(self._all_change_name_enter)
|
|
|
+
|
|
|
+ # state /all/change_name/waiting
|
|
|
+ self.states["/all/change_name/waiting"] = State(25, "/all/change_name/waiting", self)
|
|
|
+ self.states["/all/change_name/waiting"].setEnter(self._all_change_name_waiting_enter)
|
|
|
+ self.states["/all/change_name/waiting"].setExit(self._all_change_name_waiting_exit)
|
|
|
+
|
|
|
+ # state /all/change_name/commit
|
|
|
+ self.states["/all/change_name/commit"] = State(26, "/all/change_name/commit", self)
|
|
|
+ self.states["/all/change_name/commit"].setEnter(self._all_change_name_commit_enter)
|
|
|
+
|
|
|
+ # state /all/create_new_entry
|
|
|
+ self.states["/all/create_new_entry"] = State(27, "/all/create_new_entry", self)
|
|
|
+ self.states["/all/create_new_entry"].setEnter(self._all_create_new_entry_enter)
|
|
|
+
|
|
|
+ # state /all/make_optional
|
|
|
+ self.states["/all/make_optional"] = State(28, "/all/make_optional", self)
|
|
|
+ self.states["/all/make_optional"].setEnter(self._all_make_optional_enter)
|
|
|
+
|
|
|
+ # state /all/make_mandatory
|
|
|
+ self.states["/all/make_mandatory"] = State(29, "/all/make_mandatory", self)
|
|
|
+ self.states["/all/make_mandatory"].setEnter(self._all_make_mandatory_enter)
|
|
|
+
|
|
|
+ # state /all/delete_entry
|
|
|
+ self.states["/all/delete_entry"] = State(30, "/all/delete_entry", self)
|
|
|
+ self.states["/all/delete_entry"].setEnter(self._all_delete_entry_enter)
|
|
|
+
|
|
|
+ # state /all/closing
|
|
|
+ self.states["/all/closing"] = State(31, "/all/closing", self)
|
|
|
+ self.states["/all/closing"].setEnter(self._all_closing_enter)
|
|
|
+
|
|
|
+ # state /all/close
|
|
|
+ self.states["/all/close"] = State(32, "/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/running"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/change_type"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/change_name"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/create_new_entry"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/make_optional"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/make_mandatory"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/delete_entry"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/closing"])
|
|
|
+ self.states["/all"].addChild(self.states["/all/close"])
|
|
|
+ self.states["/all/init"].addChild(self.states["/all/init/get_defined_attrs"])
|
|
|
+ self.states["/all/init"].addChild(self.states["/all/init/create_entries"])
|
|
|
+ self.states["/all/init"].addChild(self.states["/all/init/add_new_attribute"])
|
|
|
+ self.states["/all/init/create_entries"].addChild(self.states["/all/init/create_entries/check_list"])
|
|
|
+ self.states["/all/init/create_entries"].addChild(self.states["/all/init/create_entries/create_entry"])
|
|
|
+ self.states["/all/init/create_entries/create_entry"].addChild(self.states["/all/init/create_entries/create_entry/name_entry"])
|
|
|
+ self.states["/all/init/create_entries/create_entry"].addChild(self.states["/all/init/create_entries/create_entry/type_dropdown"])
|
|
|
+ self.states["/all/init/create_entries/create_entry"].addChild(self.states["/all/init/create_entries/create_entry/optional_button"])
|
|
|
+ self.states["/all/init/create_entries/create_entry"].addChild(self.states["/all/init/create_entries/create_entry/delete_button"])
|
|
|
+ self.states["/all/init/create_entries/create_entry/name_entry"].addChild(self.states["/all/init/create_entries/create_entry/name_entry/create"])
|
|
|
+ self.states["/all/init/create_entries/create_entry/name_entry"].addChild(self.states["/all/init/create_entries/create_entry/name_entry/pack"])
|
|
|
+ self.states["/all/init/create_entries/create_entry/type_dropdown"].addChild(self.states["/all/init/create_entries/create_entry/type_dropdown/create"])
|
|
|
+ self.states["/all/init/create_entries/create_entry/type_dropdown"].addChild(self.states["/all/init/create_entries/create_entry/type_dropdown/pack"])
|
|
|
+ self.states["/all/init/create_entries/create_entry/optional_button"].addChild(self.states["/all/init/create_entries/create_entry/optional_button/create"])
|
|
|
+ self.states["/all/init/create_entries/create_entry/optional_button"].addChild(self.states["/all/init/create_entries/create_entry/optional_button/pack"])
|
|
|
+ self.states["/all/init/create_entries/create_entry/delete_button"].addChild(self.states["/all/init/create_entries/create_entry/delete_button/create"])
|
|
|
+ self.states["/all/init/create_entries/create_entry/delete_button"].addChild(self.states["/all/init/create_entries/create_entry/delete_button/pack"])
|
|
|
+ self.states["/all/init/add_new_attribute"].addChild(self.states["/all/init/add_new_attribute/create"])
|
|
|
+ self.states["/all/init/add_new_attribute"].addChild(self.states["/all/init/add_new_attribute/pack"])
|
|
|
+ self.states["/all/change_name"].addChild(self.states["/all/change_name/waiting"])
|
|
|
+ self.states["/all/change_name"].addChild(self.states["/all/change_name/commit"])
|
|
|
+ self.states[""].fixTree()
|
|
|
+ self.states[""].default_state = self.states["/all"]
|
|
|
+ self.states["/all"].default_state = self.states["/all/init"]
|
|
|
+ self.states["/all/init"].default_state = self.states["/all/init/get_defined_attrs"]
|
|
|
+ self.states["/all/init/create_entries"].default_state = self.states["/all/init/create_entries/check_list"]
|
|
|
+ self.states["/all/init/create_entries/create_entry"].default_state = self.states["/all/init/create_entries/create_entry/name_entry"]
|
|
|
+ self.states["/all/init/create_entries/create_entry/name_entry"].default_state = self.states["/all/init/create_entries/create_entry/name_entry/create"]
|
|
|
+ self.states["/all/init/create_entries/create_entry/type_dropdown"].default_state = self.states["/all/init/create_entries/create_entry/type_dropdown/create"]
|
|
|
+ self.states["/all/init/create_entries/create_entry/optional_button"].default_state = self.states["/all/init/create_entries/create_entry/optional_button/create"]
|
|
|
+ self.states["/all/init/create_entries/create_entry/delete_button"].default_state = self.states["/all/init/create_entries/create_entry/delete_button/create"]
|
|
|
+ self.states["/all/init/add_new_attribute"].default_state = self.states["/all/init/add_new_attribute/create"]
|
|
|
+ self.states["/all/change_name"].default_state = self.states["/all/change_name/waiting"]
|
|
|
+
|
|
|
+ # transition /all/init/get_defined_attrs
|
|
|
+ _all_init_get_defined_attrs_0 = Transition(self, self.states["/all/init/get_defined_attrs"], [self.states["/all/init/create_entries"]])
|
|
|
+ _all_init_get_defined_attrs_0.setAction(self._all_init_get_defined_attrs_0_exec)
|
|
|
+ _all_init_get_defined_attrs_0.setTrigger(Event("mv_response", None))
|
|
|
+ self.states["/all/init/get_defined_attrs"].addTransition(_all_init_get_defined_attrs_0)
|
|
|
+
|
|
|
+ # transition /all/init/create_entries/check_list
|
|
|
+ _all_init_create_entries_check_list_0 = Transition(self, self.states["/all/init/create_entries/check_list"], [self.states["/all/init/create_entries/create_entry"]])
|
|
|
+ _all_init_create_entries_check_list_0.setTrigger(None)
|
|
|
+ _all_init_create_entries_check_list_0.setGuard(self._all_init_create_entries_check_list_0_guard)
|
|
|
+ self.states["/all/init/create_entries/check_list"].addTransition(_all_init_create_entries_check_list_0)
|
|
|
+ _all_init_create_entries_check_list_1 = Transition(self, self.states["/all/init/create_entries/check_list"], [self.states["/all/init/add_new_attribute"]])
|
|
|
+ _all_init_create_entries_check_list_1.setTrigger(None)
|
|
|
+ _all_init_create_entries_check_list_1.setGuard(self._all_init_create_entries_check_list_1_guard)
|
|
|
+ self.states["/all/init/create_entries/check_list"].addTransition(_all_init_create_entries_check_list_1)
|
|
|
+
|
|
|
+ # transition /all/init/create_entries/create_entry/name_entry/create
|
|
|
+ _all_init_create_entries_create_entry_name_entry_create_0 = Transition(self, self.states["/all/init/create_entries/create_entry/name_entry/create"], [self.states["/all/init/create_entries/create_entry/name_entry/pack"]])
|
|
|
+ _all_init_create_entries_create_entry_name_entry_create_0.setAction(self._all_init_create_entries_create_entry_name_entry_create_0_exec)
|
|
|
+ _all_init_create_entries_create_entry_name_entry_create_0.setTrigger(Event("instance_created", None))
|
|
|
+ self.states["/all/init/create_entries/create_entry/name_entry/create"].addTransition(_all_init_create_entries_create_entry_name_entry_create_0)
|
|
|
+
|
|
|
+ # transition /all/init/create_entries/create_entry/name_entry/pack
|
|
|
+ _all_init_create_entries_create_entry_name_entry_pack_0 = Transition(self, self.states["/all/init/create_entries/create_entry/name_entry/pack"], [self.states["/all/init/create_entries/create_entry/type_dropdown"]])
|
|
|
+ _all_init_create_entries_create_entry_name_entry_pack_0.setAction(self._all_init_create_entries_create_entry_name_entry_pack_0_exec)
|
|
|
+ _all_init_create_entries_create_entry_name_entry_pack_0.setTrigger(Event("tk_widget", None))
|
|
|
+ self.states["/all/init/create_entries/create_entry/name_entry/pack"].addTransition(_all_init_create_entries_create_entry_name_entry_pack_0)
|
|
|
+
|
|
|
+ # transition /all/init/create_entries/create_entry/type_dropdown/create
|
|
|
+ _all_init_create_entries_create_entry_type_dropdown_create_0 = Transition(self, self.states["/all/init/create_entries/create_entry/type_dropdown/create"], [self.states["/all/init/create_entries/create_entry/type_dropdown/pack"]])
|
|
|
+ _all_init_create_entries_create_entry_type_dropdown_create_0.setAction(self._all_init_create_entries_create_entry_type_dropdown_create_0_exec)
|
|
|
+ _all_init_create_entries_create_entry_type_dropdown_create_0.setTrigger(Event("instance_created", None))
|
|
|
+ self.states["/all/init/create_entries/create_entry/type_dropdown/create"].addTransition(_all_init_create_entries_create_entry_type_dropdown_create_0)
|
|
|
+
|
|
|
+ # transition /all/init/create_entries/create_entry/type_dropdown/pack
|
|
|
+ _all_init_create_entries_create_entry_type_dropdown_pack_0 = Transition(self, self.states["/all/init/create_entries/create_entry/type_dropdown/pack"], [self.states["/all/init/create_entries/create_entry/optional_button"]])
|
|
|
+ _all_init_create_entries_create_entry_type_dropdown_pack_0.setAction(self._all_init_create_entries_create_entry_type_dropdown_pack_0_exec)
|
|
|
+ _all_init_create_entries_create_entry_type_dropdown_pack_0.setTrigger(Event("tk_widget", None))
|
|
|
+ self.states["/all/init/create_entries/create_entry/type_dropdown/pack"].addTransition(_all_init_create_entries_create_entry_type_dropdown_pack_0)
|
|
|
+
|
|
|
+ # transition /all/init/create_entries/create_entry/optional_button/create
|
|
|
+ _all_init_create_entries_create_entry_optional_button_create_0 = Transition(self, self.states["/all/init/create_entries/create_entry/optional_button/create"], [self.states["/all/init/create_entries/create_entry/optional_button/pack"]])
|
|
|
+ _all_init_create_entries_create_entry_optional_button_create_0.setAction(self._all_init_create_entries_create_entry_optional_button_create_0_exec)
|
|
|
+ _all_init_create_entries_create_entry_optional_button_create_0.setTrigger(Event("instance_created", None))
|
|
|
+ self.states["/all/init/create_entries/create_entry/optional_button/create"].addTransition(_all_init_create_entries_create_entry_optional_button_create_0)
|
|
|
+
|
|
|
+ # transition /all/init/create_entries/create_entry/optional_button/pack
|
|
|
+ _all_init_create_entries_create_entry_optional_button_pack_0 = Transition(self, self.states["/all/init/create_entries/create_entry/optional_button/pack"], [self.states["/all/init/create_entries/create_entry/delete_button"]])
|
|
|
+ _all_init_create_entries_create_entry_optional_button_pack_0.setAction(self._all_init_create_entries_create_entry_optional_button_pack_0_exec)
|
|
|
+ _all_init_create_entries_create_entry_optional_button_pack_0.setTrigger(Event("tk_widget", None))
|
|
|
+ self.states["/all/init/create_entries/create_entry/optional_button/pack"].addTransition(_all_init_create_entries_create_entry_optional_button_pack_0)
|
|
|
+
|
|
|
+ # transition /all/init/create_entries/create_entry/delete_button/create
|
|
|
+ _all_init_create_entries_create_entry_delete_button_create_0 = Transition(self, self.states["/all/init/create_entries/create_entry/delete_button/create"], [self.states["/all/init/create_entries/create_entry/delete_button/pack"]])
|
|
|
+ _all_init_create_entries_create_entry_delete_button_create_0.setAction(self._all_init_create_entries_create_entry_delete_button_create_0_exec)
|
|
|
+ _all_init_create_entries_create_entry_delete_button_create_0.setTrigger(Event("instance_created", None))
|
|
|
+ self.states["/all/init/create_entries/create_entry/delete_button/create"].addTransition(_all_init_create_entries_create_entry_delete_button_create_0)
|
|
|
+
|
|
|
+ # transition /all/init/create_entries/create_entry/delete_button/pack
|
|
|
+ _all_init_create_entries_create_entry_delete_button_pack_0 = Transition(self, self.states["/all/init/create_entries/create_entry/delete_button/pack"], [self.states["/all/init/create_entries/check_list"]])
|
|
|
+ _all_init_create_entries_create_entry_delete_button_pack_0.setAction(self._all_init_create_entries_create_entry_delete_button_pack_0_exec)
|
|
|
+ _all_init_create_entries_create_entry_delete_button_pack_0.setTrigger(Event("tk_widget", None))
|
|
|
+ self.states["/all/init/create_entries/create_entry/delete_button/pack"].addTransition(_all_init_create_entries_create_entry_delete_button_pack_0)
|
|
|
+
|
|
|
+ # transition /all/init/add_new_attribute/create
|
|
|
+ _all_init_add_new_attribute_create_0 = Transition(self, self.states["/all/init/add_new_attribute/create"], [self.states["/all/init/add_new_attribute/pack"]])
|
|
|
+ _all_init_add_new_attribute_create_0.setAction(self._all_init_add_new_attribute_create_0_exec)
|
|
|
+ _all_init_add_new_attribute_create_0.setTrigger(Event("instance_created", None))
|
|
|
+ self.states["/all/init/add_new_attribute/create"].addTransition(_all_init_add_new_attribute_create_0)
|
|
|
+
|
|
|
+ # transition /all/init/add_new_attribute/pack
|
|
|
+ _all_init_add_new_attribute_pack_0 = Transition(self, self.states["/all/init/add_new_attribute/pack"], [self.states["/all/running"]])
|
|
|
+ _all_init_add_new_attribute_pack_0.setAction(self._all_init_add_new_attribute_pack_0_exec)
|
|
|
+ _all_init_add_new_attribute_pack_0.setTrigger(Event("tk_widget", None))
|
|
|
+ self.states["/all/init/add_new_attribute/pack"].addTransition(_all_init_add_new_attribute_pack_0)
|
|
|
+
|
|
|
+ # transition /all/running
|
|
|
+ _all_running_0 = Transition(self, self.states["/all/running"], [self.states["/all/delete_entry"]])
|
|
|
+ _all_running_0.setAction(self._all_running_0_exec)
|
|
|
+ _all_running_0.setTrigger(Event("button_pressed", None))
|
|
|
+ _all_running_0.setGuard(self._all_running_0_guard)
|
|
|
+ self.states["/all/running"].addTransition(_all_running_0)
|
|
|
+ _all_running_1 = Transition(self, self.states["/all/running"], [self.states["/all/make_optional"]])
|
|
|
+ _all_running_1.setAction(self._all_running_1_exec)
|
|
|
+ _all_running_1.setTrigger(Event("button_pressed", None))
|
|
|
+ _all_running_1.setGuard(self._all_running_1_guard)
|
|
|
+ self.states["/all/running"].addTransition(_all_running_1)
|
|
|
+ _all_running_2 = Transition(self, self.states["/all/running"], [self.states["/all/make_mandatory"]])
|
|
|
+ _all_running_2.setAction(self._all_running_2_exec)
|
|
|
+ _all_running_2.setTrigger(Event("button_pressed", None))
|
|
|
+ _all_running_2.setGuard(self._all_running_2_guard)
|
|
|
+ self.states["/all/running"].addTransition(_all_running_2)
|
|
|
+ _all_running_3 = Transition(self, self.states["/all/running"], [self.states["/all/create_new_entry"]])
|
|
|
+ _all_running_3.setAction(self._all_running_3_exec)
|
|
|
+ _all_running_3.setTrigger(Event("button_pressed", None))
|
|
|
+ _all_running_3.setGuard(self._all_running_3_guard)
|
|
|
+ self.states["/all/running"].addTransition(_all_running_3)
|
|
|
+ _all_running_4 = Transition(self, self.states["/all/running"], [self.states["/all/change_type"]])
|
|
|
+ _all_running_4.setAction(self._all_running_4_exec)
|
|
|
+ _all_running_4.setTrigger(Event("changed_dropdown", None))
|
|
|
+ self.states["/all/running"].addTransition(_all_running_4)
|
|
|
+ _all_running_5 = Transition(self, self.states["/all/running"], [self.states["/all/change_name"]])
|
|
|
+ _all_running_5.setAction(self._all_running_5_exec)
|
|
|
+ _all_running_5.setTrigger(Event("changed_entry", None))
|
|
|
+ self.states["/all/running"].addTransition(_all_running_5)
|
|
|
+ _all_running_6 = Transition(self, self.states["/all/running"], [self.states["/all/change_name"]])
|
|
|
+ _all_running_6.setAction(self._all_running_6_exec)
|
|
|
+ _all_running_6.setTrigger(None)
|
|
|
+ _all_running_6.setGuard(self._all_running_6_guard)
|
|
|
+ self.states["/all/running"].addTransition(_all_running_6)
|
|
|
+
|
|
|
+ # transition /all/change_type
|
|
|
+ _all_change_type_0 = Transition(self, self.states["/all/change_type"], [self.states["/all/running"]])
|
|
|
+ _all_change_type_0.setTrigger(Event("mv_response", None))
|
|
|
+ self.states["/all/change_type"].addTransition(_all_change_type_0)
|
|
|
+
|
|
|
+ # transition /all/change_name/waiting
|
|
|
+ _all_change_name_waiting_0 = Transition(self, self.states["/all/change_name/waiting"], [self.states["/all/change_name/commit"]])
|
|
|
+ _all_change_name_waiting_0.setTrigger(Event("_0after"))
|
|
|
+ self.states["/all/change_name/waiting"].addTransition(_all_change_name_waiting_0)
|
|
|
+ _all_change_name_waiting_1 = Transition(self, self.states["/all/change_name/waiting"], [self.states["/all/change_name/waiting"]])
|
|
|
+ _all_change_name_waiting_1.setAction(self._all_change_name_waiting_1_exec)
|
|
|
+ _all_change_name_waiting_1.setTrigger(Event("changed_entry", None))
|
|
|
+ self.states["/all/change_name/waiting"].addTransition(_all_change_name_waiting_1)
|
|
|
+
|
|
|
+ # transition /all/change_name/commit
|
|
|
+ _all_change_name_commit_0 = Transition(self, self.states["/all/change_name/commit"], [self.states["/all/change_name/commit"]])
|
|
|
+ _all_change_name_commit_0.setAction(self._all_change_name_commit_0_exec)
|
|
|
+ _all_change_name_commit_0.setTrigger(Event("changed_entry", None))
|
|
|
+ self.states["/all/change_name/commit"].addTransition(_all_change_name_commit_0)
|
|
|
+ _all_change_name_commit_1 = Transition(self, self.states["/all/change_name/commit"], [self.states["/all/running"]])
|
|
|
+ _all_change_name_commit_1.setAction(self._all_change_name_commit_1_exec)
|
|
|
+ _all_change_name_commit_1.setTrigger(Event("mv_response", None))
|
|
|
+ self.states["/all/change_name/commit"].addTransition(_all_change_name_commit_1)
|
|
|
+
|
|
|
+ # transition /all/create_new_entry
|
|
|
+ _all_create_new_entry_0 = Transition(self, self.states["/all/create_new_entry"], [self.states["/all/init/create_entries"]])
|
|
|
+ _all_create_new_entry_0.setTrigger(Event("mv_response", None))
|
|
|
+ self.states["/all/create_new_entry"].addTransition(_all_create_new_entry_0)
|
|
|
+
|
|
|
+ # transition /all/make_optional
|
|
|
+ _all_make_optional_0 = Transition(self, self.states["/all/make_optional"], [self.states["/all/running"]])
|
|
|
+ _all_make_optional_0.setAction(self._all_make_optional_0_exec)
|
|
|
+ _all_make_optional_0.setTrigger(Event("mv_response", None))
|
|
|
+ self.states["/all/make_optional"].addTransition(_all_make_optional_0)
|
|
|
+
|
|
|
+ # transition /all/make_mandatory
|
|
|
+ _all_make_mandatory_0 = Transition(self, self.states["/all/make_mandatory"], [self.states["/all/running"]])
|
|
|
+ _all_make_mandatory_0.setAction(self._all_make_mandatory_0_exec)
|
|
|
+ _all_make_mandatory_0.setTrigger(Event("mv_response", None))
|
|
|
+ self.states["/all/make_mandatory"].addTransition(_all_make_mandatory_0)
|
|
|
+
|
|
|
+ # transition /all/delete_entry
|
|
|
+ _all_delete_entry_0 = Transition(self, self.states["/all/delete_entry"], [self.states["/all/running"]])
|
|
|
+ _all_delete_entry_0.setAction(self._all_delete_entry_0_exec)
|
|
|
+ _all_delete_entry_0.setTrigger(Event("mv_response", None))
|
|
|
+ self.states["/all/delete_entry"].addTransition(_all_delete_entry_0)
|
|
|
+
|
|
|
+ # transition /all/closing
|
|
|
+ _all_closing_0 = Transition(self, self.states["/all/closing"], [self.states["/all/close"]])
|
|
|
+ _all_closing_0.setTrigger(Event("instance_deleted", None))
|
|
|
+ self.states["/all/closing"].addTransition(_all_closing_0)
|
|
|
+
|
|
|
+ # transition /all
|
|
|
+ _all_0 = Transition(self, self.states["/all"], [self.states["/all/closing"]])
|
|
|
+ _all_0.setTrigger(Event("window-close", None))
|
|
|
+ _all_0.setGuard(self._all_0_guard)
|
|
|
+ self.states["/all"].addTransition(_all_0)
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_enter(self):
|
|
|
+ current_attr = self.attrs_modify.popitem()
|
|
|
+ self.current_attr = {'name': current_attrs[0], 'type': current_attrs[1][0], 'optional': current_attrs[1][1]}
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_exit(self):
|
|
|
+ self.counter += 1
|
|
|
+
|
|
|
+ def _all_change_name_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations_name[self.parameter[0]], Event("mark_uncommitted", None, [])]))
|
|
|
+
|
|
|
+ def _all_init_get_defined_attrs_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['read_defined_attrs', [current_model, self.as_element]])]))
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_name_entry_create_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("create_instance", None, [self, 'names', 'Entry', {'parent': self, 'name': self.current_attr['name'], 'value': self.current_attr['name']}]))
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_type_dropdown_create_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("create_instance", None, [self, 'types', 'DropDown', self, self.current_attr['name'], self.current_attr['type'], self.allowed_types]))
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_optional_button_create_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("create_instance", None, [self, 'optional', 'ToggleButton', {'parent': self, 'on_activate': 'optional_%s' % self.current_attr['name'], 'on_deactivate': 'mandatory_%s' % self.current_attr['name'], 'active': self.current_attr['optional'], 'tooltip_text': 'Optional attribute?', 'visual': TextVisual('optional')}]))
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_delete_button_create_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("create_instance", None, [self, 'delete', 'Button', self, self.current_attr['name']]))
|
|
|
+
|
|
|
+ def _all_init_add_new_attribute_create_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("create_instance", None, [self, 'add_attribute_button', 'Button', self]))
|
|
|
+
|
|
|
+ def _all_change_type_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_type', [current_model, self.as_element, self.parameter[0], self.parameter[1]]])]))
|
|
|
+
|
|
|
+ def _all_change_name_waiting_enter(self):
|
|
|
+ self.addTimer(0, 1.0)
|
|
|
+
|
|
|
+ def _all_change_name_waiting_exit(self):
|
|
|
+ self.removeTimer(0)
|
|
|
+
|
|
|
+ def _all_change_name_commit_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_name', [current_model, self.as_element, self.parameter[0], self.parameter[1]]])]))
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations_name[self.parameter[0]], Event("change_event_name", None, [self.parameter[1]])]))
|
|
|
+
|
|
|
+ def _all_create_new_entry_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_assign', [current_model, self.as_element, self.attr_modify['name'], self.attr_modify['type'], self.attr_modify['optional']]])]))
|
|
|
+
|
|
|
+ def _all_make_optional_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_optional', [current_model, self.as_element, self.parameter]])]))
|
|
|
+
|
|
|
+ def _all_make_mandatory_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_mandatory', [current_model, self.as_element, self.parameter]])]))
|
|
|
+
|
|
|
+ def _all_delete_entry_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_del', [current_model, self.as_element, self.parameter]])]))
|
|
|
+
|
|
|
+ def _all_closing_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("delete_instance", None, [self, self.button]))
|
|
|
+
|
|
|
+ def _all_close_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("close_window", None, [])]))
|
|
|
+
|
|
|
+ def _all_0_guard(self, parameters):
|
|
|
+ ID = parameters[0]
|
|
|
+ return ID == id(self)
|
|
|
+
|
|
|
+ def _all_init_get_defined_attrs_0_exec(self, parameters):
|
|
|
+ result_mandatory = parameters[0]
|
|
|
+ result_optional = parameters[1]
|
|
|
+ result_mandatory = {i: (result_mandatory[i], False) for i in result_mandatory}
|
|
|
+ result_optional = {i: (result_optional[i], False) for i in result_optional}
|
|
|
+ result = {}
|
|
|
+ result.update(result_mandatory)
|
|
|
+ result.update(result_optional)
|
|
|
+
|
|
|
+ self.attrs = result
|
|
|
+ self.attrs_modify = dict(self.attrs)
|
|
|
+ self.counter = 0
|
|
|
+
|
|
|
+ def _all_init_create_entries_check_list_0_guard(self, parameters):
|
|
|
+ return self.attrs_modify
|
|
|
+
|
|
|
+ def _all_init_create_entries_check_list_1_guard(self, parameters):
|
|
|
+ return not self.attrs_modify
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_name_entry_create_0_exec(self, parameters):
|
|
|
+ assoc_name = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
|
|
|
+ self.associations_name[self.current_attr['name']] = assoc_name
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_name_entry_pack_0_exec(self, parameters):
|
|
|
+ tk_widget = parameters[0]
|
|
|
+ tk_widget.grid(row=self.counter, column=0)
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_type_dropdown_create_0_exec(self, parameters):
|
|
|
+ assoc_name = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
|
|
|
+ self.associations_type[self.current_attr['name']] = assoc_name
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_type_dropdown_pack_0_exec(self, parameters):
|
|
|
+ tk_widget = parameters[0]
|
|
|
+ tk_widget.grid(row=self.counter, column=1)
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_optional_button_create_0_exec(self, parameters):
|
|
|
+ assoc_name = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
|
|
|
+ self.associations_optional[self.current_attr['name']] = assoc_name
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_optional_button_pack_0_exec(self, parameters):
|
|
|
+ tk_widget = parameters[0]
|
|
|
+ tk_widget.grid(row=self.counter, column=2)
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_delete_button_create_0_exec(self, parameters):
|
|
|
+ assoc_name = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
|
|
|
+ self.associations_delete[self.current_attr['name']] = assoc_name
|
|
|
+
|
|
|
+ def _all_init_create_entries_create_entry_delete_button_pack_0_exec(self, parameters):
|
|
|
+ tk_widget = parameters[0]
|
|
|
+ tk_widget.grid(row=self.counter, column=3)
|
|
|
+
|
|
|
+ def _all_init_add_new_attribute_create_0_exec(self, parameters):
|
|
|
+ assoc_name = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
|
|
|
+
|
|
|
+ def _all_init_add_new_attribute_pack_0_exec(self, parameters):
|
|
|
+ tk_widget = parameters[0]
|
|
|
+ tk_widget.grid(row=self.counter, column=3)
|
|
|
+
|
|
|
+ def _all_running_0_exec(self, parameters):
|
|
|
+ event_name = parameters[0]
|
|
|
+ self.parameter = event_name.split("delete_", 1)[1]
|
|
|
+
|
|
|
+ def _all_running_0_guard(self, parameters):
|
|
|
+ event_name = parameters[0]
|
|
|
+ return event_name.startswith('delete_')
|
|
|
+
|
|
|
+ def _all_running_1_exec(self, parameters):
|
|
|
+ event_name = parameters[0]
|
|
|
+ self.parameter = event_name.split("optional_", 1)[1]
|
|
|
+
|
|
|
+ def _all_running_1_guard(self, parameters):
|
|
|
+ event_name = parameters[0]
|
|
|
+ return event_name.startswith('optional_')
|
|
|
+
|
|
|
+ def _all_running_2_exec(self, parameters):
|
|
|
+ event_name = parameters[0]
|
|
|
+ self.parameter = event_name.split("mandatory_", 1)[1]
|
|
|
+
|
|
|
+ def _all_running_2_guard(self, parameters):
|
|
|
+ event_name = parameters[0]
|
|
|
+ return event_name.startswith('mandatory_')
|
|
|
+
|
|
|
+ def _all_running_3_exec(self, parameters):
|
|
|
+ event_name = parameters[0]
|
|
|
+ self.attr_modify = [{'name': self.get_unique_attr_name(), 'type': next(iter(self.allowed_types)), 'optional': True}]
|
|
|
+
|
|
|
+ def _all_running_3_guard(self, parameters):
|
|
|
+ event_name = parameters[0]
|
|
|
+ return event_name == 'create'
|
|
|
+
|
|
|
+ def _all_running_4_exec(self, parameters):
|
|
|
+ event_name = parameters[0]
|
|
|
+ new_name = parameters[1]
|
|
|
+ self.parameter = (event_name, new_name)
|
|
|
+
|
|
|
+ def _all_running_5_exec(self, parameters):
|
|
|
+ original_name = parameters[0]
|
|
|
+ new_name = parameters[1]
|
|
|
+ self.parameter = (original_name, new_name)
|
|
|
+
|
|
|
+ def _all_running_6_exec(self, parameters):
|
|
|
+ self.parameter = self.dirty[1:3]
|
|
|
+ self.dirty = None
|
|
|
+
|
|
|
+ def _all_running_6_guard(self, parameters):
|
|
|
+ return self.dirty
|
|
|
+
|
|
|
+ def _all_change_name_waiting_1_exec(self, parameters):
|
|
|
+ original_name = parameters[0]
|
|
|
+ new_name = parameters[1]
|
|
|
+ self.parameter = (original_name, new_name)
|
|
|
+
|
|
|
+ def _all_change_name_commit_0_exec(self, parameters):
|
|
|
+ original_name = parameters[0]
|
|
|
+ new_name = parameters[1]
|
|
|
+ self.dirty = (True, original_name, new_name)
|
|
|
+
|
|
|
+ def _all_change_name_commit_1_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations_type[self.parameter[0]], Event("change_event_name", None, [self.parameter[1]])]))
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations_name[self.parameter[0]], Event("mark_committed", None, [])]))
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations_optional[self.parameter[0]], Event("change_triggers", None, ['optional_%s' % self.parameter[1], 'mandatory_%s' % self.parameter[1]])]))
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations_delete[self.parameter[0]], Event("change_event_name", None, [self.parameter[1]])]))
|
|
|
+ self.associations_name[self.parameter[1]] = self.associations_name[self.parameter[0]]
|
|
|
+ self.associations_type[self.parameter[1]] = self.associations_type[self.parameter[0]]
|
|
|
+ self.associations_optional[self.parameter[1]] = self.associations_optional[self.parameter[0]]
|
|
|
+ self.associations_delete[self.parameter[1]] = self.associations_delete[self.parameter[0]]
|
|
|
+
|
|
|
+ del self.associations_name[self.parameter[0]]
|
|
|
+ del self.associations_type[self.parameter[0]]
|
|
|
+ del self.associations_optional[self.parameter[0]]
|
|
|
+ del self.associations_delete[self.parameter[0]]
|
|
|
+
|
|
|
+ def _all_make_optional_0_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations_optional[self.parameter], Event("activate", None, [])]))
|
|
|
+
|
|
|
+ def _all_make_mandatory_0_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations_optional[self.parameter], Event("deactivate", None, [])]))
|
|
|
+
|
|
|
+ def _all_delete_entry_0_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("delete_instance", None, [self, self.associations_name[self.parameter]]))
|
|
|
+ self.big_step.outputEventOM(Event("delete_instance", None, [self, self.associations_type[self.parameter]]))
|
|
|
+ self.big_step.outputEventOM(Event("delete_instance", None, [self, self.associations_optional[self.parameter]]))
|
|
|
+ self.big_step.outputEventOM(Event("delete_instance", None, [self, self.associations_delete[self.parameter]]))
|
|
|
+ del self.associations_name[self.parameter]
|
|
|
+ del self.associations_type[self.parameter]
|
|
|
+ del self.associations_optional[self.parameter]
|
|
|
+ del self.associations_delete[self.parameter]
|
|
|
+
|
|
|
+ def initializeStatechart(self):
|
|
|
+ # enter default state
|
|
|
+ self.default_targets = self.states["/all"].getEffectiveTargetStates()
|
|
|
+ RuntimeClassBase.initializeStatechart(self)
|
|
|
+
|
|
|
class PromptWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
def __init__(self, controller, entries, options):
|
|
|
RuntimeClassBase.__init__(self, controller)
|
|
|
@@ -7268,6 +7874,117 @@ class ConcreteSyntaxToolbar(Toolbar):
|
|
|
self.default_targets = self.states["/init"].getEffectiveTargetStates()
|
|
|
RuntimeClassBase.initializeStatechart(self)
|
|
|
|
|
|
+class Entry(RuntimeClassBase, tk.Entry, SCCDWidget):
|
|
|
+ def __init__(self, controller, constructor_parameters = None):
|
|
|
+ if constructor_parameters == None: constructor_parameters = {}
|
|
|
+ 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
|
|
|
+ Entry.user_defined_constructor(self, constructor_parameters)
|
|
|
+
|
|
|
+ def user_defined_constructor(self, constructor_parameters = None):
|
|
|
+ if constructor_parameters == None: constructor_parameters = {}
|
|
|
+ tk.Entry.__init__(self, constructor_parameters['parent'])
|
|
|
+ SCCDWidget.__init__(self)
|
|
|
+ self.strvar = tk.StringVar(self)
|
|
|
+ self.strvar.set(constructor_parameters['initial'])
|
|
|
+ self.strvar.trace('w', lambda a, b, c: self.controller.addInput(Event("change_entry", "input", [id(self), self.strvar.get()])))
|
|
|
+ self.name = constructor_parameters['name']
|
|
|
+
|
|
|
+ def user_defined_destructor(self):
|
|
|
+ self.destroy()
|
|
|
+ # call super class destructors
|
|
|
+ if hasattr(tk.Entry, "__del__"):
|
|
|
+ tk.Entry.__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 /main
|
|
|
+ self.states["/main"] = State(1, "/main", self)
|
|
|
+
|
|
|
+ # state /main/initializing
|
|
|
+ self.states["/main/initializing"] = State(2, "/main/initializing", self)
|
|
|
+
|
|
|
+ # state /main/ready
|
|
|
+ self.states["/main/ready"] = State(3, "/main/ready", self)
|
|
|
+
|
|
|
+ # add children
|
|
|
+ self.states[""].addChild(self.states["/main"])
|
|
|
+ self.states["/main"].addChild(self.states["/main/initializing"])
|
|
|
+ self.states["/main"].addChild(self.states["/main/ready"])
|
|
|
+ self.states[""].fixTree()
|
|
|
+ self.states[""].default_state = self.states["/main"]
|
|
|
+ self.states["/main"].default_state = self.states["/main/initializing"]
|
|
|
+
|
|
|
+ # transition /main/initializing
|
|
|
+ _main_initializing_0 = Transition(self, self.states["/main/initializing"], [self.states["/main/ready"]])
|
|
|
+ _main_initializing_0.setAction(self._main_initializing_0_exec)
|
|
|
+ _main_initializing_0.setTrigger(None)
|
|
|
+ self.states["/main/initializing"].addTransition(_main_initializing_0)
|
|
|
+
|
|
|
+ # transition /main/ready
|
|
|
+ _main_ready_0 = Transition(self, self.states["/main/ready"], [self.states["/main/ready"]])
|
|
|
+ _main_ready_0.setAction(self._main_ready_0_exec)
|
|
|
+ _main_ready_0.setTrigger(Event("change_entry", "input"))
|
|
|
+ _main_ready_0.setGuard(self._main_ready_0_guard)
|
|
|
+ self.states["/main/ready"].addTransition(_main_ready_0)
|
|
|
+ _main_ready_1 = Transition(self, self.states["/main/ready"], [self.states["/main/ready"]])
|
|
|
+ _main_ready_1.setAction(self._main_ready_1_exec)
|
|
|
+ _main_ready_1.setTrigger(Event("mark_committed", None))
|
|
|
+ self.states["/main/ready"].addTransition(_main_ready_1)
|
|
|
+ _main_ready_2 = Transition(self, self.states["/main/ready"], [self.states["/main/ready"]])
|
|
|
+ _main_ready_2.setAction(self._main_ready_2_exec)
|
|
|
+ _main_ready_2.setTrigger(Event("mark_uncommitted", None))
|
|
|
+ self.states["/main/ready"].addTransition(_main_ready_2)
|
|
|
+ _main_ready_3 = Transition(self, self.states["/main/ready"], [self.states["/main/ready"]])
|
|
|
+ _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)
|
|
|
+
|
|
|
+ def _main_initializing_0_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("tk_widget", None, [self])]))
|
|
|
+
|
|
|
+ def _main_ready_0_exec(self, parameters):
|
|
|
+ tagorid = parameters[0]
|
|
|
+ new_value = parameters[1]
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("changed_entry", None, [self.name, new_value])]))
|
|
|
+
|
|
|
+ def _main_ready_0_guard(self, parameters):
|
|
|
+ tagorid = parameters[0]
|
|
|
+ new_value = parameters[1]
|
|
|
+ return tagorid == id(self)
|
|
|
+
|
|
|
+ def _main_ready_1_exec(self, parameters):
|
|
|
+ self.configure(bg="lightgreen")
|
|
|
+
|
|
|
+ def _main_ready_2_exec(self, parameters):
|
|
|
+ self.configure(bg="lightorange")
|
|
|
+
|
|
|
+ def _main_ready_3_exec(self, parameters):
|
|
|
+ new_name = parameters[0]
|
|
|
+ self.name = new_name
|
|
|
+
|
|
|
+ def initializeStatechart(self):
|
|
|
+ # enter default state
|
|
|
+ self.default_targets = self.states["/main"].getEffectiveTargetStates()
|
|
|
+ RuntimeClassBase.initializeStatechart(self)
|
|
|
+
|
|
|
class Button(RuntimeClassBase, tk.Button, SCCDWidget):
|
|
|
def __init__(self, controller, constructor_parameters = None):
|
|
|
if constructor_parameters == None: constructor_parameters = {}
|
|
|
@@ -7399,6 +8116,186 @@ class Button(RuntimeClassBase, tk.Button, SCCDWidget):
|
|
|
self.default_targets = self.states["/main"].getEffectiveTargetStates()
|
|
|
RuntimeClassBase.initializeStatechart(self)
|
|
|
|
|
|
+class ToggleButton(RuntimeClassBase, tk.Button, SCCDWidget):
|
|
|
+ def __init__(self, controller, constructor_parameters = None, ):
|
|
|
+ if constructor_parameters == None: constructor_parameters = {}
|
|
|
+ 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
|
|
|
+ ToggleButton.user_defined_constructor(self, constructor_parameters, )
|
|
|
+
|
|
|
+ def user_defined_constructor(self, constructor_parameters = None, ):
|
|
|
+ if constructor_parameters == None: constructor_parameters = {}
|
|
|
+ tk.Button.__init__(self, constructor_parameters['parent'], **(constructor_parameters['visual'].get_params()))
|
|
|
+ SCCDWidget.__init__(self)
|
|
|
+ self.on_activate = constructor_parameters["on_activate"]
|
|
|
+ self.on_deactivate = constructor_parameters["on_deactivate"]
|
|
|
+ if "tooltip_text" in constructor_parameters:
|
|
|
+ self.tooltip = ToolTip(self, constructor_parameters["tooltip_text"])
|
|
|
+ else:
|
|
|
+ self.tooltip = None
|
|
|
+ self.initial_active = self.constructor_parameters["initial_active"]
|
|
|
+
|
|
|
+ def user_defined_destructor(self):
|
|
|
+ self.destroy()
|
|
|
+ # call super class destructors
|
|
|
+ if hasattr(tk.Button, "__del__"):
|
|
|
+ tk.Button.__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 /main
|
|
|
+ self.states["/main"] = State(1, "/main", self)
|
|
|
+
|
|
|
+ # state /main/initializing
|
|
|
+ self.states["/main/initializing"] = State(2, "/main/initializing", self)
|
|
|
+
|
|
|
+ # state /main/ready
|
|
|
+ self.states["/main/ready"] = State(3, "/main/ready", self)
|
|
|
+
|
|
|
+ # state /main/ready/decide
|
|
|
+ self.states["/main/ready/decide"] = State(4, "/main/ready/decide", self)
|
|
|
+
|
|
|
+ # state /main/ready/active
|
|
|
+ self.states["/main/ready/active"] = State(5, "/main/ready/active", self)
|
|
|
+ self.states["/main/ready/active"].setEnter(self._main_ready_active_enter)
|
|
|
+
|
|
|
+ # state /main/ready/inactive
|
|
|
+ self.states["/main/ready/inactive"] = State(6, "/main/ready/inactive", self)
|
|
|
+ self.states["/main/ready/inactive"].setEnter(self._main_ready_inactive_enter)
|
|
|
+
|
|
|
+ # state /main/ready/history
|
|
|
+ self.states["/main/ready/history"] = ShallowHistoryState(7, "/main/ready/history", self)
|
|
|
+
|
|
|
+ # add children
|
|
|
+ self.states[""].addChild(self.states["/main"])
|
|
|
+ self.states["/main"].addChild(self.states["/main/initializing"])
|
|
|
+ self.states["/main"].addChild(self.states["/main/ready"])
|
|
|
+ self.states["/main/ready"].addChild(self.states["/main/ready/decide"])
|
|
|
+ self.states["/main/ready"].addChild(self.states["/main/ready/active"])
|
|
|
+ self.states["/main/ready"].addChild(self.states["/main/ready/inactive"])
|
|
|
+ self.states["/main/ready"].addChild(self.states["/main/ready/history"])
|
|
|
+ self.states[""].fixTree()
|
|
|
+ self.states[""].default_state = self.states["/main"]
|
|
|
+ self.states["/main"].default_state = self.states["/main/initializing"]
|
|
|
+ self.states["/main/ready"].default_state = self.states["/main/ready/decide"]
|
|
|
+
|
|
|
+ # transition /main/initializing
|
|
|
+ _main_initializing_0 = Transition(self, self.states["/main/initializing"], [self.states["/main/ready"]])
|
|
|
+ _main_initializing_0.setAction(self._main_initializing_0_exec)
|
|
|
+ _main_initializing_0.setTrigger(None)
|
|
|
+ self.states["/main/initializing"].addTransition(_main_initializing_0)
|
|
|
+
|
|
|
+ # transition /main/ready/decide
|
|
|
+ _main_ready_decide_0 = Transition(self, self.states["/main/ready/decide"], [self.states["/main/ready/active"]])
|
|
|
+ _main_ready_decide_0.setTrigger(None)
|
|
|
+ _main_ready_decide_0.setGuard(self._main_ready_decide_0_guard)
|
|
|
+ self.states["/main/ready/decide"].addTransition(_main_ready_decide_0)
|
|
|
+ _main_ready_decide_1 = Transition(self, self.states["/main/ready/decide"], [self.states["/main/ready/active"]])
|
|
|
+ _main_ready_decide_1.setTrigger(None)
|
|
|
+ _main_ready_decide_1.setGuard(self._main_ready_decide_1_guard)
|
|
|
+ self.states["/main/ready/decide"].addTransition(_main_ready_decide_1)
|
|
|
+
|
|
|
+ # transition /main/ready/active
|
|
|
+ _main_ready_active_0 = Transition(self, self.states["/main/ready/active"], [self.states["/main/ready/inactive"]])
|
|
|
+ _main_ready_active_0.setAction(self._main_ready_active_0_exec)
|
|
|
+ _main_ready_active_0.setTrigger(Event("left-click", "input"))
|
|
|
+ _main_ready_active_0.setGuard(self._main_ready_active_0_guard)
|
|
|
+ self.states["/main/ready/active"].addTransition(_main_ready_active_0)
|
|
|
+ _main_ready_active_1 = Transition(self, self.states["/main/ready/active"], [self.states["/main/ready/inactive"]])
|
|
|
+ _main_ready_active_1.setTrigger(Event("deactivate", None))
|
|
|
+ self.states["/main/ready/active"].addTransition(_main_ready_active_1)
|
|
|
+
|
|
|
+ # transition /main/ready/inactive
|
|
|
+ _main_ready_inactive_0 = Transition(self, self.states["/main/ready/inactive"], [self.states["/main/ready/active"]])
|
|
|
+ _main_ready_inactive_0.setAction(self._main_ready_inactive_0_exec)
|
|
|
+ _main_ready_inactive_0.setTrigger(Event("left-click", "input"))
|
|
|
+ _main_ready_inactive_0.setGuard(self._main_ready_inactive_0_guard)
|
|
|
+ self.states["/main/ready/inactive"].addTransition(_main_ready_inactive_0)
|
|
|
+ _main_ready_inactive_1 = Transition(self, self.states["/main/ready/inactive"], [self.states["/main/ready/active"]])
|
|
|
+ _main_ready_inactive_1.setTrigger(Event("activate", None))
|
|
|
+ self.states["/main/ready/inactive"].addTransition(_main_ready_inactive_1)
|
|
|
+
|
|
|
+ # transition /main/ready
|
|
|
+ _main_ready_0 = Transition(self, self.states["/main/ready"], [self.states["/main/ready/history"]])
|
|
|
+ _main_ready_0.setAction(self._main_ready_0_exec)
|
|
|
+ _main_ready_0.setTrigger(Event("enter", "input"))
|
|
|
+ _main_ready_0.setGuard(self._main_ready_0_guard)
|
|
|
+ self.states["/main/ready"].addTransition(_main_ready_0)
|
|
|
+ _main_ready_1 = Transition(self, self.states["/main/ready"], [self.states["/main/ready/history"]])
|
|
|
+ _main_ready_1.setAction(self._main_ready_1_exec)
|
|
|
+ _main_ready_1.setTrigger(Event("leave", "input"))
|
|
|
+ _main_ready_1.setGuard(self._main_ready_1_guard)
|
|
|
+ self.states["/main/ready"].addTransition(_main_ready_1)
|
|
|
+
|
|
|
+ def _main_ready_active_enter(self):
|
|
|
+ self.configure(state=tk.ACTIVE, relief=tk.SUNKEN)
|
|
|
+
|
|
|
+ def _main_ready_inactive_enter(self):
|
|
|
+ self.configure(state=tk.NORMAL, relief=tk.RAISED)
|
|
|
+
|
|
|
+ def _main_ready_0_exec(self, parameters):
|
|
|
+ tagorid = parameters[0]
|
|
|
+ self.tooltip.showtip()
|
|
|
+
|
|
|
+ def _main_ready_0_guard(self, parameters):
|
|
|
+ tagorid = parameters[0]
|
|
|
+ return tagorid == id(self) and self.tooltip is not None
|
|
|
+
|
|
|
+ def _main_ready_1_exec(self, parameters):
|
|
|
+ tagorid = parameters[0]
|
|
|
+ self.tooltip.hidetip()
|
|
|
+
|
|
|
+ def _main_ready_1_guard(self, parameters):
|
|
|
+ tagorid = parameters[0]
|
|
|
+ return tagorid == id(self) and self.tooltip is not None
|
|
|
+
|
|
|
+ def _main_initializing_0_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("tk_widget", None, [self])]))
|
|
|
+
|
|
|
+ def _main_ready_decide_0_guard(self, parameters):
|
|
|
+ return self.initial_active
|
|
|
+
|
|
|
+ def _main_ready_decide_1_guard(self, parameters):
|
|
|
+ return not self.initial_active
|
|
|
+
|
|
|
+ def _main_ready_active_0_exec(self, parameters):
|
|
|
+ tagorid = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("button_pressed", None, [self.on_deactivate])]))
|
|
|
+
|
|
|
+ def _main_ready_active_0_guard(self, parameters):
|
|
|
+ tagorid = parameters[0]
|
|
|
+ return tagorid == id(self)
|
|
|
+
|
|
|
+ def _main_ready_inactive_0_exec(self, parameters):
|
|
|
+ tagorid = parameters[0]
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("button_pressed", None, [self.on_activate])]))
|
|
|
+
|
|
|
+ def _main_ready_inactive_0_guard(self, parameters):
|
|
|
+ tagorid = parameters[0]
|
|
|
+ return tagorid == id(self)
|
|
|
+
|
|
|
+ def initializeStatechart(self):
|
|
|
+ # enter default state
|
|
|
+ self.default_targets = self.states["/main"].getEffectiveTargetStates()
|
|
|
+ RuntimeClassBase.initializeStatechart(self)
|
|
|
+
|
|
|
class Label(RuntimeClassBase, tk.Label, SCCDWidget):
|
|
|
def __init__(self, controller, constructor_parameters = None):
|
|
|
if constructor_parameters == None: constructor_parameters = {}
|
|
|
@@ -8941,6 +9838,15 @@ class ObjectManager(ObjectManagerBase):
|
|
|
elif class_name == "HTTPClient":
|
|
|
instance = HTTPClient(self.controller)
|
|
|
instance.associations = {}
|
|
|
+ elif class_name == "AttributeEditor":
|
|
|
+ instance = AttributeEditor(self.controller, construct_params[0], construct_params[1])
|
|
|
+ instance.associations = {}
|
|
|
+ instance.associations["names"] = Association("Entry", 0, -1)
|
|
|
+ instance.associations["types"] = Association("DropDown", 0, -1)
|
|
|
+ instance.associations["optional"] = Association("ToggleButton", 0, -1)
|
|
|
+ instance.associations["delete"] = Association("Button", 0, -1)
|
|
|
+ instance.associations["add_attribute_button"] = Association("Button", 0, -1)
|
|
|
+ instance.associations["parent"] = Association("A", 0, -1)
|
|
|
elif class_name == "PromptWindow":
|
|
|
instance = PromptWindow(self.controller, construct_params[0], construct_params[1])
|
|
|
instance.associations = {}
|
|
|
@@ -9001,10 +9907,18 @@ class ObjectManager(ObjectManagerBase):
|
|
|
instance.associations = {}
|
|
|
instance.associations["buttons"] = Association("Button", 0, -1)
|
|
|
instance.associations["parent"] = Association("A", 0, -1)
|
|
|
+ elif class_name == "Entry":
|
|
|
+ instance = Entry(self.controller, construct_params[0])
|
|
|
+ instance.associations = {}
|
|
|
+ instance.associations["parent"] = Association("A", 0, -1)
|
|
|
elif class_name == "Button":
|
|
|
instance = Button(self.controller, construct_params[0])
|
|
|
instance.associations = {}
|
|
|
instance.associations["parent"] = Association("A", 0, -1)
|
|
|
+ elif class_name == "ToggleButton":
|
|
|
+ instance = ToggleButton(self.controller, construct_params[0], construct_params[1])
|
|
|
+ instance.associations = {}
|
|
|
+ instance.associations["parent"] = Association("A", 0, -1)
|
|
|
elif class_name == "Label":
|
|
|
instance = Label(self.controller, construct_params[0])
|
|
|
instance.associations = {}
|