|
@@ -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: Wed Sep 13 14:34:26 2017
|
|
|
+Date: Wed Sep 13 15:54:04 2017
|
|
|
|
|
|
Model author: Yentl Van Tendeloo and Addis Gebremichael
|
|
|
Model name: Modelverse Visual Editor - Tkinter Version
|
|
@@ -17,6 +17,9 @@ import uuid
|
|
|
import json
|
|
|
import urllib
|
|
|
|
|
|
+global current_model
|
|
|
+global current_metamodel
|
|
|
+
|
|
|
# package "Modelverse Visual Editor - Tkinter Version "
|
|
|
|
|
|
class MainApp(RuntimeClassBase):
|
|
@@ -397,6 +400,7 @@ class MainApp(RuntimeClassBase):
|
|
|
def _parallel_forward_requests_forward_1_exec(self, parameters):
|
|
|
name = parameters[0]
|
|
|
params = parameters[1]
|
|
|
+ print("MV OPERATION " + str(name))
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'modelverse', Event("action", None, [name, None, None, params])]))
|
|
|
|
|
|
def _parallel_forward_requests_forward_2_exec(self, parameters):
|
|
@@ -2143,7 +2147,6 @@ class Modelverse(RuntimeClassBase):
|
|
|
self.big_step.outputEventOM(Event("create_instance", None, [self, 'http_client', 'HTTPClient']))
|
|
|
|
|
|
def _initialized_behaviour_operations_model_list_enter(self):
|
|
|
- print("DOING model_list")
|
|
|
self.raiseInternalEvent(Event("request", None, [['model_list', self.parameters[0]]]))
|
|
|
|
|
|
def _initialized_behaviour_operations_model_add_send_metadata_enter(self):
|
|
@@ -2592,7 +2595,6 @@ class Modelverse(RuntimeClassBase):
|
|
|
return self.expect_response('Use the \'help\' command for a list of possible commands', pop=True)
|
|
|
|
|
|
def _initialized_behaviour_operations_model_list_0_exec(self, parameters):
|
|
|
- print("Got response to model_list")
|
|
|
self.raiseInternalEvent(Event("result", None, [set(self.split_response(self.responses.pop(0)))]))
|
|
|
|
|
|
def _initialized_behaviour_operations_model_list_0_guard(self, parameters):
|
|
@@ -3844,8 +3846,6 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
def user_defined_constructor(self):
|
|
|
tk.Toplevel.__init__(self)
|
|
|
SCCDWidget.__init__(self)
|
|
|
- self.current_model = None
|
|
|
- self.metamodel = None
|
|
|
self.toolbar_frame = tk.Frame(self)
|
|
|
self.canvas_frame = tk.Frame(self)
|
|
|
self.progressbar_frame = tk.Frame(self)
|
|
@@ -3923,55 +3923,59 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
# state /running/open_model/waiting_for_metamodel_name
|
|
|
self.states["/running/open_model/waiting_for_metamodel_name"] = State(16, "/running/open_model/waiting_for_metamodel_name", self)
|
|
|
|
|
|
+ # state /running/open_model/store_metamodel
|
|
|
+ self.states["/running/open_model/store_metamodel"] = State(17, "/running/open_model/store_metamodel", self)
|
|
|
+ self.states["/running/open_model/store_metamodel"].setEnter(self._running_open_model_store_metamodel_enter)
|
|
|
+
|
|
|
# state /running/create_new_model
|
|
|
- self.states["/running/create_new_model"] = State(17, "/running/create_new_model", self)
|
|
|
+ self.states["/running/create_new_model"] = State(18, "/running/create_new_model", self)
|
|
|
|
|
|
# state /running/create_new_model/query_metamodel
|
|
|
- self.states["/running/create_new_model/query_metamodel"] = State(18, "/running/create_new_model/query_metamodel", self)
|
|
|
+ self.states["/running/create_new_model/query_metamodel"] = State(19, "/running/create_new_model/query_metamodel", self)
|
|
|
self.states["/running/create_new_model/query_metamodel"].setEnter(self._running_create_new_model_query_metamodel_enter)
|
|
|
|
|
|
# state /running/create_new_model/wait_for_metamodel
|
|
|
- self.states["/running/create_new_model/wait_for_metamodel"] = State(19, "/running/create_new_model/wait_for_metamodel", self)
|
|
|
+ self.states["/running/create_new_model/wait_for_metamodel"] = State(20, "/running/create_new_model/wait_for_metamodel", self)
|
|
|
|
|
|
# state /running/create_new_model/got_mm
|
|
|
- self.states["/running/create_new_model/got_mm"] = State(20, "/running/create_new_model/got_mm", self)
|
|
|
+ self.states["/running/create_new_model/got_mm"] = State(21, "/running/create_new_model/got_mm", self)
|
|
|
|
|
|
# state /running/create_new_model/prompt_model_name
|
|
|
- self.states["/running/create_new_model/prompt_model_name"] = State(21, "/running/create_new_model/prompt_model_name", self)
|
|
|
+ self.states["/running/create_new_model/prompt_model_name"] = State(22, "/running/create_new_model/prompt_model_name", self)
|
|
|
self.states["/running/create_new_model/prompt_model_name"].setEnter(self._running_create_new_model_prompt_model_name_enter)
|
|
|
|
|
|
# state /running/create_new_model/waiting_for_model_name
|
|
|
- self.states["/running/create_new_model/waiting_for_model_name"] = State(22, "/running/create_new_model/waiting_for_model_name", self)
|
|
|
+ self.states["/running/create_new_model/waiting_for_model_name"] = State(23, "/running/create_new_model/waiting_for_model_name", self)
|
|
|
|
|
|
# state /running/create_new_model/creating_model
|
|
|
- self.states["/running/create_new_model/creating_model"] = State(23, "/running/create_new_model/creating_model", self)
|
|
|
+ self.states["/running/create_new_model/creating_model"] = State(24, "/running/create_new_model/creating_model", self)
|
|
|
self.states["/running/create_new_model/creating_model"].setEnter(self._running_create_new_model_creating_model_enter)
|
|
|
|
|
|
# state /running/rerender_model
|
|
|
- self.states["/running/rerender_model"] = State(24, "/running/rerender_model", self)
|
|
|
+ self.states["/running/rerender_model"] = State(25, "/running/rerender_model", self)
|
|
|
|
|
|
# state /running/rerender_model/request_render
|
|
|
- self.states["/running/rerender_model/request_render"] = State(25, "/running/rerender_model/request_render", self)
|
|
|
+ self.states["/running/rerender_model/request_render"] = State(26, "/running/rerender_model/request_render", self)
|
|
|
self.states["/running/rerender_model/request_render"].setEnter(self._running_rerender_model_request_render_enter)
|
|
|
|
|
|
# state /running/rerender_model/render_model
|
|
|
- self.states["/running/rerender_model/render_model"] = State(26, "/running/rerender_model/render_model", self)
|
|
|
+ self.states["/running/rerender_model/render_model"] = State(27, "/running/rerender_model/render_model", self)
|
|
|
self.states["/running/rerender_model/render_model"].setEnter(self._running_rerender_model_render_model_enter)
|
|
|
|
|
|
# state /running/rerender_model/render_model/allocate_groups
|
|
|
- self.states["/running/rerender_model/render_model/allocate_groups"] = State(27, "/running/rerender_model/render_model/allocate_groups", self)
|
|
|
+ self.states["/running/rerender_model/render_model/allocate_groups"] = State(28, "/running/rerender_model/render_model/allocate_groups", self)
|
|
|
|
|
|
# state /running/rerender_model/render_model/allocating_group
|
|
|
- self.states["/running/rerender_model/render_model/allocating_group"] = State(28, "/running/rerender_model/render_model/allocating_group", self)
|
|
|
+ self.states["/running/rerender_model/render_model/allocating_group"] = State(29, "/running/rerender_model/render_model/allocating_group", self)
|
|
|
|
|
|
# state /running/rerender_model/render_model/allocate_contains
|
|
|
- self.states["/running/rerender_model/render_model/allocate_contains"] = State(29, "/running/rerender_model/render_model/allocate_contains", self)
|
|
|
+ self.states["/running/rerender_model/render_model/allocate_contains"] = State(30, "/running/rerender_model/render_model/allocate_contains", self)
|
|
|
|
|
|
# state /running/rerender_model/render_model/render_elements
|
|
|
- self.states["/running/rerender_model/render_model/render_elements"] = State(30, "/running/rerender_model/render_model/render_elements", self)
|
|
|
+ self.states["/running/rerender_model/render_model/render_elements"] = State(31, "/running/rerender_model/render_model/render_elements", self)
|
|
|
|
|
|
# state /close
|
|
|
- self.states["/close"] = State(31, "/close", self)
|
|
|
+ self.states["/close"] = State(32, "/close", self)
|
|
|
self.states["/close"].setEnter(self._close_enter)
|
|
|
|
|
|
# add children
|
|
@@ -3994,6 +3998,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
self.states["/running/open_model"].addChild(self.states["/running/open_model/search_metamodels"])
|
|
|
self.states["/running/open_model"].addChild(self.states["/running/open_model/prompt_metamodel"])
|
|
|
self.states["/running/open_model"].addChild(self.states["/running/open_model/waiting_for_metamodel_name"])
|
|
|
+ self.states["/running/open_model"].addChild(self.states["/running/open_model/store_metamodel"])
|
|
|
self.states["/running/create_new_model"].addChild(self.states["/running/create_new_model/query_metamodel"])
|
|
|
self.states["/running/create_new_model"].addChild(self.states["/running/create_new_model/wait_for_metamodel"])
|
|
|
self.states["/running/create_new_model"].addChild(self.states["/running/create_new_model/got_mm"])
|
|
@@ -4098,7 +4103,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
_running_open_model_waiting_for_metamodel_name_0.setAction(self._running_open_model_waiting_for_metamodel_name_0_exec)
|
|
|
_running_open_model_waiting_for_metamodel_name_0.setTrigger(Event("prompt_results", None))
|
|
|
self.states["/running/open_model/waiting_for_metamodel_name"].addTransition(_running_open_model_waiting_for_metamodel_name_0)
|
|
|
- _running_open_model_waiting_for_metamodel_name_1 = Transition(self, self.states["/running/open_model/waiting_for_metamodel_name"], [self.states["/running/rerender_model"]])
|
|
|
+ _running_open_model_waiting_for_metamodel_name_1 = Transition(self, self.states["/running/open_model/waiting_for_metamodel_name"], [self.states["/running/open_model/store_metamodel"]])
|
|
|
_running_open_model_waiting_for_metamodel_name_1.setAction(self._running_open_model_waiting_for_metamodel_name_1_exec)
|
|
|
_running_open_model_waiting_for_metamodel_name_1.setTrigger(Event("close_window", None))
|
|
|
_running_open_model_waiting_for_metamodel_name_1.setGuard(self._running_open_model_waiting_for_metamodel_name_1_guard)
|
|
@@ -4109,6 +4114,11 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
_running_open_model_waiting_for_metamodel_name_2.setGuard(self._running_open_model_waiting_for_metamodel_name_2_guard)
|
|
|
self.states["/running/open_model/waiting_for_metamodel_name"].addTransition(_running_open_model_waiting_for_metamodel_name_2)
|
|
|
|
|
|
+ # transition /running/open_model/store_metamodel
|
|
|
+ _running_open_model_store_metamodel_0 = Transition(self, self.states["/running/open_model/store_metamodel"], [self.states["/running/rerender_model"]])
|
|
|
+ _running_open_model_store_metamodel_0.setTrigger(Event("mv_response", None))
|
|
|
+ self.states["/running/open_model/store_metamodel"].addTransition(_running_open_model_store_metamodel_0)
|
|
|
+
|
|
|
# transition /running/create_new_model/query_metamodel
|
|
|
_running_create_new_model_query_metamodel_0 = Transition(self, self.states["/running/create_new_model/query_metamodel"], [self.states["/running/create_new_model/wait_for_metamodel"]])
|
|
|
_running_create_new_model_query_metamodel_0.setAction(self._running_create_new_model_query_metamodel_0_exec)
|
|
@@ -4219,6 +4229,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
self.contains = [i for i in self.rendered if i["type"] == "contains"]
|
|
|
self.rendered = [i for i in self.rendered if i["type"] not in ["Group", "contains"]]
|
|
|
self.rendered.reverse()
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['alter_context', ['rendered/%s%s' % (current_model, 'models/render_SCD'), 'formalisms/MM_render']])]))
|
|
|
|
|
|
def _init_generic_toolbar_enter(self):
|
|
|
self.big_step.outputEventOM(Event("create_instance", None, [self, 'toolbars', 'GenericToolbar', self.toolbar_frame]))
|
|
@@ -4237,13 +4248,17 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [0, 'Browsing for model...'])]))
|
|
|
|
|
|
def _running_open_model_search_metamodels_enter(self):
|
|
|
- self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_types', [self.current_model]])]))
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_types', [current_model]])]))
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [10, 'Querying existing metamodels...'])]))
|
|
|
|
|
|
def _running_open_model_prompt_metamodel_enter(self):
|
|
|
- self.big_step.outputEventOM(Event("create_instance", None, [self, 'subwindow', 'PromptWindow', {'Metamodel name': self.metamodel}, {}]))
|
|
|
+ self.big_step.outputEventOM(Event("create_instance", None, [self, 'subwindow', 'PromptWindow', {'Metamodel name': current_metamodel}, {}]))
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [30, 'Requesting desired metamodel...'])]))
|
|
|
|
|
|
+ def _running_open_model_store_metamodel_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['alter_context', [current_model, current_metamodel]])]))
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [45, 'Storing model context...'])]))
|
|
|
+
|
|
|
def _running_create_new_model_query_metamodel_enter(self):
|
|
|
self.big_step.outputEventOM(Event("create_instance", None, [self, 'subwindow', 'Browser', 'Select metamodel to instantiate', ['formalisms/SimpleClassDiagrams']]))
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [0, 'Browsing for metamodel...'])]))
|
|
@@ -4253,11 +4268,13 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [10, 'Prompt model name...'])]))
|
|
|
|
|
|
def _running_create_new_model_creating_model_enter(self):
|
|
|
- self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_add', [self.current_model, self.metamodel, '']])]))
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_add', [current_model, current_metamodel, '']])]))
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [25, 'Creating empty model...'])]))
|
|
|
|
|
|
def _running_rerender_model_request_render_enter(self):
|
|
|
- self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_render', [self.current_model, 'models/render_SCD']])]))
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_render', [current_model, 'models/render_SCD']])]))
|
|
|
+ global current_rendered_model
|
|
|
+ current_rendered_model = "rendered/%s%s" % (current_model, 'models/render_SCD')
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [50, 'Perceptualizing model...'])]))
|
|
|
|
|
|
def _close_enter(self):
|
|
@@ -4302,7 +4319,8 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
|
|
|
def _running_open_model_wait_for_model_1_exec(self, parameters):
|
|
|
result = parameters[0]
|
|
|
- self.current_model = result
|
|
|
+ global current_model
|
|
|
+ current_model = result
|
|
|
|
|
|
def _running_open_model_got_model_0_exec(self, parameters):
|
|
|
self.big_step.outputEventOM(Event("delete_instance", None, [self, self.subwindow]))
|
|
@@ -4310,10 +4328,11 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
def _running_open_model_search_metamodels_0_exec(self, parameters):
|
|
|
result = parameters[0]
|
|
|
print("Allowable types for this model: " + str(result))
|
|
|
+ global current_metamodel
|
|
|
if len(result) > 0:
|
|
|
- self.metamodel = next(iter(result))
|
|
|
+ current_metamodel = next(iter(result))
|
|
|
else:
|
|
|
- self.metamodel = ''
|
|
|
+ current_metamodel = ''
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [20, 'Querying existing metamodels... OK'])]))
|
|
|
|
|
|
def _running_open_model_prompt_metamodel_0_exec(self, parameters):
|
|
@@ -4323,22 +4342,25 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
|
|
|
def _running_open_model_waiting_for_metamodel_name_0_exec(self, parameters):
|
|
|
results = parameters[0]
|
|
|
- self.metamodel = results["Metamodel name"]
|
|
|
+ global current_metamodel
|
|
|
+ current_metamodel = results["Metamodel name"]
|
|
|
|
|
|
def _running_open_model_waiting_for_metamodel_name_1_exec(self, parameters):
|
|
|
self.big_step.outputEventOM(Event("delete_instance", None, [self, self.subwindow]))
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [40, 'Requesting desired metamodel... OK'])]))
|
|
|
|
|
|
def _running_open_model_waiting_for_metamodel_name_1_guard(self, parameters):
|
|
|
- return self.metamodel != ''
|
|
|
+ return current_metamodel != ''
|
|
|
|
|
|
def _running_open_model_waiting_for_metamodel_name_2_exec(self, parameters):
|
|
|
self.big_step.outputEventOM(Event("delete_instance", None, [self, self.subwindow]))
|
|
|
- self.current_model = None
|
|
|
- self.metamodel = None
|
|
|
+ global current_model
|
|
|
+ global current_metamodel
|
|
|
+ current_model = None
|
|
|
+ current_metamodel = None
|
|
|
|
|
|
def _running_open_model_waiting_for_metamodel_name_2_guard(self, parameters):
|
|
|
- return self.metamodel == ''
|
|
|
+ return current_metamodel == ''
|
|
|
|
|
|
def _running_create_new_model_query_metamodel_0_exec(self, parameters):
|
|
|
association_name = parameters[0]
|
|
@@ -4350,7 +4372,8 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
|
|
|
def _running_create_new_model_wait_for_metamodel_1_exec(self, parameters):
|
|
|
result = parameters[0]
|
|
|
- self.metamodel = result
|
|
|
+ global current_metamodel
|
|
|
+ current_metamodel = result
|
|
|
|
|
|
def _running_create_new_model_got_mm_0_exec(self, parameters):
|
|
|
self.big_step.outputEventOM(Event("delete_instance", None, [self, self.subwindow]))
|
|
@@ -4360,24 +4383,24 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
|
|
|
association_name = parameters[0]
|
|
|
self.big_step.outputEventOM(Event("start_instance", None, [self, association_name]))
|
|
|
self.subwindow = association_name
|
|
|
- self.current_model = ""
|
|
|
+ current_model = ""
|
|
|
|
|
|
def _running_create_new_model_waiting_for_model_name_0_exec(self, parameters):
|
|
|
results = parameters[0]
|
|
|
- self.current_model = results["Model name"]
|
|
|
+ current_model = results["Model name"]
|
|
|
|
|
|
def _running_create_new_model_waiting_for_model_name_1_exec(self, parameters):
|
|
|
self.big_step.outputEventOM(Event("delete_instance", None, [self, self.subwindow]))
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [20, 'Prompt model name... OK'])]))
|
|
|
|
|
|
def _running_create_new_model_waiting_for_model_name_1_guard(self, parameters):
|
|
|
- return self.current_model != ''
|
|
|
+ return current_model != ''
|
|
|
|
|
|
def _running_create_new_model_waiting_for_model_name_2_exec(self, parameters):
|
|
|
self.big_step.outputEventOM(Event("delete_instance", None, [self, self.subwindow]))
|
|
|
|
|
|
def _running_create_new_model_waiting_for_model_name_2_guard(self, parameters):
|
|
|
- return self.current_model == ''
|
|
|
+ return current_model == ''
|
|
|
|
|
|
def _running_create_new_model_creating_model_0_exec(self, parameters):
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [40, 'Creating empty model... OK'])]))
|
|
@@ -5676,7 +5699,8 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
|
|
|
SCCDWidget.__init__(self, True)
|
|
|
self.containing_canvas = parent
|
|
|
self.coordinates = coordinates
|
|
|
- self.elements = []
|
|
|
+ self.elements = {}
|
|
|
+ self.tmp = {}
|
|
|
|
|
|
def user_defined_destructor(self):
|
|
|
# call super class destructors
|
|
@@ -5696,11 +5720,30 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
|
|
|
# state /dragging
|
|
|
self.states["/dragging"] = State(2, "/dragging", self)
|
|
|
|
|
|
+ # state /update_mv
|
|
|
+ self.states["/update_mv"] = State(3, "/update_mv", self)
|
|
|
+
|
|
|
+ # state /update_mv/init
|
|
|
+ self.states["/update_mv/init"] = State(4, "/update_mv/init", self)
|
|
|
+
|
|
|
+ # state /update_mv/x
|
|
|
+ self.states["/update_mv/x"] = State(5, "/update_mv/x", self)
|
|
|
+ self.states["/update_mv/x"].setEnter(self._update_mv_x_enter)
|
|
|
+
|
|
|
+ # state /update_mv/y
|
|
|
+ self.states["/update_mv/y"] = State(6, "/update_mv/y", self)
|
|
|
+ self.states["/update_mv/y"].setEnter(self._update_mv_y_enter)
|
|
|
+
|
|
|
# add children
|
|
|
self.states[""].addChild(self.states["/main"])
|
|
|
self.states[""].addChild(self.states["/dragging"])
|
|
|
+ self.states[""].addChild(self.states["/update_mv"])
|
|
|
+ self.states["/update_mv"].addChild(self.states["/update_mv/init"])
|
|
|
+ self.states["/update_mv"].addChild(self.states["/update_mv/x"])
|
|
|
+ self.states["/update_mv"].addChild(self.states["/update_mv/y"])
|
|
|
self.states[""].fixTree()
|
|
|
self.states[""].default_state = self.states["/main"]
|
|
|
+ self.states["/update_mv"].default_state = self.states["/update_mv/init"]
|
|
|
|
|
|
# transition /main
|
|
|
_main_0 = Transition(self, self.states["/main"], [self.states["/main"]])
|
|
@@ -5719,11 +5762,40 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
|
|
|
_dragging_0.setTrigger(Event("motion", None))
|
|
|
_dragging_0.setGuard(self._dragging_0_guard)
|
|
|
self.states["/dragging"].addTransition(_dragging_0)
|
|
|
- _dragging_1 = Transition(self, self.states["/dragging"], [self.states["/main"]])
|
|
|
+ _dragging_1 = Transition(self, self.states["/dragging"], [self.states["/update_mv"]])
|
|
|
_dragging_1.setAction(self._dragging_1_exec)
|
|
|
_dragging_1.setTrigger(Event("left-release", None))
|
|
|
_dragging_1.setGuard(self._dragging_1_guard)
|
|
|
self.states["/dragging"].addTransition(_dragging_1)
|
|
|
+
|
|
|
+ # transition /update_mv/init
|
|
|
+ _update_mv_init_0 = Transition(self, self.states["/update_mv/init"], [self.states["/update_mv/x"]])
|
|
|
+ _update_mv_init_0.setAction(self._update_mv_init_0_exec)
|
|
|
+ _update_mv_init_0.setTrigger(None)
|
|
|
+ _update_mv_init_0.setGuard(self._update_mv_init_0_guard)
|
|
|
+ self.states["/update_mv/init"].addTransition(_update_mv_init_0)
|
|
|
+ _update_mv_init_1 = Transition(self, self.states["/update_mv/init"], [self.states["/main"]])
|
|
|
+ _update_mv_init_1.setTrigger(None)
|
|
|
+ _update_mv_init_1.setGuard(self._update_mv_init_1_guard)
|
|
|
+ self.states["/update_mv/init"].addTransition(_update_mv_init_1)
|
|
|
+
|
|
|
+ # transition /update_mv/x
|
|
|
+ _update_mv_x_0 = Transition(self, self.states["/update_mv/x"], [self.states["/update_mv/y"]])
|
|
|
+ _update_mv_x_0.setTrigger(Event("mv_response", None))
|
|
|
+ self.states["/update_mv/x"].addTransition(_update_mv_x_0)
|
|
|
+
|
|
|
+ # transition /update_mv/y
|
|
|
+ _update_mv_y_0 = Transition(self, self.states["/update_mv/y"], [self.states["/update_mv/init"]])
|
|
|
+ _update_mv_y_0.setTrigger(Event("mv_response", None))
|
|
|
+ self.states["/update_mv/y"].addTransition(_update_mv_y_0)
|
|
|
+
|
|
|
+ def _update_mv_x_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_assign', [current_rendered_model, self.tmp['mv_id'], 'x', self.tmp['x']]])]))
|
|
|
+ print("Update X")
|
|
|
+
|
|
|
+ def _update_mv_y_enter(self):
|
|
|
+ self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_assign', [current_rendered_model, self.tmp['mv_id'], 'y', self.tmp['y']]])]))
|
|
|
+ print("Update Y")
|
|
|
|
|
|
def _main_0_exec(self, parameters):
|
|
|
element = parameters[0]
|
|
@@ -5740,14 +5812,12 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
|
|
|
result = None
|
|
|
|
|
|
if result is not None:
|
|
|
- self.elements.append(result)
|
|
|
+ self.elements[result] = element["id"]
|
|
|
self.set_bindable_and_tagorid(self.containing_canvas, result)
|
|
|
|
|
|
def _main_1_exec(self, parameters):
|
|
|
ID = parameters[0]
|
|
|
- print("LEFT CLICK on canvas element at " + str(self.coordinates))
|
|
|
self.original_coords = self.last_x, self.last_y
|
|
|
- print("Store click location: " + str(self.original_coords))
|
|
|
|
|
|
def _main_1_guard(self, parameters):
|
|
|
ID = parameters[0]
|
|
@@ -5773,14 +5843,23 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
|
|
|
|
|
|
def _dragging_1_exec(self, parameters):
|
|
|
ID = parameters[0]
|
|
|
- print("Release at %s, so move coordinates" % str((self.last_x, self.last_y)))
|
|
|
self.coordinates = self.coordinates[0] - (self.original_coords[0] - self.last_x), self.coordinates[1] - (self.original_coords[1] - self.last_y)
|
|
|
- print("New coordinates of element: %s" % str(self.coordinates))
|
|
|
+ self.to_update = dict(self.elements)
|
|
|
|
|
|
def _dragging_1_guard(self, parameters):
|
|
|
ID = parameters[0]
|
|
|
return id(self) == ID
|
|
|
|
|
|
+ def _update_mv_init_0_exec(self, parameters):
|
|
|
+ tk_id, self.tmp["mv_id"] = self.to_update.popitem()
|
|
|
+ self.tmp['x'], self.tmp['y'] = self.containing_canvas.coords(tk_id)[:2]
|
|
|
+
|
|
|
+ def _update_mv_init_0_guard(self, parameters):
|
|
|
+ return len(self.to_update) > 0
|
|
|
+
|
|
|
+ def _update_mv_init_1_guard(self, parameters):
|
|
|
+ return len(self.to_update) == 0
|
|
|
+
|
|
|
def initializeStatechart(self):
|
|
|
# enter default state
|
|
|
self.default_targets = self.states["/main"].getEffectiveTargetStates()
|