scarpe 0.2.2 → 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 (223) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/CHANGELOG.md +16 -2
  4. data/Gemfile.lock +7 -3
  5. data/README.md +24 -8
  6. data/Rakefile +1 -1
  7. data/examples/animate.rb +20 -0
  8. data/examples/arrow.rb +10 -0
  9. data/examples/btn_tooltip.rb +7 -0
  10. data/examples/button_style_changed.rb +7 -0
  11. data/examples/button_styles_default.rb +6 -0
  12. data/examples/gen.rb +8 -8
  13. data/examples/highlander.rb +3 -3
  14. data/examples/legacy/README.md +6 -0
  15. data/examples/legacy/not_checked/shoes-contrib/basic/shoes-notes.rb +1 -1
  16. data/examples/legacy/not_checked/simple/anim-shapes.rb +1 -1
  17. data/examples/legacy/not_checked/speedometer_app.rb +55 -0
  18. data/examples/legacy/working/simple/image-icon.rb +3 -0
  19. data/examples/legacy/{not_checked → working}/simple/image.rb +1 -1
  20. data/examples/list_box_choose.rb +17 -0
  21. data/examples/local_assets/local_file_server.rb +82 -0
  22. data/examples/local_assets/sample.gif +0 -0
  23. data/examples/local_assets/sample.mp4 +0 -0
  24. data/examples/local_fonts.rb +2 -2
  25. data/examples/local_images.rb +2 -3
  26. data/examples/para/para_text.rb +14 -0
  27. data/examples/progress.rb +31 -0
  28. data/examples/radio/radio_groups.rb +2 -2
  29. data/examples/rect.rb +4 -0
  30. data/examples/rotate_shapes.rb +17 -0
  31. data/examples/simpler-menu.rb +21 -0
  32. data/exe/scarpe +2 -1
  33. data/lacci/Gemfile +2 -0
  34. data/lacci/Gemfile.lock +8 -1
  35. data/lacci/lacci.gemspec +1 -1
  36. data/lacci/lib/lacci/scarpe_cli.rb +2 -1
  37. data/lacci/lib/lacci/scarpe_core.rb +2 -1
  38. data/lacci/lib/lacci/version.rb +1 -1
  39. data/lacci/lib/scarpe/niente/app.rb +23 -0
  40. data/lacci/lib/scarpe/niente/display_service.rb +62 -0
  41. data/lacci/lib/scarpe/niente/drawable.rb +57 -0
  42. data/lacci/lib/scarpe/niente/logger.rb +29 -0
  43. data/lacci/lib/scarpe/niente/shoes_spec.rb +87 -0
  44. data/lacci/lib/scarpe/niente.rb +20 -0
  45. data/lacci/lib/shoes/app.rb +88 -43
  46. data/lacci/lib/shoes/background.rb +2 -2
  47. data/lacci/lib/shoes/border.rb +2 -2
  48. data/lacci/lib/shoes/builtins.rb +63 -0
  49. data/lacci/lib/shoes/changelog.rb +52 -0
  50. data/lacci/lib/shoes/colors.rb +3 -1
  51. data/lacci/lib/shoes/constants.rb +19 -1
  52. data/lacci/lib/shoes/display_service.rb +39 -16
  53. data/lacci/lib/shoes/download.rb +2 -2
  54. data/lacci/lib/shoes/drawable.rb +380 -0
  55. data/lacci/lib/shoes/drawables/arc.rb +49 -0
  56. data/lacci/lib/shoes/drawables/arrow.rb +41 -0
  57. data/lacci/lib/shoes/drawables/button.rb +73 -0
  58. data/lacci/lib/shoes/{widgets → drawables}/check.rb +5 -4
  59. data/lacci/lib/shoes/{widgets → drawables}/document_root.rb +3 -3
  60. data/lacci/lib/shoes/{widgets → drawables}/edit_box.rb +6 -6
  61. data/lacci/lib/shoes/{widgets → drawables}/edit_line.rb +6 -6
  62. data/lacci/lib/shoes/{widgets → drawables}/flow.rb +6 -6
  63. data/lacci/lib/shoes/{widgets → drawables}/image.rb +6 -6
  64. data/lacci/lib/shoes/{widgets → drawables}/line.rb +7 -5
  65. data/lacci/lib/shoes/drawables/link.rb +34 -0
  66. data/lacci/lib/shoes/drawables/list_box.rb +56 -0
  67. data/lacci/lib/shoes/drawables/para.rb +118 -0
  68. data/lacci/lib/shoes/drawables/progress.rb +14 -0
  69. data/lacci/lib/shoes/drawables/radio.rb +33 -0
  70. data/lacci/lib/shoes/drawables/rect.rb +17 -0
  71. data/lacci/lib/shoes/{widgets → drawables}/shape.rb +6 -7
  72. data/lacci/lib/shoes/{widgets → drawables}/slot.rb +32 -20
  73. data/lacci/lib/shoes/{widgets → drawables}/span.rb +8 -7
  74. data/lacci/lib/shoes/{widgets → drawables}/stack.rb +6 -4
  75. data/lacci/lib/shoes/drawables/star.rb +50 -0
  76. data/lacci/lib/shoes/drawables/subscription_item.rb +93 -0
  77. data/lacci/lib/shoes/drawables/text_drawable.rb +63 -0
  78. data/lacci/lib/shoes/drawables/video.rb +16 -0
  79. data/lacci/lib/shoes/drawables/widget.rb +69 -0
  80. data/lacci/lib/shoes/drawables.rb +31 -0
  81. data/lacci/lib/shoes/errors.rb +28 -0
  82. data/lacci/lib/shoes/log.rb +2 -2
  83. data/lacci/lib/shoes/ruby_extensions.rb +15 -0
  84. data/lacci/lib/shoes/spacing.rb +2 -2
  85. data/lacci/lib/shoes-spec.rb +93 -0
  86. data/lacci/lib/shoes.rb +27 -7
  87. data/lacci/test/test_helper.rb +54 -0
  88. data/lacci/test/test_lacci.rb +12 -3
  89. data/lacci/test/test_shoes_errors.rb +49 -0
  90. data/lib/scarpe/cats_cradle.rb +81 -59
  91. data/lib/scarpe/errors.rb +77 -0
  92. data/lib/scarpe/evented_assertions.rb +50 -17
  93. data/lib/scarpe/shoes_spec.rb +181 -0
  94. data/lib/scarpe/version.rb +2 -2
  95. data/lib/scarpe/wv/app.rb +20 -20
  96. data/lib/scarpe/wv/arc.rb +4 -47
  97. data/lib/scarpe/wv/arrow.rb +9 -0
  98. data/lib/scarpe/wv/button.rb +7 -35
  99. data/lib/scarpe/wv/check.rb +3 -5
  100. data/lib/scarpe/wv/control_interface.rb +18 -20
  101. data/lib/scarpe/wv/document_root.rb +81 -4
  102. data/lib/scarpe/wv/{widget.rb → drawable.rb} +66 -43
  103. data/lib/scarpe/wv/edit_box.rb +4 -17
  104. data/lib/scarpe/wv/edit_line.rb +4 -18
  105. data/lib/scarpe/wv/flow.rb +2 -18
  106. data/lib/scarpe/wv/image.rb +8 -28
  107. data/lib/scarpe/wv/line.rb +3 -25
  108. data/lib/scarpe/wv/link.rb +3 -16
  109. data/lib/scarpe/wv/list_box.rb +6 -29
  110. data/lib/scarpe/wv/para.rb +11 -30
  111. data/lib/scarpe/wv/progress.rb +19 -0
  112. data/lib/scarpe/wv/radio.rb +9 -10
  113. data/lib/scarpe/wv/rect.rb +13 -0
  114. data/lib/scarpe/wv/shape.rb +3 -8
  115. data/lib/scarpe/wv/slot.rb +8 -25
  116. data/lib/scarpe/wv/span.rb +3 -27
  117. data/lib/scarpe/wv/stack.rb +2 -18
  118. data/lib/scarpe/wv/star.rb +3 -53
  119. data/lib/scarpe/wv/subscription_item.rb +38 -4
  120. data/lib/scarpe/wv/text_drawable.rb +32 -0
  121. data/lib/scarpe/wv/video.rb +15 -15
  122. data/lib/scarpe/wv/web_wrangler.rb +299 -329
  123. data/lib/scarpe/wv/webview_local_display.rb +48 -33
  124. data/lib/scarpe/wv/webview_relay_display.rb +12 -12
  125. data/lib/scarpe/wv/webview_relay_util.rb +7 -10
  126. data/lib/scarpe/wv/wv_display_worker.rb +2 -2
  127. data/lib/scarpe/wv.rb +45 -12
  128. data/lib/scarpe/wv_local.rb +1 -1
  129. data/lib/scarpe/wv_relay.rb +1 -1
  130. data/lib/scarpe.rb +1 -0
  131. data/logger/debug_web_wrangler.json +1 -1
  132. data/logger/scarpe_wv_test.json +1 -1
  133. data/scarpe-components/Gemfile.lock +86 -0
  134. data/scarpe-components/lib/scarpe/components/base64.rb +3 -7
  135. data/scarpe-components/lib/scarpe/components/calzini/alert.rb +49 -0
  136. data/scarpe-components/lib/scarpe/components/calzini/art_widgets.rb +203 -0
  137. data/scarpe-components/lib/scarpe/components/calzini/button.rb +39 -0
  138. data/scarpe-components/lib/scarpe/components/calzini/misc.rb +146 -0
  139. data/scarpe-components/lib/scarpe/components/calzini/para.rb +35 -0
  140. data/scarpe-components/lib/scarpe/components/calzini/slots.rb +155 -0
  141. data/scarpe-components/lib/scarpe/components/calzini/text_widgets.rb +65 -0
  142. data/scarpe-components/lib/scarpe/components/calzini.rb +149 -0
  143. data/scarpe-components/lib/scarpe/components/errors.rb +20 -0
  144. data/scarpe-components/lib/scarpe/components/file_helpers.rb +1 -0
  145. data/scarpe-components/lib/scarpe/components/html.rb +131 -0
  146. data/scarpe-components/lib/scarpe/components/minitest_export_reporter.rb +75 -0
  147. data/scarpe-components/lib/scarpe/components/minitest_import_runnable.rb +98 -0
  148. data/scarpe-components/lib/scarpe/components/minitest_result.rb +86 -0
  149. data/scarpe-components/lib/scarpe/components/modular_logger.rb +5 -5
  150. data/scarpe-components/lib/scarpe/components/print_logger.rb +9 -5
  151. data/scarpe-components/lib/scarpe/components/promises.rb +14 -14
  152. data/scarpe-components/lib/scarpe/components/segmented_file_loader.rb +36 -17
  153. data/scarpe-components/lib/scarpe/components/string_helpers.rb +10 -0
  154. data/scarpe-components/lib/scarpe/components/tiranti.rb +225 -0
  155. data/scarpe-components/lib/scarpe/components/unit_test_helpers.rb +45 -5
  156. data/scarpe-components/lib/scarpe/components/version.rb +2 -2
  157. data/scarpe-components/test/calzini/test_calzini_alert.rb +30 -0
  158. data/scarpe-components/test/calzini/test_calzini_art_drawables.rb +105 -0
  159. data/scarpe-components/test/calzini/test_calzini_button.rb +52 -0
  160. data/scarpe-components/test/calzini/test_calzini_misc.rb +115 -0
  161. data/scarpe-components/test/calzini/test_calzini_para.rb +37 -0
  162. data/scarpe-components/test/calzini/test_calzini_slots.rb +130 -0
  163. data/scarpe-components/test/calzini/test_calzini_text_drawables.rb +41 -0
  164. data/scarpe-components/test/mtr_data/exception.json +1 -0
  165. data/scarpe-components/test/mtr_data/fail_with_message.json +1 -0
  166. data/scarpe-components/test/mtr_data/skipped_no_message.json +1 -0
  167. data/scarpe-components/test/mtr_data/skipped_w_msg.json +1 -0
  168. data/scarpe-components/test/mtr_data/succeed_2_asserts.json +1 -0
  169. data/scarpe-components/test/test_dimensions.rb +26 -0
  170. data/scarpe-components/test/test_helper.rb +20 -0
  171. data/scarpe-components/test/test_html.rb +65 -0
  172. data/scarpe-components/test/test_minitest_result.rb +61 -0
  173. data/scarpe-components/test/test_promises.rb +5 -4
  174. data/scarpe-components/test/test_segmented_app_files.rb +8 -6
  175. data/scarpegen.rb +14 -14
  176. data/sig/scarpe.rbs +1 -1
  177. data/templates/basic_class_template.erb +13 -14
  178. data/templates/class_template_with_event_bind.erb +4 -4
  179. data/templates/class_template_with_shapes.erb +8 -17
  180. data/templates/example_template.erb +1 -1
  181. data/templates/module_template.erb +4 -4
  182. data/templates/webview_template.erb +3 -2
  183. metadata +113 -55
  184. data/examples/legacy/not_checked/shoes-contrib/elements/image-icon.rb +0 -3
  185. data/lacci/lib/shoes/widget.rb +0 -218
  186. data/lacci/lib/shoes/widgets/alert.rb +0 -19
  187. data/lacci/lib/shoes/widgets/arc.rb +0 -51
  188. data/lacci/lib/shoes/widgets/button.rb +0 -35
  189. data/lacci/lib/shoes/widgets/font.rb +0 -14
  190. data/lacci/lib/shoes/widgets/link.rb +0 -25
  191. data/lacci/lib/shoes/widgets/list_box.rb +0 -25
  192. data/lacci/lib/shoes/widgets/para.rb +0 -68
  193. data/lacci/lib/shoes/widgets/radio.rb +0 -35
  194. data/lacci/lib/shoes/widgets/star.rb +0 -44
  195. data/lacci/lib/shoes/widgets/subscription_item.rb +0 -60
  196. data/lacci/lib/shoes/widgets/text_widget.rb +0 -51
  197. data/lacci/lib/shoes/widgets/video.rb +0 -15
  198. data/lacci/lib/shoes/widgets.rb +0 -29
  199. data/lib/scarpe/wv/alert.rb +0 -66
  200. data/lib/scarpe/wv/background.rb +0 -27
  201. data/lib/scarpe/wv/border.rb +0 -24
  202. data/lib/scarpe/wv/control_interface_test.rb +0 -238
  203. data/lib/scarpe/wv/dimensions.rb +0 -22
  204. data/lib/scarpe/wv/font.rb +0 -36
  205. data/lib/scarpe/wv/html.rb +0 -108
  206. data/lib/scarpe/wv/spacing.rb +0 -41
  207. data/lib/scarpe/wv/text_widget.rb +0 -30
  208. /data/examples/legacy/not_checked/{expert → shoes-contrib/basic}/definr.rb +0 -0
  209. /data/examples/legacy/not_checked/{expert → shoes-contrib/basic}/funnies.rb +0 -0
  210. /data/examples/legacy/not_checked/shoes-contrib/{elements → basic}/list_box-select-class.rb +0 -0
  211. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/basic-edit-box.rb +0 -0
  212. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/basic-fps.rb +0 -0
  213. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/border-cat.rb +0 -0
  214. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/check-mate.rb +0 -0
  215. /data/examples/legacy/{not_checked/shoes-contrib/manipulation → working/simple}/clear-slot.rb +0 -0
  216. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/clock.rb +0 -0
  217. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/gradient-shoes.rb +0 -0
  218. /data/examples/legacy/{not_checked/shoes-contrib/basic → working/simple}/list_box-shape-report.rb +0 -0
  219. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/list_box.rb +0 -0
  220. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/phat-button.rb +0 -0
  221. /data/examples/legacy/{not_checked/shoes-contrib → working}/simple/simple-calc.rb +0 -0
  222. /data/examples/legacy/{not_checked/shoes-contrib/position → working/simple}/stack-width.rb +0 -0
  223. /data/examples/legacy/{not_checked/shoes-contrib/elements → working/simple}/width-introspec.rb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b07033a939f5503cea0f357a5ac67f0df01833038c433933c4dd2984bcd15b76
4
- data.tar.gz: cc633f8adfe627f260e06371feae6d1b152f28c279db62576c82f5c16a44e1be
3
+ metadata.gz: c83fb76fc149cffa58c679978dc3647689acb5b418d7e65a931bddfb1687b250
4
+ data.tar.gz: 2b73dae2f9f5be78d6b5637d605b089c3031b14aff91acc1eced51f021283f5a
5
5
  SHA512:
6
- metadata.gz: 105ea36e4f41d00d1e67ce3ff68cefac8195cc692225133e90382c770c2bfe393ee50c827b5feff0873f9d34cb54b35a11cf7e75994ec10b62d35f72ee0adb37
7
- data.tar.gz: ff5b648210d7d24e9114e3850529c10999091215aa5f7576e4ee26544797cb98e1f6a51642f39c4b638b7f4a55525bc463188a678265d4ff13f01a5af8d0f931
6
+ metadata.gz: 6da8066857ec4241252fcca4bbe01a60c369260b618a65f44384666a4ed67311ee3bd065ab68bed79f7084e3f8c5ba7c8db3244c3cbcf9e166d1ad5130ccb43d
7
+ data.tar.gz: b8ba6762940cc53078e1461024f26b762acd302a99cb6fccd965b4c4018ac1452ad85821c78c8ab59b28db572ac899781d1e84bacd77bce602a9edeb0fe84a85
data/.yardopts CHANGED
@@ -8,6 +8,7 @@
8
8
  --exclude lib/scarpe/glibui
9
9
  lib/**/*.rb
10
10
  lacci/lib/**/*.rb
11
+ scarpe-components/lib/**/*.rb
11
12
  -
12
13
  docs/yard/*.md
13
14
  docs/static/manual.md
data/CHANGELOG.md CHANGED
@@ -10,10 +10,24 @@ straightforward as possible.
10
10
 
11
11
  ### Fixed
12
12
 
13
- ## [0.2.0] - 2022-07-02
13
+ ## [0.3.0] - 2023-11-24 - You
14
+
15
+ - Progress bars
16
+ - Various new APIs and many bug fixes
17
+ - Added Tiranti, a Bootstrap-based Calzini HTML renderer replacement
18
+ - Added Calzini, a Drawable-to-HTML renderer
19
+ - Rename of Widget to Drawable
20
+ - Extremely early Shoes-Spec testing support
21
+ - Niente, a "no-op" testing display service
22
+
23
+ ## [0.2.1] - 2023-07-02 - Give
24
+
25
+ - Bugfix release
26
+
27
+ ## [0.2.0] - 2023-07-02 - Gonna
14
28
 
15
29
  - First batch of functionality. Will aggressively track to changelog from here on out.
16
30
 
17
- ## [0.1.0] - 2022-02-09
31
+ ## [0.1.0] - 2023-02-09 - Never
18
32
 
19
33
  - Initial release
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- scarpe (0.2.1)
4
+ scarpe (0.3.0)
5
5
  bloops (~> 0.5)
6
6
  fastimage
7
7
  lacci
@@ -14,12 +14,13 @@ PATH
14
14
  PATH
15
15
  remote: lacci
16
16
  specs:
17
- lacci (0.2.1)
17
+ lacci (0.3.0)
18
+ scarpe-components
18
19
 
19
20
  PATH
20
21
  remote: scarpe-components
21
22
  specs:
22
- scarpe-components (0.2.1)
23
+ scarpe-components (0.3.0)
23
24
 
24
25
  GEM
25
26
  remote: https://rubygems.org/
@@ -53,6 +54,8 @@ GEM
53
54
  multi_json (1.15.0)
54
55
  nokogiri (1.15.2-x86_64-darwin)
55
56
  racc (~> 1.4)
57
+ nokogiri (1.15.2-x86_64-linux)
58
+ racc (~> 1.4)
56
59
  parallel (1.22.1)
57
60
  parser (3.2.1.0)
58
61
  ast (~> 2.4.1)
@@ -80,6 +83,7 @@ GEM
80
83
  rubocop (~> 1.44)
81
84
  ruby-progressbar (1.11.0)
82
85
  sqlite3 (1.6.3-x86_64-darwin)
86
+ sqlite3 (1.6.3-x86_64-linux)
83
87
  unicode-display_width (2.4.2)
84
88
  webrick (1.7.0)
85
89
  webview_ruby (0.1.2)
data/README.md CHANGED
@@ -29,17 +29,31 @@ Shoes.app do
29
29
  end
30
30
  ```
31
31
 
32
- More examples can be found in the [`examples` folder](https://github.com/scarpe-team/scarpe/tree/main/examples)!
32
+ <img width="480" alt="hello_world" src="https://user-images.githubusercontent.com/9624267/158565981-57240f72-fbaf-4b72-b66e-8c0d517a90d7.png">
33
+
34
+ A bit more...
35
+
36
+ ```ruby
37
+ Shoes.app do
38
+ @push = button "Push me"
39
+ @note = para "Nothing pushed so far"
40
+ @push.click {
41
+ @note.replace(
42
+ "Aha! Click! ",
43
+ link("Go back") { @note.replace "Nothing pushed so far" }
44
+ )
45
+ }
46
+ end
47
+ ```
33
48
 
34
- ## Screenshots
49
+ <img width="480" alt="hello_world" src="https://user-images.githubusercontent.com/9624267/158566011-0372d0c7-fbeb-4ed6-a082-73908f04a0b6.gif">
35
50
 
36
- From the hello world example:
51
+ More examples can be found in the [`examples` folder](https://github.com/scarpe-team/scarpe/tree/main/examples)!
37
52
 
38
- <img width="480" alt="hello_world" src="https://user-images.githubusercontent.com/9624267/158565981-57240f72-fbaf-4b72-b66e-8c0d517a90d7.png">
53
+ ## Wiki
39
54
 
40
- From the button example:
55
+ Explore more in the [Scarpe Wiki](https://github.com/scarpe-team/scarpe/wiki) for in-depth documentation, tutorials, and additional resources. Whether you're a new contributor or an experienced user, the Wiki provides valuable information to enhance your Scarpe experience.
41
56
 
42
- <img width="480" alt="hello_world" src="https://user-images.githubusercontent.com/9624267/158566011-0372d0c7-fbeb-4ed6-a082-73908f04a0b6.gif">
43
57
 
44
58
  ## Scarpe in Development
45
59
 
@@ -52,8 +66,10 @@ This repo is where most of the action is happening right now, and to have the fu
52
66
  ```
53
67
  # dependencies - Mac version
54
68
  brew install portaudio pkg-config # for sound!
69
+ # dependencies - Mac M1 version
70
+ brew install portaudio && bundle config build.bloops --with-portaudio-dir=$(brew --prefix portaudio)
55
71
  # dependencies - Ubuntu Linux version
56
- sudo apt install libgtk-3-dev libwebkit2gtk-4.0-dev libportaudio2
72
+ sudo apt install libgtk-3-dev libwebkit2gtk-4.0-dev portaudio19-dev
57
73
 
58
74
  for any other linux or windows. please see the webview docs for your [platform](https://github.com/webview/webview#prerequisites)
59
75
 
@@ -147,7 +163,7 @@ You can set SCARPE_LOG_CONFIG to an appropriate YAML file to set log levels per-
147
163
  ```
148
164
  {
149
165
  "default": "warn",
150
- "WV::WebWrangler": ["logger/web_wrangler.log", "debug"]
166
+ "Webview::WebWrangler": ["logger/web_wrangler.log", "debug"]
151
167
  }
152
168
  ```
153
169
 
data/Rakefile CHANGED
@@ -24,4 +24,4 @@ end
24
24
 
25
25
  RuboCop::RakeTask.new
26
26
 
27
- task default: [:test, :lacci_test, :component_test, :rubocop]
27
+ task default: [:test, :lacci_test, :component_test]
@@ -0,0 +1,20 @@
1
+ Shoes.app do
2
+ stack do
3
+ para "10 fps"
4
+ p = para "-"
5
+ animate do |frame|
6
+ p.replace(frame.to_s)
7
+ end
8
+ para "20 fps"
9
+ p2 = para "-"
10
+ animate(20) do |frame|
11
+ p2.replace(frame.to_s)
12
+ end
13
+ para "3spf"
14
+ p3 = para "-"
15
+ every(3) do |count|
16
+ p3.replace(count.to_s)
17
+ end
18
+ end
19
+ end
20
+
data/examples/arrow.rb ADDED
@@ -0,0 +1,10 @@
1
+ Shoes.app do
2
+ arrow 100, 100, 30
3
+
4
+ arrow 150, 120,40
5
+
6
+ arrow 30 ,60 ,40
7
+
8
+ arrow :left => 50, :top => 80,
9
+ :width => 40
10
+ end
@@ -0,0 +1,7 @@
1
+ Shoes.app do
2
+ @btn = button "who am i?", :tooltip => "i have no idea either"
3
+ @para = para "i am a button"
4
+ @btn.hover do
5
+ @para.replace "i am a button and i am being hovered"
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ Shoes.app do
2
+ @p = para "This text will start red\n", stroke: :red
3
+ button "OK" do
4
+ @p.replace("... but turn green when you click it.")
5
+ @p.stroke = :green
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ Shoes.app do
2
+ style Shoes::Para, stroke: :red
3
+ para "This text should be red\n"
4
+ para "But this text should be green\n", stroke: :green
5
+ button "OK"
6
+ end
data/examples/gen.rb CHANGED
@@ -2,9 +2,9 @@
2
2
  require 'erb'
3
3
 
4
4
  class ScarpeGenerator
5
- def initialize(filename, display_properties)
5
+ def initialize(filename, shoes_styles)
6
6
  @filename = filename
7
- @display_properties = display_properties
7
+ @shoes_styles = shoes_styles
8
8
  end
9
9
 
10
10
  def generate_files(choice, class_template_choice)
@@ -96,7 +96,7 @@ class ScarpeGenerator
96
96
  capitalized_argument = @filename.capitalize
97
97
  binding.dup.tap do |b|
98
98
  b.local_variable_set(:argument, capitalized_argument)
99
- b.local_variable_set(:display_properties, @display_properties)
99
+ b.local_variable_set(:shoes_styles, @shoes_styles)
100
100
  end
101
101
  end
102
102
  end
@@ -109,7 +109,7 @@ Shoes.app(title: 'Templates') do
109
109
  end
110
110
 
111
111
  stack width: 400 do
112
- para 'Enter display properties (like :height,:text) '
112
+ para 'Enter Shoes styles (like :height,:text) '
113
113
  $properties_input = edit_line
114
114
  end
115
115
 
@@ -125,13 +125,13 @@ Shoes.app(title: 'Templates') do
125
125
 
126
126
  button 'Generate Files!',color:"#FF7116",padding_bottom:"8",padding_top:"8",text_color:"white",font_size:"16" do
127
127
  filename = $filename_input.text
128
- display_properties = $properties_input.text
129
- choice = $choice_input.selected_item
128
+ shoes_styles = $properties_input.text
129
+ choice = $choice_input.text
130
130
 
131
- generator = ScarpeGenerator.new(filename, display_properties)
131
+ generator = ScarpeGenerator.new(filename, shoes_styles)
132
132
 
133
133
  if choice == 'Class'
134
- generator.generate_files(choice, $class_template_choice_input.selected_item)
134
+ generator.generate_files(choice, $class_template_choice_input.text)
135
135
  else
136
136
  generator.generate_files(choice, nil)
137
137
  end
@@ -35,7 +35,7 @@ def update_dup_list
35
35
  end
36
36
 
37
37
  def highlander_the_selected_item
38
- selected = $dup_list.selected_item
38
+ selected = $dup_list.text
39
39
  if !selected || selected == "" || !selected.include?(DIVIDER)
40
40
  $bottom_display.replace("Select an item first!")
41
41
  return
@@ -58,7 +58,7 @@ def highlander_the_selected_item
58
58
  end
59
59
  end
60
60
 
61
- $dup_list.selected_item = nil
61
+ $dup_list.choose nil
62
62
  $bottom_display.replace BOTTOM_DISPLAY_INSTRUCTIONS
63
63
  update_dup_list
64
64
  end
@@ -67,7 +67,7 @@ Shoes.app(title: "Highlander") do
67
67
  stack :margin => 40 do
68
68
  $top_text = para "Loading..."
69
69
  $dup_list = list_box(:items => []).change do
70
- $bottom_display.replace "Selected duplicates: #{$dup_list.selected_item.inspect}"
70
+ $bottom_display.replace "Selected duplicates: #{$dup_list.text.inspect}"
71
71
  end
72
72
 
73
73
  update_dup_list
@@ -0,0 +1,6 @@
1
+ # Legacy Projects
2
+
3
+ These are Shoes examples, taken from a wide variety of sources. In general, we try not to modify them.
4
+
5
+ It's possible that some of them run but we haven't realised it yet, which is why the "not_checked" directory is nameed that, rather than something like "won't work". Also, they aren't checked by CI, while the ones marked working have to at least boot up.
6
+
@@ -12,5 +12,5 @@ Shoes.app do
12
12
  @add.text = ""
13
13
  end
14
14
  end
15
- @notes = stack :margin => 20, :widht => -250
15
+ @notes = stack :margin => 20, :width => -250
16
16
  end
@@ -14,4 +14,4 @@ Shoes.app do
14
14
  button "OK", :top => 0.5, :left => 0.5 do
15
15
  Shoes.quit unless confirm "You ARE sure you're OK??"
16
16
  end
17
- end
17
+ end
@@ -0,0 +1,55 @@
1
+ # Source: https://www.hanselman.com/blog/the-weekly-source-code-29-ruby-and-shoes-and-the-first-ruby-virus
2
+
3
+ class Speedometer < Shoes::Widget
4
+ attr_accessor :range, :tick, :position
5
+ def initialize opts = {}
6
+ @range = opts[:range] || 200
7
+ @tick = opts[:tick] || 10
8
+ @position = opts[:position] || 0
9
+ @cx, @cy = self.left + 110, self.top + 100
10
+
11
+ nostroke
12
+ rect :top => self.top, :left => self.left,
13
+ :width => 220, :height => 200
14
+ nofill
15
+ stroke white
16
+ oval :left => @cx - 50, :top => @cy - 50, :radius => 100
17
+ (ticks + 1).times do |i|
18
+ radial_line 225 + ((270.0 / ticks) * i), 70..80
19
+ radial_line 225 + ((270.0 / ticks) * i), 45..49
20
+ end
21
+ strokewidth 2
22
+ oval :left => @cx - 70, :top => @cy - 70, :radius => 140
23
+ stroke lightgreen
24
+ oval :left => @cx - 5, :top => @cy - 5, :radius => 10
25
+ @needle = radial_line 225 + ((270.0 / @range) * @position), 0..90
26
+ end
27
+ def ticks; @range / @tick end
28
+ def radial_line deg, r
29
+ pos = ((deg / 360.0) * (2.0 * Math::PI)) - (Math::PI / 2.0)
30
+ line (Math.cos(pos) * r.begin) + @cx, (Math.sin(pos) * r.begin) + @cy,
31
+ (Math.cos(pos) * r.end) + @cx, (Math.sin(pos) * r.end) + @cy
32
+ end
33
+ def position= pos
34
+ @position = pos
35
+ @needle.remove
36
+ append do
37
+ @needle = radial_line 225 + ((270.0 / @range) * @position), 0..90
38
+ end
39
+ end
40
+ end
41
+
42
+ Shoes.app do
43
+ stack do
44
+ para "Enter a number between 0 and 100"
45
+ flow do
46
+ @p = edit_line
47
+ button "OK" do
48
+ @s.position = @p.text.to_i
49
+ end
50
+ end
51
+
52
+ @s = speedometer :range => 100, :ticks => 10
53
+ end
54
+ end
55
+
@@ -0,0 +1,3 @@
1
+ Shoes.app do
2
+ image "https://user-images.githubusercontent.com/7865030/217309905-7f25e3cf-1850-481d-811b-dfddea2df54a.png"
3
+ end
@@ -1,7 +1,7 @@
1
1
  Shoes.app do
2
2
  background "#eee"
3
3
  @list = stack do
4
- @img = image '../static/man-builds.png'
4
+ @img = image "#{DIR}/docs/static/man-builds.png"
5
5
  para "Enter a image URL to download:", :margin => [10, 8, 10, 0]
6
6
  flow :margin => 10 do
7
7
  @url = edit_line :width => -120
@@ -0,0 +1,17 @@
1
+ Shoes.app(title: "Guessing secret word", width: 500, height: 450) do
2
+ secret_word = "apple"
3
+ guess_label = para "Guess the secret word:"
4
+ guess_input = list_box items: ["apple", "banana", "orange"], choose: "orange"
5
+
6
+ button "Guess" do
7
+ guess = guess_input.text
8
+
9
+ if guess == secret_word
10
+ alert("Yayyy! that's right.")
11
+ else
12
+ alert("No, better luck next time😕")
13
+ end
14
+
15
+ guess_input.choose "orange"
16
+ end
17
+ end
@@ -0,0 +1,82 @@
1
+ # Require the WEBrick library
2
+ require 'webrick'
3
+
4
+ # Configuration for the server
5
+ configuration = {
6
+ Port: 4567,
7
+ DocumentRoot: File.join(File.dirname(__FILE__), '..', '..', 'examples', 'local_assets')
8
+ }
9
+
10
+ # Create a new instance of WEBrick::HTTPServer with the configuration
11
+ server = WEBrick::HTTPServer.new(configuration)
12
+
13
+ # Define a custom servlet to handle file requests
14
+ class FileServlet < WEBrick::HTTPServlet::AbstractServlet
15
+ def do_GET(request, response)
16
+ relative_path = request.path
17
+ path = File.join(@config[:DocumentRoot], relative_path)
18
+
19
+ if File.exist?(path) && !File.directory?(path)
20
+ begin
21
+ file_content = File.read(path)
22
+
23
+ response.status = 200
24
+ response['Content-Type'] = WEBrick::HTTPUtils.mime_type(path, WEBrick::HTTPUtils::DefaultMimeTypes)
25
+ response['Content-Disposition'] = "inline; filename=#{File.basename(path)}"
26
+ response.body = file_content
27
+ rescue StandardError => e
28
+ response.status = 500
29
+ response.body = 'Internal Server Error'
30
+ end
31
+ else
32
+ response.status = 404
33
+ response.body = 'File not found'
34
+ end
35
+ end
36
+ end
37
+
38
+ # Mount the custom servlet at the root URL
39
+ server.mount('/', FileServlet)
40
+
41
+ # Set up a signal trap to gracefully shut down the server on interrupt (e.g., Ctrl+C)
42
+ trap('INT') do
43
+ server.shutdown
44
+ end
45
+
46
+ # Start the server in a separate thread
47
+ server_thread = Thread.new { server.start }
48
+
49
+ # Shoes application to display the file from the local server
50
+ Shoes.app do
51
+ stack do
52
+ flow do
53
+ para "Enter the file path: (e.g., sample.gif, sample.mp4)"
54
+ @file_path = edit_line
55
+ end
56
+
57
+ button "Display File" do
58
+ file_path = @file_path.text
59
+
60
+ begin
61
+ file_extension = File.extname(file_path).downcase
62
+
63
+ case file_extension
64
+ when '.png', '.jpg', '.jpeg', '.gif'
65
+ image "http://localhost:4567/#{file_path}"
66
+ when '.mp4', '.mov'
67
+ video "http://localhost:4567/#{file_path}"
68
+ else
69
+ para "Unsupported file type"
70
+ end
71
+ rescue StandardError => e
72
+ para "Error: #{e.message}"
73
+ end
74
+ end
75
+ end
76
+
77
+ # Ensure the Shoes application is closed before stopping the server
78
+ at_exit do
79
+ server_thread.join if server_thread.alive?
80
+ server.shutdown
81
+ end
82
+ end
Binary file
Binary file
@@ -1,4 +1,4 @@
1
1
  Shoes.app do
2
- font "fonts/Pacifico.ttf"
3
- para "Hello yayyy"
2
+ font "#{DIR}/fonts/Pacifico.ttf"
3
+ para "Hello yayyy", font: "Pacifico"
4
4
  end
@@ -1,4 +1,3 @@
1
1
  Shoes.app do
2
- image "docs/static/man-builds.png"
3
- end
4
-
2
+ image "#{DIR}/docs/static/man-builds.png"
3
+ end
@@ -0,0 +1,14 @@
1
+ Shoes.app do
2
+ stack do
3
+ @note = para " your note will appear here"
4
+
5
+ @edit_box = edit_box ""
6
+ @save_button = button "Save"
7
+
8
+ @save_button.click do
9
+ new_text = @edit_box.text
10
+ @note.text = new_text
11
+ alert("Note saved successfully!")
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,31 @@
1
+ Shoes.app(width: 400, height: 300) do
2
+ flow do
3
+ stack(width: 0.5) do
4
+ para "this is initally at 30%"
5
+ @progress1 = progress fraction: 0.3
6
+
7
+ para "this is initally at 60%"
8
+ @progress2 = progress fraction: 0.6
9
+
10
+ para "this is initally at 80%"
11
+ @progress3 = progress fraction: 0.8
12
+
13
+ para "this is a normal progress bar with no initial value"
14
+ @progress4 = progress
15
+ end
16
+
17
+ stack(width: 0.5) do
18
+ @start = button "Start"
19
+ @start.click { start_progress }
20
+ end
21
+ end
22
+
23
+ def start_progress
24
+ animate do
25
+ @progress1.fraction += 0.01
26
+ @progress2.fraction += 0.015
27
+ @progress3.fraction += 0.02
28
+ end
29
+ end
30
+
31
+ end
@@ -1,4 +1,4 @@
1
- Shoes.app do
1
+ Shoes.app do
2
2
  stack do
3
3
  para "Among these films, which do you prefer?"
4
4
  flow do
@@ -13,6 +13,6 @@
13
13
  radio :films
14
14
  para "Children of Heaven by Majid Majidi"
15
15
  end
16
- puts radio(:films).checked?
16
+ para "Is radio button checked? #{radio(:films).checked?}"
17
17
  end
18
18
  end
data/examples/rect.rb ADDED
@@ -0,0 +1,4 @@
1
+ Shoes.app do
2
+ para "Behold, the mighty rectangle!"
3
+ rect 10, 10, 75, 50, 5
4
+ end
@@ -0,0 +1,17 @@
1
+ Shoes.app(height:600) do
2
+ rotate 90
3
+ rect 10, 10, 75, 50, 5
4
+ rotate 180
5
+ arrow 100, 100, 30
6
+ rotate 60
7
+ arrow 150, 120,40
8
+ rotate 120
9
+ arrow 30 ,60 ,40
10
+ rotate 75
11
+ arc 50, 50, 120, 100, 60, 225
12
+ rotate 45
13
+ arrow :left => 50, :top => 80,
14
+ :width => 40
15
+ rotate 180
16
+ line 100, 100, 200, 200
17
+ end
@@ -0,0 +1,21 @@
1
+ # Cut down from a more complicated example widget
2
+
3
+ class MenuPanel < Shoes::Widget
4
+ @@boxes = []
5
+ def initialize(color, args)
6
+ @@boxes << self
7
+ background color
8
+ para "Box #{@@boxes.length}",
9
+ :margin => 18, :align => "center", :size => 20
10
+ end
11
+ end
12
+
13
+ Shoes.app :width => 400, :height => 130 do
14
+ #style(Link, :underline => nil)
15
+ #style(LinkHover, :fill => nil, :underline => nil)
16
+ menu_panel green, :width => 175, :height => 120, :margin => 4
17
+ menu_panel blue, :width => 140, :height => 120, :margin => 4
18
+ menu_panel red, :width => 135, :height => 120, :margin => 4
19
+ menu_panel purple, :width => 125, :height => 120, :margin => 4
20
+ end
21
+
data/exe/scarpe CHANGED
@@ -38,6 +38,7 @@ add_env_categories("Scarpe::WV" => [
38
38
  env_or_default("SCARPE_TEST_CONTROL", "(none)"),
39
39
  env_or_default("SCARPE_TEST_RESULTS", "(none)"),
40
40
  env_or_default("SCARPE_TEST_DEBUG", "(none)"),
41
+ env_or_default("SCARPE_HTML_RENDERER", "calzini"),
41
42
  ])
42
43
 
43
44
  verb = "run"
@@ -76,7 +77,7 @@ when "-v"
76
77
  puts "Lacci #{Lacci::VERSION}"
77
78
  when "run"
78
79
  # Run the Scarpe app file
79
- Shoes.run_app ARGV[0]
80
+ Shoes.run_app verb_target
80
81
  when "env"
81
82
  print_env
82
83
  else
data/lacci/Gemfile CHANGED
@@ -4,6 +4,8 @@ source "https://rubygems.org"
4
4
 
5
5
  gemspec
6
6
 
7
+ gem "scarpe-components", path: "../scarpe-components"
8
+
7
9
  gem "rake", "~> 13.0"
8
10
 
9
11
  group :test do
data/lacci/Gemfile.lock CHANGED
@@ -1,7 +1,13 @@
1
+ PATH
2
+ remote: ../scarpe-components
3
+ specs:
4
+ scarpe-components (0.3.0)
5
+
1
6
  PATH
2
7
  remote: .
3
8
  specs:
4
- lacci (0.2.1)
9
+ lacci (0.3.0)
10
+ scarpe-components
5
11
 
6
12
  GEM
7
13
  remote: https://rubygems.org/
@@ -66,6 +72,7 @@ DEPENDENCIES
66
72
  redcarpet
67
73
  rubocop (~> 1.21)
68
74
  rubocop-shopify
75
+ scarpe-components!
69
76
  yard
70
77
 
71
78
  BUNDLED WITH