MINT-core 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. data/Gemfile +22 -3
  2. data/Gemfile.lock +98 -22
  3. data/History.txt +262 -0
  4. data/LICENSE +30 -0
  5. data/MINT-core.gemspec +25 -80
  6. data/Manifest.txt +145 -30
  7. data/README.rdoc +6 -163
  8. data/Rakefile +16 -17
  9. data/bin/mint-aui +3 -3
  10. data/bin/mint-cui-gfx +3 -2
  11. data/bin/mint-juggernaut.sh +0 -0
  12. data/bin/mint-tuplespace +0 -0
  13. data/lib/MINT-core.rb +53 -15
  14. data/lib/MINT-core/agent/agent.rb +1 -1
  15. data/lib/MINT-core/agent/aui.rb +0 -14
  16. data/lib/MINT-core/agent/auicontrol.rb +91 -38
  17. data/lib/MINT-core/agent/cui-gfx.rb +3 -3
  18. data/lib/MINT-core/agent/cuicontrol.rb +94 -24
  19. data/lib/MINT-core/connector/redis_connector.rb +16 -0
  20. data/lib/MINT-core/manager/mapping_manager.rb +101 -0
  21. data/lib/MINT-core/manager/mapping_parser.rb +89 -0
  22. data/lib/MINT-core/manager/mapping_server.rb +99 -0
  23. data/lib/MINT-core/manager/position_updater.rb +33 -0
  24. data/lib/MINT-core/manager/scxml_client.rb +118 -0
  25. data/lib/MINT-core/manager/scxml_server.rb +86 -0
  26. data/lib/MINT-core/mapping/action/action.rb +32 -0
  27. data/lib/MINT-core/mapping/action/backend_action.rb +32 -0
  28. data/lib/MINT-core/mapping/action/bind_action.rb +88 -0
  29. data/lib/MINT-core/mapping/action/event_action.rb +40 -0
  30. data/lib/MINT-core/mapping/complementary_mapping.rb +31 -0
  31. data/lib/MINT-core/mapping/mapping.rb +170 -34
  32. data/lib/MINT-core/mapping/observation/negation_observation.rb +64 -0
  33. data/lib/MINT-core/mapping/observation/observation.rb +219 -0
  34. data/lib/MINT-core/mapping/sequential.rb +1 -2
  35. data/lib/MINT-core/mapping/sequential_mapping.rb +60 -0
  36. data/lib/MINT-core/model/aui/AIChoiceElement.rb +17 -0
  37. data/lib/MINT-core/model/aui/AICommand.rb +7 -0
  38. data/lib/MINT-core/model/aui/AIContainer.rb +73 -0
  39. data/lib/MINT-core/model/aui/AIContext.rb +12 -0
  40. data/lib/MINT-core/model/aui/AIIN.rb +8 -0
  41. data/lib/MINT-core/model/aui/AIINContinuous.rb +56 -0
  42. data/lib/MINT-core/model/aui/AIINDiscrete.rb +8 -0
  43. data/lib/MINT-core/model/aui/AIMultiChoice.rb +1 -2
  44. data/lib/MINT-core/model/aui/AIMultiChoiceElement.rb +4 -51
  45. data/lib/MINT-core/model/aui/AIO.rb +76 -123
  46. data/lib/MINT-core/model/aui/AIOUT.rb +8 -0
  47. data/lib/MINT-core/model/aui/AIOUTContinuous.rb +61 -0
  48. data/lib/MINT-core/model/aui/AIReference.rb +16 -0
  49. data/lib/MINT-core/model/aui/AISingleChoice.rb +18 -1
  50. data/lib/MINT-core/model/aui/AISingleChoiceElement.rb +10 -56
  51. data/lib/MINT-core/model/aui/AISinglePresence.rb +39 -71
  52. data/lib/MINT-core/model/aui/aicommand.scxml +47 -0
  53. data/lib/MINT-core/model/aui/aicontainer.scxml +41 -0
  54. data/lib/MINT-core/model/aui/aicontext.scxml +34 -0
  55. data/lib/MINT-core/model/aui/aiincontinuous.scxml +59 -0
  56. data/lib/MINT-core/model/aui/aiinrange.scxml +86 -0
  57. data/lib/MINT-core/model/aui/aimultichoice.scxml +67 -0
  58. data/lib/MINT-core/model/aui/aimultichoiceelement.scxml +51 -0
  59. data/lib/MINT-core/model/aui/aio.scxml +18 -27
  60. data/lib/MINT-core/model/aui/aioutcontinuous.scxml +66 -0
  61. data/lib/MINT-core/model/aui/aireference.scxml +28 -0
  62. data/lib/MINT-core/model/aui/aisinglechoice.scxml +60 -0
  63. data/lib/MINT-core/model/aui/aisinglechoiceelement.scxml +45 -60
  64. data/lib/MINT-core/model/aui/aisinglepresence.scxml +15 -24
  65. data/lib/MINT-core/model/aui/model.rb +15 -38
  66. data/lib/MINT-core/model/cui/gfx/CIC.rb +34 -10
  67. data/lib/MINT-core/model/cui/gfx/CIO.rb +66 -115
  68. data/lib/MINT-core/model/cui/gfx/CarouFredSel.scxml +58 -0
  69. data/lib/MINT-core/model/cui/gfx/MarkableRadioButton.rb +8 -0
  70. data/lib/MINT-core/model/cui/gfx/RadioButton.rb +8 -0
  71. data/lib/MINT-core/model/cui/gfx/RadioButtonGroup.rb +6 -0
  72. data/lib/MINT-core/model/cui/gfx/button.rb +16 -0
  73. data/lib/MINT-core/model/cui/gfx/button.scxml +58 -0
  74. data/lib/MINT-core/model/cui/gfx/caroufredsel.rb +48 -0
  75. data/lib/MINT-core/model/cui/gfx/cic.scxml +57 -0
  76. data/lib/MINT-core/model/cui/gfx/cio.scxml +54 -0
  77. data/lib/MINT-core/model/cui/gfx/markableradiobutton.scxml +67 -0
  78. data/lib/MINT-core/model/cui/gfx/model.rb +39 -176
  79. data/lib/MINT-core/model/cui/gfx/radiobutton.scxml +59 -0
  80. data/lib/MINT-core/model/interactor.rb +167 -46
  81. data/lib/MINT-core/model/interactor.scxml +3 -0
  82. data/lib/MINT-core/model/interactor_helpers.rb +25 -0
  83. data/lib/MINT-core/model/ir/body/OneHandPoseNavigation.rb +15 -0
  84. data/lib/MINT-core/model/ir/body/body.rb +5 -0
  85. data/lib/MINT-core/model/ir/body/fingertip.rb +114 -0
  86. data/lib/MINT-core/model/ir/body/fingertip.scxml +43 -0
  87. data/lib/MINT-core/model/{body → ir/body}/gesture_button.rb +0 -0
  88. data/lib/MINT-core/model/ir/body/hand.rb +5 -0
  89. data/lib/MINT-core/model/ir/body/head.rb +102 -0
  90. data/lib/MINT-core/model/ir/body/head.scxml +92 -0
  91. data/lib/MINT-core/model/ir/body/onehandposenavigation.scxml +53 -0
  92. data/lib/MINT-core/model/ir/body/pose.rb +99 -0
  93. data/lib/MINT-core/model/ir/browserscreen.rb +27 -0
  94. data/lib/MINT-core/model/ir/browserscreen.scxml +14 -0
  95. data/lib/MINT-core/model/{device → ir}/button.rb +1 -1
  96. data/lib/MINT-core/model/ir/ir.rb +5 -0
  97. data/lib/MINT-core/model/ir/irmedia.rb +5 -0
  98. data/lib/MINT-core/model/ir/irmode.rb +5 -0
  99. data/lib/MINT-core/model/{device → ir}/joypad.rb +1 -1
  100. data/lib/MINT-core/model/ir/mouse.rb +44 -0
  101. data/lib/MINT-core/model/ir/mouse.scxml +35 -0
  102. data/lib/MINT-core/model/{device/mouse.rb → ir/mouse_old.rb} +2 -2
  103. data/lib/MINT-core/model/{device → ir}/pointer.rb +20 -22
  104. data/lib/MINT-core/model/ir/pointer.scxml +19 -0
  105. data/lib/MINT-core/model/ir/screen.rb +5 -0
  106. data/lib/MINT-core/model/{device → ir}/wheel.rb +1 -1
  107. data/lib/MINT-core/model/mim/aicommand_activate_to_button_press.xml +13 -0
  108. data/lib/MINT-core/model/mim/aicommand_deactivate_to_button_release.xml +13 -0
  109. data/lib/MINT-core/model/mim/aio_defocus_to_cio_unhighlight.xml +13 -0
  110. data/lib/MINT-core/model/mim/aio_focus_to_cio_highlight.xml +14 -0
  111. data/lib/MINT-core/model/mim/aio_present_to_cio_display.xml +14 -0
  112. data/lib/MINT-core/model/mim/aio_suspend_to_cio_hide.xml +13 -0
  113. data/lib/MINT-core/model/mim/aisinglechoice_present_to_child_present.xml +14 -0
  114. data/lib/MINT-core/model/mim/aisinglechoiceelement_chosen_to_radiobutton_select.xml +13 -0
  115. data/lib/MINT-core/model/mim/aisinglechoiceelement_unchosen_to_radiobutton_unselect.xml +13 -0
  116. data/lib/MINT-core/model/mim/aisinglepresence_children_finished_to_caroufredsel_init_js.xml +14 -0
  117. data/lib/MINT-core/model/mim/aisinglepresence_present_to_child_present.xml +15 -0
  118. data/lib/MINT-core/model/mim/browserscreen_reload_to_cuicontrol_refresh_all.xml +12 -0
  119. data/lib/MINT-core/model/mim/button_press_to_aicommand_activate.xml +12 -0
  120. data/lib/MINT-core/model/mim/button_release_to_aicommand_deactivate.xml +12 -0
  121. data/lib/MINT-core/model/mim/caroufredsel_refreshing_to_caroufredsel_init_js.xml +14 -0
  122. data/lib/MINT-core/model/mim/cio_display_to_aio_defocus.xml +13 -0
  123. data/lib/MINT-core/model/mim/cio_display_to_aio_present.xml +12 -0
  124. data/lib/MINT-core/model/mim/cio_display_to_cio_display_cache_add.xml +11 -0
  125. data/lib/MINT-core/model/mim/cio_hide_to_aio_suspend.xml +12 -0
  126. data/lib/MINT-core/model/mim/cio_hide_to_cio_display_cache_remove.xml +12 -0
  127. data/lib/MINT-core/model/mim/cio_highlight_to_aio_focus.xml +13 -0
  128. data/lib/MINT-core/model/mim/head_looking_left_to_aisinglepresence_prev.xml +14 -0
  129. data/lib/MINT-core/model/mim/head_looking_right_to_aisinglepresence_next.xml +15 -0
  130. data/lib/MINT-core/model/mim/head_nodding_to_aisinglepresence_next.xml +15 -0
  131. data/lib/MINT-core/model/mim/head_tilting_left_to_aisinglepresence_prev.xml +14 -0
  132. data/lib/MINT-core/model/mim/head_tilting_right_to_aisinglepresence_next.xml +15 -0
  133. data/lib/MINT-core/model/mim/left_button_aisinglepresence_enter.xml +15 -0
  134. data/lib/MINT-core/model/mim/left_button_aisinglepresence_next.xml +15 -0
  135. data/lib/MINT-core/model/mim/mim_default.xml +52 -0
  136. data/lib/MINT-core/model/mim/mint-mappings.xsd +127 -0
  137. data/lib/MINT-core/model/mim/mouse_press_to_aicommand_activate.xml +17 -0
  138. data/lib/MINT-core/model/mim/mouse_press_to_aisinglechoiceelement_choose.xml +17 -0
  139. data/lib/MINT-core/model/mim/mouse_press_to_aisinglechoiceelement_unchoose.xml +17 -0
  140. data/lib/MINT-core/model/mim/mouse_release_to_aicommand_deactivate.xml +16 -0
  141. data/lib/MINT-core/model/mim/mouse_stop_to_cio_highlight.xml +13 -0
  142. data/lib/MINT-core/model/mim/onehandposnav_confirm_to_aichoiceelement_choose.xml +14 -0
  143. data/lib/MINT-core/model/mim/onehandposnav_next_to_aio_next.xml +14 -0
  144. data/lib/MINT-core/model/mim/onehandposnav_previous_to_aio_prev.xml +14 -0
  145. data/lib/MINT-core/model/mim/radiobutton_selected_to_aisinglechoiceelement_choose.xml +13 -0
  146. data/lib/MINT-core/model/mim/radiobutton_unselected_to_aisinglechoiceelement_unchoose.xml +13 -0
  147. data/lib/MINT-core/model/mim/right_button_aisinglepresence_prev.xml +15 -0
  148. data/lib/MINT-core/model/task.rb +6 -6
  149. data/script/console +0 -0
  150. data/script/destroy +0 -0
  151. data/script/generate +0 -0
  152. data/spec/AICommand_spec.rb +20 -0
  153. data/spec/AIContainer_spec.rb +161 -0
  154. data/spec/AIINContinuous_spec.rb +92 -0
  155. data/spec/AIOUTContinuous_spec.rb +93 -0
  156. data/spec/AIO_spec.rb +73 -0
  157. data/spec/AIReference_spec.rb +105 -0
  158. data/spec/AISinglePresence_spec.rb +204 -60
  159. data/spec/Button_spec.rb +114 -0
  160. data/spec/CIO_spec.rb +145 -0
  161. data/spec/Interactor_spec.rb +95 -0
  162. data/spec/MappingManager_spec.rb +126 -0
  163. data/spec/Spontaneous_spec.rb +53 -0
  164. data/spec/aio_agent_spec.rb +215 -186
  165. data/spec/aisinglechoice_spec.rb +147 -88
  166. data/spec/aisinglechoiceelement_spec.rb +154 -70
  167. data/spec/complementary_mapping_spec.rb +158 -0
  168. data/spec/core_spec.rb +27 -15
  169. data/spec/cui_helper.rb +100 -0
  170. data/spec/examples/browserscreen_reload_to_cuicontrol_refresh_all.xml +12 -0
  171. data/spec/examples/mim_streaming_example.xml +9 -0
  172. data/spec/examples/mouse_highlight.xml +22 -0
  173. data/spec/examples/performance_mapping.xml +15 -0
  174. data/spec/examples/reset_click.xml +24 -0
  175. data/spec/interactor_test.scxml +32 -0
  176. data/spec/interactor_test_2.scxml +16 -0
  177. data/spec/mapping_performance_spec.rb +118 -0
  178. data/spec/mapping_server_spec.rb +161 -0
  179. data/spec/mapping_spec.rb +307 -0
  180. data/spec/music_spec.rb +301 -135
  181. data/spec/performance_counter.scxml +9 -0
  182. data/spec/sequential_mappings_spec.rb +69 -0
  183. data/spec/shared/aio_shared.rb +144 -0
  184. data/spec/spec_helper.rb +22 -3
  185. data/spec/spontaneous.scxml +11 -0
  186. data/spec/support/connection_helper.rb +19 -0
  187. data/spec/support/redis_connector_monkey_patch.rb +1 -0
  188. data/spec/support/statemachine_helper.rb +84 -0
  189. data/spec/sync_mappings_spec.rb +96 -0
  190. metadata +219 -354
  191. data/lib/MINT-core/mapping/complementary.rb +0 -100
  192. data/lib/MINT-core/mapping/on_state_change.rb +0 -65
  193. data/lib/MINT-core/model/aui/AIC.rb +0 -86
  194. data/lib/MINT-core/model/aui/AIChoice.rb +0 -65
  195. data/lib/MINT-core/model/aui/AIINChoose.rb +0 -54
  196. data/lib/MINT-core/model/aui/AIOUTDiscrete.rb +0 -43
  197. data/lib/MINT-core/model/aui/aic.png +0 -0
  198. data/lib/MINT-core/model/aui/aic.scxml +0 -50
  199. data/lib/MINT-core/model/aui/aichoice.png +0 -0
  200. data/lib/MINT-core/model/aui/aichoice.scxml +0 -60
  201. data/lib/MINT-core/model/aui/aio.png +0 -0
  202. data/lib/MINT-core/model/aui/aisinglechoiceelement.png +0 -0
  203. data/lib/MINT-core/model/aui/aisinglepresence.png +0 -0
  204. data/lib/MINT-core/model/body/handgesture.rb +0 -279
  205. data/lib/MINT-core/model/body/head.png +0 -0
  206. data/lib/MINT-core/model/body/head.rb +0 -51
  207. data/lib/MINT-core/model/body/head.scxml +0 -28
  208. data/lib/MINT-core/model/cui/gfx/screen.rb +0 -18
  209. data/lib/MINT-core/overrides/rinda.rb +0 -34
  210. data/spec/AIC_spec.rb +0 -69
  211. data/spec/MINT-core_spec.rb +0 -11
  212. data/spec/aio_spec.rb +0 -144
  213. data/spec/cio_spec.rb +0 -369
  214. data/tasks/rspec.rake +0 -21
@@ -0,0 +1,58 @@
1
+ <scxml initial="initialized" name="CarouFredSel" version="0.9" xmlns="http://www.w3.org/2005/07/scxml"><!-- node-size-and-position x=0.0 y=0.0 w=885.0 h=723.0 -->
2
+ <state id="initialized"><!-- node-size-and-position x=220.0 y=130.0 w=100.0 h=40.0 -->
3
+ <transition event="position" target="positioning"></transition>
4
+ </state>
5
+ <state id="positioning"><!-- node-size-and-position x=220.0 y=220.0 w=100.0 h=40.0 -->
6
+ <transition event="calculated" target="positioned">
7
+ <invoke src="store_calculated_values_in_model" type="x-mint"></invoke>
8
+ </transition>
9
+ </state>
10
+ <state id="positioned"><!-- node-size-and-position x=220.0 y=320.0 w=100.0 h=40.0 -->
11
+ <transition event="display" target="displaying">
12
+ <invoke src="display_children" type="x-mint"></invoke>
13
+ <!-- edge-path [displaying] pointx=0.0 pointy=22.0 offsetx=12.0 offsety=-1.0 --></transition>
14
+ <transition event="hide" target="hidden"></transition>
15
+ </state>
16
+ <state id="displaying" initial="wait_for_children"><!-- node-size-and-position x=380.0 y=260.0 w=350.0 h=280.0 -->
17
+ <transition event="disable" target="disabled"></transition>
18
+ <transition event="hide" target="hidden"></transition>
19
+ <transition event="refresh" target="refreshing"><!-- edge-path [refreshing] x=770.0 y=410.0 --></transition>
20
+ <state id="displayed"><!-- node-size-and-position x=140.0 y=120.0 w=100.0 h=30.0 -->
21
+ <transition event="highlight" target="highlighted"><!-- edge-path [highlighted] x=140.0 y=180.0 pointx=0.0 pointy=-1.0 offsetx=11.0 offsety=-11.0 --></transition>
22
+ </state>
23
+ <state id="highlighted"><!-- node-size-and-position x=140.0 y=210.0 w=100.0 h=30.0 -->
24
+ <transition event="unhighlight" target="displayed"><!-- edge-path [displayed] x=230.0 y=180.0 --></transition>
25
+ <transition event="up" target="displayed">
26
+ <invoke src="highlight_up" type="x-mint"></invoke>
27
+ <!-- edge-path [displayed] x=270.0 y=220.0 x=270.0 y=140.0 pointx=0.0 pointy=-10.0 offsetx=0.0 offsety=5.0 --></transition>
28
+ <transition event="down" target="displayed">
29
+ <invoke src="highlight_down" type="x-mint"></invoke>
30
+ <!-- edge-path [displayed] x=100.0 y=220.0 x=100.0 y=140.0 --></transition>
31
+ <transition event="left" target="displayed">
32
+ <invoke src="highlight_left" type="x-mint"></invoke>
33
+ <!-- edge-path [displayed] x=70.0 y=230.0 x=70.0 y=130.0 --></transition>
34
+ <transition event="right" target="displayed">
35
+ <invoke src="highlight_right" type="x-mint"></invoke>
36
+ <!-- edge-path [displayed] x=310.0 y=230.0 x=310.0 y=130.0 --></transition>
37
+ </state>
38
+ <state id="wait_for_children"><!-- node-size-and-position x=20.0 y=40.0 w=100.0 h=30.0 -->
39
+ <transition event="init_js" target="init_js"></transition>
40
+ </state>
41
+ <state id="init_js"><!-- node-size-and-position x=230.0 y=50.0 w=100.0 h=30.0 -->
42
+ <transition target="displayed"></transition>
43
+ </state>
44
+ </state>
45
+ <state id="disabled"><!-- node-size-and-position x=570.0 y=140.0 w=110.0 h=40.0 -->
46
+ <transition event="hide" target="hidden"></transition>
47
+ </state>
48
+ <state id="hidden"><!-- node-size-and-position x=400.0 y=140.0 w=110.0 h=40.0 -->
49
+ <transition event="position" target="positioning"></transition>
50
+ <transition event="display" target="displaying"><!-- edge-path [displaying] x=410.0 y=240.0 --></transition>
51
+ </state>
52
+ <state id="refreshing"><!-- node-size-and-position x=780.0 y=440.0 w=70.0 h=50.0 -->
53
+ <onentry>
54
+ <invoke src="refresh_children" type="x-mint"></invoke>
55
+ </onentry>
56
+ <transition target="displaying"></transition>
57
+ </state>
58
+ </scxml>
@@ -0,0 +1,8 @@
1
+ module MINT
2
+
3
+ class MarkableRadioButton < RadioButton
4
+ def getSCXML
5
+ "#{File.dirname(__FILE__)}/markableradiobutton.scxml"
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module MINT
2
+
3
+ class RadioButton < CIO
4
+ def getSCXML
5
+ "#{File.dirname(__FILE__)}/radiobutton.scxml"
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ module MINT
2
+
3
+ class RadioButtonGroup < CIC
4
+
5
+ end
6
+ end
@@ -0,0 +1,16 @@
1
+
2
+ module MINT
3
+
4
+ class Button < CIO
5
+
6
+ def getModel
7
+ "cui-gfx"
8
+ end
9
+
10
+ def getSCXML
11
+ "#{File.dirname(__FILE__)}/button.scxml"
12
+ end
13
+
14
+
15
+ end
16
+ end
@@ -0,0 +1,58 @@
1
+ <scxml initial="initialized" name="Button" version="0.9" xmlns="http://www.w3.org/2005/07/scxml"><!-- node-size-and-position x=0.0 y=0.0 w=730.0 h=580.0 -->
2
+ <state id="initialized"><!-- node-size-and-position x=70.0 y=60.0 w=100.0 h=30.0 -->
3
+ <transition event="position" target="positioning"></transition>
4
+ </state>
5
+ <state id="positioning"><!-- node-size-and-position x=60.0 y=130.0 w=100.0 h=30.0 -->
6
+ <transition event="calculated" target="positioned"></transition>
7
+ </state>
8
+ <state id="positioned"><!-- node-size-and-position x=50.0 y=220.0 w=100.0 h=30.0 -->
9
+ <transition event="display" target="p"></transition>
10
+ </state>
11
+ <state id="hidden"><!-- node-size-and-position x=270.0 y=60.0 w=130.0 h=40.0 -->
12
+ <transition event="position" target="positioning"></transition>
13
+ </state>
14
+ <state id="disabled"><!-- node-size-and-position x=490.0 y=60.0 w=130.0 h=40.0 -->
15
+ <transition event="hide" target="hidden"></transition>
16
+ </state>
17
+ <parallel id="p"><!-- node-size-and-position x=170.0 y=150.0 w=560.0 h=370.0 -->
18
+ <transition event="disable" target="disabled"></transition>
19
+ <transition event="hide" target="hidden"></transition>
20
+ <state id="b" initial="released"><!-- node-size-and-position x=420.0 y=90.0 w=140.0 h=210.0 -->
21
+ <state id="pressed"><!-- node-size-and-position x=30.0 y=140.0 w=100.0 h=30.0 -->
22
+ <transition event="release" target="released"><!-- edge-path [released] x=120.0 y=100.0 pointx=0.0 pointy=-40.0 offsetx=0.0 offsety=5.0 --></transition>
23
+ </state>
24
+ <state id="released"><!-- node-size-and-position x=30.0 y=40.0 w=100.0 h=30.0 -->
25
+ <transition event="press" target="pressed"><!-- edge-path [pressed] x=40.0 y=100.0 --></transition>
26
+ </state>
27
+ </state>
28
+ <state id="d"><!-- node-size-and-position x=10.0 y=40.0 w=400.0 h=300.0 -->
29
+ <state id="displaying" initial="init_js"><!-- node-size-and-position x=10.0 y=30.0 w=290.0 h=250.0 -->
30
+ <transition event="refresh" target="refreshing"><!-- edge-path [refreshing] x=320.0 y=100.0 pointx=0.0 pointy=13.0 offsetx=27.0 offsety=-9.0 --></transition>
31
+ <state id="displayed"><!-- node-size-and-position x=100.0 y=110.0 w=100.0 h=30.0 -->
32
+ <transition event="highlight" target="highlighted"><!-- edge-path [highlighted] x=90.0 y=170.0 pointx=0.0 pointy=18.0 offsetx=19.0 offsety=-14.0 --></transition>
33
+ </state>
34
+ <state id="highlighted"><!-- node-size-and-position x=100.0 y=200.0 w=100.0 h=30.0 -->
35
+ <transition event="unhighlight" target="displayed"><!-- edge-path [displayed] x=190.0 y=170.0 --></transition>
36
+ <transition event="up" target="displayed">
37
+ <invoke src="highlight_up" type="x-mint"></invoke>
38
+ <!-- edge-path [displayed] x=230.0 y=210.0 x=230.0 y=130.0 pointx=0.0 pointy=-10.0 offsetx=0.0 offsety=5.0 --></transition>
39
+ <transition event="down" target="displayed">
40
+ <invoke src="highlight_down" type="x-mint"></invoke>
41
+ <!-- edge-path [displayed] x=60.0 y=210.0 x=60.0 y=130.0 --></transition>
42
+ <transition event="left" target="displayed">
43
+ <invoke src="highlight_left" type="x-mint"></invoke>
44
+ <!-- edge-path [displayed] x=30.0 y=220.0 x=30.0 y=120.0 --></transition>
45
+ <transition event="right" target="displayed">
46
+ <invoke src="highlight_right" type="x-mint"></invoke>
47
+ <!-- edge-path [displayed] x=270.0 y=220.0 x=270.0 y=120.0 --></transition>
48
+ </state>
49
+ <state id="init_js"><!-- node-size-and-position x=90.0 y=50.0 w=100.0 h=30.0 -->
50
+ <transition target="displayed"></transition>
51
+ </state>
52
+ </state>
53
+ <state id="refreshing"><!-- node-size-and-position x=320.0 y=110.0 w=70.0 h=40.0 -->
54
+ <transition target="displaying"></transition>
55
+ </state>
56
+ </state>
57
+ </parallel>
58
+ </scxml>
@@ -0,0 +1,48 @@
1
+ module MINT
2
+
3
+
4
+ class CarouFredSelImage < Image
5
+
6
+ def send_displayed
7
+ parent = AIO.get("aui",self.name).parent
8
+ cio = CIO.get("cui-gfx",parent.name)
9
+ cio.process_event :child_displayed
10
+ end
11
+
12
+ end
13
+
14
+ class CarouFredSel < CIC
15
+
16
+ property :items, Integer, :default => 1
17
+ property :circular, Boolean, :default => false
18
+ property :infinite, Boolean, :default => false
19
+ property :auto, Boolean, :default => false
20
+ property :scroll_items, String, :default => "page"
21
+ property :scroll_fx, String, :default => "none"
22
+ property :scroll_duration, Integer, :default => 200
23
+
24
+ def getSCXML
25
+ "#{File.dirname(__FILE__)}/CarouFredSel.scxml"
26
+ end
27
+
28
+ #functions called from scxml
29
+
30
+ def display_children
31
+ children = MINT::AISinglePresence.get("aui",self.name).children
32
+ @number_of_children =children.length
33
+
34
+ end
35
+
36
+ def is_last_child?
37
+ p "islast:#{@number_of_children}"
38
+ @number_of_children == 0
39
+ end
40
+
41
+ def receive_displayed
42
+ @number_of_children -= 1
43
+ p "after reduction #{@number_of_children}"
44
+ end
45
+
46
+ end
47
+
48
+ end
@@ -0,0 +1,57 @@
1
+ <scxml initial="initialized" name="CIC" version="0.9" xmlns="http://www.w3.org/2005/07/scxml"><!-- node-size-and-position x=0.0 y=0.0 w=885.0 h=723.0 -->
2
+ <state id="initialized"><!-- node-size-and-position x=220.0 y=130.0 w=100.0 h=40.0 -->
3
+ <transition event="position" target="positioning"></transition>
4
+ </state>
5
+ <state id="positioning"><!-- node-size-and-position x=220.0 y=220.0 w=100.0 h=40.0 -->
6
+ <transition event="calculated" target="positioned">
7
+ <invoke src="store_calculated_values_in_model" type="x-mint"></invoke>
8
+ </transition>
9
+ </state>
10
+ <state id="positioned"><!-- node-size-and-position x=220.0 y=320.0 w=100.0 h=40.0 -->
11
+ <transition event="display" target="displaying"></transition>
12
+ <transition event="hide" target="hidden"></transition>
13
+ </state>
14
+ <state id="displaying" initial="init_js"><!-- node-size-and-position x=380.0 y=270.0 w=280.0 h=240.0 -->
15
+ <transition event="disable" target="disabled"></transition>
16
+ <transition event="hide" target="hidden"></transition>
17
+ <transition event="refresh" target="refreshing"></transition>
18
+ <state id="displayed"><!-- node-size-and-position x=90.0 y=100.0 w=100.0 h=30.0 -->
19
+ <transition event="highlight" target="highlighted"><!-- edge-path [highlighted] x=80.0 y=160.0 pointx=0.0 pointy=18.0 offsetx=19.0 offsety=-14.0 --></transition>
20
+ </state>
21
+ <state id="highlighted"><!-- node-size-and-position x=90.0 y=190.0 w=100.0 h=30.0 -->
22
+ <transition event="unhighlight" target="displayed"><!-- edge-path [displayed] x=180.0 y=160.0 --></transition>
23
+ <transition event="up" target="displayed">
24
+ <invoke src="highlight_up" type="x-mint"></invoke>
25
+ <!-- edge-path [displayed] x=220.0 y=200.0 x=220.0 y=120.0 pointx=0.0 pointy=-10.0 offsetx=0.0 offsety=5.0 --></transition>
26
+ <transition event="down" target="displayed">
27
+ <invoke src="highlight_down" type="x-mint"></invoke>
28
+ <!-- edge-path [displayed] x=50.0 y=200.0 x=50.0 y=120.0 --></transition>
29
+ <transition event="left" target="displayed">
30
+ <invoke src="highlight_left" type="x-mint"></invoke>
31
+ <!-- edge-path [displayed] x=20.0 y=210.0 x=20.0 y=110.0 --></transition>
32
+ <transition event="right" target="displayed">
33
+ <invoke src="highlight_right" type="x-mint"></invoke>
34
+ <!-- edge-path [displayed] x=260.0 y=210.0 x=260.0 y=110.0 --></transition>
35
+ </state>
36
+ <state id="init_js"><!-- node-size-and-position x=90.0 y=40.0 w=100.0 h=30.0 -->
37
+ <transition target="displayed"></transition>
38
+ </state>
39
+ </state>
40
+ <state id="disabled"><!-- node-size-and-position x=570.0 y=140.0 w=110.0 h=40.0 -->
41
+ <transition event="hide" target="hidden"></transition>
42
+ </state>
43
+ <state id="hidden"><!-- node-size-and-position x=400.0 y=140.0 w=110.0 h=40.0 -->
44
+ <transition event="position" target="positioning"></transition>
45
+ <transition event="display" target="displaying"><!-- edge-path [displaying] x=410.0 y=240.0 --></transition>
46
+ <transition event="refresh" target="refreshing_while_hidden"><!-- edge-path [refreshing_while_hidden] x=490.0 y=110.0 pointx=0.0 pointy=-39.0 offsetx=10.0 offsety=-15.0 --></transition>
47
+ </state>
48
+ <state id="refreshing"><!-- node-size-and-position x=720.0 y=350.0 w=100.0 h=50.0 -->
49
+ <onentry>
50
+ <invoke src="refresh_children" type="x-mint"></invoke>
51
+ </onentry>
52
+ <transition target="displaying"><!-- edge-path [displaying] x=700.0 y=420.0 --></transition>
53
+ </state>
54
+ <state id="refreshing_while_hidden"><!-- node-size-and-position x=370.0 y=50.0 w=150.0 h=40.0 -->
55
+ <transition target="hidden"></transition>
56
+ </state>
57
+ </scxml>
@@ -0,0 +1,54 @@
1
+ <scxml initial="initialized" name="CIO" version="0.9" xmlns="http://www.w3.org/2005/07/scxml"><!-- node-size-and-position x=0.0 y=0.0 w=885.0 h=723.0 -->
2
+ <state id="initialized"><!-- node-size-and-position x=220.0 y=130.0 w=100.0 h=40.0 -->
3
+ <transition event="position" target="positioning"></transition>
4
+ </state>
5
+ <state id="positioning"><!-- node-size-and-position x=220.0 y=220.0 w=100.0 h=40.0 -->
6
+ <transition event="calculated" target="positioned">
7
+ <invoke src="store_calculated_values_in_model" type="x-mint"></invoke>
8
+ </transition>
9
+ </state>
10
+ <state id="positioned"><!-- node-size-and-position x=220.0 y=320.0 w=100.0 h=40.0 -->
11
+ <transition event="display" target="displaying"></transition>
12
+ <transition event="hide" target="hidden"></transition>
13
+ </state>
14
+ <state id="displaying" initial="init_js"><!-- node-size-and-position x=380.0 y=270.0 w=280.0 h=240.0 -->
15
+ <transition event="disable" target="disabled"></transition>
16
+ <transition event="hide" target="hidden"></transition>
17
+ <transition event="refresh" target="refreshing"></transition>
18
+ <state id="displayed"><!-- node-size-and-position x=90.0 y=100.0 w=100.0 h=30.0 -->
19
+ <transition event="highlight" target="highlighted"><!-- edge-path [highlighted] x=80.0 y=160.0 pointx=0.0 pointy=18.0 offsetx=19.0 offsety=-14.0 --></transition>
20
+ </state>
21
+ <state id="highlighted"><!-- node-size-and-position x=90.0 y=190.0 w=100.0 h=30.0 -->
22
+ <transition event="unhighlight" target="displayed"><!-- edge-path [displayed] x=180.0 y=160.0 --></transition>
23
+ <transition event="up" target="displayed">
24
+ <invoke src="highlight_up" type="x-mint"></invoke>
25
+ <!-- edge-path [displayed] x=220.0 y=200.0 x=220.0 y=120.0 pointx=0.0 pointy=-10.0 offsetx=0.0 offsety=5.0 --></transition>
26
+ <transition event="down" target="displayed">
27
+ <invoke src="highlight_down" type="x-mint"></invoke>
28
+ <!-- edge-path [displayed] x=50.0 y=200.0 x=50.0 y=120.0 --></transition>
29
+ <transition event="left" target="displayed">
30
+ <invoke src="highlight_left" type="x-mint"></invoke>
31
+ <!-- edge-path [displayed] x=20.0 y=210.0 x=20.0 y=110.0 --></transition>
32
+ <transition event="right" target="displayed">
33
+ <invoke src="highlight_right" type="x-mint"></invoke>
34
+ <!-- edge-path [displayed] x=260.0 y=210.0 x=260.0 y=110.0 --></transition>
35
+ </state>
36
+ <state id="init_js"><!-- node-size-and-position x=90.0 y=40.0 w=100.0 h=30.0 -->
37
+ <transition target="displayed"></transition>
38
+ </state>
39
+ </state>
40
+ <state id="disabled"><!-- node-size-and-position x=570.0 y=140.0 w=110.0 h=40.0 -->
41
+ <transition event="hide" target="hidden"></transition>
42
+ </state>
43
+ <state id="hidden"><!-- node-size-and-position x=400.0 y=140.0 w=110.0 h=40.0 -->
44
+ <transition event="position" target="positioning"></transition>
45
+ <transition event="display" target="displaying"><!-- edge-path [displaying] x=410.0 y=240.0 --></transition>
46
+ <transition event="refresh" target="refreshing_while_hidden"><!-- edge-path [refreshing_while_hidden] x=490.0 y=110.0 pointx=0.0 pointy=-39.0 offsetx=10.0 offsety=-15.0 --></transition>
47
+ </state>
48
+ <state id="refreshing"><!-- node-size-and-position x=720.0 y=350.0 w=100.0 h=50.0 -->
49
+ <transition target="displaying"><!-- edge-path [displaying] x=700.0 y=420.0 --></transition>
50
+ </state>
51
+ <state id="refreshing_while_hidden"><!-- node-size-and-position x=370.0 y=50.0 w=150.0 h=40.0 -->
52
+ <transition target="hidden"></transition>
53
+ </state>
54
+ </scxml>
@@ -0,0 +1,67 @@
1
+ <scxml initial="initialized" name="RadioButton" version="0.9" xmlns="http://www.w3.org/2005/07/scxml"><!-- node-size-and-position x=0.0 y=0.0 w=890.0 h=1000.0 -->
2
+ <state id="initialized"><!-- node-size-and-position x=220.0 y=130.0 w=100.0 h=40.0 -->
3
+ <transition event="position" target="positioning"></transition>
4
+ </state>
5
+ <state id="positioning"><!-- node-size-and-position x=220.0 y=220.0 w=100.0 h=40.0 -->
6
+ <transition event="calculated" target="positioned">
7
+ <invoke src="store_calculated_values_in_model" type="x-mint"></invoke>
8
+ </transition>
9
+ </state>
10
+ <state id="positioned"><!-- node-size-and-position x=220.0 y=320.0 w=100.0 h=40.0 -->
11
+ <transition event="display" target="p"></transition>
12
+ <transition event="hide" target="hidden"></transition>
13
+ </state>
14
+ <parallel id="p"><!-- node-size-and-position x=380.0 y=270.0 w=480.0 h=730.0 -->
15
+ <transition event="disable" target="disabled"></transition>
16
+ <transition event="hide" target="hidden"></transition>
17
+ <state id="s" initial="unselected"><!-- node-size-and-position x=290.0 y=30.0 w=180.0 h=240.0 -->
18
+ <state id="selected"><!-- node-size-and-position x=50.0 y=170.0 w=100.0 h=30.0 -->
19
+ <transition event="unselect" target="unselected"></transition>
20
+ </state>
21
+ <state id="unselected"><!-- node-size-and-position x=50.0 y=70.0 w=100.0 h=30.0 -->
22
+ <transition event="select" target="selected"><!-- edge-path [selected] x=40.0 y=130.0 --></transition>
23
+ </state>
24
+ </state>
25
+ <state id="d"><!-- node-size-and-position x=0.0 y=30.0 w=280.0 h=360.0 -->
26
+ <state id="displaying" initial="displayed"><!-- node-size-and-position x=10.0 y=30.0 w=270.0 h=170.0 -->
27
+ <transition event="refresh" target="refreshing"><!-- edge-path [refreshing] x=100.0 y=230.0 --></transition>
28
+ <state id="displayed"><!-- node-size-and-position x=80.0 y=40.0 w=100.0 h=30.0 -->
29
+ <transition event="highlight" target="highlighted"><!-- edge-path [highlighted] x=70.0 y=100.0 pointx=0.0 pointy=18.0 offsetx=19.0 offsety=-14.0 --></transition>
30
+ </state>
31
+ <state id="highlighted"><!-- node-size-and-position x=80.0 y=130.0 w=100.0 h=30.0 -->
32
+ <transition event="unhighlight" target="displayed"><!-- edge-path [displayed] x=170.0 y=100.0 --></transition>
33
+ <transition event="up" target="displayed">
34
+ <invoke src="highlight_up" type="x-mint"></invoke>
35
+ <!-- edge-path [displayed] x=210.0 y=140.0 x=210.0 y=60.0 pointx=0.0 pointy=-10.0 offsetx=0.0 offsety=5.0 --></transition>
36
+ <transition event="down" target="displayed">
37
+ <invoke src="highlight_down" type="x-mint"></invoke>
38
+ <!-- edge-path [displayed] x=40.0 y=140.0 x=40.0 y=60.0 --></transition>
39
+ <transition event="left" target="displayed">
40
+ <invoke src="highlight_left" type="x-mint"></invoke>
41
+ <!-- edge-path [displayed] x=10.0 y=150.0 x=10.0 y=50.0 --></transition>
42
+ <transition event="right" target="displayed">
43
+ <invoke src="highlight_right" type="x-mint"></invoke>
44
+ <!-- edge-path [displayed] x=250.0 y=150.0 x=250.0 y=50.0 --></transition>
45
+ </state>
46
+ </state>
47
+ <state id="refreshing"><!-- node-size-and-position x=100.0 y=260.0 w=70.0 h=40.0 -->
48
+ <transition target="displaying"></transition>
49
+ </state>
50
+ </state>
51
+ <state id="m" initial="unmarked"><!-- node-size-and-position x=290.0 y=290.0 w=180.0 h=240.0 -->
52
+ <state id="marked"><!-- node-size-and-position x=50.0 y=170.0 w=100.0 h=30.0 -->
53
+ <transition event="unmark" target="unmarked"></transition>
54
+ </state>
55
+ <state id="unmarked"><!-- node-size-and-position x=50.0 y=70.0 w=100.0 h=30.0 -->
56
+ <transition event="mark" target="marked"><!-- edge-path [marked] x=40.0 y=130.0 --></transition>
57
+ </state>
58
+ </state>
59
+ </parallel>
60
+ <state id="disabled"><!-- node-size-and-position x=570.0 y=140.0 w=110.0 h=40.0 -->
61
+ <transition event="hide" target="hidden"></transition>
62
+ </state>
63
+ <state id="hidden"><!-- node-size-and-position x=400.0 y=140.0 w=110.0 h=40.0 -->
64
+ <transition event="position" target="positioning"></transition>
65
+ <transition event="display" target="p"><!-- edge-path [p] x=410.0 y=240.0 --></transition>
66
+ </state>
67
+ </scxml>
@@ -1,204 +1,67 @@
1
- module MINT
2
1
  require "MINT-core/model/cui/gfx/CIO"
3
-
4
2
  require "MINT-core/model/cui/gfx/CIC"
5
- class Button < CIO
6
- end
3
+ require "MINT-core/model/cui/gfx/button"
7
4
 
8
- class Image < CIO
9
- property :path, String
10
- end
11
5
 
12
- class Selectable_sync_callback < CIO_sync_callback
13
- def sync_aio_to_unchosen
14
- true
6
+ module MINT
7
+ class Image < CIO
8
+ property :path, String
15
9
  end
16
10
 
17
- def sync_aio_to_chosen
18
- true
19
- end
20
- end
21
- # Abstract class to handle objects that can be selected
22
- class Selectable < CIO
23
- def initialize_statemachine
24
- if @statemachine.blank?
25
-
26
- @statemachine = Statemachine.build do
27
-
28
- superstate :CIO do
29
- trans :initialized,:position,:positioning
30
- trans :positioning,:calculated,:positioned, :store_calculated_values_in_model
31
- trans :positioned, :display, :presenting
32
- trans :disabled, :hide, :hidden
33
- trans :hidden,:display, :presenting
34
-
35
-
36
- parallel :p do
37
- statemachine :s1 do
38
- superstate :presenting do
39
- on_entry :sync_aio_to_presented
40
-
41
- event :hide, :hidden
42
-
43
- state :displayed do
44
- on_entry :sync_aio_to_defocus
45
- end
46
-
47
- state :highlighted do
48
- on_entry :sync_aio_to_focused
49
- end
50
-
51
- trans :displayed, :highlight, :highlighted
52
- trans :highlighted,:unhighlight, :displayed
53
- trans :highlighted, :up, :displayed, :highlight_up
54
- trans :highlighted, :down, :displayed, :highlight_down
55
- trans :highlighted, :left, :displayed, :highlight_left
56
- trans :highlighted, :right, :displayed, :highlight_right
57
-
58
- event :disable, :disabled
59
-
60
- end
61
- end
62
- statemachine :s2 do
63
- superstate :selection do
64
- trans :listed, :select, :selected
65
- trans :selected, :select, :listed
66
-
67
- state :listed do
68
- on_entry :sync_aio_to_unchosen
69
- end
70
-
71
- state :selected do
72
- on_entry :sync_aio_to_chosen
73
- end
74
- end
75
- end
76
- end
77
- end
78
- end
79
- end
80
- end
81
11
 
82
- def sync_event(event)
83
- process_event(event, Selectable_sync_callback.new)
84
- end
12
+ class Slider < CIO
85
13
 
86
- def sync_aio_to_unchosen
87
- aio = MINT::AIINChoose.first(:name=>self.name)
88
- if (aio and not aio.is_in? :unchosen)
89
- aio.sync_event(:unchoose)
90
- end
91
- true
92
14
  end
93
15
 
94
- def sync_aio_to_chosen
95
- aio = MINT::AIINChoose.first(:name=>self.name)
96
- if (aio and not aio.is_in? :chosen)
97
- aio.sync_event(:choose)
98
- end
99
- true
16
+ class MinimalOutputSlider < CIO
17
+
100
18
  end
101
- end
102
19
 
103
- class FurnitureItem < Selectable
104
- property :title, String
105
- property :price, String
106
- property :image, String
107
- property :description, String
108
- end
20
+ class MinimalVerticalOutputSlider < CIO
21
+
22
+ end
23
+
24
+ class ProgressBar < CIO
109
25
 
110
- class SingleHighlight < CIC
111
26
  end
112
27
 
28
+ class HTMLHead < CIO
29
+ property :css, String
30
+ property :js, String
31
+ end
113
32
 
114
- class ARFrame < CIO
33
+ #
34
+ #class FurnitureItem < Selectable
35
+ # property :title, String
36
+ # property :price, String
37
+ # property :image, String
38
+ # property :description, String
39
+ #end
115
40
 
116
- end
41
+ class SingleHighlight < CIC
42
+ end
117
43
 
118
- class CheckBox < Selectable
119
- end
120
44
 
121
- class CheckBoxGroup < CIC
122
- end
45
+ class ARFrame < CIO
123
46
 
124
- class RadioButton < Selectable
125
- end
47
+ end
126
48
 
127
- class MarkableRadioButton < RadioButton
128
- def initialize_statemachine
129
- if @statemachine.blank?
130
-
131
- @statemachine = Statemachine.build do
132
-
133
- superstate :CIO do
134
- trans :initialized,:position,:positioning
135
- trans :positioning,:calculated,:positioned, :store_calculated_values_in_model
136
- trans :positioned, :display, :presenting
137
- trans :disabled, :hide, :hidden
138
- trans :hidden,:display, :presenting
139
-
140
-
141
- parallel :p do
142
- statemachine :s1 do
143
- superstate :presenting do
144
- on_entry :sync_aio_to_presented
145
-
146
- state :displayed do
147
- on_entry :sync_aio_to_defocus
148
- end
149
-
150
- state :highlighted do
151
- on_entry :sync_aio_to_focused
152
- end
153
-
154
- trans :displayed, :highlight, :highlighted
155
- trans :highlighted,:unhighlight, :displayed
156
- trans :highlighted, :up, :displayed, :highlight_up
157
- trans :highlighted, :down, :displayed, :highlight_down
158
- trans :highlighted, :left, :displayed, :highlight_left
159
- trans :highlighted, :right, :displayed, :highlight_right
160
-
161
- event :disable, :disabled
162
- event :hide, :hidden
163
-
164
- end
165
- end
166
- statemachine :s2 do
167
- superstate :selection do
168
- trans :listed, :select, :selected
169
- trans :selected, :select, :listed
170
-
171
- state :listed do
172
- on_entry :sync_aio_to_unchosen
173
- end
174
-
175
- state :selected do
176
- on_entry :sync_aio_to_chosen
177
- end
178
- end
179
- end
180
- statemachine :s3 do
181
- superstate :marker do
182
- trans :unmarked, :mark, :marked
183
- trans :marked, :unmark, :unmarked
184
- end
185
- end
186
- end
187
- end
188
- end
189
- end
49
+ #class CheckBox < Selectable
50
+ #end
51
+
52
+ class CheckBoxGroup < CIC
190
53
  end
191
- end
192
54
 
193
- class RadioButtonGroup < CIC
194
- end
55
+ require "MINT-core/model/cui/gfx/RadioButton"
56
+ require "MINT-core/model/cui/gfx/RadioButtonGroup"
57
+ require "MINT-core/model/cui/gfx/MarkableRadioButton"
195
58
 
196
- class BasicText < CIO
197
- end
59
+ class BasicText < CIO
60
+ end
198
61
 
199
- class Label <CIO
62
+ class Label <CIO
63
+ end
200
64
  end
201
65
 
202
- require "MINT-core/model/cui/gfx/screen"
203
66
 
204
- end
67
+ require "MINT-core/model/cui/gfx/caroufredsel"