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,12 @@
1
+
2
+
3
+ Shoes.app do
4
+ banner "Banner"
5
+ title "Title"
6
+ subtitle "Subtitle"
7
+ tagline "Tagline"
8
+ caption "Caption"
9
+ para "Para"
10
+ inscription "Inscription"
11
+ ins "Also inscription"
12
+ end
@@ -0,0 +1,3 @@
1
+ Shoes.app do
2
+ para "Hello world, I'm ", strong("strong")
3
+ end
@@ -0,0 +1,4 @@
1
+ Shoes.app do
2
+ para "This is simple."
3
+ para "This has ", em("emphasis"), " and great ", strong("strength"), " and ", code("coolness"), "."
4
+ end
@@ -0,0 +1,58 @@
1
+ require 'nokogiri'
2
+ require 'open-uri'
3
+ require 'tempfile'
4
+
5
+ class Comic
6
+ attr_reader :rss, :title
7
+
8
+ def initialize(file_path)
9
+ @rss = Nokogiri::XML(File.open(file_path))
10
+ @title = @rss.at("//channel/title").text
11
+ end
12
+
13
+ def items
14
+ @rss.search("//channel/item")
15
+ end
16
+
17
+ def latest_image
18
+ item = @rss.at("//channel/item[1]")
19
+ description = item.at("description").text
20
+ image_url = description.match(/src="([^"]+\.\w+)"/)[1]
21
+ title = item.at("title").text
22
+ [title, image_url]
23
+ end
24
+ end
25
+
26
+ Shoes.app width: 800, height: 600 do
27
+ background "#555"
28
+ @title = "Web Funnies"
29
+
30
+ stack margin: 10 do
31
+ title strong(@title), align: "center", stroke: "#DFA", margin: 0
32
+ para "(loaded from RSS feeds)", align: "center", stroke: "#DFA", margin: 0
33
+
34
+ url = "https://xkcd.com/rss.xml"
35
+ rss_string = URI.open(url).read
36
+
37
+ file = Tempfile.new('download')
38
+ file.write(rss_string)
39
+ file.close
40
+ file_path = file.path
41
+
42
+ c = Comic.new(file_path)
43
+
44
+ stack width: "100%", margin: 10, border: 1 do
45
+ stack do
46
+ background "#333", curve: 4
47
+ caption c.title, stroke: "#CD9", margin: 4
48
+ end
49
+
50
+ title, image_url = c.latest_image
51
+
52
+ flow do
53
+ image image_url
54
+ para strong(title), margin: 8, stroke: white
55
+ end
56
+ end
57
+ end
58
+ end
Binary file
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ Shoes.app(title: "Flow example") do
4
+ flow do
5
+ %w[One Two Three Four Five Six Seven Eight].each do |num|
6
+ stack do
7
+ para num
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,50 @@
1
+ require "benchmark"
2
+ require "stringio"
3
+
4
+ Shoes.app(title: "Ruby Racer") do
5
+ racer1 = nil
6
+ racer2 = nil
7
+
8
+ flow do
9
+ stack width: 0.45, margin: 5 do
10
+ para "Racer 1", size: :caption
11
+ code1 = <<~RUBY
12
+ for i in 1..10
13
+ a = "1"
14
+ end
15
+ RUBY
16
+ racer1 = edit_box(code1, width: "100%", height: 100)
17
+ end
18
+ stack width: 0.45, margin: 5 do
19
+ para "Racer 2", size: :caption
20
+ code2 = <<~RUBY
21
+ 10.times do
22
+ a = "1"
23
+ end
24
+ RUBY
25
+ racer2 = edit_box(code2, width: "100%", height: 100)
26
+ end
27
+ end
28
+
29
+ stack margin: 10 do
30
+ @push = button "Race!"
31
+ @results = para ""
32
+ @push.click {
33
+ @results.replace "And they're off!"
34
+ run = run_benchmark(racer1.text, racer2.text)
35
+ @results.replace "<pre>Results:<br/>#{run}</pre>"
36
+ }
37
+
38
+ def run_benchmark(code1, code2)
39
+ current_stdout = $stdout
40
+ $stdout = StringIO.new
41
+ Benchmark.bmbm do |x|
42
+ x.report("Code 1") { eval(code1) }
43
+ x.report("Code 2") { eval(code2) }
44
+ end
45
+ $stdout.string.gsub("\n", "<br />")
46
+ ensure
47
+ $stdout = current_stdout
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,18 @@
1
+ def printish(msg)
2
+ #$stderr.puts msg
3
+ File.open("/tmp/shoesy_stuff.txt", "a") do |f|
4
+ f.write(msg + "\n")
5
+ end
6
+ end
7
+
8
+ Shoes.app do
9
+ printish "Self top: #{self.inspect}" # It's an instance of Shoes::App, yes
10
+ stack do
11
+ printish "Self in stack: #{self.inspect}" # Yup, here too
12
+ end
13
+ button("Clickity") do
14
+ alert("You clicked me!")
15
+ printish "Self in button handler: #{self.inspect}" # And here too
16
+ end
17
+ end
18
+
@@ -0,0 +1,8 @@
1
+ Shoes.app(height:600) do
2
+ arc 400, 0, 120, 100, 175, 175
3
+ arc 50, 50, 120, 100, 60, 225
4
+ star 230, 100, 6, 50, 25
5
+
6
+ arc 550, 50, 200, 100, Math::PI/2, 3*Math::PI/2
7
+ arc 300, 50, 200, 100, Math::PI/4, Math::PI
8
+ end
@@ -0,0 +1,8 @@
1
+ Shoes.app do
2
+ shape do
3
+ move_to(90, 55)
4
+ line_to(400,10)
5
+ line_to(400,90)
6
+
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ Shoes.app do
2
+ shape do
3
+ fill "blue"
4
+ fill "green"
5
+ line 0,0, 100, 100
6
+ fill "red"
7
+ star 23, 0, 6, 50, 25
8
+ end
9
+ end
10
+
@@ -0,0 +1,5 @@
1
+ Shoes.app do
2
+ star 230, 100, 6, 50, 25
3
+
4
+ end
5
+
@@ -0,0 +1,66 @@
1
+ Shoes.app(title: "Shoes School", height: 800, width: 1000) do
2
+ CHAPTERS = [
3
+ [
4
+ %(
5
+ Shoes.app do
6
+ para "Hello World"
7
+ end
8
+ ),
9
+ %(
10
+ Welcome! To the wide, wild, wonderful world of Shoes. I am your Shoes School instructor, Professor Flopsicle. Shoes lets you
11
+ write nifty desktop apps. In pure Ruby! Don't believe me? Here's one right here!
12
+ Click "run" to run it. You can even play with the code a bit if you want!
13
+
14
+ When you are done, proceed to your next lecture by clicking "Next" below me!
15
+ )
16
+ ],
17
+ [
18
+ %(
19
+ Shoes.app do
20
+ @push = button "Push me"
21
+ @push.click {
22
+ alert "Aha! Click!"
23
+ }
24
+ end
25
+ ),
26
+ %(
27
+ Oh wow, you made it to the second lesson! Umm, well this is _embarrassing_. I never
28
+ thought you would get this far! Give me a bit and we'll have something really nice
29
+ whipped up for you. I swear!
30
+ )
31
+ ]
32
+ ]
33
+
34
+ current_chapter = 0
35
+ stack do
36
+ banner "Shoes School!"
37
+ end
38
+ stack do
39
+ flow do
40
+ IDE = edit_box(CHAPTERS[current_chapter][0], height: 300, width: "100%")
41
+ end
42
+ flow do
43
+ LECTURE = para CHAPTERS[current_chapter][1], size: 30
44
+ end
45
+ flow do
46
+ stack do
47
+ @run = button "Run 🏃", width: 200, height: 50#, top: 109, left: 132
48
+ @run.click {
49
+ puts "I got clicked!"
50
+ # System code to kick this off
51
+ # we'll have a loading splash page on first fireup to run bin setup
52
+ }
53
+ end
54
+ stack do
55
+ @next = button "Next ✅", width: 200, height: 50#, top: 109, left: 132
56
+ @next.click {
57
+ current_chapter += 1
58
+ # not working yet
59
+ # IDE.text = CHAPTERS[current_chapter][0]
60
+ # yeah, I dunno, ivars and local vars giving me trouble. annoying!
61
+ LECTURE.replace(CHAPTERS[current_chapter][1])
62
+ }
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,150 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # It's cool to be able to visualise the Shoes API -- where are various methods available?
4
+
5
+ # Future plan: this would be a *great* opportunity for a Shoes::Widget so that we could
6
+ # have a "show all the methods by category" thing and put it inside various other widgets
7
+ # to see how they all react.
8
+
9
+ # What methods should Shoes have? You can do worse than to check Shoes4 Shoes-core:
10
+ # https://github.com/shoes/shoes4/tree/main/shoes-core/lib/shoes/dsl
11
+ SHOES_API_CATEGORIES = {
12
+ animate: {
13
+ animate: {},
14
+ every: {},
15
+ timer: {},
16
+ },
17
+
18
+ art: {
19
+ arrow: {},
20
+ arc: {},
21
+ line: {},
22
+ oval: {},
23
+ rect: {},
24
+ star: {},
25
+ shape: {},
26
+ mask: {},
27
+ },
28
+
29
+ element: {
30
+ border: {},
31
+ background: {},
32
+ edit_line: {},
33
+ edit_box: {},
34
+ progress: {},
35
+ check: {},
36
+ radio: {},
37
+ list_box: {},
38
+ flow: {},
39
+ stack: {},
40
+ button: {},
41
+ },
42
+
43
+ interaction: {
44
+ mouse: {},
45
+ motion: {},
46
+ resize: {},
47
+ hover: {},
48
+ leave: {},
49
+ keypress: {},
50
+ keyrelease: {},
51
+ append: {},
52
+ visit: {},
53
+ scroll_top: {},
54
+ #"scroll_top=": {},
55
+ clipboard: {},
56
+ #"clipboard=": {},
57
+ download: {},
58
+ gutter: {},
59
+ },
60
+
61
+ media: {
62
+ image: {},
63
+ video: {},
64
+ sound: {},
65
+ },
66
+
67
+ setup: {
68
+ # This is deprecated in recent Shoes, but was once how to install gems
69
+ setup: {},
70
+ },
71
+
72
+ style: {
73
+ style: {},
74
+ fill: {},
75
+ stroke: {},
76
+ cap: {},
77
+ rotate: {},
78
+ strokewidth: {},
79
+ transform: {},
80
+ translate: {},
81
+ nostroke: {},
82
+ nofill: {},
83
+ },
84
+
85
+ text: {
86
+ # Text widgets and similar
87
+ banner: {},
88
+ title: {},
89
+ subtitle: {},
90
+ tagline: {},
91
+ caption: {},
92
+ para: {},
93
+ inscription: {},
94
+
95
+ code: {},
96
+ del: {},
97
+ em: {},
98
+ ins: {},
99
+ sub: {},
100
+ sup: {},
101
+ strong: {},
102
+
103
+ fg: {},
104
+ bg: {},
105
+ link: {},
106
+ span: {},
107
+ },
108
+ }
109
+
110
+ def shoes_api_reactivity(instance)
111
+ reactivity = {}
112
+
113
+ SHOES_API_CATEGORIES.each do |category_name, category|
114
+ cat_data = category.map do |method_name, data| # For now ignore data
115
+ [method_name, instance.respond_to?(method_name)]
116
+ end
117
+
118
+ if cat_data.none? { |_name, reacts| reacts }
119
+ reactivity[category_name] = false
120
+ elsif cat_data.all? { |_name, reacts| reacts }
121
+ reactivity[category_name] = true
122
+ else
123
+ out = {}
124
+ cat_data.each do |name, reacts|
125
+ out[name] = reacts
126
+ end
127
+ reactivity[category_name] = out
128
+ end
129
+ end
130
+
131
+ reactivity
132
+ end
133
+
134
+ Shoes.app(title: "Shoes-splorer!") do
135
+ para "What Shoes methods are available?"
136
+
137
+ shoes_api_reactivity(self).flat_map do |category, cat_reacts|
138
+ if cat_reacts.respond_to?(:each)
139
+ para *(cat_reacts.flat_map do |name, reacts|
140
+ [reacts ? "o" : "x", code(name), " "]
141
+ end), stroke: :orange
142
+ elsif cat_reacts
143
+ # Whole category is true
144
+ para strong(" #{category}[Woot!] "), stroke: :green
145
+ else
146
+ # Whole category is false
147
+ para em(" xxx"), category.to_s, em("xxx "), stroke: :red
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,73 @@
1
+
2
+ Shoes.app(title: 'Shoes Slides', width: 800, height: 600) do
3
+ $slides = [
4
+ {
5
+ title: 'Welcome to Shoes!',
6
+ content: 'Ah, yeah, Shoes!
7
+ Who said nobody knows Shoes? Well, let me introduce you to a feline expert in the art of Ruby Desktop GUI Libs.
8
+
9
+ Meet Professor Whiskers the renowned programmer cat! Not only does he know Shoes, but he\'s also a master of all things Ruby and desktop GUI!
10
+
11
+ if you\'re ready to learn Ruby Desktop GUI Libs with a touch of feline finesse, come join us on this whimsical adventure! Professor Whiskers guarantees a purr-fectly entertaining and enlightening experience, where every step forward is as delightful as a cat chasing a laser pointer.
12
+
13
+ Remember, in the world of programming, there\'s always room for humor, and Professor Whiskers is here to remind us that even the most serious tasks can be approached with a playful attitude. So, put on your coding slippers and let this extraordinary cat guide you through the marvelous world of Shoes Desktop GUI Libs!
14
+
15
+ Meow! join the discord server for more meows!
16
+ ',
17
+ image: "https://img.freepik.com/premium-photo/funny-smart-cat-professor-with-glasses-illustration-generative-ai_845977-709.jpg?w=700&h=300"
18
+ },
19
+ {
20
+ title: 'Behold the teachings of Professor Whiskers! here\'s a shoes for you!',
21
+ content: 'Meow!',
22
+ image: "http://shoesrb.com/manual/static/shoes-icon.png"
23
+ },
24
+ {
25
+ title: 'Path to englightenment',
26
+ content: 'Meowww meow meow meow meow meow meow meow meow meow meow meow meow meow meow meow meow!',
27
+ }
28
+ ]
29
+
30
+ stack do
31
+ $slides.each_with_index do |slide, index|
32
+ border black, strokewidth: 2 do
33
+ flow(margin: 10) do
34
+ para strong("Slide #{index + 1}: #{slide[:title]}"), margin_bottom: 10
35
+ para slide[:content]
36
+ image slide[:image]
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ button 'Previous Slide' do
43
+ prev_slide = self.slide_index - 1
44
+ prev_slide = $slides.length - 1 if prev_slide < 0
45
+ self.slide_index = prev_slide
46
+ end
47
+
48
+ button 'Next Slide' do
49
+ next_slide = self.slide_index + 1
50
+ next_slide = 0 if next_slide >= $slides.length
51
+ self.slide_index = next_slide
52
+ end
53
+
54
+ def slide_index
55
+ @slide_index ||= 0
56
+ end
57
+
58
+ def slide_index=(value)
59
+ @slide_index = value
60
+ update_slide
61
+ end
62
+
63
+ def update_slide
64
+ current_slide = $slides[self.slide_index]
65
+ @title.replace "Slide #{self.slide_index + 1}: #{current_slide[:title]}"
66
+ @content.replace current_slide[:content]
67
+ @image.replace current_slide[:image]
68
+ end
69
+
70
+ @title = para strong("Slide 1: #{$slides[0][:title]}"), margin_bottom: 10
71
+ @content = para $slides[0][:content]
72
+ @image = image($slides[0][:image])
73
+ end
@@ -0,0 +1,22 @@
1
+ # This example is skipped on CI because it makes system calls
2
+
3
+ Shoes.app do
4
+ para "What do you want me to say?"
5
+ @phrase = edit_line("Soon it was a comet and, soon, a blazing monstrosity.", width: "100%")
6
+
7
+ all_voices = `say -v '?'`.lines.map(&:split).map(&:first).uniq.compact
8
+ @selected_voice = all_voices.first
9
+ @voice = para "🗣 #{@selected_voice}"
10
+
11
+ all_voices.each do |voice|
12
+ button voice do
13
+ @voice.replace "🗣 #{voice}"
14
+ @selected_voice = voice
15
+ end
16
+ end
17
+
18
+ @push = button "📣"
19
+ @push.click {
20
+ `say -v '#{@selected_voice}' #{@phrase.text}`
21
+ }
22
+ end
@@ -0,0 +1,20 @@
1
+ Shoes.app do
2
+ para "What do you want me to say?"
3
+ @phrase = edit_line("Soon it was a comet and, soon, a blazing monstrosity.", width: "100%")
4
+
5
+ all_voices = `say -v '?'`.lines.map(&:split).map(&:first).uniq.compact
6
+ @selected_voice = all_voices.first
7
+ @voice = para "🗣 #{@selected_voice}"
8
+
9
+ all_voices.each do |voice|
10
+ button voice do
11
+ @voice.replace "🗣 #{voice}"
12
+ @selected_voice = voice
13
+ end
14
+ end
15
+
16
+ @push = button "📣"
17
+ @push.click {
18
+ `say -v '#{@selected_voice}' #{@phrase.text}`
19
+ }
20
+ end
@@ -0,0 +1,26 @@
1
+ Shoes.app title: "Sleepless", width: 80, height: 120 do
2
+ @push = button "☕️"
3
+ @note = para "😪"
4
+ @push.click {
5
+ if @pid.nil?
6
+ if RUBY_PLATFORM =~ /darwin/
7
+ @pid = spawn("caffeinate -d")
8
+ elsif RUBY_PLATFORM =~ /linux/
9
+ @pid = spawn("xset s off -dpms")
10
+ elsif RUBY_PLATFORM =~ /win32|win64|\.NET/
11
+ @pid = spawn("powercfg -change -monitor-timeout-ac 0")
12
+ end
13
+ @note.replace "😳"
14
+ else
15
+ if RUBY_PLATFORM =~ /darwin/
16
+ system("kill #{@pid}")
17
+ elsif RUBY_PLATFORM =~ /linux/
18
+ system("kill -9 #{@pid}")
19
+ elsif RUBY_PLATFORM =~ /win32|win64|\.NET/
20
+ system("taskkill /pid #{@pid} /f")
21
+ end
22
+ @pid = nil
23
+ @note.replace "😪"
24
+ end
25
+ }
26
+ end
data/examples/slots.rb ADDED
@@ -0,0 +1,10 @@
1
+ Shoes.app do
2
+ flow do
3
+ button "Click"
4
+ button "Clickaty"
5
+ end
6
+ stack do
7
+ button "Boop"
8
+ button "Bip"
9
+ end
10
+ end
@@ -0,0 +1,18 @@
1
+ Shoes.app(title: "Spacing") do
2
+ stack margin: 50 do
3
+ background "purple"
4
+ para "with 50px margin", stroke: "white"
5
+ end
6
+ stack margin: { left: 10, right: 10, bottom: 20 } do
7
+ background "red"
8
+ para "with 10px margin-left and margin-right, and 20px margin-bottom", stroke: "white"
9
+ end
10
+ stack margin: [15, 15, nil, 40] do
11
+ background "blue"
12
+ para "with 15px margin-left and margin-right, and 40px margin-bottom", stroke: "white"
13
+ end
14
+ stack margin_left: 20, margin_right: 30, margin_bottom: 10 do
15
+ background "green"
16
+ para "with 20px margin-left, 30px margin-right, and 10px margin-bottom", stroke: "white"
17
+ end
18
+ end
data/examples/span.rb ADDED
@@ -0,0 +1,6 @@
1
+ Shoes.app :height => 500, :width => 500 do
2
+ stack :margin => 10 do
3
+ para span("TEXT EDITOR", :stroke => "blue", :fill => "green"), " * USE ALT-Q TO QUIT", :stroke => "red"
4
+ end
5
+ span ("text")
6
+ end
@@ -0,0 +1,35 @@
1
+ Shoes.app do
2
+ stack width: 0.33 do
3
+ background "purple"
4
+ button "a button"
5
+ end
6
+ stack width: 0.33 do
7
+ background "red".."green"
8
+ para "Red to green gradient"
9
+ end
10
+ stack width: 0.33 do
11
+ background "purple"
12
+ button "a button"
13
+ flow do
14
+ background "purple"
15
+ button "a button"
16
+ stack width: 0.33 do
17
+ background "purple"
18
+ button "a button"
19
+ button "a button"
20
+ end
21
+ stack width: 0.34 do
22
+ background "purple"
23
+ button "a button"
24
+ end
25
+ end
26
+ flow do
27
+ background "purple"
28
+ button "a button"
29
+ end
30
+ flow do
31
+ background "purple"
32
+ button "a button"
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,11 @@
1
+ Shoes.app do
2
+ stack do
3
+ border "red", strokewidth: 5, curve: 12
4
+ para "Curved Red"
5
+ end
6
+
7
+ stack do
8
+ border "#DDD".."#AAA", strokewidth: 10
9
+ para "Gradient!"
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ Shoes.app do
2
+ stack height: 200, width: 200 do
3
+ border "#090979".."#ac033d", strokewidth: 15
4
+ background "#ac033d".."#090979"
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ Shoes.app do
2
+ stack do
3
+ para "Hello World"
4
+ end
5
+ stack do
6
+ para "Fish"
7
+ end
8
+ end