lacci 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (597) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/Gemfile.lock +79 -0
  4. data/Rakefile +1 -4
  5. data/lib/lacci/scarpe_cli.rb +71 -0
  6. data/lib/lacci/scarpe_core.rb +22 -0
  7. data/lib/lacci/version.rb +13 -0
  8. data/lib/scarpe/niente/app.rb +23 -0
  9. data/lib/scarpe/niente/display_service.rb +62 -0
  10. data/lib/scarpe/niente/drawable.rb +57 -0
  11. data/lib/scarpe/niente/logger.rb +29 -0
  12. data/lib/scarpe/niente/shoes_spec.rb +87 -0
  13. data/lib/scarpe/niente.rb +20 -0
  14. data/lib/shoes/app.rb +165 -43
  15. data/lib/{scarpe → shoes}/background.rb +2 -2
  16. data/lib/{scarpe → shoes}/border.rb +2 -2
  17. data/lib/shoes/builtins.rb +63 -0
  18. data/lib/shoes/changelog.rb +52 -0
  19. data/lib/{scarpe → shoes}/colors.rb +3 -1
  20. data/lib/shoes/constants.rb +24 -3
  21. data/lib/{scarpe → shoes}/display_service.rb +45 -23
  22. data/lib/{scarpe → shoes}/download.rb +7 -7
  23. data/lib/shoes/drawable.rb +380 -0
  24. data/lib/shoes/drawables/arc.rb +49 -0
  25. data/lib/shoes/drawables/arrow.rb +41 -0
  26. data/lib/shoes/drawables/button.rb +73 -0
  27. data/lib/shoes/drawables/check.rb +29 -0
  28. data/lib/{scarpe → shoes/drawables}/document_root.rb +5 -5
  29. data/lib/{scarpe → shoes/drawables}/edit_box.rb +6 -6
  30. data/lib/{scarpe → shoes/drawables}/edit_line.rb +6 -6
  31. data/lib/shoes/drawables/flow.rb +22 -0
  32. data/lib/{scarpe → shoes/drawables}/image.rb +7 -13
  33. data/lib/shoes/drawables/line.rb +20 -0
  34. data/lib/shoes/drawables/link.rb +34 -0
  35. data/lib/shoes/drawables/list_box.rb +56 -0
  36. data/lib/shoes/drawables/para.rb +118 -0
  37. data/lib/shoes/drawables/progress.rb +14 -0
  38. data/lib/shoes/drawables/radio.rb +33 -0
  39. data/lib/shoes/drawables/rect.rb +17 -0
  40. data/lib/shoes/drawables/shape.rb +36 -0
  41. data/lib/shoes/drawables/slot.rb +87 -0
  42. data/lib/{scarpe → shoes/drawables}/span.rb +8 -7
  43. data/lib/{scarpe → shoes/drawables}/stack.rb +10 -4
  44. data/lib/shoes/drawables/star.rb +50 -0
  45. data/lib/shoes/drawables/subscription_item.rb +93 -0
  46. data/lib/shoes/drawables/text_drawable.rb +63 -0
  47. data/lib/shoes/drawables/video.rb +16 -0
  48. data/lib/shoes/drawables/widget.rb +69 -0
  49. data/lib/shoes/drawables.rb +31 -0
  50. data/lib/shoes/errors.rb +28 -0
  51. data/lib/shoes/log.rb +71 -0
  52. data/lib/shoes/ruby_extensions.rb +15 -0
  53. data/lib/shoes/spacing.rb +9 -0
  54. data/lib/shoes-spec.rb +93 -0
  55. data/lib/shoes.rb +93 -11
  56. metadata +67 -557
  57. data/.rubocop.yml +0 -85
  58. data/.ruby-version +0 -1
  59. data/.vscode/extensions.json +0 -5
  60. data/.yardopts +0 -12
  61. data/CHANGELOG.md +0 -19
  62. data/CODE_OF_CONDUCT.md +0 -84
  63. data/CONTRIBUTING.md +0 -20
  64. data/LICENSE.txt +0 -21
  65. data/README.md +0 -178
  66. data/bin/console +0 -15
  67. data/bin/setup +0 -8
  68. data/dev.yml +0 -7
  69. data/docs/static/PKGBUILD +0 -47
  70. data/docs/static/Shoes.icns +0 -0
  71. data/docs/static/avatar.png +0 -0
  72. data/docs/static/code_highlighter.js +0 -188
  73. data/docs/static/code_highlighter_ruby.js +0 -26
  74. data/docs/static/icon-debug.png +0 -0
  75. data/docs/static/icon-error.png +0 -0
  76. data/docs/static/icon-info.png +0 -0
  77. data/docs/static/icon-warn.png +0 -0
  78. data/docs/static/listbox_button1.png +0 -0
  79. data/docs/static/listbox_button2.png +0 -0
  80. data/docs/static/man-app.png +0 -0
  81. data/docs/static/man-builds.png +0 -0
  82. data/docs/static/man-builds1.png +0 -0
  83. data/docs/static/man-editor-notepad.png +0 -0
  84. data/docs/static/man-editor-osx.png +0 -0
  85. data/docs/static/man-ele-background.png +0 -0
  86. data/docs/static/man-ele-border.png +0 -0
  87. data/docs/static/man-ele-button.png +0 -0
  88. data/docs/static/man-ele-check.png +0 -0
  89. data/docs/static/man-ele-editbox.png +0 -0
  90. data/docs/static/man-ele-editline.png +0 -0
  91. data/docs/static/man-ele-image.png +0 -0
  92. data/docs/static/man-ele-listbox.png +0 -0
  93. data/docs/static/man-ele-progress.png +0 -0
  94. data/docs/static/man-ele-radio.png +0 -0
  95. data/docs/static/man-ele-shape.png +0 -0
  96. data/docs/static/man-ele-textblock.png +0 -0
  97. data/docs/static/man-ele-video.png +0 -0
  98. data/docs/static/man-intro-dmg.png +0 -0
  99. data/docs/static/man-intro-exe.png +0 -0
  100. data/docs/static/man-look-tiger.png +0 -0
  101. data/docs/static/man-look-ubuntu.png +0 -0
  102. data/docs/static/man-look-vista.png +0 -0
  103. data/docs/static/man-run-osx.png +0 -0
  104. data/docs/static/man-run-vista.png +0 -0
  105. data/docs/static/man-run-xp.png +0 -0
  106. data/docs/static/man-shot1.png +0 -0
  107. data/docs/static/manual-en.txt +0 -3529
  108. data/docs/static/manual-ja.txt +0 -2829
  109. data/docs/static/manual.css +0 -171
  110. data/docs/static/manual.md +0 -3528
  111. data/docs/static/menu-corner1.png +0 -0
  112. data/docs/static/menu-corner2.png +0 -0
  113. data/docs/static/menu-gray.png +0 -0
  114. data/docs/static/menu-left.png +0 -0
  115. data/docs/static/menu-right.png +0 -0
  116. data/docs/static/menu-top.png +0 -0
  117. data/docs/static/shoes-dmg.jpg +0 -0
  118. data/docs/static/shoes-icon-blue.png +0 -0
  119. data/docs/static/shoes-icon.png +0 -0
  120. data/docs/static/shoes-manual-apps.gif +0 -0
  121. data/docs/static/shoes_main_window.png +0 -0
  122. data/docs/static/stripe.png +0 -0
  123. data/docs/static/stubs/blank.exe +0 -0
  124. data/docs/static/stubs/blank.hfz +0 -0
  125. data/docs/static/stubs/blank.run +0 -375
  126. data/docs/static/stubs/cocoa-install +0 -0
  127. data/docs/static/stubs/sh-install +0 -49
  128. data/docs/static/stubs/shoes-stub-inject.exe +0 -0
  129. data/docs/static/stubs/shoes-stub.exe +0 -0
  130. data/docs/static/tutor-back.png +0 -0
  131. data/docs/yard/catscradle.md +0 -44
  132. data/docs/yard/template/default/fulldoc/html/setup.rb +0 -13
  133. data/docs/yard/template/default/layout/html/setup.rb +0 -9
  134. data/examples/backdround_with_image.rb +0 -16
  135. data/examples/bloopsaphone/working/1901_by_Aanand_Prasad.rb +0 -478
  136. data/examples/bloopsaphone/working/b1.rb +0 -64
  137. data/examples/bloopsaphone/working/b2.rb +0 -36
  138. data/examples/bloopsaphone/working/bloops_test.rb +0 -41
  139. data/examples/bloopsaphone/working/bloopsaphone_theme_song_by_why.rb +0 -31
  140. data/examples/bloopsaphone/working/feepogram.rb +0 -67
  141. data/examples/bloopsaphone/working/simpsons_theme_song_by_why.rb +0 -14
  142. data/examples/bloopsaphone/working/tune_cheeky_drat.rb +0 -210
  143. data/examples/button.rb +0 -10
  144. data/examples/button_alert.rb +0 -6
  145. data/examples/button_go_away.rb +0 -6
  146. data/examples/button_with_position_and_size.rb +0 -7
  147. data/examples/coffee.rb +0 -14
  148. data/examples/download.rb +0 -5
  149. data/examples/download_and_show_image.rb +0 -28
  150. data/examples/edit_box.rb +0 -8
  151. data/examples/edit_line.rb +0 -8
  152. data/examples/fill.rb +0 -25
  153. data/examples/flow.rb +0 -11
  154. data/examples/fonts.rb +0 -6
  155. data/examples/gen.rb +0 -140
  156. data/examples/get_headers.rb +0 -10
  157. data/examples/hello_world.rb +0 -3
  158. data/examples/highlander.rb +0 -87
  159. data/examples/image/clickable_image.rb +0 -5
  160. data/examples/image/image.rb +0 -3
  161. data/examples/image/image_size.rb +0 -7
  162. data/examples/image/image_with_position_and_size.rb +0 -3
  163. data/examples/info.rb +0 -9
  164. data/examples/legacy/not_checked/expert/colours.rb +0 -105
  165. data/examples/legacy/not_checked/expert/curve-animation.rb +0 -31
  166. data/examples/legacy/not_checked/expert/curve-control-point.rb +0 -51
  167. data/examples/legacy/not_checked/expert/custom-list-box.rb +0 -53
  168. data/examples/legacy/not_checked/expert/definr.rb +0 -23
  169. data/examples/legacy/not_checked/expert/funnies.rb +0 -56
  170. data/examples/legacy/not_checked/expert/minesweeper.rb +0 -267
  171. data/examples/legacy/not_checked/expert/othello.rb +0 -318
  172. data/examples/legacy/not_checked/expert/pong.rb +0 -62
  173. data/examples/legacy/not_checked/expert/tankspank.rb +0 -385
  174. data/examples/legacy/not_checked/expert/tooltips.rb +0 -45
  175. data/examples/legacy/not_checked/expert/url.rb +0 -37
  176. data/examples/legacy/not_checked/expert/video-player.rb +0 -256
  177. data/examples/legacy/not_checked/good/_why-stories.rb +0 -44
  178. data/examples/legacy/not_checked/good/_why-stories.yaml +0 -387
  179. data/examples/legacy/not_checked/good/arc.rb +0 -37
  180. data/examples/legacy/not_checked/good/cardflip.rb +0 -141
  181. data/examples/legacy/not_checked/good/clock.rb +0 -51
  182. data/examples/legacy/not_checked/good/console.rb +0 -21
  183. data/examples/legacy/not_checked/good/follow.rb +0 -26
  184. data/examples/legacy/not_checked/good/image-rotate.rb +0 -14
  185. data/examples/legacy/not_checked/good/paris.svg +0 -7236
  186. data/examples/legacy/not_checked/good/path-animation.rb +0 -46
  187. data/examples/legacy/not_checked/good/plots.rb +0 -100
  188. data/examples/legacy/not_checked/good/reminder.rb +0 -174
  189. data/examples/legacy/not_checked/good/svgview.rb +0 -113
  190. data/examples/legacy/not_checked/good/vjot.rb +0 -56
  191. data/examples/legacy/not_checked/shoes-contrib/.gitignore +0 -2
  192. data/examples/legacy/not_checked/shoes-contrib/README.md +0 -34
  193. data/examples/legacy/not_checked/shoes-contrib/animation/animate-ovals.rb +0 -21
  194. data/examples/legacy/not_checked/shoes-contrib/animation/flowers.rb +0 -59
  195. data/examples/legacy/not_checked/shoes-contrib/animation/happy-trails.rb +0 -31
  196. data/examples/legacy/not_checked/shoes-contrib/animation/mice-satellites.rb +0 -27
  197. data/examples/legacy/not_checked/shoes-contrib/animation/oval-motion.rb +0 -12
  198. data/examples/legacy/not_checked/shoes-contrib/animation/pink-bubbles.rb +0 -34
  199. data/examples/legacy/not_checked/shoes-contrib/animation/pulsate.rb +0 -18
  200. data/examples/legacy/not_checked/shoes-contrib/animation/rotating-star.rb +0 -18
  201. data/examples/legacy/not_checked/shoes-contrib/app/download-and-save.rb +0 -11
  202. data/examples/legacy/not_checked/shoes-contrib/app/download.rb +0 -10
  203. data/examples/legacy/not_checked/shoes-contrib/app/get-google.rb +0 -11
  204. data/examples/legacy/not_checked/shoes-contrib/app/mouse-detection.rb +0 -7
  205. data/examples/legacy/not_checked/shoes-contrib/app/resizeable-false.rb +0 -6
  206. data/examples/legacy/not_checked/shoes-contrib/art/bubble-bullseye.rb +0 -23
  207. data/examples/legacy/not_checked/shoes-contrib/art/faded.rb +0 -17
  208. data/examples/legacy/not_checked/shoes-contrib/art/fill-oval.rb +0 -5
  209. data/examples/legacy/not_checked/shoes-contrib/art/mask.rb +0 -15
  210. data/examples/legacy/not_checked/shoes-contrib/art/oval-gradient.rb +0 -6
  211. data/examples/legacy/not_checked/shoes-contrib/art/star-gradient.rb +0 -4
  212. data/examples/legacy/not_checked/shoes-contrib/basic/basic-edit-box.rb +0 -8
  213. data/examples/legacy/not_checked/shoes-contrib/basic/basic-new-window.rb +0 -8
  214. data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval-image.rb +0 -8
  215. data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval-shape.rb +0 -8
  216. data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval.rb +0 -6
  217. data/examples/legacy/not_checked/shoes-contrib/basic/class-book.rb +0 -43
  218. data/examples/legacy/not_checked/shoes-contrib/basic/class-book.yaml +0 -387
  219. data/examples/legacy/not_checked/shoes-contrib/basic/clock.rb +0 -6
  220. data/examples/legacy/not_checked/shoes-contrib/basic/edit-stack +0 -14
  221. data/examples/legacy/not_checked/shoes-contrib/basic/gradient-shoes.rb +0 -7
  222. data/examples/legacy/not_checked/shoes-contrib/basic/list_box-shape-report.rb +0 -19
  223. data/examples/legacy/not_checked/shoes-contrib/basic/rect-arrow.rb +0 -7
  224. data/examples/legacy/not_checked/shoes-contrib/basic/scribble.rb +0 -8
  225. data/examples/legacy/not_checked/shoes-contrib/basic/search.rb +0 -32
  226. data/examples/legacy/not_checked/shoes-contrib/basic/shoes-notes.rb +0 -16
  227. data/examples/legacy/not_checked/shoes-contrib/basic/url-shoes-subclassing.rb +0 -24
  228. data/examples/legacy/not_checked/shoes-contrib/browser.rb +0 -21
  229. data/examples/legacy/not_checked/shoes-contrib/elements/background-column.rb +0 -3
  230. data/examples/legacy/not_checked/shoes-contrib/elements/background.rb +0 -4
  231. data/examples/legacy/not_checked/shoes-contrib/elements/basic-fps.rb +0 -6
  232. data/examples/legacy/not_checked/shoes-contrib/elements/border-cat.rb +0 -6
  233. data/examples/legacy/not_checked/shoes-contrib/elements/button-block.rb +0 -8
  234. data/examples/legacy/not_checked/shoes-contrib/elements/check-mate.rb +0 -15
  235. data/examples/legacy/not_checked/shoes-contrib/elements/common-styles.rb +0 -13
  236. data/examples/legacy/not_checked/shoes-contrib/elements/displace-animation.rb +0 -13
  237. data/examples/legacy/not_checked/shoes-contrib/elements/edit_box-character-count.rb +0 -7
  238. data/examples/legacy/not_checked/shoes-contrib/elements/edit_line-character-count.rb +0 -7
  239. data/examples/legacy/not_checked/shoes-contrib/elements/image-icon.rb +0 -3
  240. data/examples/legacy/not_checked/shoes-contrib/elements/list_box-select-class.rb +0 -13
  241. data/examples/legacy/not_checked/shoes-contrib/elements/list_box.rb +0 -6
  242. data/examples/legacy/not_checked/shoes-contrib/elements/move-flow-animate.rb +0 -13
  243. data/examples/legacy/not_checked/shoes-contrib/elements/phat-button.rb +0 -7
  244. data/examples/legacy/not_checked/shoes-contrib/elements/popup.rb +0 -7
  245. data/examples/legacy/not_checked/shoes-contrib/elements/progress-bar.rb +0 -10
  246. data/examples/legacy/not_checked/shoes-contrib/elements/radio-dreamcast-favs.rb +0 -17
  247. data/examples/legacy/not_checked/shoes-contrib/elements/timer.rb +0 -6
  248. data/examples/legacy/not_checked/shoes-contrib/elements/width-introspec.rb +0 -8
  249. data/examples/legacy/not_checked/shoes-contrib/events/background-hover.rb +0 -11
  250. data/examples/legacy/not_checked/shoes-contrib/events/motion-detect.rb +0 -9
  251. data/examples/legacy/not_checked/shoes-contrib/events/pressed-key.rb +0 -6
  252. data/examples/legacy/not_checked/shoes-contrib/expert/expert-funnies.rb +0 -51
  253. data/examples/legacy/not_checked/shoes-contrib/expert/expert-irb.rb +0 -112
  254. data/examples/legacy/not_checked/shoes-contrib/expert/expert-othello.rb +0 -319
  255. data/examples/legacy/not_checked/shoes-contrib/good/good-arc.rb +0 -37
  256. data/examples/legacy/not_checked/shoes-contrib/good/good-clock.rb +0 -51
  257. data/examples/legacy/not_checked/shoes-contrib/good/good-follow.rb +0 -26
  258. data/examples/legacy/not_checked/shoes-contrib/good/good-reminder.rb +0 -174
  259. data/examples/legacy/not_checked/shoes-contrib/good/good-vjot.rb +0 -56
  260. data/examples/legacy/not_checked/shoes-contrib/kernel/ask.rb +0 -4
  261. data/examples/legacy/not_checked/shoes-contrib/kernel/ask_color.rb +0 -4
  262. data/examples/legacy/not_checked/shoes-contrib/kernel/ask_open_file.rb +0 -4
  263. data/examples/legacy/not_checked/shoes-contrib/kernel/ask_save_file.rb +0 -7
  264. data/examples/legacy/not_checked/shoes-contrib/kernel/confirm.rb +0 -3
  265. data/examples/legacy/not_checked/shoes-contrib/kernel/debug.rb +0 -4
  266. data/examples/legacy/not_checked/shoes-contrib/kernel/exit.rb +0 -5
  267. data/examples/legacy/not_checked/shoes-contrib/kernel/font.rb +0 -5
  268. data/examples/legacy/not_checked/shoes-contrib/kernel/fonts.rb +0 -3
  269. data/examples/legacy/not_checked/shoes-contrib/manipulation/append-slot.rb +0 -9
  270. data/examples/legacy/not_checked/shoes-contrib/manipulation/clear-slot.rb +0 -6
  271. data/examples/legacy/not_checked/shoes-contrib/manipulation/prepend-slot.rb +0 -6
  272. data/examples/legacy/not_checked/shoes-contrib/manipulation/roll.rb +0 -17
  273. data/examples/legacy/not_checked/shoes-contrib/position/gutter-margin.rb +0 -5
  274. data/examples/legacy/not_checked/shoes-contrib/position/stack-width.rb +0 -3
  275. data/examples/legacy/not_checked/shoes-contrib/simple/simple-accordion.rb +0 -75
  276. data/examples/legacy/not_checked/shoes-contrib/simple/simple-anim-shapes.rb +0 -17
  277. data/examples/legacy/not_checked/shoes-contrib/simple/simple-anim-text.rb +0 -13
  278. data/examples/legacy/not_checked/shoes-contrib/simple/simple-arc.rb +0 -23
  279. data/examples/legacy/not_checked/shoes-contrib/simple/simple-bounce.rb +0 -24
  280. data/examples/legacy/not_checked/shoes-contrib/simple/simple-calc.rb +0 -70
  281. data/examples/legacy/not_checked/shoes-contrib/simple/simple-chipmunk.rb +0 -26
  282. data/examples/legacy/not_checked/shoes-contrib/simple/simple-control-sizes.rb +0 -24
  283. data/examples/legacy/not_checked/shoes-contrib/simple/simple-curve.rb +0 -26
  284. data/examples/legacy/not_checked/shoes-contrib/simple/simple-dialogs.rb +0 -29
  285. data/examples/legacy/not_checked/shoes-contrib/simple/simple-downloader.rb +0 -27
  286. data/examples/legacy/not_checked/shoes-contrib/simple/simple-draw.rb +0 -13
  287. data/examples/legacy/not_checked/shoes-contrib/simple/simple-editor.rb +0 -28
  288. data/examples/legacy/not_checked/shoes-contrib/simple/simple-form.rb +0 -28
  289. data/examples/legacy/not_checked/shoes-contrib/simple/simple-form.shy +0 -0
  290. data/examples/legacy/not_checked/shoes-contrib/simple/simple-mask.rb +0 -21
  291. data/examples/legacy/not_checked/shoes-contrib/simple/simple-menu.rb +0 -31
  292. data/examples/legacy/not_checked/shoes-contrib/simple/simple-menu1.rb +0 -35
  293. data/examples/legacy/not_checked/shoes-contrib/simple/simple-rubygems.rb +0 -29
  294. data/examples/legacy/not_checked/shoes-contrib/simple/simple-slide.rb +0 -45
  295. data/examples/legacy/not_checked/shoes-contrib/simple/simple-sphere.rb +0 -28
  296. data/examples/legacy/not_checked/shoes-contrib/simple/simple-sqlite3.rb +0 -13
  297. data/examples/legacy/not_checked/shoes-contrib/simple/simple-timer.rb +0 -13
  298. data/examples/legacy/not_checked/shoes-contrib/simple/simple-video.rb +0 -13
  299. data/examples/legacy/not_checked/shoes-contrib/styles/alignment.rb +0 -4
  300. data/examples/legacy/not_checked/shoes-contrib/styles/attachment.rb +0 -5
  301. data/examples/legacy/not_checked/shoes-contrib/styles/emphasis.rb +0 -3
  302. data/examples/legacy/not_checked/shoes-contrib/styles/gradient-angle.rb +0 -3
  303. data/examples/legacy/not_checked/shoes-contrib/styles/para-methods.rb +0 -5
  304. data/examples/legacy/not_checked/shoes-contrib/styles/para-red-underlined.rb +0 -3
  305. data/examples/legacy/not_checked/shoes-contrib/styles/para-style-method.rb +0 -4
  306. data/examples/legacy/not_checked/shoes-dep-samples/expert-game-of-life.rb +0 -243
  307. data/examples/legacy/not_checked/shoes-dep-samples/expert-othello.rb +0 -319
  308. data/examples/legacy/not_checked/shoes-dep-samples/good-clock.rb +0 -51
  309. data/examples/legacy/not_checked/shoes-dep-samples/good-follow.rb +0 -26
  310. data/examples/legacy/not_checked/shoes-dep-samples/good-reminder.rb +0 -174
  311. data/examples/legacy/not_checked/shoes-dep-samples/good-vjot.rb +0 -56
  312. data/examples/legacy/not_checked/shoes-dep-samples/simple-accordion.rb +0 -75
  313. data/examples/legacy/not_checked/shoes-dep-samples/simple-anim-shapes.rb +0 -17
  314. data/examples/legacy/not_checked/shoes-dep-samples/simple-anim-text.rb +0 -13
  315. data/examples/legacy/not_checked/shoes-dep-samples/simple-arc.rb +0 -23
  316. data/examples/legacy/not_checked/shoes-dep-samples/simple-bounce.rb +0 -24
  317. data/examples/legacy/not_checked/shoes-dep-samples/simple-calc.rb +0 -70
  318. data/examples/legacy/not_checked/shoes-dep-samples/simple-chipmunk.rb +0 -26
  319. data/examples/legacy/not_checked/shoes-dep-samples/simple-control-sizes.rb +0 -24
  320. data/examples/legacy/not_checked/shoes-dep-samples/simple-curve.rb +0 -26
  321. data/examples/legacy/not_checked/shoes-dep-samples/simple-dialogs.rb +0 -29
  322. data/examples/legacy/not_checked/shoes-dep-samples/simple-draw.rb +0 -13
  323. data/examples/legacy/not_checked/shoes-dep-samples/simple-editor.rb +0 -28
  324. data/examples/legacy/not_checked/shoes-dep-samples/simple-form.rb +0 -28
  325. data/examples/legacy/not_checked/shoes-dep-samples/simple-form.shy +0 -0
  326. data/examples/legacy/not_checked/shoes-dep-samples/simple-mask.rb +0 -21
  327. data/examples/legacy/not_checked/shoes-dep-samples/simple-menu.rb +0 -31
  328. data/examples/legacy/not_checked/shoes-dep-samples/simple-menu1.rb +0 -35
  329. data/examples/legacy/not_checked/shoes-dep-samples/simple-rubygems.rb +0 -29
  330. data/examples/legacy/not_checked/shoes-dep-samples/simple-slide.rb +0 -45
  331. data/examples/legacy/not_checked/shoes-dep-samples/simple-sphere.rb +0 -28
  332. data/examples/legacy/not_checked/shoes-dep-samples/simple-sqlite3.rb +0 -13
  333. data/examples/legacy/not_checked/shoes-dep-samples/simple-timer.rb +0 -13
  334. data/examples/legacy/not_checked/shoes-dep-samples/simple-video.rb +0 -13
  335. data/examples/legacy/not_checked/shoes3-tests/AnemicCinema1926marcelDuchampCut.mp4 +0 -0
  336. data/examples/legacy/not_checked/shoes3-tests/button/button.rb +0 -53
  337. data/examples/legacy/not_checked/shoes3-tests/cache/cache.rb +0 -41
  338. data/examples/legacy/not_checked/shoes3-tests/combo/combo.rb +0 -24
  339. data/examples/legacy/not_checked/shoes3-tests/curl/bare.rb +0 -34
  340. data/examples/legacy/not_checked/shoes3-tests/curl/downloader.rb +0 -40
  341. data/examples/legacy/not_checked/shoes3-tests/curl/m1.rb +0 -11
  342. data/examples/legacy/not_checked/shoes3-tests/curl/m2.rb +0 -12
  343. data/examples/legacy/not_checked/shoes3-tests/curl/m3.rb +0 -11
  344. data/examples/legacy/not_checked/shoes3-tests/curl/m4.rb +0 -5
  345. data/examples/legacy/not_checked/shoes3-tests/curl/typ.rb +0 -30
  346. data/examples/legacy/not_checked/shoes3-tests/cursor/c1.rb +0 -21
  347. data/examples/legacy/not_checked/shoes3-tests/decoration.rb +0 -14
  348. data/examples/legacy/not_checked/shoes3-tests/dialogs/ask.rb +0 -6
  349. data/examples/legacy/not_checked/shoes3-tests/dialogs/confirm.rb +0 -6
  350. data/examples/legacy/not_checked/shoes3-tests/editbox/editbox.rb +0 -36
  351. data/examples/legacy/not_checked/shoes3-tests/editline/editline.rb +0 -27
  352. data/examples/legacy/not_checked/shoes3-tests/events/button.rb +0 -32
  353. data/examples/legacy/not_checked/shoes3-tests/events/button.yaml +0 -40
  354. data/examples/legacy/not_checked/shoes3-tests/events/capture.rb +0 -57
  355. data/examples/legacy/not_checked/shoes3-tests/events/chipmunk.yaml +0 -47
  356. data/examples/legacy/not_checked/shoes3-tests/events/event0.rb +0 -8
  357. data/examples/legacy/not_checked/shoes3-tests/events/event1.rb +0 -51
  358. data/examples/legacy/not_checked/shoes3-tests/events/event1.yaml +0 -26
  359. data/examples/legacy/not_checked/shoes3-tests/events/event2.rb +0 -46
  360. data/examples/legacy/not_checked/shoes3-tests/events/event3.rb +0 -44
  361. data/examples/legacy/not_checked/shoes3-tests/events/event4.rb +0 -65
  362. data/examples/legacy/not_checked/shoes3-tests/events/event5.rb +0 -17
  363. data/examples/legacy/not_checked/shoes3-tests/events/event6.rb +0 -51
  364. data/examples/legacy/not_checked/shoes3-tests/events/replay.rb +0 -60
  365. data/examples/legacy/not_checked/shoes3-tests/gapp/fullscreen.rb +0 -38
  366. data/examples/legacy/not_checked/shoes3-tests/gapp/icon.rb +0 -56
  367. data/examples/legacy/not_checked/shoes3-tests/gapp/mon1.rb +0 -46
  368. data/examples/legacy/not_checked/shoes3-tests/gapp/settings1.rb +0 -22
  369. data/examples/legacy/not_checked/shoes3-tests/gapp/title1.rb +0 -34
  370. data/examples/legacy/not_checked/shoes3-tests/indian.m4a +0 -0
  371. data/examples/legacy/not_checked/shoes3-tests/menus/event.rb +0 -33
  372. data/examples/legacy/not_checked/shoes3-tests/menus/menu1.rb +0 -8
  373. data/examples/legacy/not_checked/shoes3-tests/menus/menu2.rb +0 -25
  374. data/examples/legacy/not_checked/shoes3-tests/menus/menu3.rb +0 -103
  375. data/examples/legacy/not_checked/shoes3-tests/menus/menu4.rb +0 -41
  376. data/examples/legacy/not_checked/shoes3-tests/menus/tests.txt +0 -42
  377. data/examples/legacy/not_checked/shoes3-tests/opacity.rb +0 -13
  378. data/examples/legacy/not_checked/shoes3-tests/plot/^IRX.R +0 -5219
  379. data/examples/legacy/not_checked/shoes3-tests/plot/^SPX +0 -5219
  380. data/examples/legacy/not_checked/shoes3-tests/plot/cstest.rb +0 -51
  381. data/examples/legacy/not_checked/shoes3-tests/plot/gr1.rb +0 -73
  382. data/examples/legacy/not_checked/shoes3-tests/plot/gr2.rb +0 -40
  383. data/examples/legacy/not_checked/shoes3-tests/plot/gr3.rb +0 -47
  384. data/examples/legacy/not_checked/shoes3-tests/plot/gr4.rb +0 -35
  385. data/examples/legacy/not_checked/shoes3-tests/plot/gr5.rb +0 -31
  386. data/examples/legacy/not_checked/shoes3-tests/plot/gr6.rb +0 -35
  387. data/examples/legacy/not_checked/shoes3-tests/plot/gr7.rb +0 -37
  388. data/examples/legacy/not_checked/shoes3-tests/plot/grcsv.rb +0 -219
  389. data/examples/legacy/not_checked/shoes3-tests/plot/manual.rb +0 -40
  390. data/examples/legacy/not_checked/shoes3-tests/progress/progress.rb +0 -29
  391. data/examples/legacy/not_checked/shoes3-tests/radio/clear.rb +0 -20
  392. data/examples/legacy/not_checked/shoes3-tests/radio/group.rb +0 -18
  393. data/examples/legacy/not_checked/shoes3-tests/radio/multiple.rb +0 -32
  394. data/examples/legacy/not_checked/shoes3-tests/radio/nogroup.rb +0 -9
  395. data/examples/legacy/not_checked/shoes3-tests/simpletest.svg +0 -14
  396. data/examples/legacy/not_checked/shoes3-tests/spinner.rb +0 -15
  397. data/examples/legacy/not_checked/shoes3-tests/svg.rb +0 -208
  398. data/examples/legacy/not_checked/shoes3-tests/switch/switch.rb +0 -28
  399. data/examples/legacy/not_checked/shoes3-tests/systray/back.rb +0 -20
  400. data/examples/legacy/not_checked/shoes3-tests/systray/note.rb +0 -17
  401. data/examples/legacy/not_checked/shoes3-tests/terminal/cursor.rb +0 -27
  402. data/examples/legacy/not_checked/shoes3-tests/terminal/ed.rb +0 -65
  403. data/examples/legacy/not_checked/shoes3-tests/terminal/el.rb +0 -50
  404. data/examples/legacy/not_checked/shoes3-tests/terminal/logattr.rb +0 -31
  405. data/examples/legacy/not_checked/shoes3-tests/tests_color.rb +0 -138
  406. data/examples/legacy/not_checked/shoes3-tests/tests_svg.rb +0 -228
  407. data/examples/legacy/not_checked/shoes3-tests/tests_video_vlc.rb +0 -186
  408. data/examples/legacy/not_checked/shoes3-tests/tooltips.rb +0 -20
  409. data/examples/legacy/not_checked/shoes3-tests/video_vlc.rb +0 -242
  410. data/examples/legacy/not_checked/shoes3-tests/wheel/wheel1.rb +0 -21
  411. data/examples/legacy/not_checked/simple/accordion.rb +0 -81
  412. data/examples/legacy/not_checked/simple/anim-shapes.rb +0 -17
  413. data/examples/legacy/not_checked/simple/anim-text.rb +0 -13
  414. data/examples/legacy/not_checked/simple/arc.rb +0 -23
  415. data/examples/legacy/not_checked/simple/bounce.rb +0 -24
  416. data/examples/legacy/not_checked/simple/chipmunk.rb +0 -26
  417. data/examples/legacy/not_checked/simple/control-sizes.rb +0 -24
  418. data/examples/legacy/not_checked/simple/curve-control-points.rb +0 -24
  419. data/examples/legacy/not_checked/simple/curve.rb +0 -26
  420. data/examples/legacy/not_checked/simple/dialogs.rb +0 -29
  421. data/examples/legacy/not_checked/simple/downloader.rb +0 -40
  422. data/examples/legacy/not_checked/simple/downloader1.rb +0 -31
  423. data/examples/legacy/not_checked/simple/draw.rb +0 -13
  424. data/examples/legacy/not_checked/simple/editor.rb +0 -28
  425. data/examples/legacy/not_checked/simple/form.rb +0 -30
  426. data/examples/legacy/not_checked/simple/image.rb +0 -21
  427. data/examples/legacy/not_checked/simple/info.rb +0 -78
  428. data/examples/legacy/not_checked/simple/mask.rb +0 -21
  429. data/examples/legacy/not_checked/simple/mask2.rb +0 -27
  430. data/examples/legacy/not_checked/simple/menu.rb +0 -31
  431. data/examples/legacy/not_checked/simple/menu1.rb +0 -35
  432. data/examples/legacy/not_checked/simple/slide.rb +0 -45
  433. data/examples/legacy/not_checked/simple/sphere.rb +0 -28
  434. data/examples/legacy/not_checked/superleg.rb +0 -244
  435. data/examples/legacy/working/shoes-contrib/basic/a-poem.rb +0 -24
  436. data/examples/legacy/working/shoes-contrib/basic/basic-blocks-instances.rb +0 -7
  437. data/examples/legacy/working/shoes-contrib/basic/basic-blocks.rb +0 -7
  438. data/examples/legacy/working/shoes-contrib/basic/basic-slot.rb +0 -8
  439. data/examples/legacy/working/shoes-contrib/basic/intro.rb +0 -20
  440. data/examples/legacy/working/shoes-contrib/basic/two-column.rb +0 -12
  441. data/examples/legacy/working/shoes-contrib/elements/edit_box.rb +0 -6
  442. data/examples/legacy/working/shoes-contrib/kernel/alert.rb +0 -3
  443. data/examples/legacy/working/simple/calc.rb +0 -71
  444. data/examples/legacy/working/simple/sqlite3.rb +0 -27
  445. data/examples/legacy/working/simple/timer.rb +0 -13
  446. data/examples/line.rb +0 -5
  447. data/examples/link.rb +0 -20
  448. data/examples/list_box.rb +0 -8
  449. data/examples/local_fonts.rb +0 -4
  450. data/examples/local_images.rb +0 -4
  451. data/examples/motion_events.rb +0 -20
  452. data/examples/para/collection_of_arguments.rb +0 -9
  453. data/examples/para/hello_world.rb +0 -5
  454. data/examples/para/hide_and_show.rb +0 -9
  455. data/examples/para/rainbow.rb +0 -11
  456. data/examples/para/rainbow_2.rb +0 -11
  457. data/examples/para/sizes.rb +0 -11
  458. data/examples/para/sizes_2.rb +0 -12
  459. data/examples/para/strong.rb +0 -3
  460. data/examples/para_text_widgets.rb +0 -4
  461. data/examples/parse_xl_funnies.rb +0 -58
  462. data/examples/pirate.png +0 -0
  463. data/examples/raw_flow.rb +0 -11
  464. data/examples/ruby_racer.rb +0 -50
  465. data/examples/selfitude.rb +0 -18
  466. data/examples/shapes/arc.rb +0 -8
  467. data/examples/shapes/shapes.rb +0 -8
  468. data/examples/shapes/shapes_fill.rb +0 -10
  469. data/examples/shapes/star.rb +0 -5
  470. data/examples/shoes_school.rb +0 -66
  471. data/examples/shoes_splorer.rb +0 -150
  472. data/examples/simple_slides.rb +0 -73
  473. data/examples/skip_ci/parrot.rb +0 -22
  474. data/examples/skip_ci/say.rb +0 -20
  475. data/examples/sleepless.rb +0 -26
  476. data/examples/slots.rb +0 -10
  477. data/examples/spacing.rb +0 -18
  478. data/examples/span.rb +0 -6
  479. data/examples/stack/background.rb +0 -35
  480. data/examples/stack/border.rb +0 -11
  481. data/examples/stack/gradients.rb +0 -6
  482. data/examples/stack/raw_stack.rb +0 -8
  483. data/examples/stack/stack.rb +0 -27
  484. data/examples/text_change.rb +0 -4
  485. data/examples/text_sizes.rb +0 -10
  486. data/examples/timmy.rb +0 -109
  487. data/examples/title_and_resize.rb +0 -3
  488. data/examples/video.rb +0 -10
  489. data/exe/scarpe +0 -107
  490. data/fonts/Pacifico.ttf +0 -0
  491. data/lib/scarpe/alert.rb +0 -19
  492. data/lib/scarpe/arc.rb +0 -49
  493. data/lib/scarpe/base64.rb +0 -27
  494. data/lib/scarpe/button.rb +0 -35
  495. data/lib/scarpe/cats_cradle.rb +0 -255
  496. data/lib/scarpe/fill.rb +0 -23
  497. data/lib/scarpe/flow.rb +0 -18
  498. data/lib/scarpe/font.rb +0 -14
  499. data/lib/scarpe/glibui/README.md +0 -34
  500. data/lib/scarpe/glibui/alert.rb +0 -65
  501. data/lib/scarpe/glibui/app.rb +0 -27
  502. data/lib/scarpe/glibui/background.rb +0 -18
  503. data/lib/scarpe/glibui/border.rb +0 -22
  504. data/lib/scarpe/glibui/button.rb +0 -38
  505. data/lib/scarpe/glibui/dimensions.rb +0 -22
  506. data/lib/scarpe/glibui/document_root.rb +0 -33
  507. data/lib/scarpe/glibui/edit_box.rb +0 -44
  508. data/lib/scarpe/glibui/edit_line.rb +0 -43
  509. data/lib/scarpe/glibui/flow.rb +0 -33
  510. data/lib/scarpe/glibui/html.rb +0 -77
  511. data/lib/scarpe/glibui/image.rb +0 -36
  512. data/lib/scarpe/glibui/link.rb +0 -29
  513. data/lib/scarpe/glibui/local_display.rb +0 -62
  514. data/lib/scarpe/glibui/para.rb +0 -84
  515. data/lib/scarpe/glibui/spacing.rb +0 -41
  516. data/lib/scarpe/glibui/stack.rb +0 -33
  517. data/lib/scarpe/glibui/text_widget.rb +0 -30
  518. data/lib/scarpe/glibui/widget.rb +0 -81
  519. data/lib/scarpe/glibui.rb +0 -29
  520. data/lib/scarpe/libui/alert.rb +0 -9
  521. data/lib/scarpe/libui/button.rb +0 -18
  522. data/lib/scarpe/libui/colors.rb +0 -157
  523. data/lib/scarpe/libui/core.rb +0 -66
  524. data/lib/scarpe/libui/flow.rb +0 -16
  525. data/lib/scarpe/libui/libui.rb +0 -45
  526. data/lib/scarpe/libui/notepad.md +0 -26
  527. data/lib/scarpe/libui/para.rb +0 -154
  528. data/lib/scarpe/libui/stack.rb +0 -34
  529. data/lib/scarpe/line.rb +0 -25
  530. data/lib/scarpe/link.rb +0 -25
  531. data/lib/scarpe/list_box.rb +0 -25
  532. data/lib/scarpe/logger.rb +0 -159
  533. data/lib/scarpe/para.rb +0 -92
  534. data/lib/scarpe/promises.rb +0 -405
  535. data/lib/scarpe/shape.rb +0 -20
  536. data/lib/scarpe/slot.rb +0 -7
  537. data/lib/scarpe/spacing.rb +0 -9
  538. data/lib/scarpe/star.rb +0 -47
  539. data/lib/scarpe/subscription_item.rb +0 -60
  540. data/lib/scarpe/unit_test_helpers.rb +0 -236
  541. data/lib/scarpe/version.rb +0 -5
  542. data/lib/scarpe/video.rb +0 -15
  543. data/lib/scarpe/widgets.rb +0 -35
  544. data/lib/scarpe/wv/alert.rb +0 -65
  545. data/lib/scarpe/wv/app.rb +0 -104
  546. data/lib/scarpe/wv/arc.rb +0 -57
  547. data/lib/scarpe/wv/background.rb +0 -27
  548. data/lib/scarpe/wv/border.rb +0 -24
  549. data/lib/scarpe/wv/button.rb +0 -50
  550. data/lib/scarpe/wv/control_interface.rb +0 -147
  551. data/lib/scarpe/wv/control_interface_test.rb +0 -234
  552. data/lib/scarpe/wv/dimensions.rb +0 -22
  553. data/lib/scarpe/wv/document_root.rb +0 -8
  554. data/lib/scarpe/wv/edit_box.rb +0 -44
  555. data/lib/scarpe/wv/edit_line.rb +0 -43
  556. data/lib/scarpe/wv/fill.rb +0 -30
  557. data/lib/scarpe/wv/flow.rb +0 -24
  558. data/lib/scarpe/wv/font.rb +0 -36
  559. data/lib/scarpe/wv/html.rb +0 -108
  560. data/lib/scarpe/wv/image.rb +0 -41
  561. data/lib/scarpe/wv/line.rb +0 -38
  562. data/lib/scarpe/wv/link.rb +0 -29
  563. data/lib/scarpe/wv/list_box.rb +0 -50
  564. data/lib/scarpe/wv/para.rb +0 -90
  565. data/lib/scarpe/wv/shape.rb +0 -35
  566. data/lib/scarpe/wv/shape_helper.rb +0 -44
  567. data/lib/scarpe/wv/slot.rb +0 -81
  568. data/lib/scarpe/wv/spacing.rb +0 -41
  569. data/lib/scarpe/wv/span.rb +0 -66
  570. data/lib/scarpe/wv/stack.rb +0 -24
  571. data/lib/scarpe/wv/star.rb +0 -64
  572. data/lib/scarpe/wv/subscription_item.rb +0 -50
  573. data/lib/scarpe/wv/text_widget.rb +0 -30
  574. data/lib/scarpe/wv/video.rb +0 -42
  575. data/lib/scarpe/wv/web_wrangler.rb +0 -683
  576. data/lib/scarpe/wv/webview_local_display.rb +0 -73
  577. data/lib/scarpe/wv/webview_relay_display.rb +0 -185
  578. data/lib/scarpe/wv/widget.rb +0 -185
  579. data/lib/scarpe/wv/wv_display_worker.rb +0 -65
  580. data/lib/scarpe/wv.rb +0 -43
  581. data/lib/scarpe/wv_local.rb +0 -6
  582. data/lib/scarpe/wv_relay.rb +0 -6
  583. data/lib/scarpe.rb +0 -29
  584. data/lib/shoes/text_widget.rb +0 -52
  585. data/lib/shoes/widget.rb +0 -209
  586. data/logger/debug_web_wrangler.json +0 -4
  587. data/logger/scarpe_wv_test.json +0 -4
  588. data/scarpe-0.2.0.gem +0 -0
  589. data/scarpe.gemspec +0 -44
  590. data/scarpegen.rb +0 -193
  591. data/sig/scarpe.rbs +0 -4
  592. data/templates/basic_class_template.erb +0 -38
  593. data/templates/class_template_with_event_bind.erb +0 -27
  594. data/templates/class_template_with_shapes.erb +0 -43
  595. data/templates/example_template.erb +0 -3
  596. data/templates/module_template.erb +0 -12
  597. data/templates/webview_template.erb +0 -27
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ class Flow < Shoes::Slot
5
+ include Shoes::Background
6
+ include Shoes::Border
7
+ include Shoes::Spacing
8
+
9
+ shoes_styles :width, :height, :margin, :padding
10
+ shoes_events
11
+
12
+ def initialize(width: "100%", height: nil, margin: nil, padding: nil, **options, &block)
13
+ super
14
+ @options = options
15
+
16
+ # Create the display-side drawable *before* instance_eval, which will add child drawables with their display drawables
17
+ create_display_drawable
18
+
19
+ Shoes::App.instance.with_slot(self, &block) if block_given?
20
+ end
21
+ end
22
+ end
@@ -1,32 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "fastimage"
4
- require "open-uri"
5
-
6
- class Scarpe
7
- class Image < Shoes::Widget
8
- display_properties :url, :width, :height, :top, :left, :click
3
+ class Shoes
4
+ class Image < Shoes::Drawable
5
+ shoes_styles :url, :width, :height, :top, :left, :click
6
+ shoes_events # No Image-specific events yet
9
7
 
10
8
  def initialize(url, width: nil, height: nil, top: nil, left: nil, click: nil)
11
- @url = url
12
-
13
9
  super
10
+ @url = url
14
11
 
15
12
  # Get the image dimensions
16
13
  # @width, @height = size
17
14
 
18
- create_display_widget
15
+ create_display_drawable
19
16
  end
20
17
 
21
18
  def replace(url)
22
19
  self.url = url
23
20
  end
24
- end
25
- end
26
21
 
27
- module Shoes
28
- class Widget
29
22
  def size
23
+ require "fastimage"
30
24
  width, height = FastImage.size(@url)
31
25
 
32
26
  [width, height]
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ class Line < Shoes::Drawable
5
+ shoes_styles :left, :top, :x2, :y2, :draw_context
6
+ shoes_events # No Line-specific events yet
7
+
8
+ def initialize(left, top, x2, y2)
9
+ super
10
+
11
+ @left = left
12
+ @top = top
13
+ @x2 = x2
14
+ @y2 = y2
15
+ @draw_context = Shoes::App.instance.current_draw_context
16
+
17
+ create_display_drawable
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ class Link < Shoes::TextDrawable
5
+ shoes_styles :text, :click, :has_block
6
+ shoes_events :click
7
+
8
+ def initialize(text, click: nil, &block)
9
+ super
10
+
11
+ @text = text
12
+ @block = block
13
+ # We can't send a block to the display drawable, but we can send a boolean
14
+ @has_block = !block.nil?
15
+
16
+ # The click property should be changed before it gets sent to the display drawable
17
+ @click ||= "#"
18
+
19
+ bind_self_event("click") do
20
+ @block&.call
21
+ end
22
+
23
+ create_display_drawable
24
+ end
25
+ end
26
+
27
+ # In Shoes, the LinkHover pseudo-class is used to set default styles for links when
28
+ # hovered over. The functionality isn't present in Lacci yet.
29
+ class LinkHover < Link
30
+ def initialize
31
+ raise "This class should never be instantiated! Use link, not link_hover!"
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ class ListBox < Shoes::Drawable
5
+ shoes_styles :items, :height, :width
6
+
7
+ # Shoes3 uses choose as the initialize arg, and .choose(item) as the setter here,
8
+ # but queries it with .text. So this is an unusual style, and we've chosen this
9
+ # name not to conflict with Shoes3.
10
+ shoes_style :chosen
11
+
12
+ shoes_events :change
13
+
14
+ def initialize(**args, &block)
15
+ super
16
+
17
+ @items = args[:items] || []
18
+ @chosen = args[:choose] || args[:items]&.first
19
+
20
+ bind_self_event("change") do |new_item|
21
+ self.chosen = new_item
22
+ @callback&.call(self)
23
+ end
24
+
25
+ create_display_drawable
26
+ end
27
+
28
+ # Select an item. `item` should be a text entry from `items`.
29
+ #
30
+ # @param item [String] the item to choose
31
+ # @return [void]
32
+ def choose(item)
33
+ unless self.items.include?(item)
34
+ raise Shoes::Errors::NoSuchListItemError, "List items (#{self.items.inspect}) do not contain item #{item.inspect}!"
35
+ end
36
+
37
+ @chosen = item
38
+ end
39
+
40
+ # The currently chosen text item or nil.
41
+ #
42
+ # @return [String|NilClass] the current text item or nil.
43
+ def text
44
+ @chosen
45
+ end
46
+
47
+ # Register a block to be called when the selection changes.
48
+ #
49
+ # @yield the block to be called when selection changes
50
+ # @return [Shoes::ListBox] self
51
+ def change(&block)
52
+ @callback = block
53
+ self # Allow chaining calls
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ class Para < Shoes::Drawable
5
+ shoes_styles :text_items, :size, :font, :html_attributes, :hidden
6
+ shoes_style(:stroke) { |val| Shoes::Colors.to_rgb(val) }
7
+
8
+ shoes_events # No Para-specific events yet
9
+
10
+ # Initializes a new instance of the `Para` widget.
11
+ #
12
+ # @param args The text content of the paragraph.
13
+ # @param stroke [String, nil] The color of the text stroke.
14
+ # @param size [Symbol] The size of the paragraph text.
15
+ # @param font [String, nil] The font of the paragraph text.
16
+ # @param hidden [Boolean] Determines if the paragraph is initially hidden.
17
+ # @param html_attributes [Hash] Additional HTML attributes for the paragraph.
18
+ #
19
+ # @example
20
+ # Shoes.app do
21
+ # p = para "Hello, This is at the top!", stroke: "red", size: :title, font: "Arial"
22
+ #
23
+ # banner("Welcome to Shoes!")
24
+ # title("Shoes Examples")
25
+ # subtitle("Explore the Features")
26
+ # tagline("Step into a World of Shoes")
27
+ # caption("A GUI Framework for Ruby")
28
+ # inscription("Designed for Easy Development")
29
+ #
30
+ # p.replace "On top we'll switch to ", strong("bold"), "!"
31
+ # end
32
+ def initialize(*args, stroke: nil, size: :para, font: nil, **html_attributes)
33
+ super
34
+
35
+ # Text_children alternates strings and TextDrawables, so we can't just pass
36
+ # it as a Shoes style. It won't serialize.
37
+ update_text_children(args)
38
+
39
+ @html_attributes = html_attributes || {}
40
+
41
+ create_display_drawable
42
+ end
43
+
44
+ private
45
+
46
+ def text_children_to_items(text_children)
47
+ text_children.map { |arg| arg.is_a?(String) ? arg : arg.linkable_id }
48
+ end
49
+
50
+ public
51
+
52
+ # Sets the paragraph text to a new value, which can
53
+ # include {TextDrawable}s like em(), strong(), etc.
54
+ #
55
+ # @param children [Array] the arguments can be Strings and/or TextDrawables
56
+ # @return [void]
57
+ def replace(*children)
58
+ update_text_children(children)
59
+ end
60
+
61
+ # Set the paragraph text to a single String.
62
+ # To use bold, italics, etc. use {Para#replace} instead.
63
+ #
64
+ # @param child [String] the new text to use for this Para
65
+ # @return [void]
66
+ def text=(*children)
67
+ update_text_children(children)
68
+ end
69
+
70
+ def text
71
+ @text_children.map(&:to_s).join
72
+ end
73
+
74
+ def to_s
75
+ self.text
76
+ end
77
+
78
+ private
79
+
80
+ # Text_children alternates strings and TextDrawables, so we can't just pass
81
+ # it as a Shoes style. It won't serialize.
82
+ def update_text_children(children)
83
+ @text_children = children.flatten
84
+ # This should signal the display drawable to change
85
+ self.text_items = text_children_to_items(@text_children)
86
+ end
87
+ end
88
+ end
89
+
90
+ class Shoes
91
+ class Drawable
92
+ def banner(*args, **kwargs)
93
+ para(*args, **{ size: :banner }.merge(kwargs))
94
+ end
95
+
96
+ def title(*args, **kwargs)
97
+ para(*args, **{ size: :title }.merge(kwargs))
98
+ end
99
+
100
+ def subtitle(*args, **kwargs)
101
+ para(*args, **{ size: :subtitle }.merge(kwargs))
102
+ end
103
+
104
+ def tagline(*args, **kwargs)
105
+ para(*args, **{ size: :tagline }.merge(kwargs))
106
+ end
107
+
108
+ def caption(*args, **kwargs)
109
+ para(*args, **{ size: :caption }.merge(kwargs))
110
+ end
111
+
112
+ def inscription(*args, **kwargs)
113
+ para(*args, **{ size: :inscription }.merge(kwargs))
114
+ end
115
+
116
+ alias_method :ins, :inscription
117
+ end
118
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ class Progress < Shoes::Drawable
5
+ shoes_styles :fraction
6
+ shoes_events # No Progress-specific events yet
7
+
8
+ def initialize(fraction: nil)
9
+ super
10
+
11
+ create_display_drawable
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ # A Radio button drawable. Only a single radio button may be checked in each
5
+ # group. If no group is specified, or the group is nil, default to all
6
+ # radio buttons in the same slot being treated as being in the same group.
7
+ class Radio < Shoes::Drawable
8
+ shoes_styles :group, :checked
9
+ shoes_events :click
10
+
11
+ def initialize(group = nil, checked: nil, &block)
12
+ super
13
+ @group = group
14
+ @block = block
15
+
16
+ bind_self_event("click") { click }
17
+ create_display_drawable
18
+ end
19
+
20
+ def click(&block)
21
+ @block = block
22
+ self.checked = !checked?
23
+ end
24
+
25
+ def checked?
26
+ @checked ? true : false
27
+ end
28
+
29
+ def checked(value)
30
+ self.checked = value
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ class Rect < Shoes::Drawable
5
+ shoes_styles :left, :top, :width, :height, :draw_context, :curve
6
+ shoes_events # No Rect-specific events yet
7
+
8
+ def initialize(*args)
9
+ @draw_context = Shoes::App.instance.current_draw_context
10
+
11
+ super
12
+ self.left, self.top, self.width, self.height, self.curve = args
13
+
14
+ create_display_drawable
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ # A Shape acts as a sort of union type for drawn shapes. In Shoes you can use it to merge multiple
5
+ # ovals, arcs, stars, etc. into a single drawn shape.
6
+ #
7
+ # In Shoes3, a Shape isn't really a Slot. It's a kind of DSL with drawing commands that happen
8
+ # to have the same name as the Art drawables like star, arc, etc. Here we're treating it as
9
+ # a slot containing those drawables, which is wrong but not *too* wrong.
10
+ #
11
+ # @incompatibility A Shoes3 Shape is *not* a slot; Scarpe does *not* do union shapes
12
+ class Shape < Shoes::Slot
13
+ shoes_styles :left, :top, :shape_commands, :draw_context
14
+ shoes_events # No Shape-specific events yet
15
+
16
+ def initialize(left: nil, top: nil, &block)
17
+ @shape_commands = []
18
+ @draw_context = Shoes::App.instance.current_draw_context
19
+
20
+ super
21
+ create_display_drawable
22
+
23
+ Shoes::App.instance.with_slot(self, &block) if block_given?
24
+ end
25
+
26
+ # The cmd should be an array of the form:
27
+ #
28
+ # [cmd_name, *args]
29
+ #
30
+ # such as ["move_to", 50, 50]. Note that these must
31
+ # be JSON-serializable.
32
+ def add_shape_command(cmd)
33
+ @shape_commands << cmd
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes::Slot < Shoes::Drawable
4
+ # @incompatibility Shoes uses #content, not #children, for this
5
+ attr_reader :children
6
+
7
+ shoes_events # No Slot-specific events yet
8
+
9
+ # Do not call directly, use set_parent
10
+ def remove_child(child)
11
+ @children ||= []
12
+ unless @children.include?(child)
13
+ @log.warn("remove_child: no such child(#{child.inspect}) for parent(#{parent.inspect})!")
14
+ end
15
+ @children.delete(child)
16
+ end
17
+
18
+ # Do not call directly, use set_parent
19
+ def add_child(child)
20
+ @children ||= []
21
+ @children << child
22
+ end
23
+
24
+ # Get a list of child drawables
25
+ def contents
26
+ @children ||= []
27
+ @children.dup
28
+ end
29
+
30
+ # We use method_missing for drawable-creating methods like "button".
31
+ # The parent's method_missing will auto-create Shoes style getters and setters.
32
+ def method_missing(name, *args, **kwargs, &block)
33
+ klass = ::Shoes::Drawable.drawable_class_by_name(name)
34
+ return super unless klass
35
+
36
+ ::Shoes::Slot.define_method(name) do |*args, **kwargs, &block|
37
+ # Look up the Shoes drawable and create it...
38
+ drawable_instance = klass.new(*args, **kwargs, &block)
39
+
40
+ unless klass.ancestors.include?(::Shoes::TextDrawable)
41
+ drawable_instance.set_parent self # Create drawable in THIS SLOT, not current app slot
42
+ end
43
+
44
+ drawable_instance
45
+ end
46
+
47
+ send(name, *args, **kwargs, &block)
48
+ end
49
+
50
+ def respond_to_missing?(name, include_private = false)
51
+ return true if Drawable.drawable_class_by_name(name.to_s)
52
+
53
+ false
54
+ end
55
+
56
+ # Remove all children from this drawable. If a block
57
+ # is given, call the block to replace the children with
58
+ # new contents from that block.
59
+ #
60
+ # Should only be called on Slots, which can
61
+ # have children.
62
+ #
63
+ # @incompatibility Shoes Classic calls the clear block with current self, while Scarpe uses the Shoes::App as self
64
+ #
65
+ # @yield The block to call to replace the contents of the drawable (optional)
66
+ # @return [void]
67
+ def clear(&block)
68
+ @children.dup.each(&:destroy)
69
+ append(&block) if block_given?
70
+ nil
71
+ end
72
+
73
+ # Call the block to append new children to a Slot.
74
+ #
75
+ # Should only be called on a Slot, since only Slots can have children.
76
+ #
77
+ # @incompatibility Shoes Classic calls the append block with current self, while Scarpe uses the Shoes::App as self
78
+ #
79
+ # @yield the block to call to replace children; will be called on the Shoes::App, appending to the called Slot as the current slot
80
+ # @return [void]
81
+ def append(&block)
82
+ raise(Shoes::Errors::InvalidAttributeValueError, "append requires a block!") unless block_given?
83
+ raise(Shoes::Errors::InvalidAttributeValueError, "Don't append to something that isn't a slot!") unless self.is_a?(Shoes::Slot)
84
+
85
+ Shoes::App.instance.with_slot(self, &block)
86
+ end
87
+ end
@@ -1,25 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Scarpe
4
- class Span < Shoes::Widget
5
- display_properties :text, :stroke, :size, :font, :html_attributes
3
+ class Shoes
4
+ class Span < Shoes::Drawable
5
+ shoes_styles :text, :stroke, :size, :font, :html_attributes
6
+ shoes_events # No Span-specific events yet
6
7
 
7
8
  def initialize(text, stroke: nil, size: :span, font: nil, **html_attributes)
9
+ super
10
+
8
11
  @text = text
9
12
  @stroke = stroke
10
13
  @size = size
11
14
  @font = font
12
15
  @html_attributes = html_attributes
13
16
 
14
- super
15
-
16
- create_display_widget
17
+ create_display_drawable
17
18
  end
18
19
 
19
20
  def replace(text)
20
21
  @text = text
21
22
 
22
- # This should signal the display widget to change
23
+ # This should signal the display drawable to change
23
24
  self.text = @text
24
25
  end
25
26
  end
@@ -1,9 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Scarpe
3
+ class Shoes
4
4
  class Stack < Shoes::Slot
5
+ include Shoes::Background
6
+ include Shoes::Border
7
+ include Shoes::Spacing
8
+
5
9
  # TODO: sort out various margin and padding properties, including putting stuff into spacing
6
- display_properties :width, :height, :scroll
10
+ shoes_styles :width, :height, :scroll
11
+
12
+ shoes_events # No Stack-specific events yet
7
13
 
8
14
  def initialize(width: nil, height: nil, margin: nil, padding: nil, scroll: false, margin_top: nil, margin_bottom: nil, margin_left: nil,
9
15
  margin_right: nil, **options, &block)
@@ -12,8 +18,8 @@ class Scarpe
12
18
 
13
19
  super
14
20
 
15
- create_display_widget
16
- # Create the display-side widget *before* running the block, which will add child widgets with their display widgets
21
+ create_display_drawable
22
+ # Create the display-side drawable *before* running the block, which will add child drawables with their display drawables
17
23
  Shoes::App.instance.with_slot(self, &block) if block_given?
18
24
  end
19
25
  end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Shoes
4
+ class Star < Shoes::Drawable
5
+ shoes_styles :left, :top, :draw_context
6
+
7
+ shoes_style(:points) { |val| convert_to_integer(val, "points") }
8
+ shoes_style(:outer) { |val| convert_to_float(val, "outer") }
9
+ shoes_style(:inner) { |val| convert_to_float(val, "inner") }
10
+
11
+ shoes_events # No Star-specific events yet
12
+
13
+ def initialize(left, top, points = 10, outer = 100, inner = 50)
14
+ super
15
+ self.left = left
16
+ self.top = top
17
+ self.points = points
18
+ self.outer = outer
19
+ self.inner = inner
20
+
21
+ @draw_context = Shoes::App.instance.current_draw_context
22
+
23
+ create_display_drawable
24
+ end
25
+
26
+ def self.convert_to_integer(value, attribute_name)
27
+ begin
28
+ value = Integer(value)
29
+ raise Shoes::Errors::InvalidAttributeValueError, "Negative num '#{value}' not allowed for attribute '#{attribute_name}'" if value < 0
30
+
31
+ value
32
+ rescue ArgumentError
33
+ error_message = "Invalid value '#{value}' provided for attribute '#{attribute_name}'. The value should be a number."
34
+ raise Shoes::Errors::InvalidAttributeValueError, error_message
35
+ end
36
+ end
37
+
38
+ def self.convert_to_float(value, attribute_name)
39
+ begin
40
+ value = Float(value)
41
+ raise Shoes::Errors::InvalidAttributeValueError, "Negative num '#{value}' not allowed for attribute '#{attribute_name}'" if value < 0
42
+
43
+ value
44
+ rescue ArgumentError
45
+ error_message = "Invalid value '#{value}' provided for attribute '#{attribute_name}'. The value should be a number."
46
+ raise Shoes::Errors::InvalidAttributeValueError, error_message
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Certain Shoes calls like motion and keydown are basically an
4
+ # event subscription, with no other visible presence. However,
5
+ # they have a place in the drawable tree and can be deleted.
6
+ #
7
+ # Depending on the display library they may not have any
8
+ # direct visual (or similar) presence there either.
9
+ #
10
+ # Inheriting from Drawable gives these a parent slot and a
11
+ # linkable_id automatically.
12
+ #
13
+ # Events not yet implemented: start, finish events for slots -
14
+ # start is first draw, finish is drawable destroyed
15
+ class Shoes::SubscriptionItem < Shoes::Drawable
16
+ shoes_styles :shoes_api_name, :args
17
+ shoes_events :animate, :every, :timer, :hover, :leave, :motion, :click, :release, :keypress
18
+
19
+ def initialize(args: [], shoes_api_name:, &block)
20
+ super
21
+
22
+ @callback = block
23
+
24
+ case shoes_api_name
25
+ when "animate"
26
+ @unsub_id = bind_self_event("animate") do |frame|
27
+ @callback.call(frame)
28
+ end
29
+ when "every"
30
+ @unsub_id = bind_self_event("every") do |count|
31
+ @callback.call(count)
32
+ end
33
+ when "timer"
34
+ @unsub_id = bind_self_event("timer") do
35
+ @callback.call
36
+ end
37
+ when "hover"
38
+ # Hover passes the Shoes drawable as the block param
39
+ @unsub_id = bind_self_event("hover") do
40
+ @callback&.call(self)
41
+ end
42
+ when "leave"
43
+ # Leave passes the Shoes drawable as the block param
44
+ @unsub_id = bind_self_event("leave") do
45
+ @callback&.call(self)
46
+ end
47
+ when "motion"
48
+ # Shoes sends back x, y, mods as the args.
49
+ # Shoes3 uses the strings "control" "shift" and
50
+ # "control_shift" as the mods arg.
51
+ @unsub_id = bind_self_event("motion") do |x, y, ctrl_key, shift_key, **_kwargs|
52
+ mods = [ctrl_key ? "control" : nil, shift_key ? "shift" : nil].compact.join("_")
53
+ @callback&.call(x, y, mods)
54
+ end
55
+ when "click"
56
+ # Click has block params button, left, top
57
+ # button is the button number, left and top are coords
58
+ @unsub_id = bind_self_event("click") do |button, x, y, **_kwargs|
59
+ @callback&.call(button, x, y)
60
+ end
61
+ when "release"
62
+ # Click has block params button, left, top
63
+ # button is the button number, left and top are coords
64
+ @unsub_id = bind_self_event("release") do |button, x, y, **_kwargs|
65
+ @callback&.call(button, x, y)
66
+ end
67
+ when "keypress"
68
+ # Keypress passes the key string or symbol to the handler
69
+ # Do anything special for serialisation here?
70
+ @unsub_id = bind_self_event("keypress") do |key|
71
+ @callback&.call(key)
72
+ end
73
+ else
74
+ raise "Unknown Shoes event #{shoes_api_name.inspect} passed to SubscriptionItem!"
75
+ end
76
+
77
+ @unsub_id = bind_self_event(shoes_api_name) do |*args|
78
+ @callback&.call(*args)
79
+ end
80
+
81
+ # This won't create a visible display drawable, but will turn into
82
+ # an invisible drawable and a stream of events.
83
+ create_display_drawable
84
+ end
85
+
86
+ def destroy
87
+ # TODO: we need a better way to do this automatically. See https://github.com/scarpe-team/scarpe/issues/291
88
+ unsub_shoes_event(@unsub_id) if @unsub_id
89
+ @unsub_id = nil
90
+
91
+ super
92
+ end
93
+ end