lacci 0.2.1

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 (559) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +85 -0
  3. data/.ruby-version +1 -0
  4. data/.vscode/extensions.json +5 -0
  5. data/.yardopts +12 -0
  6. data/CHANGELOG.md +19 -0
  7. data/CODE_OF_CONDUCT.md +84 -0
  8. data/CONTRIBUTING.md +20 -0
  9. data/Gemfile +24 -0
  10. data/LICENSE.txt +21 -0
  11. data/README.md +178 -0
  12. data/Rakefile +15 -0
  13. data/bin/console +15 -0
  14. data/bin/setup +8 -0
  15. data/dev.yml +7 -0
  16. data/docs/static/PKGBUILD +47 -0
  17. data/docs/static/Shoes.icns +0 -0
  18. data/docs/static/avatar.png +0 -0
  19. data/docs/static/code_highlighter.js +188 -0
  20. data/docs/static/code_highlighter_ruby.js +26 -0
  21. data/docs/static/icon-debug.png +0 -0
  22. data/docs/static/icon-error.png +0 -0
  23. data/docs/static/icon-info.png +0 -0
  24. data/docs/static/icon-warn.png +0 -0
  25. data/docs/static/listbox_button1.png +0 -0
  26. data/docs/static/listbox_button2.png +0 -0
  27. data/docs/static/man-app.png +0 -0
  28. data/docs/static/man-builds.png +0 -0
  29. data/docs/static/man-builds1.png +0 -0
  30. data/docs/static/man-editor-notepad.png +0 -0
  31. data/docs/static/man-editor-osx.png +0 -0
  32. data/docs/static/man-ele-background.png +0 -0
  33. data/docs/static/man-ele-border.png +0 -0
  34. data/docs/static/man-ele-button.png +0 -0
  35. data/docs/static/man-ele-check.png +0 -0
  36. data/docs/static/man-ele-editbox.png +0 -0
  37. data/docs/static/man-ele-editline.png +0 -0
  38. data/docs/static/man-ele-image.png +0 -0
  39. data/docs/static/man-ele-listbox.png +0 -0
  40. data/docs/static/man-ele-progress.png +0 -0
  41. data/docs/static/man-ele-radio.png +0 -0
  42. data/docs/static/man-ele-shape.png +0 -0
  43. data/docs/static/man-ele-textblock.png +0 -0
  44. data/docs/static/man-ele-video.png +0 -0
  45. data/docs/static/man-intro-dmg.png +0 -0
  46. data/docs/static/man-intro-exe.png +0 -0
  47. data/docs/static/man-look-tiger.png +0 -0
  48. data/docs/static/man-look-ubuntu.png +0 -0
  49. data/docs/static/man-look-vista.png +0 -0
  50. data/docs/static/man-run-osx.png +0 -0
  51. data/docs/static/man-run-vista.png +0 -0
  52. data/docs/static/man-run-xp.png +0 -0
  53. data/docs/static/man-shot1.png +0 -0
  54. data/docs/static/manual-en.txt +3529 -0
  55. data/docs/static/manual-ja.txt +2829 -0
  56. data/docs/static/manual.css +171 -0
  57. data/docs/static/manual.md +3528 -0
  58. data/docs/static/menu-corner1.png +0 -0
  59. data/docs/static/menu-corner2.png +0 -0
  60. data/docs/static/menu-gray.png +0 -0
  61. data/docs/static/menu-left.png +0 -0
  62. data/docs/static/menu-right.png +0 -0
  63. data/docs/static/menu-top.png +0 -0
  64. data/docs/static/shoes-dmg.jpg +0 -0
  65. data/docs/static/shoes-icon-blue.png +0 -0
  66. data/docs/static/shoes-icon.png +0 -0
  67. data/docs/static/shoes-manual-apps.gif +0 -0
  68. data/docs/static/shoes_main_window.png +0 -0
  69. data/docs/static/stripe.png +0 -0
  70. data/docs/static/stubs/blank.exe +0 -0
  71. data/docs/static/stubs/blank.hfz +0 -0
  72. data/docs/static/stubs/blank.run +375 -0
  73. data/docs/static/stubs/cocoa-install +0 -0
  74. data/docs/static/stubs/sh-install +49 -0
  75. data/docs/static/stubs/shoes-stub-inject.exe +0 -0
  76. data/docs/static/stubs/shoes-stub.exe +0 -0
  77. data/docs/static/tutor-back.png +0 -0
  78. data/docs/yard/catscradle.md +44 -0
  79. data/docs/yard/template/default/fulldoc/html/setup.rb +13 -0
  80. data/docs/yard/template/default/layout/html/setup.rb +9 -0
  81. data/examples/backdround_with_image.rb +16 -0
  82. data/examples/bloopsaphone/working/1901_by_Aanand_Prasad.rb +478 -0
  83. data/examples/bloopsaphone/working/b1.rb +64 -0
  84. data/examples/bloopsaphone/working/b2.rb +36 -0
  85. data/examples/bloopsaphone/working/bloops_test.rb +41 -0
  86. data/examples/bloopsaphone/working/bloopsaphone_theme_song_by_why.rb +31 -0
  87. data/examples/bloopsaphone/working/feepogram.rb +67 -0
  88. data/examples/bloopsaphone/working/simpsons_theme_song_by_why.rb +14 -0
  89. data/examples/bloopsaphone/working/tune_cheeky_drat.rb +210 -0
  90. data/examples/button.rb +10 -0
  91. data/examples/button_alert.rb +6 -0
  92. data/examples/button_go_away.rb +6 -0
  93. data/examples/button_with_position_and_size.rb +7 -0
  94. data/examples/coffee.rb +14 -0
  95. data/examples/download.rb +5 -0
  96. data/examples/download_and_show_image.rb +28 -0
  97. data/examples/edit_box.rb +8 -0
  98. data/examples/edit_line.rb +8 -0
  99. data/examples/fill.rb +25 -0
  100. data/examples/flow.rb +11 -0
  101. data/examples/fonts.rb +6 -0
  102. data/examples/gen.rb +140 -0
  103. data/examples/get_headers.rb +10 -0
  104. data/examples/hello_world.rb +3 -0
  105. data/examples/highlander.rb +87 -0
  106. data/examples/image/clickable_image.rb +5 -0
  107. data/examples/image/image.rb +3 -0
  108. data/examples/image/image_size.rb +7 -0
  109. data/examples/image/image_with_position_and_size.rb +3 -0
  110. data/examples/info.rb +9 -0
  111. data/examples/legacy/not_checked/expert/colours.rb +105 -0
  112. data/examples/legacy/not_checked/expert/curve-animation.rb +31 -0
  113. data/examples/legacy/not_checked/expert/curve-control-point.rb +51 -0
  114. data/examples/legacy/not_checked/expert/custom-list-box.rb +53 -0
  115. data/examples/legacy/not_checked/expert/definr.rb +23 -0
  116. data/examples/legacy/not_checked/expert/funnies.rb +56 -0
  117. data/examples/legacy/not_checked/expert/minesweeper.rb +267 -0
  118. data/examples/legacy/not_checked/expert/othello.rb +318 -0
  119. data/examples/legacy/not_checked/expert/pong.rb +62 -0
  120. data/examples/legacy/not_checked/expert/tankspank.rb +385 -0
  121. data/examples/legacy/not_checked/expert/tooltips.rb +45 -0
  122. data/examples/legacy/not_checked/expert/url.rb +37 -0
  123. data/examples/legacy/not_checked/expert/video-player.rb +256 -0
  124. data/examples/legacy/not_checked/good/_why-stories.rb +44 -0
  125. data/examples/legacy/not_checked/good/_why-stories.yaml +387 -0
  126. data/examples/legacy/not_checked/good/arc.rb +37 -0
  127. data/examples/legacy/not_checked/good/cardflip.rb +141 -0
  128. data/examples/legacy/not_checked/good/clock.rb +51 -0
  129. data/examples/legacy/not_checked/good/console.rb +21 -0
  130. data/examples/legacy/not_checked/good/follow.rb +26 -0
  131. data/examples/legacy/not_checked/good/image-rotate.rb +14 -0
  132. data/examples/legacy/not_checked/good/paris.svg +7236 -0
  133. data/examples/legacy/not_checked/good/path-animation.rb +46 -0
  134. data/examples/legacy/not_checked/good/plots.rb +100 -0
  135. data/examples/legacy/not_checked/good/reminder.rb +174 -0
  136. data/examples/legacy/not_checked/good/svgview.rb +113 -0
  137. data/examples/legacy/not_checked/good/vjot.rb +56 -0
  138. data/examples/legacy/not_checked/shoes-contrib/.gitignore +2 -0
  139. data/examples/legacy/not_checked/shoes-contrib/README.md +34 -0
  140. data/examples/legacy/not_checked/shoes-contrib/animation/animate-ovals.rb +21 -0
  141. data/examples/legacy/not_checked/shoes-contrib/animation/flowers.rb +59 -0
  142. data/examples/legacy/not_checked/shoes-contrib/animation/happy-trails.rb +31 -0
  143. data/examples/legacy/not_checked/shoes-contrib/animation/mice-satellites.rb +27 -0
  144. data/examples/legacy/not_checked/shoes-contrib/animation/oval-motion.rb +12 -0
  145. data/examples/legacy/not_checked/shoes-contrib/animation/pink-bubbles.rb +34 -0
  146. data/examples/legacy/not_checked/shoes-contrib/animation/pulsate.rb +18 -0
  147. data/examples/legacy/not_checked/shoes-contrib/animation/rotating-star.rb +18 -0
  148. data/examples/legacy/not_checked/shoes-contrib/app/download-and-save.rb +11 -0
  149. data/examples/legacy/not_checked/shoes-contrib/app/download.rb +10 -0
  150. data/examples/legacy/not_checked/shoes-contrib/app/get-google.rb +11 -0
  151. data/examples/legacy/not_checked/shoes-contrib/app/mouse-detection.rb +7 -0
  152. data/examples/legacy/not_checked/shoes-contrib/app/resizeable-false.rb +6 -0
  153. data/examples/legacy/not_checked/shoes-contrib/art/bubble-bullseye.rb +23 -0
  154. data/examples/legacy/not_checked/shoes-contrib/art/faded.rb +17 -0
  155. data/examples/legacy/not_checked/shoes-contrib/art/fill-oval.rb +5 -0
  156. data/examples/legacy/not_checked/shoes-contrib/art/mask.rb +15 -0
  157. data/examples/legacy/not_checked/shoes-contrib/art/oval-gradient.rb +6 -0
  158. data/examples/legacy/not_checked/shoes-contrib/art/star-gradient.rb +4 -0
  159. data/examples/legacy/not_checked/shoes-contrib/basic/basic-edit-box.rb +8 -0
  160. data/examples/legacy/not_checked/shoes-contrib/basic/basic-new-window.rb +8 -0
  161. data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval-image.rb +8 -0
  162. data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval-shape.rb +8 -0
  163. data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval.rb +6 -0
  164. data/examples/legacy/not_checked/shoes-contrib/basic/class-book.rb +43 -0
  165. data/examples/legacy/not_checked/shoes-contrib/basic/class-book.yaml +387 -0
  166. data/examples/legacy/not_checked/shoes-contrib/basic/clock.rb +6 -0
  167. data/examples/legacy/not_checked/shoes-contrib/basic/edit-stack +14 -0
  168. data/examples/legacy/not_checked/shoes-contrib/basic/gradient-shoes.rb +7 -0
  169. data/examples/legacy/not_checked/shoes-contrib/basic/list_box-shape-report.rb +19 -0
  170. data/examples/legacy/not_checked/shoes-contrib/basic/rect-arrow.rb +7 -0
  171. data/examples/legacy/not_checked/shoes-contrib/basic/scribble.rb +8 -0
  172. data/examples/legacy/not_checked/shoes-contrib/basic/search.rb +32 -0
  173. data/examples/legacy/not_checked/shoes-contrib/basic/shoes-notes.rb +16 -0
  174. data/examples/legacy/not_checked/shoes-contrib/basic/url-shoes-subclassing.rb +24 -0
  175. data/examples/legacy/not_checked/shoes-contrib/browser.rb +21 -0
  176. data/examples/legacy/not_checked/shoes-contrib/elements/background-column.rb +3 -0
  177. data/examples/legacy/not_checked/shoes-contrib/elements/background.rb +4 -0
  178. data/examples/legacy/not_checked/shoes-contrib/elements/basic-fps.rb +6 -0
  179. data/examples/legacy/not_checked/shoes-contrib/elements/border-cat.rb +6 -0
  180. data/examples/legacy/not_checked/shoes-contrib/elements/button-block.rb +8 -0
  181. data/examples/legacy/not_checked/shoes-contrib/elements/check-mate.rb +15 -0
  182. data/examples/legacy/not_checked/shoes-contrib/elements/common-styles.rb +13 -0
  183. data/examples/legacy/not_checked/shoes-contrib/elements/displace-animation.rb +13 -0
  184. data/examples/legacy/not_checked/shoes-contrib/elements/edit_box-character-count.rb +7 -0
  185. data/examples/legacy/not_checked/shoes-contrib/elements/edit_line-character-count.rb +7 -0
  186. data/examples/legacy/not_checked/shoes-contrib/elements/image-icon.rb +3 -0
  187. data/examples/legacy/not_checked/shoes-contrib/elements/list_box-select-class.rb +13 -0
  188. data/examples/legacy/not_checked/shoes-contrib/elements/list_box.rb +6 -0
  189. data/examples/legacy/not_checked/shoes-contrib/elements/move-flow-animate.rb +13 -0
  190. data/examples/legacy/not_checked/shoes-contrib/elements/phat-button.rb +7 -0
  191. data/examples/legacy/not_checked/shoes-contrib/elements/popup.rb +7 -0
  192. data/examples/legacy/not_checked/shoes-contrib/elements/progress-bar.rb +10 -0
  193. data/examples/legacy/not_checked/shoes-contrib/elements/radio-dreamcast-favs.rb +17 -0
  194. data/examples/legacy/not_checked/shoes-contrib/elements/timer.rb +6 -0
  195. data/examples/legacy/not_checked/shoes-contrib/elements/width-introspec.rb +8 -0
  196. data/examples/legacy/not_checked/shoes-contrib/events/background-hover.rb +11 -0
  197. data/examples/legacy/not_checked/shoes-contrib/events/motion-detect.rb +9 -0
  198. data/examples/legacy/not_checked/shoes-contrib/events/pressed-key.rb +6 -0
  199. data/examples/legacy/not_checked/shoes-contrib/expert/expert-funnies.rb +51 -0
  200. data/examples/legacy/not_checked/shoes-contrib/expert/expert-irb.rb +112 -0
  201. data/examples/legacy/not_checked/shoes-contrib/expert/expert-othello.rb +319 -0
  202. data/examples/legacy/not_checked/shoes-contrib/good/good-arc.rb +37 -0
  203. data/examples/legacy/not_checked/shoes-contrib/good/good-clock.rb +51 -0
  204. data/examples/legacy/not_checked/shoes-contrib/good/good-follow.rb +26 -0
  205. data/examples/legacy/not_checked/shoes-contrib/good/good-reminder.rb +174 -0
  206. data/examples/legacy/not_checked/shoes-contrib/good/good-vjot.rb +56 -0
  207. data/examples/legacy/not_checked/shoes-contrib/kernel/ask.rb +4 -0
  208. data/examples/legacy/not_checked/shoes-contrib/kernel/ask_color.rb +4 -0
  209. data/examples/legacy/not_checked/shoes-contrib/kernel/ask_open_file.rb +4 -0
  210. data/examples/legacy/not_checked/shoes-contrib/kernel/ask_save_file.rb +7 -0
  211. data/examples/legacy/not_checked/shoes-contrib/kernel/confirm.rb +3 -0
  212. data/examples/legacy/not_checked/shoes-contrib/kernel/debug.rb +4 -0
  213. data/examples/legacy/not_checked/shoes-contrib/kernel/exit.rb +5 -0
  214. data/examples/legacy/not_checked/shoes-contrib/kernel/font.rb +5 -0
  215. data/examples/legacy/not_checked/shoes-contrib/kernel/fonts.rb +3 -0
  216. data/examples/legacy/not_checked/shoes-contrib/manipulation/append-slot.rb +9 -0
  217. data/examples/legacy/not_checked/shoes-contrib/manipulation/clear-slot.rb +6 -0
  218. data/examples/legacy/not_checked/shoes-contrib/manipulation/prepend-slot.rb +6 -0
  219. data/examples/legacy/not_checked/shoes-contrib/manipulation/roll.rb +17 -0
  220. data/examples/legacy/not_checked/shoes-contrib/position/gutter-margin.rb +5 -0
  221. data/examples/legacy/not_checked/shoes-contrib/position/stack-width.rb +3 -0
  222. data/examples/legacy/not_checked/shoes-contrib/simple/simple-accordion.rb +75 -0
  223. data/examples/legacy/not_checked/shoes-contrib/simple/simple-anim-shapes.rb +17 -0
  224. data/examples/legacy/not_checked/shoes-contrib/simple/simple-anim-text.rb +13 -0
  225. data/examples/legacy/not_checked/shoes-contrib/simple/simple-arc.rb +23 -0
  226. data/examples/legacy/not_checked/shoes-contrib/simple/simple-bounce.rb +24 -0
  227. data/examples/legacy/not_checked/shoes-contrib/simple/simple-calc.rb +70 -0
  228. data/examples/legacy/not_checked/shoes-contrib/simple/simple-chipmunk.rb +26 -0
  229. data/examples/legacy/not_checked/shoes-contrib/simple/simple-control-sizes.rb +24 -0
  230. data/examples/legacy/not_checked/shoes-contrib/simple/simple-curve.rb +26 -0
  231. data/examples/legacy/not_checked/shoes-contrib/simple/simple-dialogs.rb +29 -0
  232. data/examples/legacy/not_checked/shoes-contrib/simple/simple-downloader.rb +27 -0
  233. data/examples/legacy/not_checked/shoes-contrib/simple/simple-draw.rb +13 -0
  234. data/examples/legacy/not_checked/shoes-contrib/simple/simple-editor.rb +28 -0
  235. data/examples/legacy/not_checked/shoes-contrib/simple/simple-form.rb +28 -0
  236. data/examples/legacy/not_checked/shoes-contrib/simple/simple-form.shy +0 -0
  237. data/examples/legacy/not_checked/shoes-contrib/simple/simple-mask.rb +21 -0
  238. data/examples/legacy/not_checked/shoes-contrib/simple/simple-menu.rb +31 -0
  239. data/examples/legacy/not_checked/shoes-contrib/simple/simple-menu1.rb +35 -0
  240. data/examples/legacy/not_checked/shoes-contrib/simple/simple-rubygems.rb +29 -0
  241. data/examples/legacy/not_checked/shoes-contrib/simple/simple-slide.rb +45 -0
  242. data/examples/legacy/not_checked/shoes-contrib/simple/simple-sphere.rb +28 -0
  243. data/examples/legacy/not_checked/shoes-contrib/simple/simple-sqlite3.rb +13 -0
  244. data/examples/legacy/not_checked/shoes-contrib/simple/simple-timer.rb +13 -0
  245. data/examples/legacy/not_checked/shoes-contrib/simple/simple-video.rb +13 -0
  246. data/examples/legacy/not_checked/shoes-contrib/styles/alignment.rb +4 -0
  247. data/examples/legacy/not_checked/shoes-contrib/styles/attachment.rb +5 -0
  248. data/examples/legacy/not_checked/shoes-contrib/styles/emphasis.rb +3 -0
  249. data/examples/legacy/not_checked/shoes-contrib/styles/gradient-angle.rb +3 -0
  250. data/examples/legacy/not_checked/shoes-contrib/styles/para-methods.rb +5 -0
  251. data/examples/legacy/not_checked/shoes-contrib/styles/para-red-underlined.rb +3 -0
  252. data/examples/legacy/not_checked/shoes-contrib/styles/para-style-method.rb +4 -0
  253. data/examples/legacy/not_checked/shoes-dep-samples/expert-game-of-life.rb +243 -0
  254. data/examples/legacy/not_checked/shoes-dep-samples/expert-othello.rb +319 -0
  255. data/examples/legacy/not_checked/shoes-dep-samples/good-clock.rb +51 -0
  256. data/examples/legacy/not_checked/shoes-dep-samples/good-follow.rb +26 -0
  257. data/examples/legacy/not_checked/shoes-dep-samples/good-reminder.rb +174 -0
  258. data/examples/legacy/not_checked/shoes-dep-samples/good-vjot.rb +56 -0
  259. data/examples/legacy/not_checked/shoes-dep-samples/simple-accordion.rb +75 -0
  260. data/examples/legacy/not_checked/shoes-dep-samples/simple-anim-shapes.rb +17 -0
  261. data/examples/legacy/not_checked/shoes-dep-samples/simple-anim-text.rb +13 -0
  262. data/examples/legacy/not_checked/shoes-dep-samples/simple-arc.rb +23 -0
  263. data/examples/legacy/not_checked/shoes-dep-samples/simple-bounce.rb +24 -0
  264. data/examples/legacy/not_checked/shoes-dep-samples/simple-calc.rb +70 -0
  265. data/examples/legacy/not_checked/shoes-dep-samples/simple-chipmunk.rb +26 -0
  266. data/examples/legacy/not_checked/shoes-dep-samples/simple-control-sizes.rb +24 -0
  267. data/examples/legacy/not_checked/shoes-dep-samples/simple-curve.rb +26 -0
  268. data/examples/legacy/not_checked/shoes-dep-samples/simple-dialogs.rb +29 -0
  269. data/examples/legacy/not_checked/shoes-dep-samples/simple-draw.rb +13 -0
  270. data/examples/legacy/not_checked/shoes-dep-samples/simple-editor.rb +28 -0
  271. data/examples/legacy/not_checked/shoes-dep-samples/simple-form.rb +28 -0
  272. data/examples/legacy/not_checked/shoes-dep-samples/simple-form.shy +0 -0
  273. data/examples/legacy/not_checked/shoes-dep-samples/simple-mask.rb +21 -0
  274. data/examples/legacy/not_checked/shoes-dep-samples/simple-menu.rb +31 -0
  275. data/examples/legacy/not_checked/shoes-dep-samples/simple-menu1.rb +35 -0
  276. data/examples/legacy/not_checked/shoes-dep-samples/simple-rubygems.rb +29 -0
  277. data/examples/legacy/not_checked/shoes-dep-samples/simple-slide.rb +45 -0
  278. data/examples/legacy/not_checked/shoes-dep-samples/simple-sphere.rb +28 -0
  279. data/examples/legacy/not_checked/shoes-dep-samples/simple-sqlite3.rb +13 -0
  280. data/examples/legacy/not_checked/shoes-dep-samples/simple-timer.rb +13 -0
  281. data/examples/legacy/not_checked/shoes-dep-samples/simple-video.rb +13 -0
  282. data/examples/legacy/not_checked/shoes3-tests/AnemicCinema1926marcelDuchampCut.mp4 +0 -0
  283. data/examples/legacy/not_checked/shoes3-tests/button/button.rb +53 -0
  284. data/examples/legacy/not_checked/shoes3-tests/cache/cache.rb +41 -0
  285. data/examples/legacy/not_checked/shoes3-tests/combo/combo.rb +24 -0
  286. data/examples/legacy/not_checked/shoes3-tests/curl/bare.rb +34 -0
  287. data/examples/legacy/not_checked/shoes3-tests/curl/downloader.rb +40 -0
  288. data/examples/legacy/not_checked/shoes3-tests/curl/m1.rb +11 -0
  289. data/examples/legacy/not_checked/shoes3-tests/curl/m2.rb +12 -0
  290. data/examples/legacy/not_checked/shoes3-tests/curl/m3.rb +11 -0
  291. data/examples/legacy/not_checked/shoes3-tests/curl/m4.rb +5 -0
  292. data/examples/legacy/not_checked/shoes3-tests/curl/typ.rb +30 -0
  293. data/examples/legacy/not_checked/shoes3-tests/cursor/c1.rb +21 -0
  294. data/examples/legacy/not_checked/shoes3-tests/decoration.rb +14 -0
  295. data/examples/legacy/not_checked/shoes3-tests/dialogs/ask.rb +6 -0
  296. data/examples/legacy/not_checked/shoes3-tests/dialogs/confirm.rb +6 -0
  297. data/examples/legacy/not_checked/shoes3-tests/editbox/editbox.rb +36 -0
  298. data/examples/legacy/not_checked/shoes3-tests/editline/editline.rb +27 -0
  299. data/examples/legacy/not_checked/shoes3-tests/events/button.rb +32 -0
  300. data/examples/legacy/not_checked/shoes3-tests/events/button.yaml +40 -0
  301. data/examples/legacy/not_checked/shoes3-tests/events/capture.rb +57 -0
  302. data/examples/legacy/not_checked/shoes3-tests/events/chipmunk.yaml +47 -0
  303. data/examples/legacy/not_checked/shoes3-tests/events/event0.rb +8 -0
  304. data/examples/legacy/not_checked/shoes3-tests/events/event1.rb +51 -0
  305. data/examples/legacy/not_checked/shoes3-tests/events/event1.yaml +26 -0
  306. data/examples/legacy/not_checked/shoes3-tests/events/event2.rb +46 -0
  307. data/examples/legacy/not_checked/shoes3-tests/events/event3.rb +44 -0
  308. data/examples/legacy/not_checked/shoes3-tests/events/event4.rb +65 -0
  309. data/examples/legacy/not_checked/shoes3-tests/events/event5.rb +17 -0
  310. data/examples/legacy/not_checked/shoes3-tests/events/event6.rb +51 -0
  311. data/examples/legacy/not_checked/shoes3-tests/events/replay.rb +60 -0
  312. data/examples/legacy/not_checked/shoes3-tests/gapp/fullscreen.rb +38 -0
  313. data/examples/legacy/not_checked/shoes3-tests/gapp/icon.rb +56 -0
  314. data/examples/legacy/not_checked/shoes3-tests/gapp/mon1.rb +46 -0
  315. data/examples/legacy/not_checked/shoes3-tests/gapp/settings1.rb +22 -0
  316. data/examples/legacy/not_checked/shoes3-tests/gapp/title1.rb +34 -0
  317. data/examples/legacy/not_checked/shoes3-tests/indian.m4a +0 -0
  318. data/examples/legacy/not_checked/shoes3-tests/menus/event.rb +33 -0
  319. data/examples/legacy/not_checked/shoes3-tests/menus/menu1.rb +8 -0
  320. data/examples/legacy/not_checked/shoes3-tests/menus/menu2.rb +25 -0
  321. data/examples/legacy/not_checked/shoes3-tests/menus/menu3.rb +103 -0
  322. data/examples/legacy/not_checked/shoes3-tests/menus/menu4.rb +41 -0
  323. data/examples/legacy/not_checked/shoes3-tests/menus/tests.txt +42 -0
  324. data/examples/legacy/not_checked/shoes3-tests/opacity.rb +13 -0
  325. data/examples/legacy/not_checked/shoes3-tests/plot/^IRX.R +5219 -0
  326. data/examples/legacy/not_checked/shoes3-tests/plot/^SPX +5219 -0
  327. data/examples/legacy/not_checked/shoes3-tests/plot/cstest.rb +51 -0
  328. data/examples/legacy/not_checked/shoes3-tests/plot/gr1.rb +73 -0
  329. data/examples/legacy/not_checked/shoes3-tests/plot/gr2.rb +40 -0
  330. data/examples/legacy/not_checked/shoes3-tests/plot/gr3.rb +47 -0
  331. data/examples/legacy/not_checked/shoes3-tests/plot/gr4.rb +35 -0
  332. data/examples/legacy/not_checked/shoes3-tests/plot/gr5.rb +31 -0
  333. data/examples/legacy/not_checked/shoes3-tests/plot/gr6.rb +35 -0
  334. data/examples/legacy/not_checked/shoes3-tests/plot/gr7.rb +37 -0
  335. data/examples/legacy/not_checked/shoes3-tests/plot/grcsv.rb +219 -0
  336. data/examples/legacy/not_checked/shoes3-tests/plot/manual.rb +40 -0
  337. data/examples/legacy/not_checked/shoes3-tests/progress/progress.rb +29 -0
  338. data/examples/legacy/not_checked/shoes3-tests/radio/clear.rb +20 -0
  339. data/examples/legacy/not_checked/shoes3-tests/radio/group.rb +18 -0
  340. data/examples/legacy/not_checked/shoes3-tests/radio/multiple.rb +32 -0
  341. data/examples/legacy/not_checked/shoes3-tests/radio/nogroup.rb +9 -0
  342. data/examples/legacy/not_checked/shoes3-tests/simpletest.svg +14 -0
  343. data/examples/legacy/not_checked/shoes3-tests/spinner.rb +15 -0
  344. data/examples/legacy/not_checked/shoes3-tests/svg.rb +208 -0
  345. data/examples/legacy/not_checked/shoes3-tests/switch/switch.rb +28 -0
  346. data/examples/legacy/not_checked/shoes3-tests/systray/back.rb +20 -0
  347. data/examples/legacy/not_checked/shoes3-tests/systray/note.rb +17 -0
  348. data/examples/legacy/not_checked/shoes3-tests/terminal/cursor.rb +27 -0
  349. data/examples/legacy/not_checked/shoes3-tests/terminal/ed.rb +65 -0
  350. data/examples/legacy/not_checked/shoes3-tests/terminal/el.rb +50 -0
  351. data/examples/legacy/not_checked/shoes3-tests/terminal/logattr.rb +31 -0
  352. data/examples/legacy/not_checked/shoes3-tests/tests_color.rb +138 -0
  353. data/examples/legacy/not_checked/shoes3-tests/tests_svg.rb +228 -0
  354. data/examples/legacy/not_checked/shoes3-tests/tests_video_vlc.rb +186 -0
  355. data/examples/legacy/not_checked/shoes3-tests/tooltips.rb +20 -0
  356. data/examples/legacy/not_checked/shoes3-tests/video_vlc.rb +242 -0
  357. data/examples/legacy/not_checked/shoes3-tests/wheel/wheel1.rb +21 -0
  358. data/examples/legacy/not_checked/simple/accordion.rb +81 -0
  359. data/examples/legacy/not_checked/simple/anim-shapes.rb +17 -0
  360. data/examples/legacy/not_checked/simple/anim-text.rb +13 -0
  361. data/examples/legacy/not_checked/simple/arc.rb +23 -0
  362. data/examples/legacy/not_checked/simple/bounce.rb +24 -0
  363. data/examples/legacy/not_checked/simple/chipmunk.rb +26 -0
  364. data/examples/legacy/not_checked/simple/control-sizes.rb +24 -0
  365. data/examples/legacy/not_checked/simple/curve-control-points.rb +24 -0
  366. data/examples/legacy/not_checked/simple/curve.rb +26 -0
  367. data/examples/legacy/not_checked/simple/dialogs.rb +29 -0
  368. data/examples/legacy/not_checked/simple/downloader.rb +40 -0
  369. data/examples/legacy/not_checked/simple/downloader1.rb +31 -0
  370. data/examples/legacy/not_checked/simple/draw.rb +13 -0
  371. data/examples/legacy/not_checked/simple/editor.rb +28 -0
  372. data/examples/legacy/not_checked/simple/form.rb +30 -0
  373. data/examples/legacy/not_checked/simple/image.rb +21 -0
  374. data/examples/legacy/not_checked/simple/info.rb +78 -0
  375. data/examples/legacy/not_checked/simple/mask.rb +21 -0
  376. data/examples/legacy/not_checked/simple/mask2.rb +27 -0
  377. data/examples/legacy/not_checked/simple/menu.rb +31 -0
  378. data/examples/legacy/not_checked/simple/menu1.rb +35 -0
  379. data/examples/legacy/not_checked/simple/slide.rb +45 -0
  380. data/examples/legacy/not_checked/simple/sphere.rb +28 -0
  381. data/examples/legacy/not_checked/superleg.rb +244 -0
  382. data/examples/legacy/working/shoes-contrib/basic/a-poem.rb +24 -0
  383. data/examples/legacy/working/shoes-contrib/basic/basic-blocks-instances.rb +7 -0
  384. data/examples/legacy/working/shoes-contrib/basic/basic-blocks.rb +7 -0
  385. data/examples/legacy/working/shoes-contrib/basic/basic-slot.rb +8 -0
  386. data/examples/legacy/working/shoes-contrib/basic/intro.rb +20 -0
  387. data/examples/legacy/working/shoes-contrib/basic/two-column.rb +12 -0
  388. data/examples/legacy/working/shoes-contrib/elements/edit_box.rb +6 -0
  389. data/examples/legacy/working/shoes-contrib/kernel/alert.rb +3 -0
  390. data/examples/legacy/working/simple/calc.rb +71 -0
  391. data/examples/legacy/working/simple/sqlite3.rb +27 -0
  392. data/examples/legacy/working/simple/timer.rb +13 -0
  393. data/examples/line.rb +5 -0
  394. data/examples/link.rb +20 -0
  395. data/examples/list_box.rb +8 -0
  396. data/examples/local_fonts.rb +4 -0
  397. data/examples/local_images.rb +4 -0
  398. data/examples/motion_events.rb +20 -0
  399. data/examples/para/collection_of_arguments.rb +9 -0
  400. data/examples/para/hello_world.rb +5 -0
  401. data/examples/para/hide_and_show.rb +9 -0
  402. data/examples/para/rainbow.rb +11 -0
  403. data/examples/para/rainbow_2.rb +11 -0
  404. data/examples/para/sizes.rb +11 -0
  405. data/examples/para/sizes_2.rb +12 -0
  406. data/examples/para/strong.rb +3 -0
  407. data/examples/para_text_widgets.rb +4 -0
  408. data/examples/parse_xl_funnies.rb +58 -0
  409. data/examples/pirate.png +0 -0
  410. data/examples/raw_flow.rb +11 -0
  411. data/examples/ruby_racer.rb +50 -0
  412. data/examples/selfitude.rb +18 -0
  413. data/examples/shapes/arc.rb +8 -0
  414. data/examples/shapes/shapes.rb +8 -0
  415. data/examples/shapes/shapes_fill.rb +10 -0
  416. data/examples/shapes/star.rb +5 -0
  417. data/examples/shoes_school.rb +66 -0
  418. data/examples/shoes_splorer.rb +150 -0
  419. data/examples/simple_slides.rb +73 -0
  420. data/examples/skip_ci/parrot.rb +22 -0
  421. data/examples/skip_ci/say.rb +20 -0
  422. data/examples/sleepless.rb +26 -0
  423. data/examples/slots.rb +10 -0
  424. data/examples/spacing.rb +18 -0
  425. data/examples/span.rb +6 -0
  426. data/examples/stack/background.rb +35 -0
  427. data/examples/stack/border.rb +11 -0
  428. data/examples/stack/gradients.rb +6 -0
  429. data/examples/stack/raw_stack.rb +8 -0
  430. data/examples/stack/stack.rb +27 -0
  431. data/examples/text_change.rb +4 -0
  432. data/examples/text_sizes.rb +10 -0
  433. data/examples/timmy.rb +109 -0
  434. data/examples/title_and_resize.rb +3 -0
  435. data/examples/video.rb +10 -0
  436. data/exe/scarpe +107 -0
  437. data/fonts/Pacifico.ttf +0 -0
  438. data/lib/scarpe/alert.rb +19 -0
  439. data/lib/scarpe/arc.rb +49 -0
  440. data/lib/scarpe/background.rb +14 -0
  441. data/lib/scarpe/base64.rb +27 -0
  442. data/lib/scarpe/border.rb +16 -0
  443. data/lib/scarpe/button.rb +35 -0
  444. data/lib/scarpe/cats_cradle.rb +255 -0
  445. data/lib/scarpe/colors.rb +215 -0
  446. data/lib/scarpe/display_service.rb +185 -0
  447. data/lib/scarpe/document_root.rb +20 -0
  448. data/lib/scarpe/download.rb +123 -0
  449. data/lib/scarpe/edit_box.rb +29 -0
  450. data/lib/scarpe/edit_line.rb +25 -0
  451. data/lib/scarpe/fill.rb +23 -0
  452. data/lib/scarpe/flow.rb +18 -0
  453. data/lib/scarpe/font.rb +14 -0
  454. data/lib/scarpe/glibui/README.md +34 -0
  455. data/lib/scarpe/glibui/alert.rb +65 -0
  456. data/lib/scarpe/glibui/app.rb +27 -0
  457. data/lib/scarpe/glibui/background.rb +18 -0
  458. data/lib/scarpe/glibui/border.rb +22 -0
  459. data/lib/scarpe/glibui/button.rb +38 -0
  460. data/lib/scarpe/glibui/dimensions.rb +22 -0
  461. data/lib/scarpe/glibui/document_root.rb +33 -0
  462. data/lib/scarpe/glibui/edit_box.rb +44 -0
  463. data/lib/scarpe/glibui/edit_line.rb +43 -0
  464. data/lib/scarpe/glibui/flow.rb +33 -0
  465. data/lib/scarpe/glibui/html.rb +77 -0
  466. data/lib/scarpe/glibui/image.rb +36 -0
  467. data/lib/scarpe/glibui/link.rb +29 -0
  468. data/lib/scarpe/glibui/local_display.rb +62 -0
  469. data/lib/scarpe/glibui/para.rb +84 -0
  470. data/lib/scarpe/glibui/spacing.rb +41 -0
  471. data/lib/scarpe/glibui/stack.rb +33 -0
  472. data/lib/scarpe/glibui/text_widget.rb +30 -0
  473. data/lib/scarpe/glibui/widget.rb +81 -0
  474. data/lib/scarpe/glibui.rb +29 -0
  475. data/lib/scarpe/image.rb +35 -0
  476. data/lib/scarpe/libui/alert.rb +9 -0
  477. data/lib/scarpe/libui/button.rb +18 -0
  478. data/lib/scarpe/libui/colors.rb +157 -0
  479. data/lib/scarpe/libui/core.rb +66 -0
  480. data/lib/scarpe/libui/flow.rb +16 -0
  481. data/lib/scarpe/libui/libui.rb +45 -0
  482. data/lib/scarpe/libui/notepad.md +26 -0
  483. data/lib/scarpe/libui/para.rb +154 -0
  484. data/lib/scarpe/libui/stack.rb +34 -0
  485. data/lib/scarpe/line.rb +25 -0
  486. data/lib/scarpe/link.rb +25 -0
  487. data/lib/scarpe/list_box.rb +25 -0
  488. data/lib/scarpe/logger.rb +159 -0
  489. data/lib/scarpe/para.rb +92 -0
  490. data/lib/scarpe/promises.rb +405 -0
  491. data/lib/scarpe/shape.rb +20 -0
  492. data/lib/scarpe/slot.rb +7 -0
  493. data/lib/scarpe/spacing.rb +9 -0
  494. data/lib/scarpe/span.rb +26 -0
  495. data/lib/scarpe/stack.rb +20 -0
  496. data/lib/scarpe/star.rb +47 -0
  497. data/lib/scarpe/subscription_item.rb +60 -0
  498. data/lib/scarpe/unit_test_helpers.rb +236 -0
  499. data/lib/scarpe/version.rb +5 -0
  500. data/lib/scarpe/video.rb +15 -0
  501. data/lib/scarpe/widgets.rb +35 -0
  502. data/lib/scarpe/wv/alert.rb +65 -0
  503. data/lib/scarpe/wv/app.rb +104 -0
  504. data/lib/scarpe/wv/arc.rb +57 -0
  505. data/lib/scarpe/wv/background.rb +27 -0
  506. data/lib/scarpe/wv/border.rb +24 -0
  507. data/lib/scarpe/wv/button.rb +50 -0
  508. data/lib/scarpe/wv/control_interface.rb +147 -0
  509. data/lib/scarpe/wv/control_interface_test.rb +234 -0
  510. data/lib/scarpe/wv/dimensions.rb +22 -0
  511. data/lib/scarpe/wv/document_root.rb +8 -0
  512. data/lib/scarpe/wv/edit_box.rb +44 -0
  513. data/lib/scarpe/wv/edit_line.rb +43 -0
  514. data/lib/scarpe/wv/fill.rb +30 -0
  515. data/lib/scarpe/wv/flow.rb +24 -0
  516. data/lib/scarpe/wv/font.rb +36 -0
  517. data/lib/scarpe/wv/html.rb +108 -0
  518. data/lib/scarpe/wv/image.rb +41 -0
  519. data/lib/scarpe/wv/line.rb +38 -0
  520. data/lib/scarpe/wv/link.rb +29 -0
  521. data/lib/scarpe/wv/list_box.rb +50 -0
  522. data/lib/scarpe/wv/para.rb +90 -0
  523. data/lib/scarpe/wv/shape.rb +35 -0
  524. data/lib/scarpe/wv/shape_helper.rb +44 -0
  525. data/lib/scarpe/wv/slot.rb +81 -0
  526. data/lib/scarpe/wv/spacing.rb +41 -0
  527. data/lib/scarpe/wv/span.rb +66 -0
  528. data/lib/scarpe/wv/stack.rb +24 -0
  529. data/lib/scarpe/wv/star.rb +64 -0
  530. data/lib/scarpe/wv/subscription_item.rb +50 -0
  531. data/lib/scarpe/wv/text_widget.rb +30 -0
  532. data/lib/scarpe/wv/video.rb +42 -0
  533. data/lib/scarpe/wv/web_wrangler.rb +683 -0
  534. data/lib/scarpe/wv/webview_local_display.rb +73 -0
  535. data/lib/scarpe/wv/webview_relay_display.rb +185 -0
  536. data/lib/scarpe/wv/widget.rb +185 -0
  537. data/lib/scarpe/wv/wv_display_worker.rb +65 -0
  538. data/lib/scarpe/wv.rb +43 -0
  539. data/lib/scarpe/wv_local.rb +6 -0
  540. data/lib/scarpe/wv_relay.rb +6 -0
  541. data/lib/scarpe.rb +29 -0
  542. data/lib/shoes/app.rb +187 -0
  543. data/lib/shoes/constants.rb +26 -0
  544. data/lib/shoes/text_widget.rb +52 -0
  545. data/lib/shoes/widget.rb +209 -0
  546. data/lib/shoes.rb +65 -0
  547. data/logger/debug_web_wrangler.json +4 -0
  548. data/logger/scarpe_wv_test.json +4 -0
  549. data/scarpe-0.2.0.gem +0 -0
  550. data/scarpe.gemspec +44 -0
  551. data/scarpegen.rb +193 -0
  552. data/sig/scarpe.rbs +4 -0
  553. data/templates/basic_class_template.erb +38 -0
  554. data/templates/class_template_with_event_bind.erb +27 -0
  555. data/templates/class_template_with_shapes.erb +43 -0
  556. data/templates/example_template.erb +3 -0
  557. data/templates/module_template.erb +12 -0
  558. data/templates/webview_template.erb +27 -0
  559. metadata +606 -0
@@ -0,0 +1,228 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'test/unit'
4
+ require 'test/unit/ui/console/testrunner'
5
+ require 'svg.rb'
6
+
7
+
8
+ Shoes.app title: "Testing Shoes::Svg", resizable: false do
9
+
10
+ TestRunner = Test::Unit::UI::Console::TestRunner
11
+
12
+ # width, height : 190x110, subid = '#xml_rectangle', 180x100, offsetx = 5, offsety = 5
13
+ XML = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
14
+ <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" id="svg2" viewBox="0 0 190 110" height="110" width="190">
15
+ <defs id="defs4" />
16
+ <metadata id="metadata7">
17
+ <rdf:RDF>
18
+ <cc:Work rdf:about="">
19
+ <dc:format>image/svg+xml</dc:format>
20
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
21
+ <dc:title></dc:title>
22
+ </cc:Work>
23
+ </rdf:RDF>
24
+ </metadata>
25
+ <g transform="translate(0,-942.36216)" id="xml_rectangle">
26
+ <rect y="949.33234" x="6.9701514" height="96.0597" width="176.05969" id="rectangle001" style="opacity:0.98000004;fill:#ff7131;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.94030356;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
27
+ </g>
28
+ </svg>'
29
+
30
+ # width, height : 1000x600, subid = '#test_rectangle', 980x550, offsetx = 5, offsety = 45
31
+ FILE = "simpletest.svg"
32
+
33
+ TESTS = {
34
+ SvgTest0 => { desc: ["Basic Test : simple xml svg, no dimensions\n"],
35
+ cont_args: {},
36
+ widget_args: [XML]
37
+ },
38
+ SvgTest1 => { desc: ["Basic Test : file svg, no dimensions\n",
39
+ "Relying on Shoes app size and svg size (svg is larger than app here)\n",
40
+ "So keep 'resizable: false' for the app style !"],
41
+ cont_args: {},
42
+ widget_args: [FILE]
43
+ },
44
+ SvgTest2 => { desc: ["Simple xml svg, parent dimensions\n"],
45
+ cont_args: {width: 30, height: 20},
46
+ widget_args: [XML]
47
+ },
48
+ SvgTest3 => { desc: ["Simple xml svg, svg method dimensions\n"],
49
+ cont_args: {},
50
+ widget_args: [XML, width: 30, height: 20]
51
+ },
52
+ SvgTest4 => { desc: ["Simple xml svg, parent and svg method dimensions\n"],
53
+ cont_args: {width: 30, height: 25},
54
+ widget_args: [XML, width: 25, height: 20]
55
+ },
56
+ SvgTest5 => { desc: ["Xml svg, Landscape, aspect ratio = false\n"],
57
+ cont_args: {},
58
+ widget_args: [XML, width: 48, height: 32, aspect: false]
59
+ },
60
+ SvgTest5B => { desc: ["Xml svg, Landscape, aspect ratio = 0.5\n"],
61
+ cont_args: {},
62
+ widget_args: [XML, width: 48, height: 32, aspect: 0.5]
63
+ },
64
+ SvgTest5C => { desc: ["Xml svg, Landscape, aspect ratio = 1.5\n"],
65
+ cont_args: {},
66
+ widget_args: [XML, width: 48, height: 32, aspect: 1.5]
67
+ },
68
+ SvgTest6 => { desc: ["Xml svg, Square, aspect ratio = 0.5\n"],
69
+ cont_args: {},
70
+ widget_args: [XML, width: 48, height: 48, aspect: 0.5]
71
+ },
72
+ SvgTest7 => { desc: ["Xml svg, Square, aspect ratio = 1.5\n"],
73
+ cont_args: {},
74
+ widget_args: [XML, width: 48, height: 48, aspect: 1.5]
75
+ },
76
+ SvgTest8 => { desc: ["Xml, group id\n"],
77
+ cont_args: {},
78
+ widget_args: [XML, group: "#xml_rectangle"]
79
+ },
80
+ SvgTest9 => { desc: ["File, group id\n"],
81
+ cont_args: {},
82
+ widget_args: [FILE, group: "#test_rectangle"]
83
+ },
84
+ SvgTest10 => { desc: ["Xml svg, Portrait, aspect ratio = true\n"],
85
+ cont_args: {},
86
+ widget_args: [XML, width: 32, height: 48, aspect: true]
87
+ },
88
+ SvgTest11 => { desc: ["Xml svg, Portrait, aspect ratio = false\n"],
89
+ cont_args: {},
90
+ widget_args: [XML, width: 32, height: 48, aspect: false]
91
+ },
92
+ SvgTest12 => { desc: ["Xml svg, Portrait, aspect ratio = 0.5\n"],
93
+ cont_args: {},
94
+ widget_args: [XML, width: 32, height: 48, aspect: 0.5]
95
+ },
96
+ SvgTest13 => { desc: ["Xml svg, Portrait, aspect ratio = 1.5\n"],
97
+ cont_args: {},
98
+ widget_args: [XML, width: 32, height: 48, aspect: 1.5]
99
+ },
100
+ }
101
+
102
+
103
+ style(Shoes::Para, size: 10)
104
+
105
+ build_test_gui = -> (t, details, silent) do
106
+ # if we try to draw tests widgets in a non visible area, drawing events are not triggered and
107
+ # Test processing hangs (waits) - start event is not fired -
108
+ # So we create a sand_box at top of Shoes app and scroll back there if necessary to
109
+ # make drawing events happening
110
+ app.slot.scroll_top = 0
111
+
112
+ @sand_box.append do
113
+ @cont = flow( **details[:cont_args] ) do
114
+ @svg_obj = svg( *details[:widget_args] )
115
+ end
116
+ end
117
+
118
+ # waiting for shoes asynchronous drawing events to occur.
119
+ @cont.start {
120
+ ## There could be only one console at a time (we can safely call it many times)
121
+ Shoes.terminal unless silent
122
+
123
+ out_level = silent ? TestRunner::SILENT : TestRunner::NORMAL
124
+ @test_result = TestRunner.run(t.suite, {output_level: out_level,
125
+ use_color: true})
126
+
127
+ puts "#{'='*40}\n\n" unless silent
128
+ @sand_box.clear
129
+ @svg_obj = nil
130
+ @sand_box.start { @test_complete = true }
131
+ }
132
+ end
133
+
134
+ stack margin_left: 10, margin_right: 10 do
135
+ para "Launches Shoes terminal to collect results of Tests", align: "center"
136
+
137
+ flow do
138
+ @sand_box = stack(height: 50, width: 279) {}
139
+ flow width: 300 do
140
+ stack do
141
+ flow do
142
+ para "Silent tests : "
143
+ #@no_output = check checked: true
144
+ @no_output = check checked: false
145
+ end
146
+ flow do
147
+ para "stop tests on failure : "
148
+ @stop_on_failure = check checked: false
149
+ end
150
+ end
151
+ @visual = rect 200, 0, 30, 30, 5, fill: white
152
+ end
153
+ end
154
+
155
+ flow margin: [0,0,0,5] do
156
+
157
+ button "run ALL Tests" do
158
+ @got_failure = false
159
+ @visual.style(fill: white)
160
+
161
+ # We have to wait for each test to complete (asynchronous drawing)
162
+ @test_complete = true
163
+ tenum = TESTS.each_with_index
164
+ anm = animate(20) do
165
+
166
+ if @test_complete
167
+ if @test_result && @test_result.error_occurred?
168
+ @test_result = nil
169
+ @visual.style(fill: yellow)
170
+ anm.stop; anm.remove; anm = nil
171
+ elsif @test_result && @test_result.failure_occurred?
172
+ @got_failure = true
173
+
174
+ if @stop_on_failure.checked?
175
+ @visual.style(fill: red)
176
+ anm.stop; anm.remove; anm = nil
177
+ end
178
+ @test_result = nil
179
+ else
180
+ @test_result = nil
181
+ begin
182
+ h,i = tenum.next
183
+
184
+ @test_complete = false
185
+ build_test_gui.call(h[0], h[1], @no_output.checked?)
186
+
187
+ rescue StopIteration
188
+ @visual.style(fill: @got_failure ? red : green)
189
+ anm.stop; anm.remove; anm = nil
190
+ end
191
+ end
192
+ end
193
+ end
194
+ end
195
+
196
+ para " in order of appearance, top to bottom, click below to show detailed tests"
197
+ end
198
+
199
+ flow height: 30, margin_bottom: 5 do
200
+ bg = background "#fff".."#eed"
201
+ hover { |s| bg.fill = "#ddd".."#ba9"; s.refresh_slot }
202
+ leave { |s| bg.fill = "#fff".."#eed"; s.refresh_slot }
203
+ click { |s| @tests_slot.toggle }
204
+
205
+ para "click to see/hide detailed list of tests", margin_left: 50
206
+ end
207
+
208
+ @tests_slot = stack hidden: true do
209
+ TESTS.each do |t, details|
210
+ flow do
211
+ button "run Test" do
212
+ @visual.style(fill: white)
213
+ # always show output (output_level == NORMAL)
214
+ build_test_gui.call(t, details, false)
215
+ end
216
+
217
+ para *(["#{t.to_s} : \n"] << details[:desc])
218
+ end
219
+ end
220
+ end
221
+
222
+ end
223
+
224
+ def cont; @cont end
225
+ def svg_obj; @svg_obj end
226
+ SvgTestBase.init self
227
+
228
+ end
@@ -0,0 +1,186 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'test/unit'
4
+ require 'test/unit/ui/console/testrunner'
5
+ require 'video_vlc.rb'
6
+
7
+ require 'shoes/videoffi'
8
+
9
+ Shoes.app title: "Testing Shoes video" do
10
+
11
+ TestRunner = Test::Unit::UI::Console::TestRunner
12
+
13
+ TESTS = {
14
+ VideoVlcTest0 => { desc: ["Most Basic unique Test : no path/url, no dimensions\n",
15
+ span("Run this first to ensure that video widget works at its bare minimum",
16
+ stroke: darkred)],
17
+ cont_args: {},
18
+ widget_args: ['']
19
+ },
20
+ VideoVlcTest1 => { desc: ["Iinitialisation of video widget without a given path to a media\n",
21
+ "path= method \nvideo widget ", span("Container", weight: 'bold'), " dimensions given "],
22
+ cont_args: {width: 30, height: 20},
23
+ widget_args: ['', bg_color: yellow]
24
+ },
25
+ VideoVlcTest2 => { desc: ["Iinitialisation of video widget without a given path to a media\n",
26
+ "path= method \nvideo ", span("Widget", weight: 'bold'), " dimensions given "],
27
+ cont_args: {},
28
+ widget_args: ['', width: 25, height: 20]
29
+ },
30
+ VideoVlcTest3 => { desc: ["Iinitialisation of video widget without a given path to a media\n",
31
+ "path= method \nvideo ", span("Widget and Container", weight: 'bold'), " dimensions given "],
32
+ cont_args: {width: 35, height: 20},
33
+ widget_args: ['', width: 20, height: 20]
34
+ },
35
+ VideoVlcTest4 => { desc: "no Dimensions provided, relying on video track dimensions",
36
+ cont_args: {},
37
+ widget_args: ['AnemicCinema1926marcelDuchampCut.mp4']
38
+ },
39
+ VideoVlcTest5 => { desc: "Widget background color",
40
+ cont_args: {width: 36, height: 21},
41
+ widget_args: ['', bg_color: yellow ]
42
+ },
43
+ VideoVlcTest6 => { desc: "Passing vlc options to underlaying libvlc_new() C method",
44
+ cont_args: {width: 36, height: 21},
45
+ widget_args: ['AnemicCinema1926marcelDuchampCut.mp4',
46
+ vlc_options: ["--no-xlib", "--no-video-title-show"] ]
47
+ },
48
+ VideoVlcTestAudio => { desc: "audio method + volume, volume= methods",
49
+ cont_args: {width: 35, height: 20},
50
+ widget_args: ['indian.m4a', width: 350, height: 20]
51
+ },
52
+
53
+ }
54
+
55
+
56
+ style(Shoes::Para, size: 10)
57
+
58
+ build_test_gui = -> (t, details, silent) do
59
+ # if we try to draw tests widgets in a non visible area, drawing events are not triggered and
60
+ # Test processing hangs (waits) - start event is not fired -
61
+ # So we create a sand_box at top of Shoes app and scroll back there if necessary to
62
+ # make drawing events happening
63
+ app.slot.scroll_top = 0
64
+
65
+ @sand_box.append do
66
+ @cont = flow( **details[:cont_args] ) do
67
+ @vid =
68
+ if t == VideoVlcTestAudio
69
+ audio( *details[:widget_args] )
70
+ else
71
+ video( *details[:widget_args] )
72
+ end
73
+ end
74
+ end
75
+
76
+ # waiting for shoes asynchronous drawing events to occur.
77
+ @cont.start {
78
+ ## There can be only one shoes terminal (we can safely call it many times)
79
+ Shoes.terminal unless silent
80
+
81
+ out_level = silent ? TestRunner::SILENT : TestRunner::NORMAL
82
+ @test_result = TestRunner.run(t.suite, {output_level: out_level,
83
+ use_color: true})
84
+
85
+ puts "#{'='*40}\n\n" unless silent
86
+ @sand_box.clear
87
+ @vid = nil
88
+ @sand_box.start { @test_complete = true }
89
+ }
90
+ end
91
+
92
+ stack margin_left: 10, margin_right: 10 do
93
+ para "Launches Shoes terminal to collect results of Tests", align: "center"
94
+
95
+ flow do
96
+ @sand_box = stack(height: 50, width: 279) {}
97
+ flow width: 300 do
98
+ stack do
99
+ flow do
100
+ para "Silent tests : "
101
+ #@no_output = check checked: true
102
+ @no_output = check checked: false
103
+ end
104
+ flow do
105
+ para "stop tests on failure : "
106
+ @stop_on_failure = check checked: false
107
+ end
108
+ end
109
+ @visual = rect 200, 0, 30, 30, 5, fill: white
110
+ end
111
+ end
112
+
113
+ flow margin: [0,0,0,5] do
114
+
115
+ button "run ALL Tests" do
116
+ @got_failure = false
117
+ @visual.style(fill: white)
118
+
119
+ # We have to wait for each test to complete (asynchronous drawing)
120
+ @test_complete = true
121
+ tenum = TESTS.each_with_index
122
+ anm = animate(20) do
123
+
124
+ if @test_complete
125
+ if @test_result && @test_result.error_occurred?
126
+ @test_result = nil
127
+ @visual.style(fill: yellow)
128
+ anm.stop; anm.remove; anm = nil
129
+ elsif @test_result && @test_result.failure_occurred?
130
+ @got_failure = true
131
+
132
+ if @stop_on_failure.checked?
133
+ @visual.style(fill: red)
134
+ anm.stop; anm.remove; anm = nil
135
+ end
136
+ @test_result = nil
137
+ else
138
+ @test_result = nil
139
+ begin
140
+ h,i = tenum.next
141
+
142
+ @test_complete = false
143
+ build_test_gui.call(h[0], h[1], @no_output.checked?)
144
+
145
+ rescue StopIteration
146
+ @visual.style(fill: @got_failure ? red : green)
147
+ anm.stop; anm.remove; anm = nil
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
153
+
154
+ para " in order of appearance, top to bottom, click below to show detailed tests"
155
+ end
156
+
157
+ flow height: 30, margin_bottom: 5 do
158
+ bg = background "#fff".."#eed"
159
+ hover { |s| bg.fill = "#ddd".."#ba9"; s.refresh_slot }
160
+ leave { |s| bg.fill = "#fff".."#eed"; s.refresh_slot }
161
+ click { |s| @tests_slot.toggle }
162
+
163
+ para "click to see/hide detailed list of tests", margin_left: 50
164
+ end
165
+
166
+ @tests_slot = stack hidden: true do
167
+ TESTS.each do |t, details|
168
+ flow do
169
+ button "run Test" do
170
+ @visual.style(fill: white)
171
+ # always show output (output_level == NORMAL)
172
+ build_test_gui.call(t, details, false)
173
+ end
174
+
175
+ para *(["#{t.to_s} : \n"] << details[:desc])
176
+ end
177
+ end
178
+ end
179
+
180
+ end
181
+
182
+ def cont; @cont end
183
+ def vid; @vid end
184
+ VideoVlcTestBase.init self
185
+
186
+ end
@@ -0,0 +1,20 @@
1
+ Shoes.app do
2
+ para "Do we have a button tooltip?"
3
+ @btn = button "Quit", tooltip: "kill Shoes" do
4
+ Shoes.quit
5
+ end
6
+ flow do
7
+ @chk = check tooltip: "check button will do something"
8
+ para "watch"
9
+ end
10
+ @eb = edit_box tooltip: "enter something"
11
+ @el = edit_line tooltip: "something you type into"
12
+ @lb = list_box tooltip: "pull it"
13
+ start do
14
+ @btn.tooltip = "This will will exit shoes properly"
15
+ @chk.tooltip = "This will alter reality"
16
+ @eb.tooltip = "Something different"
17
+ @el.tooltip = "you type here"
18
+ @lb.tooltip = "Pick a card, any card"
19
+ end
20
+ end
@@ -0,0 +1,242 @@
1
+ # encoding: UTF-8
2
+
3
+ class VideoVlcTestBase < Test::Unit::TestCase
4
+ class << self
5
+ def init(app)
6
+ @@app = app
7
+ end
8
+ def startup
9
+ @@mediav = "AnemicCinema1926marcelDuchampCut.mp4"
10
+ @@mediaa = "indian.m4a"
11
+ # a fake stream : not relying on internet's mood swings for the test
12
+ @@mediast = "file://#{File.expand_path('./AnemicCinema1926marcelDuchampCut.mp4')}"
13
+ end
14
+
15
+ def shutdown
16
+ @@mediav = nil
17
+ @@mediaa = nil
18
+ @@mediast = nil
19
+ end
20
+ end
21
+
22
+ def setup; end
23
+ def teardown; end
24
+ end
25
+
26
+ class VideoVlcTest0 < VideoVlcTestBase
27
+
28
+ description "no dimensions provided, no path/url, nothing to draw"
29
+ def test_video_noPath_noDim
30
+
31
+ assert_not_nil @@app.vid
32
+ assert_instance_of Shoes::VideoVlc, @@app.vid
33
+ vidc = @@app.vid.instance_variable_get(:@video)
34
+ assert_true vidc.drawable_ready?
35
+
36
+ vlci = @@app.vid.instance_variable_get(:@vlci)
37
+ assert_not_nil vlci
38
+ assert_instance_of Fiddle::Pointer, vlci
39
+ assert_false vlci.null?
40
+
41
+ assert_equal 0, @@app.vid.width
42
+ end
43
+ end
44
+
45
+ class VideoVlcTest1 < VideoVlcTestBase
46
+
47
+ def test_slotDim_noPath
48
+ assert_not_nil @@app.vid
49
+ assert_instance_of Shoes::VideoVlc, @@app.vid
50
+ assert_equal 30, @@app.vid.width
51
+ end
52
+
53
+ def test_slotDim_movie
54
+ @@app.vid.path = @@mediav
55
+
56
+ assert_not_nil @@app.vid
57
+ assert_instance_of Shoes::VideoVlc, @@app.vid
58
+ assert_equal 30, @@app.vid.width
59
+
60
+ assert_equal @@mediav, @@app.vid.path
61
+ assert_true @@app.vid.loaded
62
+ assert_true @@app.vid.have_video_track
63
+ assert_equal 640, @@app.vid.video_track_width
64
+ assert_equal 480, @@app.vid.video_track_height
65
+ assert_true @@app.vid.have_audio_track
66
+ end
67
+
68
+ def test_slotDim_audio
69
+ @@app.vid.path = @@mediaa
70
+
71
+ assert_not_nil @@app.vid
72
+ assert_instance_of Shoes::VideoVlc, @@app.vid
73
+ assert_equal 30, @@app.vid.width
74
+
75
+ assert_equal @@mediaa, @@app.vid.path
76
+ assert_true @@app.vid.loaded
77
+ assert_true @@app.vid.have_audio_track
78
+ assert_nil @@app.vid.have_video_track
79
+ assert_nil @@app.vid.video_track_width
80
+ assert_nil @@app.vid.video_track_height
81
+ end
82
+
83
+ def test_slotDim_stream
84
+ @@app.vid.path = @@mediast
85
+
86
+ assert_not_nil @@app.vid
87
+ assert_instance_of Shoes::VideoVlc, @@app.vid
88
+ assert_equal 30, @@app.vid.width
89
+
90
+ assert_equal @@mediast, @@app.vid.path
91
+ assert_true @@app.vid.loaded
92
+ end
93
+ end
94
+
95
+ class VideoVlcTest2 < VideoVlcTestBase
96
+
97
+ def test_widgetDim_noPath
98
+ assert_not_nil @@app.vid
99
+ assert_instance_of Shoes::VideoVlc, @@app.vid
100
+ assert_equal 25, @@app.vid.width
101
+ end
102
+
103
+ def test_widgetDim_movie
104
+ @@app.vid.path = @@mediav
105
+
106
+ assert_not_nil @@app.vid
107
+ assert_instance_of Shoes::VideoVlc, @@app.vid
108
+ assert_equal 25, @@app.vid.width
109
+
110
+ assert_equal @@mediav, @@app.vid.path
111
+ assert_true @@app.vid.loaded
112
+ assert_true @@app.vid.have_video_track
113
+ assert_equal 640, @@app.vid.video_track_width
114
+ assert_equal 480, @@app.vid.video_track_height
115
+ assert_true @@app.vid.have_audio_track
116
+ end
117
+
118
+ def test_widgetDim_audio
119
+ @@app.vid.path = @@mediaa
120
+
121
+ assert_not_nil @@app.vid
122
+ assert_instance_of Shoes::VideoVlc, @@app.vid
123
+ assert_equal 25, @@app.vid.width
124
+
125
+ assert_equal @@mediaa, @@app.vid.path
126
+ assert_true @@app.vid.loaded
127
+ assert_true @@app.vid.have_audio_track
128
+ assert_nil @@app.vid.have_video_track
129
+ assert_nil @@app.vid.video_track_width
130
+ assert_nil @@app.vid.video_track_height
131
+ end
132
+
133
+ def test_widgetDim_stream
134
+ @@app.vid.path = @@mediast
135
+
136
+ assert_not_nil @@app.vid
137
+ assert_instance_of Shoes::VideoVlc, @@app.vid
138
+ assert_equal 25, @@app.vid.width
139
+
140
+ assert_equal @@mediast, @@app.vid.path
141
+ assert_true @@app.vid.loaded
142
+ end
143
+ end
144
+
145
+ class VideoVlcTest3 < VideoVlcTestBase
146
+
147
+ def test_slotDim_widgetDim_noPath
148
+ assert_not_nil @@app.vid
149
+ assert_instance_of Shoes::VideoVlc, @@app.vid
150
+ assert_equal 20, @@app.vid.width
151
+ end
152
+
153
+ def test_slotDim_widgetDim_movie
154
+ @@app.vid.path = @@mediav
155
+
156
+ assert_not_nil @@app.vid
157
+ assert_instance_of Shoes::VideoVlc, @@app.vid
158
+ assert_equal 20, @@app.vid.width
159
+
160
+ assert_equal @@mediav, @@app.vid.path
161
+ assert_true @@app.vid.loaded
162
+ assert_true @@app.vid.have_video_track
163
+ assert_equal 640, @@app.vid.video_track_width
164
+ assert_equal 480, @@app.vid.video_track_height
165
+ assert_true @@app.vid.have_audio_track
166
+ end
167
+
168
+ def test_slotDim_widgetDim_audio
169
+ @@app.vid.path = @@mediaa
170
+
171
+ assert_not_nil @@app.vid
172
+ assert_instance_of Shoes::VideoVlc, @@app.vid
173
+ assert_equal 20, @@app.vid.width
174
+
175
+ assert_equal @@mediaa, @@app.vid.path
176
+ assert_true @@app.vid.loaded
177
+ assert_true @@app.vid.have_audio_track
178
+ assert_nil @@app.vid.have_video_track
179
+ assert_nil @@app.vid.video_track_width
180
+ assert_nil @@app.vid.video_track_height
181
+ end
182
+
183
+ def test_slotDim_widgetDim_stream
184
+ @@app.vid.path = @@mediast
185
+
186
+ assert_not_nil @@app.vid
187
+ assert_instance_of Shoes::VideoVlc, @@app.vid
188
+ assert_equal 20, @@app.vid.width
189
+
190
+ assert_equal @@mediast, @@app.vid.path
191
+ assert_true @@app.vid.loaded
192
+ end
193
+ end
194
+
195
+ class VideoVlcTest4 < VideoVlcTestBase
196
+ def test_videoTrackDim
197
+ assert_not_nil @@app.vid
198
+ assert_instance_of Shoes::VideoVlc, @@app.vid
199
+
200
+ assert_equal 640, @@app.vid.width
201
+ assert_equal 480, @@app.vid.height
202
+ end
203
+ end
204
+
205
+ class VideoVlcTest5 < VideoVlcTestBase
206
+ def test_backgroundColor
207
+ assert_not_nil @@app.vid
208
+ assert_instance_of Shoes::VideoVlc, @@app.vid
209
+ assert_equal 36, @@app.vid.width
210
+
211
+ assert_equal 255, @@app.vid.style[:bg_color].red
212
+ assert_equal 255, @@app.vid.style[:bg_color].green
213
+ assert_equal 0, @@app.vid.style[:bg_color].blue
214
+ end
215
+ end
216
+
217
+ class VideoVlcTest6 < VideoVlcTestBase
218
+ def test_libvlcOptions
219
+ assert_not_nil @@app.vid
220
+ vlci = @@app.vid.instance_variable_get(:@vlci)
221
+ assert_not_nil vlci
222
+ assert_instance_of Fiddle::Pointer, vlci
223
+ assert_false vlci.null?
224
+ assert_false @@app.vid.style.include?(:vlc_options)
225
+ end
226
+ end
227
+
228
+ class VideoVlcTestAudio < VideoVlcTestBase
229
+ def test_audioMethod
230
+ assert_not_nil @@app.vid
231
+ assert_instance_of Shoes::VideoVlc, @@app.vid
232
+
233
+ assert_equal 0, @@app.vid.width
234
+ assert_true @@app.vid.style[:hidden]
235
+
236
+ assert_equal 85, @@app.vid.volume
237
+ @@app.vid.volume = 72
238
+ assert_equal 72, @@app.vid.volume
239
+ end
240
+ end
241
+
242
+
@@ -0,0 +1,21 @@
1
+ Shoes.app do
2
+ stack height: 200 do
3
+ click do |b,l,t|
4
+ @p.replace "Stack clicked"
5
+ end
6
+ @p = para "None"
7
+ flow width: 200 do
8
+ para "Flow 1"
9
+ wheel do |d,l,t|
10
+ @p.replace "Flow 1 wheel #{d}"
11
+ end
12
+ end
13
+ flow width: 200 do
14
+ para "Flow 2"
15
+ click do |b,l,t|
16
+ @p.replace "Flow 2 clicked"
17
+ end
18
+ end
19
+ end
20
+ wheel {|d,l,t,mods | @p.replace "default slot wheel #{d} #{mods}"}
21
+ end