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,11 @@
1
+ Shoes.app do
2
+ slot = stack do
3
+ background lightsteelblue
4
+ para 'Some content'
5
+ button 'Hello' do alert 'hi there' end
6
+ end
7
+
8
+ button 'Show' do slot.show end
9
+ button 'Hide' do slot.hide end
10
+ button 'Toggle' do slot.toggle end
11
+ end
@@ -0,0 +1,9 @@
1
+ class MyWidget < Shoes::Widget
2
+ def initialize(color, args)
3
+ background color
4
+ end
5
+ end
6
+
7
+ Shoes.app do
8
+ my_widget green, width: 170, height: 120
9
+ end
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'java'
4
+ $:.unshift(File.expand_path("../../lib", __FILE__))
5
+ require 'swt'
6
+
7
+ class ButtonExample
8
+
9
+ def initialize
10
+ style = ::Swt::SWT::CLOSE | ::Swt::SWT::MIN | ::Swt::SWT::V_SCROLL #| ::Swt::SWT::MAX | ::Swt::SWT::RESIZE
11
+ @shell = Swt::Widgets::Shell.new(style)
12
+ @shell.open
13
+ end
14
+
15
+ def start
16
+ ::Swt.event_loop { @shell.disposed? }
17
+ end
18
+ end
19
+
20
+ ButtonExample.new.start
@@ -0,0 +1,22 @@
1
+ require 'pry'
2
+ require 'pry-nav'
3
+ require 'shoes/swt/leak_hunter'
4
+
5
+ Shoes.app do
6
+ every(1) do
7
+ print "!"
8
+ clear
9
+ stack width:100 do
10
+ background green
11
+
12
+ button "quit" do
13
+ clear
14
+ quit
15
+ end
16
+
17
+ 100.times do
18
+ para "b", link("kind", fg: red)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,5 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/shoes/version', __FILE__)
2
+ require_relative 'lib/shoes/version'
3
+ require_relative 'manifests/shoes'
3
4
 
4
5
  Gem::Specification.new do |s|
5
6
  s.name = "shoes"
@@ -12,30 +13,17 @@ Gem::Specification.new do |s|
12
13
  s.description = %q{Shoes is the best little GUI toolkit for Ruby. Shoes makes building for Mac, Windows, and Linux super simple. Shoes runs on JRuby only for now.}
13
14
  s.license = 'MIT'
14
15
 
15
- s.files = `git ls-files`.split("\n")
16
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.files = ShoesManifest.files
17
+ s.test_files = ShoesManifest.test_files
17
18
  s.require_paths = ["lib"]
18
19
 
19
- # Curious why we don't install shoes? See ext/Rakefile for the nitty-gritty.
20
- s.executables = ['shoes-stub', 'ruby-shoes']
21
- s.extensions = ['ext/install/Rakefile']
20
+ s.add_dependency "shoes-dsl", Shoes::VERSION
21
+ s.add_dependency "shoes-swt", Shoes::VERSION
22
22
 
23
- s.add_dependency "swt", "~>0.18"
24
- s.add_dependency "furoshiki", ">=0.1.2"
23
+ s.add_dependency "furoshiki", ">=0.1.2" # For packaging
25
24
  s.add_dependency "nokogiri" # For converting the manual to HTML
26
- s.add_dependency "after_do", "~>0.3"
27
-
28
- s.add_development_dependency "guard"
29
- s.add_development_dependency "guard-rspec"
30
- s.add_development_dependency "pry"
31
25
 
32
- s.add_development_dependency "rspec", "~>2.10"
33
- s.add_development_dependency "rake"
34
-
35
- s.add_development_dependency "yard"
36
- s.add_development_dependency "kramdown"
37
- s.add_development_dependency 'simplecov'
38
- s.add_development_dependency 'coveralls'
39
- s.add_development_dependency 'jruby-lint'
40
- s.add_development_dependency 'webmock'
26
+ # Curious why we don't install shoes? See ext/Rakefile for the nitty-gritty.
27
+ s.executables = ['shoes-stub', 'ruby-shoes']
28
+ s.extensions = ['ext/install/Rakefile']
41
29
  end
Binary file
@@ -1692,10 +1692,10 @@ also set, shapes drawn will not be visible.
1692
1692
  Draws a line using the current line color (aka "stroke") starting at
1693
1693
  coordinates (left, top) and ending at coordinates (x2, y2).
1694
1694
 
1695
- === oval(left, top, radius) » Shoes::Shape ===
1695
+ === oval(left, top, diameter) » Shoes::Shape ===
1696
1696
 
1697
1697
  Draws a circular form at pixel coordinates (left, top) with a width and height
1698
- of `radius` pixels. The line and fill colors are used to draw the shape. By
1698
+ of `diameter` pixels. The line and fill colors are used to draw the shape. By
1699
1699
  default, the coordinates are for the oval's leftmost, top corner, but this can
1700
1700
  be changed by calling the [[Art.transform]] method or by using the `:center`
1701
1701
  style on the next method below.
@@ -1718,21 +1718,21 @@ Draw circular form using a style hash. The following styles are supported:
1718
1718
 
1719
1719
  * `top`: the y-coordinate for the oval pen.
1720
1720
  * `left`: the x-coordinate for the oval pen.
1721
- * `radius`: the width and height of the circle.
1721
+ * `diameter`: the width and height of the circle.
1722
1722
  * `width`: a specific pixel width for the oval.
1723
1723
  * `height`: a specific pixel height for the oval.
1724
1724
  * `center`: do the coordinates specific the oval's center? (true or false)
1725
1725
 
1726
1726
  These styles may also be altered using the `style` method on the Shape object.
1727
1727
 
1728
- === rect(top, left, width, height, corners = 0) » Shoes::Shape ===
1728
+ === rect(left, top, width, height, corners = 0) » Shoes::Shape ===
1729
1729
 
1730
- Draws a rectangle starting from coordinates (top, left) with dimensions of
1730
+ Draws a rectangle starting from coordinates (left, top) with dimensions of
1731
1731
  width x height. Optionally, you may give the rectangle rounded corners with a
1732
1732
  fifth argument: the radius of the corners in pixels.
1733
1733
 
1734
1734
  Alternate Call:
1735
- rect(top, left, sidelength): Will draw a square with sides having the given length
1735
+ rect(left, top, sidelength): Will draw a square with sides having the given length
1736
1736
 
1737
1737
 
1738
1738
  As with all other shapes, the rectangle is drawn using the stroke and fill colors.
@@ -1754,8 +1754,8 @@ method for a rectangle which defaults to filling its parent box.
1754
1754
 
1755
1755
  Draw a rectangle using a style hash. The following styles are supported:
1756
1756
 
1757
- * `top`: the y-coordinate for the rectangle.
1758
1757
  * `left`: the x-coordinate for the rectangle.
1758
+ * `top`: the y-coordinate for the rectangle.
1759
1759
  * `curve`: the pixel radius of the rectangle's corners.
1760
1760
  * `width`: a specific pixel width for the rectangle.
1761
1761
  * `height`: a specific pixel height for the rectangle.
@@ -1806,6 +1806,15 @@ the other methods in this [[Art]] section) inside a shape, but they will not be
1806
1806
  part of the line. They will be more like a group of shapes are all drawn as
1807
1807
  one.
1808
1808
 
1809
+ === shape(styles) » Shoes::Shape ===
1810
+
1811
+ Draw an arbitrary shape using a style hash. The following styles are supported:
1812
+
1813
+ * `left`: the x-coordinate for the shape.
1814
+ * `top`: the y-coordinate for the shape.
1815
+
1816
+ These styles may also be altered using the `style` method on the shape object.
1817
+
1809
1818
  === star(left, top, points = 10, outer = 100.0, inner = 50.0) » Shoes::Shape ===
1810
1819
 
1811
1820
  Draws a star using the stroke and fill colors. The star is positioned with its
@@ -0,0 +1,92 @@
1
+ class Changelog
2
+ CATEGORY_MAPPING = [
3
+ {pattern: 'Changelog: feature', heading: 'New features'},
4
+ {pattern: 'Changelog: improvement', heading: 'Improvements'},
5
+ {pattern: 'Changelog: bugfix', heading: 'Bug Fixes'}
6
+ ]
7
+
8
+ COMMIT_SEPARATOR = '<--COMMIT-->'
9
+ BODY_START_SEPARATOR = '<--BODY-START-->'
10
+ BODY_END_SEPARATOR = '<--BODY-END-->'
11
+
12
+ def generate(categories = CATEGORY_MAPPING)
13
+ commit_range = commits_on_master_since_last_release
14
+ changes = categorize_commits(categories, commit_range)
15
+ changes << contributors(commit_range) if changes.any?
16
+ changes.compact.join("\n\n")
17
+ end
18
+
19
+ private
20
+ def categorize_commits(categories, commit_range)
21
+ categorized_commits = []
22
+
23
+ changes = categories.inject([]) do |list, category|
24
+ commits = commits_matching(category[:pattern], commit_range)
25
+ categorized_commits.concat commits
26
+ list << changes_under_heading(category[:heading], commits)
27
+ end
28
+
29
+ changes << misc_changes(commit_range, categorized_commits)
30
+ changes
31
+ end
32
+
33
+ def heading(title, count, underline_char = '-')
34
+ title_with_count = "#{title} (#{count})"
35
+ underline = underline_char * title_with_count.length
36
+ "#{title_with_count}\n#{underline}\n\n"
37
+ end
38
+
39
+ def commits_matching(pattern, commit_range)
40
+ grep_placeholder = '{TOKEN}'
41
+ log_command_template = "git log --regexp-ignore-case --grep '#{grep_placeholder}' --format='%s#{BODY_START_SEPARATOR}%b#{BODY_END_SEPARATOR} [%h]#{COMMIT_SEPARATOR}' #{commit_range}"
42
+ log_command = log_command_template.gsub(grep_placeholder, pattern)
43
+
44
+ commits =`#{log_command}`
45
+ raise "Bad \`git log\` command. Using <#{log_command}>" unless $?.success?
46
+
47
+ commits.split(COMMIT_SEPARATOR + "\n").map{|commit| uniform_change_log(commit)}
48
+ end
49
+
50
+ def uniform_change_log(commit)
51
+ '* ' + extract_changelog_message(commit)
52
+ end
53
+
54
+ def extract_changelog_message commit
55
+ if commit =~ /Merge pull request/i
56
+ message = commit.sub(/Merge pull request.*#{BODY_START_SEPARATOR}/i, '')
57
+ message.sub /((\n.*#{BODY_END_SEPARATOR})|#{BODY_END_SEPARATOR})/m, ''
58
+ else
59
+ commit.sub /#{BODY_START_SEPARATOR}.*#{BODY_END_SEPARATOR}/m, ''
60
+ end
61
+ end
62
+
63
+ def misc_changes(commit_range, categorized_commits)
64
+ misc_change_commits = commits_matching('Changelog', commit_range).reject {|commit| categorized_commits.include? commit }
65
+ changes_under_heading('Miscellaneous', misc_change_commits)
66
+ end
67
+
68
+ def changes_under_heading(title, commits)
69
+ if commits.any?
70
+ heading = heading(title, commits.length)
71
+ heading << commits.join("\n")
72
+ end
73
+ end
74
+
75
+ def contributors(commit_range)
76
+ contributors = `git shortlog --numbered --summary #{commit_range}`.split("\n")
77
+ heading = heading("Contributors", contributors.length)
78
+ names = contributors.map {|line| line.sub(/^.*\t/, '')}.join(", ")
79
+ heading << names
80
+ end
81
+
82
+ def commits_on_master_since_last_release
83
+ last_sha = `git rev-list --tags --max-count=1`.chomp
84
+ last_release = `git describe #{last_sha}`.chomp
85
+ commit_range = "#{last_release}..master"
86
+ end
87
+ end
88
+
89
+ desc "Generate changelog entries since last release"
90
+ task :changelog do
91
+ puts Changelog.new.generate
92
+ end
@@ -0,0 +1,38 @@
1
+ require 'bundler/gem_helper'
2
+
3
+ # Define placeholder tasks so we can name them as dependencies. The bodies
4
+ # of these tasks will be defined by Bundler at runtime.
5
+ task :build
6
+ task :install
7
+ task :release
8
+
9
+ desc 'Build all gems'
10
+ task 'build:all'
11
+
12
+ desc 'Install all gems'
13
+ task 'install:all'
14
+
15
+ ['shoes-dsl', 'shoes-swt', 'shoes'].each do |lib|
16
+ # Defer installing Bundler gem tasks until runtime, so we can install them
17
+ # for a particular gem. Still create tasks that will show up in `rake --tasks`
18
+ # Note that executing #install_tasks multiple times will *add* to the defined
19
+ # tasks, so we can build up build:all and install:all tasks.
20
+ task "install_gem_tasks:#{lib}" do
21
+ Bundler::GemHelper.install_tasks :name => lib
22
+ end
23
+
24
+ desc "Build the #{lib} gem"
25
+ task "build:#{lib}" => ["install_gem_tasks:#{lib}", :build]
26
+
27
+ desc "Install the #{lib} gem"
28
+ task "install:#{lib}" => ["install_gem_tasks:#{lib}", :install]
29
+
30
+ desc "Release the #{lib} gem"
31
+ task "release:#{lib}" => ["install_gem_tasks:#{lib}", :release]
32
+
33
+ task "build:all" => "install_gem_tasks:#{lib}"
34
+ task "install:all" => "install_gem_tasks:#{lib}"
35
+ end
36
+
37
+ task 'build:all' => 'build'
38
+ task 'install:all' => 'install'
@@ -0,0 +1,106 @@
1
+ require 'jruby'
2
+ JRuby.runtime.instance_config.runRubyInProcess = false
3
+
4
+ # thanks Dan Lucraft!
5
+ def jruby_run(cmd, swt = false)
6
+ opts = "-J-XstartOnFirstThread" if swt && RbConfig::CONFIG["host_os"] =~ /darwin/
7
+
8
+ # see https://github.com/jruby/jruby/wiki/FAQs
9
+ # "How can I increase the heap/memory size when launching a sub-JRuby?"
10
+ sh( "jruby --debug --1.9 -Ispec #{opts} -S #{cmd}" )
11
+ end
12
+
13
+ def rspec(files, options = "")
14
+ rspec_opts = "#{options} #{files}"
15
+ "rspec --tty #{rspec_opts}"
16
+ end
17
+
18
+ # run rspec in separate Jruby JVM
19
+ def jruby_rspec(files, args)
20
+ swt = args.delete(:swt)
21
+ rspec_opts = spec_opts_from_args(args)
22
+ rspec_opts << " #{ENV['RSPEC_OPTS']}"
23
+
24
+ jruby_run(rspec(files, rspec_opts), swt)
25
+ end
26
+
27
+ def spec_opts_from_args(args)
28
+ opts = []
29
+ opts << "-e ::#{args[:module]}" if args[:module]
30
+ opts += Array(args[:require]).map {|lib| "-r#{lib}"}
31
+ opts += args[:excludes].map { |tag| "--tag ~#{tag}" } if args[:excludes]
32
+ opts += args[:includes].map { |tag| "--tag #{tag}" } if args[:includes]
33
+ opts.join ' '
34
+ end
35
+
36
+ def swt_args(args)
37
+ args = args.to_hash
38
+ args[:swt] = true
39
+ args[:require] = 'swt_shoes/spec_helper'
40
+ # Adjust includes/excludes appropriately
41
+ # args[:includes] = [:swt]
42
+ args[:excludes] = [:no_swt]
43
+ args[:excludes] << :fails_on_osx if RbConfig::CONFIG["host_os"] =~ /darwin/
44
+ args
45
+ end
46
+
47
+ task :default => :spec
48
+
49
+ desc "Run all specs"
50
+ task :spec, [:module] => "spec:all"
51
+
52
+ namespace :spec do
53
+ desc "Run all specs for Shoes DSL and SWT backend
54
+ Limit the examples to specific :modules :
55
+ Animation
56
+ App
57
+ Button
58
+ Flow
59
+
60
+ ie. $ rake spec:all[Flow]
61
+ "
62
+ task "all", [:module] do |t, args|
63
+ Rake::Task["spec:shoes"].invoke(args[:module])
64
+ Rake::Task["spec:swt"].invoke(args[:module])
65
+ end
66
+
67
+ task :swt, [:module] do |t, args|
68
+ Rake::Task['spec:swt:all'].invoke(args[:module])
69
+ end
70
+
71
+ namespace :swt do
72
+ desc "Run all specs with SWT backend
73
+ Limit the examples to specific :modules : "
74
+ task :all, [:module] do |t, args|
75
+ argh = swt_args(args)
76
+ files = (Dir['spec/swt_shoes/**/*_spec.rb'] + Dir['spec/shoes/**/*_spec.rb']).join ' '
77
+ jruby_rspec(files, argh)
78
+ end
79
+
80
+ desc "Run SWT backend specs isolated from DSL"
81
+ task :isolation, [:module] do |t, args|
82
+ argh = swt_args(args)
83
+ files = Dir['spec/swt_shoes/**/*_spec.rb'].join ' '
84
+ jruby_rspec(files, argh)
85
+ end
86
+
87
+ desc "Run DSL specs integrated with SWT backend"
88
+ task :integration, [:module] do |t, args|
89
+ argh = swt_args(args)
90
+ files = Dir['spec/shoes/**/*_spec.rb'].join ' '
91
+ jruby_rspec(files, argh)
92
+ end
93
+ end
94
+
95
+ desc "Run specs for Shoes DSL
96
+ Limit the examples to specific :modules : "
97
+ task :dsl, [:module] do |t, args|
98
+ argh = args.to_hash
99
+ files = Dir['spec/shoes/**/*_spec.rb'].join ' '
100
+ jruby_rspec(files, argh)
101
+ end
102
+
103
+ task :shoes, [:module] do |t, args|
104
+ Rake::Task['spec:dsl'].invoke(args[:module])
105
+ end
106
+ end
@@ -0,0 +1,66 @@
1
+ SAMPLES_DIR = "samples"
2
+
3
+ namespace :samples do
4
+ def samples_from_file(filename)
5
+ samples = File.read("#{SAMPLES_DIR}/#{filename}").lines
6
+ samples.map {|s| s.sub(/#.*$/, '')}.map(&:strip).select {|s| s != ''}.map {|s| "#{SAMPLES_DIR}/#{s}"}
7
+ end
8
+
9
+ def working_samples
10
+ samples = samples_from_file "README"
11
+ puts "#{samples.size} samples are known to work"
12
+ samples
13
+ end
14
+
15
+ def non_samples
16
+ all_samples = Dir[File.join(SAMPLES_DIR, '*.rb')]
17
+ result = all_samples - working_samples
18
+ puts "#{result.size} samples are not known to work"
19
+ result
20
+ end
21
+
22
+ def run_sample(sample_name, index, total)
23
+ puts "Running #{sample_name} (#{index + 1} of #{total})...quit to run next sample"
24
+ system "bin/shoes #{sample_name}"
25
+ end
26
+
27
+ def run_samples(samples)
28
+ samples.each_with_index do |sample, index|
29
+ run_sample(sample, index, samples.size)
30
+ end
31
+ end
32
+
33
+ desc "Run all working samples in random order"
34
+ task :random do |t|
35
+ puts t.comment
36
+ run_samples working_samples.shuffle
37
+ end
38
+
39
+ desc "Run all working samples in alphabetical order"
40
+ task :good do |t|
41
+ puts t.comment
42
+ run_samples working_samples.sort
43
+ end
44
+
45
+ desc "Run all non-working samples in random order"
46
+ task :bad do |t|
47
+ puts t.comment
48
+ run_samples non_samples.shuffle
49
+ end
50
+
51
+ desc "Create list of non-working samples"
52
+ task :bad_list do |t|
53
+ puts t.comment
54
+ non_samples.each{|non_sample| puts non_sample}
55
+ end
56
+
57
+ desc "Run all samples listed in samples/filename"
58
+ task :subset, [:filename] do |t, args|
59
+ puts t.comment
60
+ run_samples samples_from_file(args[:filename])
61
+ end
62
+ end
63
+
64
+ task :samples => ['samples:random']
65
+ task :non_samples => ['samples:bad']
66
+ task :list_non_samples => ['samples:bad_list']