shoes 4.0.0.pre1 → 4.0.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (361) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +84 -32
  3. data/Gemfile +22 -1
  4. data/README.md +28 -13
  5. data/Rakefile +7 -210
  6. data/bin/ruby-shoes +2 -2
  7. data/ext/install/shoes.bat +4 -1
  8. data/lib/shoes.rb +1 -121
  9. data/lib/shoes/{cli.rb → ui/cli.rb} +7 -1
  10. data/lib/shoes/{help.rb → ui/help.rb} +2 -2
  11. data/lib/shoes/{manual.rb → ui/manual.rb} +1 -1
  12. data/lib/shoes/version.rb +1 -1
  13. data/manifests/common.rb +34 -0
  14. data/manifests/shoes.rb +44 -0
  15. data/samples/Gemfile +3 -0
  16. data/samples/Gemfile.lock +35 -0
  17. data/samples/README +16 -5
  18. data/samples/boom.rb +239 -0
  19. data/samples/clicky.rb +24 -0
  20. data/samples/flow.rb +63 -0
  21. data/samples/gray.rb +11 -0
  22. data/samples/nks_booklist.rb +24 -0
  23. data/samples/nks_breadsticks.rb +7 -0
  24. data/samples/nks_dancing_circle.rb +13 -0
  25. data/samples/nks_dictionary.rb +23 -0
  26. data/samples/nks_edit_box.rb +4 -0
  27. data/samples/nks_edit_line.rb +6 -0
  28. data/samples/nks_notes.rb +16 -0
  29. data/samples/nks_self.rb +6 -0
  30. data/samples/nks_text_sizes.rb +10 -0
  31. data/samples/nks_trurl.rb +5 -0
  32. data/samples/packaging/package_me.rb +6 -0
  33. data/samples/present.rb +27 -0
  34. data/samples/progress.rb +10 -0
  35. data/samples/sample31.rb +1 -1
  36. data/samples/simple-calc.rb +1 -1
  37. data/samples/simple-tictactoe.rb +238 -0
  38. data/samples/simple-visibility.rb +11 -0
  39. data/samples/simple-widget.rb +9 -0
  40. data/samples/swt-raw.rb +20 -0
  41. data/samples/troll.rb +22 -0
  42. data/shoes.gemspec +10 -22
  43. data/snapshots/sample56.png +0 -0
  44. data/static/manual-en.txt +16 -7
  45. data/tasks/changelog.rb +92 -0
  46. data/tasks/gem.rb +38 -0
  47. data/tasks/rspec.rb +106 -0
  48. data/tasks/sample.rb +66 -0
  49. data/tasks/yard.rb +13 -0
  50. metadata +55 -488
  51. data/.gitignore +0 -53
  52. data/.rspec +0 -3
  53. data/.ruby-gemset +0 -1
  54. data/.ruby-version +0 -1
  55. data/.travis.yml +0 -31
  56. data/bin/shoes +0 -59
  57. data/bin/shoes.bat +0 -6
  58. data/fonts/Coolvetica.ttf +0 -0
  59. data/fonts/Lacuna.ttf +0 -0
  60. data/lib/ext/highlighter.rb +0 -2
  61. data/lib/ext/highlighter/common.rb +0 -197
  62. data/lib/ext/highlighter/lang/ruby.rb +0 -316
  63. data/lib/ext/highlighter/markup.rb +0 -222
  64. data/lib/rubygems_plugin.rb +0 -19
  65. data/lib/shoes/animation.rb +0 -55
  66. data/lib/shoes/app.rb +0 -320
  67. data/lib/shoes/arc.rb +0 -35
  68. data/lib/shoes/background.rb +0 -30
  69. data/lib/shoes/border.rb +0 -33
  70. data/lib/shoes/builtin_methods.rb +0 -73
  71. data/lib/shoes/button.rb +0 -32
  72. data/lib/shoes/check_button.rb +0 -43
  73. data/lib/shoes/color.rb +0 -375
  74. data/lib/shoes/common/background_element.rb +0 -9
  75. data/lib/shoes/common/changeable.rb +0 -34
  76. data/lib/shoes/common/clickable.rb +0 -17
  77. data/lib/shoes/common/common_methods.rb +0 -70
  78. data/lib/shoes/common/fill.rb +0 -21
  79. data/lib/shoes/common/registration.rb +0 -33
  80. data/lib/shoes/common/state.rb +0 -18
  81. data/lib/shoes/common/stroke.rb +0 -28
  82. data/lib/shoes/common/style.rb +0 -34
  83. data/lib/shoes/common/style_normalizer.rb +0 -16
  84. data/lib/shoes/configuration.rb +0 -96
  85. data/lib/shoes/dialog.rb +0 -27
  86. data/lib/shoes/dimension.rb +0 -237
  87. data/lib/shoes/dimensions.rb +0 -194
  88. data/lib/shoes/download.rb +0 -117
  89. data/lib/shoes/dsl.rb +0 -478
  90. data/lib/shoes/font.rb +0 -49
  91. data/lib/shoes/gradient.rb +0 -18
  92. data/lib/shoes/image.rb +0 -33
  93. data/lib/shoes/image_pattern.rb +0 -10
  94. data/lib/shoes/input_box.rb +0 -68
  95. data/lib/shoes/key_event.rb +0 -17
  96. data/lib/shoes/line.rb +0 -38
  97. data/lib/shoes/link.rb +0 -49
  98. data/lib/shoes/link_hover.rb +0 -5
  99. data/lib/shoes/list_box.rb +0 -44
  100. data/lib/shoes/logger.rb +0 -66
  101. data/lib/shoes/logger/ruby.rb +0 -18
  102. data/lib/shoes/mock.rb +0 -30
  103. data/lib/shoes/mock/animation.rb +0 -8
  104. data/lib/shoes/mock/app.rb +0 -44
  105. data/lib/shoes/mock/arc.rb +0 -8
  106. data/lib/shoes/mock/background.rb +0 -10
  107. data/lib/shoes/mock/border.rb +0 -7
  108. data/lib/shoes/mock/button.rb +0 -10
  109. data/lib/shoes/mock/check.rb +0 -24
  110. data/lib/shoes/mock/common_methods.rb +0 -11
  111. data/lib/shoes/mock/dialog.rb +0 -13
  112. data/lib/shoes/mock/download.rb +0 -18
  113. data/lib/shoes/mock/font.rb +0 -17
  114. data/lib/shoes/mock/image.rb +0 -12
  115. data/lib/shoes/mock/image_pattern.rb +0 -9
  116. data/lib/shoes/mock/input_box.rb +0 -23
  117. data/lib/shoes/mock/keypress.rb +0 -8
  118. data/lib/shoes/mock/keyrelease.rb +0 -8
  119. data/lib/shoes/mock/line.rb +0 -14
  120. data/lib/shoes/mock/link.rb +0 -11
  121. data/lib/shoes/mock/list_box.rb +0 -16
  122. data/lib/shoes/mock/oval.rb +0 -11
  123. data/lib/shoes/mock/progress.rb +0 -10
  124. data/lib/shoes/mock/radio.rb +0 -26
  125. data/lib/shoes/mock/rect.rb +0 -13
  126. data/lib/shoes/mock/shape.rb +0 -19
  127. data/lib/shoes/mock/slot.rb +0 -14
  128. data/lib/shoes/mock/sound.rb +0 -8
  129. data/lib/shoes/mock/star.rb +0 -13
  130. data/lib/shoes/mock/text_block.rb +0 -29
  131. data/lib/shoes/mock/timer.rb +0 -8
  132. data/lib/shoes/oval.rb +0 -28
  133. data/lib/shoes/point.rb +0 -43
  134. data/lib/shoes/progress.rb +0 -26
  135. data/lib/shoes/radio.rb +0 -15
  136. data/lib/shoes/rect.rb +0 -28
  137. data/lib/shoes/renamed_delegate.rb +0 -15
  138. data/lib/shoes/shape.rb +0 -175
  139. data/lib/shoes/slot.rb +0 -232
  140. data/lib/shoes/slot_contents.rb +0 -56
  141. data/lib/shoes/sound.rb +0 -16
  142. data/lib/shoes/span.rb +0 -16
  143. data/lib/shoes/star.rb +0 -49
  144. data/lib/shoes/swt.rb +0 -114
  145. data/lib/shoes/swt/animation.rb +0 -46
  146. data/lib/shoes/swt/app.rb +0 -300
  147. data/lib/shoes/swt/arc.rb +0 -70
  148. data/lib/shoes/swt/background.rb +0 -31
  149. data/lib/shoes/swt/border.rb +0 -37
  150. data/lib/shoes/swt/button.rb +0 -18
  151. data/lib/shoes/swt/check.rb +0 -14
  152. data/lib/shoes/swt/check_button.rb +0 -19
  153. data/lib/shoes/swt/color.rb +0 -45
  154. data/lib/shoes/swt/common/child.rb +0 -16
  155. data/lib/shoes/swt/common/clear.rb +0 -24
  156. data/lib/shoes/swt/common/clickable.rb +0 -62
  157. data/lib/shoes/swt/common/container.rb +0 -28
  158. data/lib/shoes/swt/common/fill.rb +0 -37
  159. data/lib/shoes/swt/common/painter.rb +0 -83
  160. data/lib/shoes/swt/common/painter_updates_position.rb +0 -12
  161. data/lib/shoes/swt/common/resource.rb +0 -14
  162. data/lib/shoes/swt/common/selection_listener.rb +0 -14
  163. data/lib/shoes/swt/common/stroke.rb +0 -41
  164. data/lib/shoes/swt/common/toggle.rb +0 -13
  165. data/lib/shoes/swt/common/update_position.rb +0 -15
  166. data/lib/shoes/swt/dialog.rb +0 -89
  167. data/lib/shoes/swt/disposed_protection.rb +0 -23
  168. data/lib/shoes/swt/download.rb +0 -24
  169. data/lib/shoes/swt/fitted_text_layout.rb +0 -94
  170. data/lib/shoes/swt/fitted_text_layout_collection.rb +0 -108
  171. data/lib/shoes/swt/font.rb +0 -32
  172. data/lib/shoes/swt/gradient.rb +0 -77
  173. data/lib/shoes/swt/image.rb +0 -130
  174. data/lib/shoes/swt/image_pattern.rb +0 -19
  175. data/lib/shoes/swt/input_box.rb +0 -73
  176. data/lib/shoes/swt/key_listener.rb +0 -145
  177. data/lib/shoes/swt/line.rb +0 -57
  178. data/lib/shoes/swt/link.rb +0 -37
  179. data/lib/shoes/swt/link_segment.rb +0 -108
  180. data/lib/shoes/swt/list_box.rb +0 -49
  181. data/lib/shoes/swt/mouse_move_listener.rb +0 -61
  182. data/lib/shoes/swt/oval.rb +0 -53
  183. data/lib/shoes/swt/progress.rb +0 -35
  184. data/lib/shoes/swt/radio.rb +0 -29
  185. data/lib/shoes/swt/radio_group.rb +0 -54
  186. data/lib/shoes/swt/rect.rb +0 -31
  187. data/lib/shoes/swt/rect_painter.rb +0 -23
  188. data/lib/shoes/swt/redrawing_aspect.rb +0 -122
  189. data/lib/shoes/swt/shape.rb +0 -101
  190. data/lib/shoes/swt/shoes_layout.rb +0 -43
  191. data/lib/shoes/swt/slot.rb +0 -25
  192. data/lib/shoes/swt/sound.rb +0 -119
  193. data/lib/shoes/swt/star.rb +0 -51
  194. data/lib/shoes/swt/swt_button.rb +0 -49
  195. data/lib/shoes/swt/text_block.rb +0 -133
  196. data/lib/shoes/swt/text_block_cursor_painter.rb +0 -112
  197. data/lib/shoes/swt/text_block_fitter.rb +0 -180
  198. data/lib/shoes/swt/text_block_painter.rb +0 -49
  199. data/lib/shoes/swt/text_font_factory.rb +0 -27
  200. data/lib/shoes/swt/text_style_factory.rb +0 -88
  201. data/lib/shoes/swt/timer.rb +0 -19
  202. data/lib/shoes/swt/tooling/leak_hunter.rb +0 -84
  203. data/lib/shoes/text.rb +0 -14
  204. data/lib/shoes/text_block.rb +0 -162
  205. data/lib/shoes/timer.rb +0 -10
  206. data/lib/shoes/url.rb +0 -47
  207. data/lib/shoes/widget.rb +0 -73
  208. data/lib/support/jl1.0.1.jar +0 -0
  209. data/lib/support/jogg-0.0.7.jar +0 -0
  210. data/lib/support/jorbis-0.0.15.jar +0 -0
  211. data/lib/support/log4j-1.2.16.jar +0 -0
  212. data/lib/support/mp3spi1.9.5.jar +0 -0
  213. data/lib/support/tritonus_share.jar +0 -0
  214. data/lib/support/vorbisspi1.0.3.jar +0 -0
  215. data/samples/good-clock-adjusted.rb +0 -49
  216. data/spec/async_helper.rb +0 -21
  217. data/spec/code_coverage.rb +0 -11
  218. data/spec/shoes/animation_spec.rb +0 -65
  219. data/spec/shoes/app_spec.rb +0 -411
  220. data/spec/shoes/arc_spec.rb +0 -53
  221. data/spec/shoes/background_spec.rb +0 -48
  222. data/spec/shoes/border_spec.rb +0 -43
  223. data/spec/shoes/builtin_methods_spec.rb +0 -84
  224. data/spec/shoes/button_spec.rb +0 -41
  225. data/spec/shoes/check_spec.rb +0 -31
  226. data/spec/shoes/cli_spec.rb +0 -16
  227. data/spec/shoes/color_spec.rb +0 -396
  228. data/spec/shoes/common/style_normalizer_spec.rb +0 -28
  229. data/spec/shoes/common/style_spec.rb +0 -58
  230. data/spec/shoes/configuration_spec.rb +0 -37
  231. data/spec/shoes/constants_spec.rb +0 -38
  232. data/spec/shoes/dialog_spec.rb +0 -163
  233. data/spec/shoes/dimension_spec.rb +0 -381
  234. data/spec/shoes/dimensions_spec.rb +0 -831
  235. data/spec/shoes/download_spec.rb +0 -133
  236. data/spec/shoes/flow_spec.rb +0 -92
  237. data/spec/shoes/font_spec.rb +0 -38
  238. data/spec/shoes/framework_learning_spec.rb +0 -30
  239. data/spec/shoes/helpers/fake_element.rb +0 -11
  240. data/spec/shoes/helpers/sample17_helper.rb +0 -66
  241. data/spec/shoes/image_spec.rb +0 -45
  242. data/spec/shoes/images/shoe.jpg +0 -0
  243. data/spec/shoes/input_box_spec.rb +0 -44
  244. data/spec/shoes/integration_spec.rb +0 -20
  245. data/spec/shoes/keypress_spec.rb +0 -11
  246. data/spec/shoes/keyrelease_spec.rb +0 -12
  247. data/spec/shoes/line_spec.rb +0 -47
  248. data/spec/shoes/link_spec.rb +0 -89
  249. data/spec/shoes/list_box_spec.rb +0 -63
  250. data/spec/shoes/logger/ruby_spec.rb +0 -9
  251. data/spec/shoes/logger_spec.rb +0 -45
  252. data/spec/shoes/oval_spec.rb +0 -20
  253. data/spec/shoes/point_spec.rb +0 -51
  254. data/spec/shoes/progress_spec.rb +0 -40
  255. data/spec/shoes/radio_spec.rb +0 -28
  256. data/spec/shoes/rect_spec.rb +0 -38
  257. data/spec/shoes/renamed_delegate_spec.rb +0 -70
  258. data/spec/shoes/shape_spec.rb +0 -54
  259. data/spec/shoes/shared_examples/button.rb +0 -6
  260. data/spec/shoes/shared_examples/changeable.rb +0 -26
  261. data/spec/shoes/shared_examples/clickable.rb +0 -5
  262. data/spec/shoes/shared_examples/common_methods.rb +0 -42
  263. data/spec/shoes/shared_examples/dimensions.rb +0 -32
  264. data/spec/shoes/shared_examples/dsl.rb +0 -42
  265. data/spec/shoes/shared_examples/dsl/animate.rb +0 -29
  266. data/spec/shoes/shared_examples/dsl/arc.rb +0 -45
  267. data/spec/shoes/shared_examples/dsl/background.rb +0 -26
  268. data/spec/shoes/shared_examples/dsl/border.rb +0 -10
  269. data/spec/shoes/shared_examples/dsl/cap.rb +0 -6
  270. data/spec/shoes/shared_examples/dsl/check.rb +0 -11
  271. data/spec/shoes/shared_examples/dsl/edit_box.rb +0 -8
  272. data/spec/shoes/shared_examples/dsl/edit_line.rb +0 -8
  273. data/spec/shoes/shared_examples/dsl/editable_element.rb +0 -29
  274. data/spec/shoes/shared_examples/dsl/fill.rb +0 -27
  275. data/spec/shoes/shared_examples/dsl/flow.rb +0 -15
  276. data/spec/shoes/shared_examples/dsl/gradient.rb +0 -52
  277. data/spec/shoes/shared_examples/dsl/image.rb +0 -21
  278. data/spec/shoes/shared_examples/dsl/line.rb +0 -9
  279. data/spec/shoes/shared_examples/dsl/nofill.rb +0 -6
  280. data/spec/shoes/shared_examples/dsl/nostroke.rb +0 -6
  281. data/spec/shoes/shared_examples/dsl/oval.rb +0 -60
  282. data/spec/shoes/shared_examples/dsl/pattern.rb +0 -34
  283. data/spec/shoes/shared_examples/dsl/progress.rb +0 -7
  284. data/spec/shoes/shared_examples/dsl/rect.rb +0 -92
  285. data/spec/shoes/shared_examples/dsl/rgb.rb +0 -26
  286. data/spec/shoes/shared_examples/dsl/shape.rb +0 -21
  287. data/spec/shoes/shared_examples/dsl/star.rb +0 -48
  288. data/spec/shoes/shared_examples/dsl/stroke.rb +0 -30
  289. data/spec/shoes/shared_examples/dsl/strokewidth.rb +0 -19
  290. data/spec/shoes/shared_examples/dsl/style.rb +0 -32
  291. data/spec/shoes/shared_examples/dsl/text_elements.rb +0 -81
  292. data/spec/shoes/shared_examples/dsl_app_context.rb +0 -8
  293. data/spec/shoes/shared_examples/hover_leave.rb +0 -11
  294. data/spec/shoes/shared_examples/parent.rb +0 -6
  295. data/spec/shoes/shared_examples/shared_element_method.rb +0 -52
  296. data/spec/shoes/shared_examples/slot.rb +0 -272
  297. data/spec/shoes/shared_examples/state.rb +0 -19
  298. data/spec/shoes/shared_examples/style.rb +0 -24
  299. data/spec/shoes/slot_spec.rb +0 -60
  300. data/spec/shoes/sound_spec.rb +0 -15
  301. data/spec/shoes/span_spec.rb +0 -94
  302. data/spec/shoes/spec_helper.rb +0 -1
  303. data/spec/shoes/stack_spec.rb +0 -53
  304. data/spec/shoes/star_spec.rb +0 -30
  305. data/spec/shoes/text_block_spec.rb +0 -242
  306. data/spec/shoes/url_spec.rb +0 -66
  307. data/spec/shoes/widget_spec.rb +0 -34
  308. data/spec/shoes_spec.rb +0 -44
  309. data/spec/spec_helper.rb +0 -16
  310. data/spec/swt_shoes/animation_spec.rb +0 -86
  311. data/spec/swt_shoes/app_spec.rb +0 -75
  312. data/spec/swt_shoes/arc_spec.rb +0 -101
  313. data/spec/swt_shoes/background_spec.rb +0 -56
  314. data/spec/swt_shoes/border_spec.rb +0 -51
  315. data/spec/swt_shoes/button_spec.rb +0 -101
  316. data/spec/swt_shoes/check_spec.rb +0 -28
  317. data/spec/swt_shoes/color_spec.rb +0 -67
  318. data/spec/swt_shoes/common/painter_spec.rb +0 -29
  319. data/spec/swt_shoes/configuration_spec.rb +0 -12
  320. data/spec/swt_shoes/dialog_spec.rb +0 -106
  321. data/spec/swt_shoes/disposed_protection_spec.rb +0 -49
  322. data/spec/swt_shoes/fitted_text_layout_collection_spec.rb +0 -174
  323. data/spec/swt_shoes/fitted_text_layout_spec.rb +0 -130
  324. data/spec/swt_shoes/flow_spec.rb +0 -26
  325. data/spec/swt_shoes/font_spec.rb +0 -33
  326. data/spec/swt_shoes/gradient_spec.rb +0 -20
  327. data/spec/swt_shoes/image_pattern_spec.rb +0 -19
  328. data/spec/swt_shoes/image_spec.rb +0 -100
  329. data/spec/swt_shoes/input_box_spec.rb +0 -110
  330. data/spec/swt_shoes/integration_spec.rb +0 -18
  331. data/spec/swt_shoes/key_listener_spec.rb +0 -320
  332. data/spec/swt_shoes/line_spec.rb +0 -43
  333. data/spec/swt_shoes/link_segment_spec.rb +0 -103
  334. data/spec/swt_shoes/link_spec.rb +0 -59
  335. data/spec/swt_shoes/list_box_spec.rb +0 -51
  336. data/spec/swt_shoes/minimal.png +0 -0
  337. data/spec/swt_shoes/mouse_move_listener_spec.rb +0 -129
  338. data/spec/swt_shoes/oval_spec.rb +0 -51
  339. data/spec/swt_shoes/progress_spec.rb +0 -44
  340. data/spec/swt_shoes/radio_group_spec.rb +0 -73
  341. data/spec/swt_shoes/radio_spec.rb +0 -56
  342. data/spec/swt_shoes/rect_painter_spec.rb +0 -45
  343. data/spec/swt_shoes/rect_spec.rb +0 -19
  344. data/spec/swt_shoes/shape_spec.rb +0 -81
  345. data/spec/swt_shoes/shared_examples/button.rb +0 -24
  346. data/spec/swt_shoes/shared_examples/clearable.rb +0 -32
  347. data/spec/swt_shoes/shared_examples/clickable.rb +0 -60
  348. data/spec/swt_shoes/shared_examples/movable.rb +0 -36
  349. data/spec/swt_shoes/shared_examples/paintable_spec.rb +0 -7
  350. data/spec/swt_shoes/shared_examples/painter.rb +0 -83
  351. data/spec/swt_shoes/shared_examples/pattern.rb +0 -32
  352. data/spec/swt_shoes/shared_examples/swt_app_context.rb +0 -17
  353. data/spec/swt_shoes/shared_examples/togglable.rb +0 -15
  354. data/spec/swt_shoes/shell_control_listener_spec.rb +0 -23
  355. data/spec/swt_shoes/sound.rb +0 -10
  356. data/spec/swt_shoes/spec_helper.rb +0 -31
  357. data/spec/swt_shoes/star_spec.rb +0 -47
  358. data/spec/swt_shoes/text_block_cursor_painter_spec.rb +0 -202
  359. data/spec/swt_shoes/text_block_fitter_spec.rb +0 -181
  360. data/spec/swt_shoes/text_block_painter_spec.rb +0 -221
  361. data/spec/swt_shoes/text_block_spec.rb +0 -183
@@ -0,0 +1,24 @@
1
+ Shoes.app do
2
+ @elements = []
3
+ @elements << arc(0, 0,
4
+ 100, 100,
5
+ 0,
6
+ Shoes::TWO_PI - Shoes::HALF_PI)
7
+ @elements << rect(100, 100, 100, 100)
8
+ @elements << para("text", left: 200)
9
+ @elements << para(link("link") { |*args| alert(args.inspect) })
10
+ @elements << button("Ok")
11
+ @elements << check
12
+ @elements << image(File.expand_path("~/source/shoes4/static/shoes-icon.png"))
13
+ @elements << stack(width: 100, height: 100) do
14
+ background green
15
+ para "text"
16
+ end
17
+
18
+
19
+ @elements.each do |e|
20
+ e.style(:click => Proc.new do |*args|
21
+ alert args.inspect
22
+ end)
23
+ end
24
+ end
@@ -0,0 +1,63 @@
1
+ #require 'pry'
2
+ #require 'pry-nav'
3
+ #require 'shoes/swt/tooling/leak_hunter'
4
+
5
+ Shoes.app width: 250, height: 500 do
6
+ @r = rect 100, 100, 100, 100, fill:gradient(red, blue) #"/Users/jclark/.hacketyhack/princess/king.jpg")
7
+ oval 100, 100, 100, 200, angle: 120
8
+
9
+ button "change" do
10
+ @r.style(fill: green)
11
+ end
12
+ #COLORS = [red, green, blue, yellow, orange, purple]
13
+ #3.times do
14
+ #flow do
15
+ #COLORS.each do |color|
16
+ #para "Boo Hoo Hoo Hoo", fill: color, size: 24
17
+ #end
18
+ #end
19
+ #end
20
+ end
21
+ #Shoes.app do
22
+ ##rect 100, 100, 100, 100, fill: blue
23
+ ##line 10, 10, 20, 20
24
+
25
+ #button "booo" do
26
+ #@p.cursor ||= 0
27
+ #@p.cursor += 100
28
+ #end
29
+
30
+ #keypress do |key|
31
+ #if key == :right
32
+ #@p.cursor ||= 0
33
+ #@p.cursor += 1
34
+ #elsif key == :left
35
+ #@p.cursor ||= 0
36
+ #@p.cursor -= 1
37
+ #end
38
+ #end
39
+ #@p = para 'Hello ' * 20, cursor: 0, width:200
40
+ #puts "#{@p.height}, #{@p.width}"
41
+
42
+ #button "boo" do
43
+ #alert "#{@p.height}, #{@p.width}"
44
+ #end
45
+ ##stack do
46
+ ##rect 100, 100, 100, 100, fill: red, stroke: blue
47
+ ###background lightgreen, stroke: blue
48
+ ##para "Some of this text will not be seen", underline: 1, undercolor: orange, size: 16, fill: red, stroke: blue, margin: 10
49
+ ##para "Nope", strikethrough: 1, strikecolor: orange, size: 16, stroke: blue, margin: 10
50
+ ###para("wat", click: proc { alert "Boo" })
51
+ ###flow width:100 do
52
+ ###background lightgreen
53
+ ###para "I am important!", size: 16
54
+ ###end
55
+ ##end
56
+
57
+ ##keypress do |key|
58
+ ##if key == :'control_alt_q'
59
+ ##clear
60
+ ##quit
61
+ ##end
62
+ ##end
63
+ #end
@@ -0,0 +1,11 @@
1
+ Shoes.app do
2
+ @main_panel = stack do
3
+ para ""
4
+ title("I AM JUST A TITLE...",
5
+ top: 100,
6
+ font: "Trebuchet MS 20px",
7
+ align: "center",
8
+ #left: 170,
9
+ stroke: black)
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ class BookList < Shoes
2
+ url '/', :index
3
+ url '/twain', :twain
4
+ url '/kv', :vonnegut
5
+
6
+ def index
7
+ para "Books I've read: ",
8
+ link("by Mark Twain", :click => "/twain"),
9
+ link("by Kurt Vonnegut", :click => "/kv")
10
+ end
11
+
12
+ def twain
13
+ para "Just Huck Finn.\n",
14
+ link("Go back.", :click => "/")
15
+ end
16
+
17
+ def vonnegut
18
+ para "Cat's Cradle. Sirens of Titan. ",
19
+ "Breakfast of Champions.\n",
20
+ link("Go back.", :click => "/")
21
+ end
22
+ end
23
+
24
+ Shoes.app :width => 400, :height => 500
@@ -0,0 +1,7 @@
1
+ Shoes.app width: 200, height: 80 do
2
+ para "Testing test test. ",
3
+ strong("Breadsticks. "),
4
+ em("Breadsticks. "),
5
+ code("Breadsticks. "),
6
+ strong(ins("Very good."))
7
+ end
@@ -0,0 +1,13 @@
1
+ Shoes.app do
2
+ @o = oval :top => 0, :left => 0,
3
+ :radius => 40
4
+
5
+ stack :margin => 40 do
6
+ title "Dancing With a Circle"
7
+ subtitle "How graceful and round."
8
+ end
9
+
10
+ motion do |x, y|
11
+ @o.move width - x, height - y
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ class Dictionary < Shoes
2
+ url '/', :index
3
+ url '/(\w+)', :word
4
+
5
+ def index
6
+ stack do
7
+ title "Enter a Word"
8
+ @word = edit_line
9
+ button "OK" do
10
+ visit "/#{@word.text}"
11
+ end
12
+ end
13
+ end
14
+
15
+ def word(string)
16
+ stack do
17
+ para "No definition found for #{string}. ",
18
+ "Sorry this doesn't actually work."
19
+ end
20
+ end
21
+ end
22
+
23
+ Shoes.app
@@ -0,0 +1,4 @@
1
+ Shoes.app do
2
+ @e = edit_box "Would that I...",
3
+ :width => 400, :height => 240
4
+ end
@@ -0,0 +1,6 @@
1
+ Shoes.app do
2
+ @e = edit_line :width => 400
3
+ button "O.K." do
4
+ alert @e.text
5
+ end
6
+ end
@@ -0,0 +1,16 @@
1
+ Shoes.app do
2
+ stack :margin => 20, :width => 250 do
3
+ subtitle "Shoes Notebook"
4
+ para "Add a note."
5
+ @add = edit_line
6
+
7
+ button "Save" do
8
+ @notes.append do
9
+ para @add.text, " ",
10
+ link("delete") { |x| x.parent.remove }
11
+ end
12
+ @add.text = ""
13
+ end
14
+ end
15
+ @notes = stack :margin => 20, :width => -250
16
+ end
@@ -0,0 +1,6 @@
1
+ Shoes.app do
2
+ self.stack do
3
+ self.edit_line "Sample sample."
4
+ self.button "Breadsticks."
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ Shoes.app width: 150, height: 200 do
2
+ stack do
3
+ title "Title"
4
+ subtitle "Subtitle"
5
+ tagline "Tagline"
6
+ caption "Caption"
7
+ para "Para"
8
+ inscription "Inscription"
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ Shoes.app {
2
+ button("Trurl?") {
3
+ alert("Klapaucius!")
4
+ }
5
+ }
@@ -0,0 +1,6 @@
1
+ Shoes.app do
2
+ stack do
3
+ title 'Packaging'
4
+ para 'it works...'
5
+ end
6
+ end
@@ -0,0 +1,27 @@
1
+ Shoes.app do
2
+
3
+ def center_x(length)
4
+ width/2 - length/ 2
5
+ end
6
+
7
+ def center_text_on(text, rectangle)
8
+ new_left = rectangle.left + rectangle.width / 2 - 55 / 2
9
+ new_top = rectangle.top + rectangle.height / 2 - 35 / 2
10
+ text.move new_left, new_top
11
+ puts "new_left: #{new_left}, new_top: #{new_top}"
12
+ end
13
+
14
+ button 'boom' do
15
+ clear
16
+ s = stack width: width do
17
+ background red
18
+ dsl_length = 400
19
+ dsl_top = 300
20
+ rect_height = 100
21
+ dsl_rect = rect center_x(dsl_length), dsl_top, dsl_length, rect_height, fill: green
22
+ dsl_text = para 'DSL'
23
+ center_text_on dsl_text, dsl_rect
24
+ end
25
+ puts s.width
26
+ end
27
+ end
@@ -0,0 +1,10 @@
1
+ require 'shoes'
2
+ Shoes.app width: 250, height: 150 do
3
+ @progress = progress left: 50, top: 50
4
+ @progress.fraction = 0.5
5
+
6
+ keypress do
7
+ @progress.fraction += 0.1
8
+ @progress.fraction = 0 if @progress.fraction >= 1.0
9
+ end
10
+ end
@@ -7,7 +7,7 @@ Shoes.app do
7
7
  eles << shape(left: 200, top: 150, width: 300, height: 300, rotate: [45, 300, 300]){
8
8
  move_to 200, 200
9
9
  line_to 200, 100
10
- quad_to 100, 100, 20, 200
10
+ curve_to 100, 100, 20, 200, 50, 150
11
11
  line_to 20, 100
12
12
  }
13
13
  eles << line(100, 100, 480, 480)
@@ -30,7 +30,7 @@ class Calc
30
30
  end
31
31
 
32
32
  def press_equals
33
- @number = @previous.send(@op, @number.to_i)
33
+ @number = @previous.send(@op, @number.to_i) unless (@previous.nil? or @op.nil? or @number.nil?)
34
34
  @op = nil
35
35
  end
36
36
 
@@ -0,0 +1,238 @@
1
+ # Size module
2
+ # Change these constants to change the size of the board.
3
+ module SIZE
4
+ PADDING = 10
5
+ TIC_SIZE = 60
6
+ B_RADIUS = 5
7
+ WIDTH = HEIGHT = (PADDING * 4) + (TIC_SIZE * 5)
8
+ end
9
+
10
+ class Tic
11
+ attr_reader :x, :y, :checked, :rect, :player
12
+
13
+ def initialize(tic)
14
+ @rect = tic[0]
15
+ @x = tic[1]
16
+ @y = tic[2]
17
+ @player = false
18
+ @checked = false
19
+ end
20
+
21
+ def check
22
+ @checked = true
23
+ end
24
+
25
+ def reset
26
+ @player = false
27
+ @checked = false
28
+ @rect.style fill: '#000000'
29
+ end
30
+
31
+ def player=(symbol)
32
+ @player = symbol
33
+ if symbol == 'X'
34
+ @rect.style fill: '#00FFFF'
35
+ else
36
+ @rect.style fill: '#FFFF44'
37
+ end
38
+ end
39
+
40
+ end
41
+
42
+
43
+ # Mostly keeps track of the Player.
44
+ # 'class Player' would imply two.
45
+ class Game
46
+
47
+ def initialize(player_label)
48
+ @player = false
49
+ @label = player_label
50
+ end
51
+
52
+ def restart
53
+ @player = true and toggle_player # English syntax!
54
+ end
55
+
56
+ def toggle_player
57
+ @player = !@player
58
+ @label.text = player_turn
59
+ end
60
+
61
+ def player_symbol
62
+ @player ? 'X' : 'O'
63
+ end
64
+
65
+ def player_color
66
+ @player ? "Yellow" : "Blue"
67
+ end
68
+
69
+ def player_turn
70
+ "#{player_color}'s Turn"
71
+ end
72
+
73
+ def player_win
74
+ @player =! @player
75
+ "#{player_color} won!"
76
+ end
77
+
78
+ end
79
+
80
+
81
+ # Organizes the Tics and
82
+ # checks for winning configurations
83
+ class Board
84
+ attr_reader :game
85
+
86
+ def initialize(tics, player_label)
87
+ @tics = []
88
+ @over = false
89
+ @game = Game.new player_label
90
+
91
+ tics.each do |tic| # Each tic in this array is of the format: [rect, x, y]
92
+ @tics << Tic.new(tic)
93
+ end
94
+
95
+ end
96
+
97
+ # Actions for each of the tic's rectangle
98
+ def set_tic_actions
99
+ @tics.each do |tic|
100
+ tic.rect.click do
101
+ unless tic.checked or @over
102
+ @game.toggle_player
103
+ tic.player = @game.player_symbol
104
+ tic.check
105
+ if self.check_if_over
106
+ show_screen(game.player_win)
107
+ elsif self.full?
108
+ show_screen("Cat's Game!")
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+
115
+ def check_if_over
116
+ (1..3).any? { |i| all_checked?(row(i)) || all_checked?(column(i)) } ||
117
+ all_checked?(diagonal1) ||
118
+ all_checked?(diagonal2)
119
+ end
120
+
121
+ # Takes an array and tells if each Tic has been checked by the same player
122
+ def all_checked?(array)
123
+ if array[0].checked
124
+ return array[0].player == array[1].player && array[1].player == array[2].player
125
+ else
126
+ return false
127
+ end
128
+ end
129
+
130
+
131
+ # In this case, the screen is the
132
+ # end screen, including the transparent
133
+ # black panel and its buttons.
134
+ def set_screen(screen)
135
+ @screen = screen
136
+ end
137
+
138
+ def clear_screen
139
+ @screen.each do |item|
140
+ item.hide
141
+ end
142
+ end
143
+
144
+ def show_screen(title)
145
+ @over = true
146
+ @screen.each do |item|
147
+ item.show
148
+ end
149
+ @screen[0].text = title
150
+ end
151
+
152
+ def restart
153
+ clear_screen
154
+ @over = false
155
+ @tics.each do |tic|
156
+ tic.reset
157
+ end
158
+ game.restart
159
+ end
160
+
161
+ def row(x)
162
+ @tics.select { |tic| tic.x == x }
163
+ end
164
+
165
+ def column(y)
166
+ @tics.select { |tic| tic.y == y }
167
+ end
168
+
169
+ def diagonal1
170
+ tics = []
171
+ (1..3).each do |i|
172
+ tics.concat(@tics.select { |tic| tic.x == i && tic.y == i })
173
+ end
174
+ tics
175
+ end
176
+
177
+ def diagonal2
178
+ tics = []
179
+ (1..3).each do |i|
180
+ tics.concat(@tics.select { |tic| tic.x == i && tic.y == (4 - i) })
181
+ end
182
+ tics
183
+ end
184
+
185
+ def full?
186
+ @tics.select { |tic| tic.checked }.length == 9
187
+ end
188
+ end
189
+
190
+
191
+ # Main GUI App
192
+ Shoes.app width: SIZE::WIDTH, height: SIZE::HEIGHT, title: 'Tic Tac Toe' do
193
+ background gradient(slategray, slateblue)
194
+
195
+ stroke white
196
+
197
+ title 'Tic Tac Toe', align: 'center', family: 'Lacuna', top: 10
198
+
199
+ flow bottom: 10 do
200
+ @player_label = para "Blue's Turn", size: 20, align: 'center'
201
+ end
202
+
203
+ stroke black
204
+
205
+ # The making of the Tic rectangles, along with a record of their coordinates.
206
+ tics = []
207
+ (1..3).each do |i|
208
+ (1..3).each do |j|
209
+ rectangle = rect((SIZE::PADDING + SIZE::TIC_SIZE) * i, (SIZE::PADDING + SIZE::TIC_SIZE) * j, SIZE::TIC_SIZE, SIZE::TIC_SIZE, SIZE::B_RADIUS)
210
+ tics << [rectangle, i, j]
211
+ end
212
+ end
213
+
214
+
215
+ stroke black
216
+
217
+ board = Board.new(tics, @player_label) # player_label is passed on to the game.
218
+
219
+ board.set_tic_actions
220
+
221
+ # End Screen
222
+ black_screen = rect 0,0,SIZE::WIDTH,SIZE::WIDTH, fill: app.rgb(0,0,0,0.5)
223
+ flow align: 'center' do
224
+ # Positioned oddly because 'align: "center"' appears not to work on buttons
225
+ @quit_button = button 'Quit', top: 174, left: (SIZE::WIDTH/2 - 34) do
226
+ exit
227
+ end
228
+ # Positioned oddly because 'align: "center"' appears not to work on buttons
229
+ @restart_button = button 'Restart', top: 140, align: 'center', left: (SIZE::WIDTH/2 - 43) do
230
+ board.restart
231
+ end
232
+ end
233
+ alert_title = title "Cat's Game!", stroke: white, top: 90, align: 'center', size: 34
234
+ exit_screen = [alert_title, black_screen, @quit_button, @restart_button]
235
+
236
+ board.set_screen(exit_screen) # Passes pre-made gui on for later use
237
+ board.clear_screen # Clears it to begin with
238
+ end