shoes 4.0.0.pre1 → 4.0.0.pre2

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 (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
@@ -1,10 +0,0 @@
1
- class Shoes
2
- class Timer
3
- def initialize app, n=1000, &blk
4
- @app, @n, @blk = app, n, blk
5
- @gui = Shoes.configuration.backend_for(self, @app.gui, @blk)
6
- end
7
-
8
- attr_reader :n, :gui
9
- end
10
- end
@@ -1,47 +0,0 @@
1
- class Shoes
2
-
3
- # Backwards compatibility, kind of likely to be removed
4
- def self.inherited(base_class)
5
- base_class.send :include, URL #include is private, therefore send
6
- end
7
-
8
- module URL
9
- extend Forwardable
10
-
11
- def_delegators :app, *(Shoes::App::DELEGATE_METHODS)
12
-
13
- attr_accessor :app
14
-
15
- def self.included(base_class)
16
- base_class.extend URLDefiner
17
- end
18
-
19
- def self.urls
20
- @urls ||= {}
21
- end
22
-
23
- end
24
-
25
- module URLDefiner
26
- def url(page, method)
27
- page = convert_page_to_regex(page)
28
- url_class = self
29
-
30
- Shoes::URL.urls[page] = proc do |app, arg|
31
- new_url_instance = url_class.new
32
- new_url_instance.app = app
33
-
34
- if arg
35
- new_url_instance.send(method, arg)
36
- else
37
- new_url_instance.send method
38
- end
39
- end
40
- end
41
-
42
- private
43
- def convert_page_to_regex(page)
44
- /^#{page}$/
45
- end
46
- end
47
- end
@@ -1,73 +0,0 @@
1
- class Shoes
2
- # This is the superclass for creating custom Shoes widgets.
3
- #
4
- # To use, inherit from {Shoes::Widget}. You get a few magical effects:
5
- #
6
- # * When you inherit from {Shoes::Widget}, you get a method in your Apps to
7
- # create your widgets. The method is lower- and snake-cased. It returns
8
- # an instance of your widget class.
9
- # * Your widgets delegate missing methods to their app object. This
10
- # allows you to use the Shoes DSL within your widgets.
11
- #
12
- # @example
13
- # class SayHello < Shoes::Widget
14
- # def initialize word
15
- # para "Hello #{word}", stroke: green, size: 80
16
- # end
17
- # end
18
- #
19
- # Shoes.app do
20
- # say_hello 'Shoes'
21
- # end
22
- #
23
- class Widget
24
- extend Forwardable
25
-
26
- # Delegate missing methods to app, so you can use the Shoes DSL
27
- # inside the widget.
28
- def_delegators :app, *Shoes::App::DELEGATE_METHODS
29
-
30
- attr_accessor :parent
31
- attr_writer :app
32
-
33
- class << self
34
- attr_accessor :app
35
- end
36
-
37
- # lookup a bit more complicated as during initialize we do
38
- # not have @app yet...
39
- def app
40
- @app || self.class.app
41
- end
42
-
43
- def self.inherited(klass, &blk)
44
- dsl_method = dsl_method_name(klass)
45
- Shoes::App.class_eval do
46
- define_method(dsl_method) do |*args, &blk|
47
- # we set app 2 times because widgets execute most of their code
48
- # straight in initialize. I dunno if there is a good way of setting
49
- # an @app instance variable before initialize is executed. We could
50
- # hand it over in #initialize but that would break the interface
51
- # and people would have to set it themselves or make sure to call
52
- # super so for not it's like this.
53
- # Setting the ref on the instance is important as we might have
54
- # instances of the same widget in different Shoes::Apps so each one
55
- # needs to save the reference to the one it was started with
56
- klass.app = self
57
- widget_instance = klass.new(*args, &blk)
58
- widget_instance.app = self
59
- widget_instance.parent = @__app__.current_slot
60
- widget_instance
61
- end
62
- end
63
- end
64
-
65
-
66
- private
67
- def self.dsl_method_name(klass)
68
- klass.to_s[/(^|::)(\w+)$/, 2].
69
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
70
- gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase
71
- end
72
- end
73
- end
Binary file
Binary file
Binary file
Binary file
@@ -1,49 +0,0 @@
1
- #
2
- # Shoes Clock by Thomas Bell
3
- # posted to the Shoes mailing list on 04 Dec 2007
4
- # modified for Shoes 4, using fg instead of span in TextBlock.
5
- #
6
- Shoes.app height: 260, width: 250 do
7
- @radius, @centerx, @centery = 90, 126, 140
8
- animate(8) do
9
- @time = Time.now
10
- clear do
11
- draw_background
12
- stack do
13
- background black
14
- para(fg(@time.strftime("%a"), "#666"), fg(@time.strftime(" %b %d, %Y "), "#ccc"),
15
- strong(fg(@time.strftime("%I:%M"), white)), fg(@time.strftime(".%S"), "#666"), margin: 4, align: 'center')
16
- end
17
- clock_hand @time.sec + (@time.usec * 0.000001),2,30,red
18
- clock_hand @time.min + (@time.sec / 60.0),5
19
- clock_hand @time.hour + (@time.min / 60.0),8,6
20
- end
21
- end
22
- def draw_background
23
- background rgb(230, 240, 200)
24
-
25
- fill white
26
- stroke black
27
- strokewidth 4
28
- oval @centerx - 102, @centery - 102, 204, 204
29
-
30
- fill black
31
- nostroke
32
- oval @centerx - 5, @centery - 5, 10, 10
33
-
34
- stroke black
35
- strokewidth 1
36
- line(@centerx, @centery - 102, @centerx, @centery - 95)
37
- line(@centerx - 102, @centery, @centerx - 95, @centery)
38
- line(@centerx + 95, @centery, @centerx + 102, @centery)
39
- line(@centerx, @centery + 95, @centerx, @centery + 102)
40
- end
41
- def clock_hand(time, sw, unit=30, color=black)
42
- radius_local = unit == 30 ? @radius : @radius - 15
43
- _x = radius_local * Math.sin( time * Math::PI / unit )
44
- _y = radius_local * Math.cos( time * Math::PI / unit )
45
- stroke color
46
- strokewidth sw
47
- line(@centerx, @centery, @centerx + _x, @centery - _y)
48
- end
49
- end
@@ -1,21 +0,0 @@
1
- # from: https://gist.github.com/mattwynne/1228927
2
- # usage:
3
- # it "should return a result of 5" do
4
- # eventually { long_running_thing.result.should eq(5) }
5
- # end
6
- module AsyncHelper
7
- def eventually(options = {})
8
- timeout = options[:timeout] || 2
9
- interval = options[:interval] || 0.1
10
- time_limit = Time.now + timeout
11
- loop do
12
- begin
13
- yield
14
- rescue => error
15
- end
16
- return if error.nil?
17
- raise error if Time.now >= time_limit
18
- sleep interval
19
- end
20
- end
21
- end
@@ -1,11 +0,0 @@
1
- require 'simplecov'
2
- # using coveralls to publish test coverage statistics
3
- require 'coveralls'
4
-
5
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
6
- Coveralls::SimpleCov::Formatter,
7
- SimpleCov::Formatter::HTMLFormatter
8
- ]
9
- SimpleCov.start do
10
- add_filter '/spec/'
11
- end
@@ -1,65 +0,0 @@
1
- require 'shoes/spec_helper'
2
-
3
- shared_examples_for Shoes::Animation do
4
- it "should start" do
5
- subject.start
6
- subject.should_not be_stopped
7
- end
8
-
9
- it "should stop" do
10
- subject.stop
11
- subject.should be_stopped
12
- end
13
-
14
- it "should toggle on" do
15
- subject.stop
16
- subject.toggle
17
- subject.should_not be_stopped
18
- end
19
-
20
- it "should toggle off" do
21
- subject.start
22
- subject.toggle
23
- subject.should be_stopped
24
- end
25
-
26
- it "increments frame" do
27
- frame = subject.current_frame
28
- subject.increment_frame
29
- subject.current_frame.should eq(frame + 1)
30
- end
31
- end
32
-
33
- describe Shoes::Animation do
34
- let(:app) { double('app') }
35
- let(:app_gui) { double('app gui') }
36
- let(:opts) { {} }
37
- let(:block) { double('block') }
38
- subject { Shoes::Animation.new( app, opts, block ) }
39
-
40
- before :each do
41
- app.should_receive(:gui) { app_gui }
42
- end
43
-
44
- it_behaves_like Shoes::Animation
45
-
46
- it "sets default framerate" do
47
- subject.framerate.should eq(10)
48
- end
49
-
50
- it "sets current frame to 0" do
51
- subject.current_frame.should eq(0)
52
- end
53
-
54
- it { should_not be_stopped }
55
-
56
- describe "with framerate" do
57
- let(:opts) { {:framerate => 36, :app => app} }
58
-
59
- it "sets framerate" do
60
- subject.framerate.should eq(36)
61
- end
62
-
63
- it_behaves_like Shoes::Animation
64
- end
65
- end
@@ -1,411 +0,0 @@
1
- require 'shoes/spec_helper'
2
-
3
- describe Shoes::App do
4
- let(:input_blk) { Proc.new {} }
5
- let(:opts) { Hash.new }
6
- subject(:app) { Shoes::App.new(opts, &input_blk) }
7
-
8
- it_behaves_like "DSL container"
9
- it { should respond_to :clipboard }
10
- it { should respond_to :clipboard= }
11
- it { should respond_to :owner }
12
-
13
- # For Shoes 3 compatibility
14
- it "exposes self as #app" do
15
- expect(app.app).to eq(app)
16
- end
17
-
18
- describe "initialize" do
19
- let(:input_blk) { Proc.new {} }
20
-
21
- before do
22
- Shoes::App.any_instance.stub(:flow)
23
- end
24
-
25
- it "initializes style hash", :qt do
26
- style = Shoes::App.new.style
27
- style.class.should eq(Hash)
28
- end
29
-
30
- context "console" do
31
- end
32
-
33
- context "defaults" do
34
- let(:opts) { Hash.new }
35
- let(:defaults) { Shoes::InternalApp::DEFAULT_OPTIONS }
36
-
37
- it "sets width", :qt do
38
- subject.width.should == defaults[:width]
39
- expect(subject.width).to eq defaults[:width]
40
- end
41
-
42
- it "sets height", :qt do
43
- expect(subject.height).to eq defaults[:height]
44
- end
45
-
46
- it 'has an absolute_left of 0' do
47
- expect(subject.absolute_left).to eq 0
48
- end
49
-
50
- it 'has an absolute_top of 0' do
51
- expect(subject.absolute_top).to eq 0
52
- end
53
-
54
- describe "internal app state" do
55
- let(:internal_app) { app.instance_variable_get(:@__app__) }
56
-
57
- it "sets title", :qt do
58
- expect(internal_app.app_title).to eq defaults[:title]
59
- end
60
-
61
- it "is resizable", :qt do
62
- expect(internal_app.resizable).to be_true
63
- end
64
- end
65
- end
66
-
67
- context "from opts" do
68
- let(:opts) { {:width => 150, :height => 2, :title => "Shoes::App Spec", :resizable => false} }
69
-
70
- it "sets width", :qt do
71
- expect(subject.width).to eq opts[:width]
72
- end
73
-
74
- it "sets height", :qt do
75
- expect(subject.height).to eq opts[:height]
76
- end
77
-
78
- describe "internal app state" do
79
- let(:internal_app) { app.instance_variable_get(:@__app__) }
80
-
81
- it "sets title", :qt do
82
- expect(internal_app.app_title).to eq opts[:title]
83
- end
84
-
85
- it "sets resizable", :qt do
86
- expect(internal_app.resizable).to be_false
87
- end
88
- end
89
-
90
- it 'initializes a flow with the right parameters' do
91
- expect(Shoes::Flow).to receive(:new).with(anything, anything,
92
- {width: opts[:width],
93
- height: opts[:height]}).
94
- and_call_original
95
- subject
96
- end
97
- end
98
-
99
- context "when registering" do
100
- before :each do
101
- Shoes.unregister_all
102
- end
103
-
104
- it "registers" do
105
- old_apps_length = Shoes.apps.length
106
- subject
107
- expect(Shoes.apps.length).to eq(old_apps_length + 1)
108
- expect(Shoes.apps).to include(subject)
109
- end
110
- end
111
- end
112
-
113
- describe "style" do
114
- let(:black) { Shoes::COLORS[:black] }
115
- let(:goldenrod) { Shoes::COLORS[:goldenrod] }
116
- let(:defaults) { {stroke: black, strokewidth: 1} }
117
-
118
- it "sets defaults" do
119
- expect(app.style).to eq(defaults)
120
- end
121
-
122
- it "merges new styles with existing styles" do
123
- new_styles = { strokewidth: 4 }
124
- app.style new_styles
125
- expect(app.style).to eq(defaults.merge(new_styles))
126
- end
127
-
128
- describe "strokewidth" do
129
- it "defaults to 1" do
130
- subject.style[:strokewidth].should eq(1)
131
- end
132
-
133
- it "passes default to objects" do
134
- subject.line(0, 100, 100, 0).style[:strokewidth].should eq(1)
135
- end
136
-
137
- it "passes new values to objects" do
138
- subject.strokewidth 10
139
- subject.line(0, 100, 100, 0).style[:strokewidth].should eq(10)
140
- end
141
- end
142
-
143
- describe "stroke" do
144
- it "defaults to black" do
145
- subject.style[:stroke].should eq(black)
146
- end
147
-
148
- it "passes default to objects" do
149
- subject.oval(100, 100, 100).style[:stroke].should eq(black)
150
- end
151
-
152
- it "passes new value to objects" do
153
- subject.stroke goldenrod
154
- subject.oval(100, 100, 100).style[:stroke].should eq(goldenrod)
155
- end
156
- end
157
-
158
- describe "default styles" do
159
- it "is independent among Shoes::App instances" do
160
- app1 = Shoes::App.new
161
- app2 = Shoes::App.new
162
-
163
- app1.strokewidth 10
164
- app1.line(0, 100, 100, 0).style[:strokewidth].should == 10
165
-
166
- # .. but does not affect app2
167
- app2.line(0, 100, 100, 0).style[:strokewidth].should_not == 10
168
- end
169
- end
170
- end
171
-
172
- describe "connecting with gui" do
173
- let(:gui) { app.instance_variable_get(:@__app__).gui }
174
-
175
- describe "clipboard" do
176
- it "gets clipboard" do
177
- expect(gui).to receive(:clipboard)
178
- subject.clipboard
179
- end
180
-
181
- it "sets clipboard" do
182
- expect(gui).to receive(:clipboard=).with("test")
183
- subject.clipboard = "test"
184
- end
185
- end
186
-
187
- describe "quitting" do
188
- it "#quit tells the GUI to quit" do
189
- expect(gui).to receive :quit
190
- subject.quit
191
- end
192
-
193
- it '#close tells the GUI to quit' do
194
- expect(gui).to receive :quit
195
- subject.close
196
- end
197
- end
198
- end
199
-
200
- describe "#started?" do
201
- it "checks the window has been displayed or not" do
202
- subject.started?
203
- end
204
- end
205
-
206
- describe 'Execution context' do
207
- it 'starts with self as the execution context' do
208
- my_self = nil
209
- app = Shoes.app do my_self = self end
210
- my_self.should eq app
211
- end
212
- end
213
-
214
- describe '#append' do
215
- let(:input_blk) {Proc.new do append do para 'Hi' end end}
216
-
217
- it 'understands append' do
218
- subject.should respond_to :append
219
- end
220
-
221
- it 'should receive a call to what is called in the append block' do
222
- Shoes::App.any_instance.should_receive :para
223
- subject
224
- end
225
- end
226
-
227
- describe '#resize' do
228
- it 'understands resize' do
229
- subject.should respond_to :resize
230
- end
231
- end
232
-
233
- describe 'fullscreen' do
234
- describe 'starting' do
235
- let(:internal_app) { app.instance_variable_get(:@__app__) }
236
-
237
- context 'with defaults' do
238
- it 'does not start as fullscreen' do
239
- expect(internal_app.start_as_fullscreen?).to be_false
240
- end
241
- end
242
-
243
- describe 'with the fullscreen option' do
244
- let(:opts) { {fullscreen: true} }
245
-
246
- it 'starts as fullscreen ' do
247
- expect(internal_app.start_as_fullscreen?).to be_true
248
- end
249
- end
250
- end
251
-
252
- it 'is not in fullscreen by default' do
253
- expect(app).not_to be_fullscreen
254
- end
255
-
256
- it 'can be turned into fullscreen' do
257
- app.fullscreen = true
258
- expect(app).to be_fullscreen
259
- end
260
-
261
- describe 'going into fullscreen and back out again' do
262
- let(:defaults) { Shoes::InternalApp::DEFAULT_OPTIONS }
263
-
264
- before :each do
265
- app.fullscreen = true
266
- app.fullscreen = false
267
- end
268
-
269
- # Failing on Mac fullscreen doesnt seem to work see #397
270
- it 'is not in fullscreen', :fails_on_osx => true do
271
- expect(app).not_to be_fullscreen
272
- end
273
-
274
- # Failing on Mac fullscreen doesnt seem to work see #397
275
- it 'has its original width', :fails_on_osx => true do
276
- expect(app.width).to eq(defaults[:width])
277
- end
278
-
279
- # Failing on Mac fullscreen doesnt seem to work see #397
280
- it 'has its original height', :fails_on_osx => true do
281
- expect(app.height).to eq(defaults[:height])
282
- end
283
- end
284
- end
285
-
286
- describe '#add_child' do
287
- let(:internal_app) { app.instance_variable_get(:@__app__) }
288
- let(:child) {double 'child'}
289
-
290
- it 'adds the child to the top_slot when there is one' do
291
- top_slot_double = double 'top slot'
292
- internal_app.stub(top_slot: top_slot_double)
293
- expect(top_slot_double).to receive(:add_child).with(child)
294
- internal_app.add_child child
295
- end
296
-
297
- it 'adds the child to the own contents when there is no top_slot' do
298
- internal_app.stub top_slot: nil
299
- internal_app.add_child child
300
- internal_app.contents.should include child
301
- end
302
- end
303
-
304
- describe '#clear' do
305
- let(:input_blk) {Proc.new {para 'Hello'}}
306
- let(:internal_app) {subject.instance_variable_get(:@__app__)}
307
-
308
- it 'deletes everything (regression)' do
309
- subject.clear
310
- expect(internal_app.top_slot.contents).to be_empty
311
- end
312
-
313
- context 'clear in the initial input_block' do
314
- let(:input_blk) {
315
- Proc.new do
316
- para 'Hello there'
317
- clear do
318
- para 'see you'
319
- end
320
- end
321
- }
322
-
323
- it 'does not raise an error calling clear on a top_slot that is nil' do
324
- expect {subject}.not_to raise_error
325
- end
326
- end
327
-
328
- end
329
-
330
- describe "#gutter" do
331
- context "when app has a scrollbar" do
332
- let(:input_opts) { {width: 100, height: 100} }
333
- let(:input_block) { Proc.new { para "Round peg, square hole" * 200 } }
334
-
335
- it "has gutter of 16" do
336
- expect(app.gutter).to eq(16)
337
- end
338
- end
339
-
340
- context "when app has no scrollbar" do
341
- let(:input_block) { Proc.new { para "Round peg, square hole" } }
342
-
343
- it "has gutter of 16" do
344
- expect(app.gutter).to eq(16)
345
- end
346
- end
347
- end
348
-
349
- describe 'DELEGATE_METHODS' do
350
- subject {Shoes::App::DELEGATE_METHODS}
351
-
352
- describe 'does not include general ruby object methods' do
353
- it {should_not include :new, :initialize}
354
- end
355
-
356
- describe 'it has access to Shoes app and DSL methods' do
357
- it {should include :para, :rect, :stack, :flow, :image, :location}
358
- end
359
-
360
- describe 'it does not have access to private methods' do
361
- it {should_not include :pop_style, :style_normalizer, :create}
362
- end
363
-
364
- describe 'there are blacklisted methods which it should not include' do
365
- it {should_not include :parent}
366
- end
367
- end
368
- end
369
-
370
- describe "App registry" do
371
- subject { Shoes.apps }
372
-
373
- before :each do
374
- Shoes.unregister_all
375
- end
376
-
377
- it "only exposes a copy" do
378
- subject << double("app")
379
- Shoes.apps.length.should eq(0)
380
- end
381
-
382
- context "with no apps" do
383
- it { should be_empty }
384
- end
385
-
386
- context "with one app" do
387
- let(:app) { double('app') }
388
- before :each do
389
- Shoes.register(app)
390
- end
391
-
392
- its(:length) { should eq(1) }
393
- it "marks first app as main app" do
394
- Shoes.main_app.should be(app)
395
- end
396
- end
397
-
398
- context "with two apps" do
399
- let(:app_1) { double("app 1") }
400
- let(:app_2) { double("app 2") }
401
-
402
- before :each do
403
- [app_1, app_2].each { |a| Shoes.register(a) }
404
- end
405
-
406
- its(:length) { should eq(2) }
407
- it "marks first app as main app" do
408
- Shoes.main_app.should be(app_1)
409
- end
410
- end
411
- end