create_activity.xml 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867
  1. <class name="ActivityCreator">
  2. <relationships>
  3. <inheritance class="tk.Toplevel" priority="1"/>
  4. <inheritance class="SCCDWidget" priority="0"/>
  5. <association name="static" class="A"/>
  6. <association name="input_tag" class="A"/>
  7. <association name="input_delete" class="A"/>
  8. <association name="input_MM_browse" class="A"/>
  9. <association name="input_MM_entry" class="A"/>
  10. <association name="browser" class="Browser"/>
  11. <association name="parent" class="A"/>
  12. </relationships>
  13. <constructor>
  14. <super class="tk.TopLevel"/>
  15. <super class="SCCDWidget"/>
  16. <body>
  17. self.activity_frame = tk.Frame(self)
  18. self.input_frame = tk.Frame(self)
  19. self.output_frame = tk.Frame(self)
  20. self.create_frame = tk.Frame(self)
  21. self.activity_frame.pack()
  22. tk.Label(self, text="Inputs").pack()
  23. self.input_frame.pack()
  24. tk.Label(self, text="Outputs").pack()
  25. self.output_frame.pack()
  26. self.create_frame.pack()
  27. self.create_input_signature = {}
  28. self.create_output_signature = {}
  29. self.activity_name = ""
  30. self.activity_type = "ModelTransformation"
  31. </body>
  32. </constructor>
  33. <destructor>
  34. <body>
  35. self.destroy()
  36. </body>
  37. </destructor>
  38. <scxml initial="init">
  39. <state id="init" initial="create_activity_info">
  40. <state id="create_activity_info" initial="create_name">
  41. <state id="create_name" initial="label">
  42. <state id="label" initial="create">
  43. <state id="create">
  44. <onentry>
  45. <raise event="create_instance" scope="cd">
  46. <parameter expr="'static'"/>
  47. <parameter expr="'Label'"/>
  48. <parameter expr="{'parent': self.activity_frame, 'text': 'Name'}"/>
  49. </raise>
  50. </onentry>
  51. <transition event="instance_created" target="../pack">
  52. <parameter name="assoc_name"/>
  53. <raise event="start_instance" scope="cd">
  54. <parameter expr="assoc_name"/>
  55. </raise>
  56. </transition>
  57. </state>
  58. <state id="pack">
  59. <transition event="tk_widget" target="../../entry">
  60. <parameter name="tk_widget"/>
  61. <script>
  62. tk_widget.grid(row=0,column=0)
  63. </script>
  64. </transition>
  65. </state>
  66. </state>
  67. <state id="entry" initial="create">
  68. <state id="create">
  69. <onentry>
  70. <raise event="create_instance" scope="cd">
  71. <parameter expr="'static'"/>
  72. <parameter expr="'Entry'"/>
  73. <parameter expr="{'parent': self.activity_frame, 'name': 'name', 'value': self.activity_name, 'readonly': False}"/>
  74. </raise>
  75. </onentry>
  76. <transition event="instance_created" target="../pack">
  77. <parameter name="assoc_name"/>
  78. <raise event="start_instance" scope="cd">
  79. <parameter expr="assoc_name"/>
  80. </raise>
  81. </transition>
  82. </state>
  83. <state id="pack">
  84. <transition event="tk_widget" target="../../../create_type">
  85. <parameter name="tk_widget"/>
  86. <script>
  87. tk_widget.grid(row=0,column=1)
  88. </script>
  89. </transition>
  90. </state>
  91. </state>
  92. </state>
  93. <state id="create_type" initial="label">
  94. <state id="label" initial="create">
  95. <state id="create">
  96. <onentry>
  97. <raise event="create_instance" scope="cd">
  98. <parameter expr="'static'"/>
  99. <parameter expr="'Label'"/>
  100. <parameter expr="{'parent': self.activity_frame, 'text': 'Type'}"/>
  101. </raise>
  102. </onentry>
  103. <transition event="instance_created" target="../pack">
  104. <parameter name="assoc_name"/>
  105. <raise event="start_instance" scope="cd">
  106. <parameter expr="assoc_name"/>
  107. </raise>
  108. </transition>
  109. </state>
  110. <state id="pack">
  111. <transition event="tk_widget" target="../../dropdown">
  112. <parameter name="tk_widget"/>
  113. <script>
  114. tk_widget.grid(row=1,column=0)
  115. </script>
  116. </transition>
  117. </state>
  118. </state>
  119. <state id="dropdown" initial="create">
  120. <state id="create">
  121. <onentry>
  122. <raise event="create_instance" scope="cd">
  123. <parameter expr="'static'"/>
  124. <parameter expr="'DropDown'"/>
  125. <parameter expr="{'parent': self.activity_frame, 'name': 'type', 'value': self.activity_type, 'options': ['ActionLanguage', 'ModelTransformation', 'ManualOperation']}"/>
  126. </raise>
  127. </onentry>
  128. <transition event="instance_created" target="../pack">
  129. <parameter name="assoc_name"/>
  130. <raise event="start_instance" scope="cd">
  131. <parameter expr="assoc_name"/>
  132. </raise>
  133. </transition>
  134. </state>
  135. <state id="pack">
  136. <transition event="tk_widget" target="../../../../create_confirm">
  137. <parameter name="tk_widget"/>
  138. <script>
  139. tk_widget.grid(row=1,column=1)
  140. </script>
  141. </transition>
  142. </state>
  143. </state>
  144. </state>
  145. </state>
  146. <state id="create_confirm" initial="create_create">
  147. <state id="create_create" initial="button">
  148. <state id="button" initial="create">
  149. <state id="create">
  150. <onentry>
  151. <raise event="create_instance" scope="cd">
  152. <parameter expr="'static'"/>
  153. <parameter expr="'Button'"/>
  154. <parameter expr="{'parent': self.create_frame, 'event_parameters': 'confirm', 'visual': TextVisual('OK')}"/>
  155. </raise>
  156. </onentry>
  157. <transition event="instance_created" target="../pack">
  158. <parameter name="assoc_name"/>
  159. <raise event="start_instance" scope="cd">
  160. <parameter expr="assoc_name"/>
  161. </raise>
  162. </transition>
  163. </state>
  164. <state id="pack">
  165. <transition event="tk_widget" target="../../../../../draw_signature">
  166. <parameter name="tk_widget"/>
  167. <script>
  168. tk_widget.grid(row=0,column=0)
  169. </script>
  170. </transition>
  171. </state>
  172. </state>
  173. </state>
  174. </state>
  175. </state>
  176. <state id="draw_signature" initial="create_inputs">
  177. <onentry>
  178. <raise event="delete_instance" scope="cd">
  179. <parameter expr="'input_tag'"/>
  180. </raise>
  181. <raise event="delete_instance" scope="cd">
  182. <parameter expr="'input_MM_entry'"/>
  183. </raise>
  184. <raise event="delete_instance" scope="cd">
  185. <parameter expr="'input_MM_browse'"/>
  186. </raise>
  187. <raise event="delete_instance" scope="cd">
  188. <parameter expr="'input_delete'"/>
  189. </raise>
  190. </onentry>
  191. <state id="create_inputs" initial="check_values">
  192. <onentry>
  193. <script>
  194. self.tmp_input_signature = dict(self.create_input_signature)
  195. self.counter = -1
  196. self.input_map = []
  197. </script>
  198. </onentry>
  199. <state id="check_values">
  200. <onentry>
  201. <script>
  202. self.counter += 1
  203. </script>
  204. </onentry>
  205. <transition cond="self.tmp_input_signature" target="../create_entry"/>
  206. <transition cond="not self.tmp_input_signature" target="../create_add_entry"/>
  207. </state>
  208. <state id="create_entry" initial="create_tag">
  209. <onentry>
  210. <script>
  211. self.current = self.tmp_input_signature.popitem()
  212. self.input_map.append([self.current[0], self.current[1]])
  213. </script>
  214. </onentry>
  215. <state id="create_tag" initial="create">
  216. <state id="create">
  217. <onentry>
  218. <raise event="create_instance" scope="cd">
  219. <parameter expr="'input_tag'"/>
  220. <parameter expr="'Entry'"/>
  221. <parameter expr="{'parent': self.input_frame, 'name': 'input_tag_%s' % self.counter, 'value': self.current[0]}"/>
  222. </raise>
  223. </onentry>
  224. <transition event="instance_created" target="../pack">
  225. <parameter name="assoc_name"/>
  226. <raise event="start_instance" scope="cd">
  227. <parameter expr="assoc_name"/>
  228. </raise>
  229. <script>
  230. self.input_map[-1].append(assoc_name)
  231. </script>
  232. </transition>
  233. </state>
  234. <state id="pack">
  235. <transition event="tk_widget" target="../../create_MM">
  236. <parameter name="tk_widget"/>
  237. <script>
  238. tk_widget.grid(row=self.counter,column=0)
  239. </script>
  240. </transition>
  241. </state>
  242. </state>
  243. <state id="create_MM" initial="create">
  244. <state id="create">
  245. <onentry>
  246. <raise event="create_instance" scope="cd">
  247. <parameter expr="'input_MM_entry'"/>
  248. <parameter expr="'Entry'"/>
  249. <parameter expr="{'parent': self.input_frame, 'name': 'input_MM_%s' % self.counter, 'value': self.current[1], 'readonly': True}"/>
  250. </raise>
  251. </onentry>
  252. <transition event="instance_created" target="../pack">
  253. <parameter name="assoc_name"/>
  254. <raise event="start_instance" scope="cd">
  255. <parameter expr="assoc_name"/>
  256. </raise>
  257. <script>
  258. self.input_map[-1].append(assoc_name)
  259. </script>
  260. </transition>
  261. </state>
  262. <state id="pack">
  263. <transition event="tk_widget" target="../../create_browse">
  264. <parameter name="tk_widget"/>
  265. <script>
  266. tk_widget.grid(row=self.counter,column=1)
  267. </script>
  268. </transition>
  269. </state>
  270. </state>
  271. <state id="create_browse" initial="create">
  272. <state id="create">
  273. <onentry>
  274. <raise event="create_instance" scope="cd">
  275. <parameter expr="'input_MM_browse'"/>
  276. <parameter expr="'Button'"/>
  277. <parameter expr="{'parent': self.input_frame, 'visual': TextVisual('...'), 'tooltip_text': 'Browse for input metamodel.', 'event_parameters': 'input_browse_%s' % self.counter}"/>
  278. </raise>
  279. </onentry>
  280. <transition event="instance_created" target="../pack_button">
  281. <parameter name="assoc_name"/>
  282. <raise event="start_instance" scope="cd">
  283. <parameter expr="assoc_name"/>
  284. </raise>
  285. <script>
  286. self.input_map[-1].append(assoc_name)
  287. </script>
  288. </transition>
  289. </state>
  290. <state id="pack_button">
  291. <transition event="tk_widget" target="../../create_delete">
  292. <parameter name="tk_widget"/>
  293. <script>
  294. tk_widget.grid(row=self.counter, column=2)
  295. </script>
  296. </transition>
  297. </state>
  298. </state>
  299. <state id="create_delete" initial="create">
  300. <state id="create">
  301. <onentry>
  302. <raise event="create_instance" scope="cd">
  303. <parameter expr="'input_delete'"/>
  304. <parameter expr="'Button'"/>
  305. <parameter expr="{'parent': self.input_frame, 'visual': TextVisual('X'), 'tooltip_text': 'Delete tag in signature.', 'event_parameters': 'input_delete_%s' % self.counter}"/>
  306. </raise>
  307. </onentry>
  308. <transition event="instance_created" target="../pack_button">
  309. <parameter name="assoc_name"/>
  310. <raise event="start_instance" scope="cd">
  311. <parameter expr="assoc_name"/>
  312. </raise>
  313. <script>
  314. self.input_map[-1].append(assoc_name)
  315. </script>
  316. </transition>
  317. </state>
  318. <state id="pack_button">
  319. <transition event="tk_widget" target="../../../check_values">
  320. <parameter name="tk_widget"/>
  321. <script>
  322. tk_widget.grid(row=self.counter, column=3)
  323. </script>
  324. </transition>
  325. </state>
  326. </state>
  327. </state>
  328. <state id="create_add_entry">
  329. <state id="create_button" initial="create">
  330. <state id="create">
  331. <onentry>
  332. <raise event="create_instance" scope="cd">
  333. <parameter expr="'input_MM_browse'"/>
  334. <parameter expr="'Button'"/>
  335. <parameter expr="{'parent': self.input_frame, 'visual': TextVisual('+'), 'tooltip_text': 'Create new element in signature.', 'event_parameters': 'add_input'}"/>
  336. </raise>
  337. </onentry>
  338. <transition event="instance_created" target="../pack_button">
  339. <parameter name="assoc_name"/>
  340. <raise event="start_instance" scope="cd">
  341. <parameter expr="assoc_name"/>
  342. </raise>
  343. </transition>
  344. </state>
  345. <state id="pack_button">
  346. <transition event="tk_widget" target="../../../../create_outputs">
  347. <parameter name="tk_widget"/>
  348. <script>
  349. tk_widget.grid(row=self.counter, column=3)
  350. </script>
  351. </transition>
  352. </state>
  353. </state>
  354. </state>
  355. </state>
  356. <state id="create_outputs" initial="check_values">
  357. <onentry>
  358. <script>
  359. self.tmp_output_signature = dict(self.create_output_signature)
  360. self.counter = -1
  361. self.output_map = []
  362. </script>
  363. </onentry>
  364. <state id="check_values">
  365. <onentry>
  366. <script>
  367. self.counter += 1
  368. </script>
  369. </onentry>
  370. <transition cond="self.tmp_output_signature" target="../create_entry"/>
  371. <transition cond="not self.tmp_output_signature" target="../create_add_entry"/>
  372. </state>
  373. <state id="create_entry" initial="create_tag">
  374. <onentry>
  375. <script>
  376. self.current = self.tmp_output_signature.popitem()
  377. self.output_map.append([self.current[0], self.current[1]])
  378. </script>
  379. </onentry>
  380. <state id="create_tag" initial="create">
  381. <state id="create">
  382. <onentry>
  383. <raise event="create_instance" scope="cd">
  384. <parameter expr="'input_tag'"/>
  385. <parameter expr="'Entry'"/>
  386. <parameter expr="{'parent': self.output_frame, 'name': 'output_tag_%s' % self.counter, 'value': self.current[0]}"/>
  387. </raise>
  388. </onentry>
  389. <transition event="instance_created" target="../pack">
  390. <parameter name="assoc_name"/>
  391. <raise event="start_instance" scope="cd">
  392. <parameter expr="assoc_name"/>
  393. </raise>
  394. <script>
  395. self.output_map[-1].append(assoc_name)
  396. </script>
  397. </transition>
  398. </state>
  399. <state id="pack">
  400. <transition event="tk_widget" target="../../create_MM">
  401. <parameter name="tk_widget"/>
  402. <script>
  403. tk_widget.grid(row=self.counter,column=0)
  404. </script>
  405. </transition>
  406. </state>
  407. </state>
  408. <state id="create_MM" initial="create">
  409. <state id="create">
  410. <onentry>
  411. <raise event="create_instance" scope="cd">
  412. <parameter expr="'input_MM_entry'"/>
  413. <parameter expr="'Entry'"/>
  414. <parameter expr="{'parent': self.output_frame, 'name': 'output_MM_%s' % self.counter, 'value': self.current[1], 'readonly': True}"/>
  415. </raise>
  416. </onentry>
  417. <transition event="instance_created" target="../pack">
  418. <parameter name="assoc_name"/>
  419. <raise event="start_instance" scope="cd">
  420. <parameter expr="assoc_name"/>
  421. </raise>
  422. <script>
  423. self.output_map[-1].append(assoc_name)
  424. </script>
  425. </transition>
  426. </state>
  427. <state id="pack">
  428. <transition event="tk_widget" target="../../create_browse">
  429. <parameter name="tk_widget"/>
  430. <script>
  431. tk_widget.grid(row=self.counter,column=1)
  432. </script>
  433. </transition>
  434. </state>
  435. </state>
  436. <state id="create_browse" initial="create">
  437. <state id="create">
  438. <onentry>
  439. <raise event="create_instance" scope="cd">
  440. <parameter expr="'input_MM_browse'"/>
  441. <parameter expr="'Button'"/>
  442. <parameter expr="{'parent': self.output_frame, 'visual': TextVisual('...'), 'tooltip_text': 'Browse for output metamodel.', 'event_parameters': 'output_browse_%s' % self.counter}"/>
  443. </raise>
  444. </onentry>
  445. <transition event="instance_created" target="../pack_button">
  446. <parameter name="assoc_name"/>
  447. <raise event="start_instance" scope="cd">
  448. <parameter expr="assoc_name"/>
  449. </raise>
  450. <script>
  451. self.output_map[-1].append(assoc_name)
  452. </script>
  453. </transition>
  454. </state>
  455. <state id="pack_button">
  456. <transition event="tk_widget" target="../../create_delete">
  457. <parameter name="tk_widget"/>
  458. <script>
  459. tk_widget.grid(row=self.counter, column=2)
  460. </script>
  461. </transition>
  462. </state>
  463. </state>
  464. <state id="create_delete" initial="create">
  465. <state id="create">
  466. <onentry>
  467. <raise event="create_instance" scope="cd">
  468. <parameter expr="'input_delete'"/>
  469. <parameter expr="'Button'"/>
  470. <parameter expr="{'parent': self.output_frame, 'visual': TextVisual('X'), 'tooltip_text': 'Delete tag in signature.', 'event_parameters': 'output_delete_%s' % self.counter}"/>
  471. </raise>
  472. </onentry>
  473. <transition event="instance_created" target="../pack_button">
  474. <parameter name="assoc_name"/>
  475. <raise event="start_instance" scope="cd">
  476. <parameter expr="assoc_name"/>
  477. </raise>
  478. <script>
  479. self.output_map[-1].append(assoc_name)
  480. </script>
  481. </transition>
  482. </state>
  483. <state id="pack_button">
  484. <transition event="tk_widget" target="../../../check_values">
  485. <parameter name="tk_widget"/>
  486. <script>
  487. tk_widget.grid(row=self.counter, column=3)
  488. </script>
  489. </transition>
  490. </state>
  491. </state>
  492. </state>
  493. <state id="create_add_entry">
  494. <state id="create_button" initial="create">
  495. <state id="create">
  496. <onentry>
  497. <raise event="create_instance" scope="cd">
  498. <parameter expr="'input_MM_browse'"/>
  499. <parameter expr="'Button'"/>
  500. <parameter expr="{'parent': self.output_frame, 'visual': TextVisual('+'), 'tooltip_text': 'Create new element in signature.', 'event_parameters': 'add_output'}"/>
  501. </raise>
  502. </onentry>
  503. <transition event="instance_created" target="../pack_button">
  504. <parameter name="assoc_name"/>
  505. <raise event="start_instance" scope="cd">
  506. <parameter expr="assoc_name"/>
  507. </raise>
  508. </transition>
  509. </state>
  510. <state id="pack_button">
  511. <transition event="tk_widget" target="../../../../../ready">
  512. <parameter name="tk_widget"/>
  513. <script>
  514. tk_widget.grid(row=self.counter, column=3)
  515. </script>
  516. </transition>
  517. </state>
  518. </state>
  519. </state>
  520. </state>
  521. </state>
  522. <state id="ready">
  523. <transition event="button_pressed" cond="evt == 'add_input'" target="../draw_signature">
  524. <parameter name="evt"/>
  525. <script>
  526. ctr = 0
  527. while 1:
  528. free_id = 'tag_%i' % ctr
  529. if free_id not in self.create_input_signature:
  530. break
  531. else:
  532. ctr += 1
  533. self.create_input_signature[free_id] = ""
  534. </script>
  535. </transition>
  536. <transition event="button_pressed" cond="evt == 'add_output'" target="../draw_signature">
  537. <parameter name="evt"/>
  538. <script>
  539. ctr = 0
  540. while 1:
  541. free_id = 'tag_%i' % ctr
  542. if free_id not in self.create_output_signature:
  543. break
  544. else:
  545. ctr += 1
  546. self.create_output_signature[free_id] = ""
  547. </script>
  548. </transition>
  549. <transition event="button_pressed" cond="evt.startswith('input_delete_')" target="../draw_signature">
  550. <parameter name="evt"/>
  551. <script>
  552. index = int(evt.split("input_delete_", 1)[1])
  553. del self.create_input_signature[self.input_map[index][0]]
  554. </script>
  555. </transition>
  556. <transition event="button_pressed" cond="evt.startswith('output_delete_')" target="../draw_signature">
  557. <parameter name="evt"/>
  558. <script>
  559. index = int(evt.split("output_delete_", 1)[1])
  560. del self.create_output_signature[self.output_map[index][0]]
  561. </script>
  562. </transition>
  563. <transition event="changed_entry" cond="evt == 'name'" target=".">
  564. <parameter name="evt"/>
  565. <parameter name="new_value"/>
  566. <script>
  567. self.activity_name = new_value
  568. </script>
  569. </transition>
  570. <transition event="changed_dropdown" cond="evt == 'type'" target=".">
  571. <parameter name="evt"/>
  572. <parameter name="new_value"/>
  573. <script>
  574. self.activity_type = new_value
  575. </script>
  576. </transition>
  577. <transition event="changed_entry" cond="evt.startswith('input_tag_')" target=".">
  578. <parameter name="evt"/>
  579. <parameter name="new_value"/>
  580. <script>
  581. index = int(evt.split("input_tag_", 1)[1])
  582. information = self.input_map[index]
  583. old_tag = information[0]
  584. self.create_input_signature[new_value] = self.create_input_signature.pop(old_tag)
  585. information[0] = new_value
  586. </script>
  587. </transition>
  588. <transition event="changed_entry" cond="evt.startswith('output_tag_')" target=".">
  589. <parameter name="evt"/>
  590. <parameter name="new_value"/>
  591. <script>
  592. index = int(evt.split("output_tag_", 1)[1])
  593. information = self.output_map[index]
  594. old_tag = information[0]
  595. self.create_output_signature[new_value] = self.create_output_signature.pop(old_tag)
  596. information[0] = new_value
  597. </script>
  598. </transition>
  599. <transition event="button_pressed" cond="evt.startswith('input_browse_')" target="../browsing_input">
  600. <parameter name="evt"/>
  601. <script>
  602. self.current = int(evt.split("input_browse_", 1)[1])
  603. </script>
  604. </transition>
  605. <transition event="button_pressed" cond="evt.startswith('output_browse_')" target="../browsing_output">
  606. <parameter name="evt"/>
  607. <script>
  608. self.current = int(evt.split("output_browse_", 1)[1])
  609. </script>
  610. </transition>
  611. <transition event="button_pressed" cond="evt == 'confirm' and self.activity_type != 'ActionLanguage'" target="../creating">
  612. <parameter name="evt"/>
  613. <script>
  614. self.upload_code = ""
  615. </script>
  616. </transition>
  617. <transition event="button_pressed" cond="evt == 'confirm' and self.activity_type == 'ActionLanguage'" target="../browse_file">
  618. <parameter name="evt"/>
  619. </transition>
  620. </state>
  621. <state id="browse_file">
  622. <onentry>
  623. <raise event="create_instance" scope="cd">
  624. <parameter expr="'browser'"/>
  625. <parameter expr="'FileBrowser'"/>
  626. <parameter expr="'Select model code.'"/>
  627. </raise>
  628. <script>
  629. self.upload_code = ""
  630. </script>
  631. </onentry>
  632. <transition event="instance_created" target="../waiting">
  633. <parameter name="result"/>
  634. <raise event="start_instance" scope="cd">
  635. <parameter expr="result"/>
  636. </raise>
  637. </transition>
  638. </state>
  639. <state id="waiting">
  640. <transition event="browse_result" target=".">
  641. <parameter name="result"/>
  642. <script>
  643. self.upload_code = open(result, 'r').read()
  644. </script>
  645. </transition>
  646. <transition event="close_window" target="../creating">
  647. <raise event="delete_instance" scope="cd">
  648. <parameter expr="'browser'"/>
  649. </raise>
  650. </transition>
  651. </state>
  652. <state id="creating">
  653. <onentry>
  654. <raise event="mv_request" scope="broad">
  655. <parameter expr="'transformation_add_%s' % ({'ManualOperation': 'MANUAL', 'ModelTransformation': 'MT', 'ActionLanguage': 'AL'}[self.activity_type])"/>
  656. <parameter expr="[self.create_input_signature, self.create_output_signature, self.activity_name, self.upload_code]"/>
  657. </raise>
  658. </onentry>
  659. <transition event="mv_response" cond="model is not None" target="../modifying_mm">
  660. <parameter name="model"/>
  661. <script>
  662. self.subprocess = subprocess.Popen([sys.executable, sys.argv[0], "--address", data['mv_address'], "--username", data['username'], "--password", data['password'], "--model", model, "--limited"])
  663. </script>
  664. </transition>
  665. <transition event="mv_response" cond="model is None" target="../closing">
  666. <parameter name="model"/>
  667. </transition>
  668. </state>
  669. <state id="modifying_mm">
  670. <transition cond="self.subprocess.poll() is not None" target="../finish_transformation_add"/>
  671. <transition after="0.5" target="."/>
  672. </state>
  673. <state id="finish_transformation_add">
  674. <onentry>
  675. <raise event="mv_data_input" scope="broad">
  676. <parameter expr="None"/>
  677. <parameter expr="None"/>
  678. </raise>
  679. </onentry>
  680. <transition event="mv_response" target="../closing"/>
  681. </state>
  682. <state id="closing">
  683. <onentry>
  684. <raise event="delete_instance" scope="cd">
  685. <parameter expr="'input_tag'"/>
  686. </raise>
  687. <raise event="delete_instance" scope="cd">
  688. <parameter expr="'input_MM_entry'"/>
  689. </raise>
  690. <raise event="delete_instance" scope="cd">
  691. <parameter expr="'input_MM_browse'"/>
  692. </raise>
  693. <raise event="delete_instance" scope="cd">
  694. <parameter expr="'input_delete'"/>
  695. </raise>
  696. <raise event="delete_instance" scope="cd">
  697. <parameter expr="'static'"/>
  698. </raise>
  699. </onentry>
  700. <transition target="../closed">
  701. <raise event="close_window" scope="narrow" target="'parent'"/>
  702. </transition>
  703. </state>
  704. <state id="closed"/>
  705. <state id="browsing_input" initial="creating">
  706. <state id="creating">
  707. <onentry>
  708. <raise event="create_instance" scope="cd">
  709. <parameter expr="'browser'"/>
  710. <parameter expr="'Browser'"/>
  711. <parameter expr="'Select metamodel for signature of activity.'"/>
  712. <parameter expr="None"/>
  713. </raise>
  714. </onentry>
  715. <transition event="instance_created" target="../waiting">
  716. <parameter name="assoc_name"/>
  717. <raise event="start_instance" scope="cd">
  718. <parameter expr="assoc_name"/>
  719. </raise>
  720. </transition>
  721. </state>
  722. <state id="waiting">
  723. <transition event="browse_result" target=".">
  724. <parameter name="result"/>
  725. <raise event="change_value" scope="narrow" target="self.input_map[self.current][3]">
  726. <parameter expr="result"/>
  727. </raise>
  728. <script>
  729. self.create_input_signature[self.input_map[self.current][0]] = result
  730. self.input_map[self.current][1] = result
  731. </script>
  732. </transition>
  733. <transition event="close_window" target="../../ready">
  734. <raise event="delete_instance" scope="cd">
  735. <parameter expr="'browser'"/>
  736. </raise>
  737. </transition>
  738. </state>
  739. </state>
  740. <state id="browsing_output" initial="creating">
  741. <state id="creating">
  742. <onentry>
  743. <raise event="create_instance" scope="cd">
  744. <parameter expr="'browser'"/>
  745. <parameter expr="'Browser'"/>
  746. <parameter expr="'Select metamodel for signature of activity.'"/>
  747. <parameter expr="None"/>
  748. </raise>
  749. </onentry>
  750. <transition event="instance_created" target="../waiting">
  751. <parameter name="assoc_name"/>
  752. <raise event="start_instance" scope="cd">
  753. <parameter expr="assoc_name"/>
  754. </raise>
  755. </transition>
  756. </state>
  757. <state id="waiting">
  758. <transition event="browse_result" target=".">
  759. <parameter name="result"/>
  760. <raise event="change_value" scope="narrow" target="self.output_map[self.current][3]">
  761. <parameter expr="result"/>
  762. </raise>
  763. <script>
  764. self.create_output_signature[self.output_map[self.current][0]] = result
  765. self.output_map[self.current][1] = result
  766. </script>
  767. </transition>
  768. <transition event="close_window" target="../../ready">
  769. <raise event="delete_instance" scope="cd">
  770. <parameter expr="'browser'"/>
  771. </raise>
  772. </transition>
  773. </state>
  774. </state>
  775. </scxml>
  776. </class>