shoes 3.0.1 → 4.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (709) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +44 -3
  3. data/.rspec +3 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +31 -0
  7. data/CHANGELOG +3 -0
  8. data/Gemfile +3 -0
  9. data/Guardfile +11 -0
  10. data/{COPYING → LICENSE} +1 -0
  11. data/README.md +160 -50
  12. data/Rakefile +188 -101
  13. data/app.yaml +59 -6
  14. data/benchmark/app_clear.rb +21 -0
  15. data/benchmark/clear.rb +69 -0
  16. data/benchmark/memory/text_dispose.rb +9 -0
  17. data/benchmark/para_creator.rb +9 -0
  18. data/benchmark/paras.rb +52 -0
  19. data/benchmark/urls.rb +40 -0
  20. data/bin/ruby-shoes +6 -0
  21. data/bin/shoes +59 -0
  22. data/bin/shoes-guard +8 -0
  23. data/bin/shoes-stub +59 -0
  24. data/bin/shoes.bat +6 -0
  25. data/ext/install/Rakefile +29 -0
  26. data/ext/install/shoes.bat +6 -0
  27. data/lib/ext/highlighter.rb +2 -0
  28. data/lib/ext/highlighter/common.rb +197 -0
  29. data/lib/ext/highlighter/lang/ruby.rb +316 -0
  30. data/lib/ext/highlighter/markup.rb +222 -0
  31. data/lib/rubygems_plugin.rb +19 -0
  32. data/lib/shoes.rb +114 -537
  33. data/lib/shoes/animation.rb +55 -0
  34. data/lib/shoes/app.rb +320 -0
  35. data/lib/shoes/arc.rb +35 -0
  36. data/lib/shoes/background.rb +30 -0
  37. data/lib/shoes/border.rb +33 -0
  38. data/lib/shoes/builtin_methods.rb +73 -0
  39. data/lib/shoes/button.rb +32 -0
  40. data/lib/shoes/check_button.rb +43 -0
  41. data/lib/shoes/cli.rb +96 -0
  42. data/lib/shoes/color.rb +375 -0
  43. data/lib/shoes/common/background_element.rb +9 -0
  44. data/lib/shoes/common/changeable.rb +34 -0
  45. data/lib/shoes/common/clickable.rb +17 -0
  46. data/lib/shoes/common/common_methods.rb +70 -0
  47. data/lib/shoes/common/fill.rb +21 -0
  48. data/lib/shoes/common/registration.rb +33 -0
  49. data/lib/shoes/common/state.rb +18 -0
  50. data/lib/shoes/common/stroke.rb +28 -0
  51. data/lib/shoes/common/style.rb +34 -0
  52. data/lib/shoes/common/style_normalizer.rb +16 -0
  53. data/lib/shoes/configuration.rb +96 -0
  54. data/lib/shoes/dialog.rb +27 -0
  55. data/lib/shoes/dimension.rb +237 -0
  56. data/lib/shoes/dimensions.rb +194 -0
  57. data/lib/shoes/download.rb +117 -0
  58. data/lib/shoes/dsl.rb +478 -0
  59. data/lib/shoes/font.rb +49 -0
  60. data/lib/shoes/gradient.rb +18 -0
  61. data/lib/shoes/help.rb +458 -391
  62. data/lib/shoes/image.rb +27 -19
  63. data/lib/shoes/image_pattern.rb +10 -0
  64. data/lib/shoes/input_box.rb +68 -0
  65. data/lib/shoes/key_event.rb +17 -0
  66. data/lib/shoes/line.rb +38 -0
  67. data/lib/shoes/link.rb +49 -0
  68. data/lib/shoes/link_hover.rb +5 -0
  69. data/lib/shoes/list_box.rb +44 -0
  70. data/lib/shoes/logger.rb +66 -0
  71. data/lib/shoes/logger/ruby.rb +18 -0
  72. data/lib/shoes/manual.rb +6 -0
  73. data/lib/shoes/mock.rb +30 -0
  74. data/lib/shoes/mock/animation.rb +8 -0
  75. data/lib/shoes/mock/app.rb +44 -0
  76. data/lib/shoes/mock/arc.rb +8 -0
  77. data/lib/shoes/mock/background.rb +10 -0
  78. data/lib/shoes/mock/border.rb +7 -0
  79. data/lib/shoes/mock/button.rb +10 -0
  80. data/lib/shoes/mock/check.rb +24 -0
  81. data/lib/shoes/mock/common_methods.rb +11 -0
  82. data/lib/shoes/mock/dialog.rb +13 -0
  83. data/lib/shoes/mock/download.rb +18 -0
  84. data/lib/shoes/mock/font.rb +17 -0
  85. data/lib/shoes/mock/image.rb +12 -0
  86. data/lib/shoes/mock/image_pattern.rb +9 -0
  87. data/lib/shoes/mock/input_box.rb +23 -0
  88. data/lib/shoes/mock/keypress.rb +8 -0
  89. data/lib/shoes/mock/keyrelease.rb +8 -0
  90. data/lib/shoes/mock/line.rb +14 -0
  91. data/lib/shoes/mock/link.rb +11 -0
  92. data/lib/shoes/mock/list_box.rb +16 -0
  93. data/lib/shoes/mock/oval.rb +11 -0
  94. data/lib/shoes/mock/progress.rb +10 -0
  95. data/lib/shoes/mock/radio.rb +26 -0
  96. data/lib/shoes/mock/rect.rb +13 -0
  97. data/lib/shoes/mock/shape.rb +19 -0
  98. data/lib/shoes/mock/slot.rb +14 -0
  99. data/lib/shoes/mock/sound.rb +8 -0
  100. data/lib/shoes/mock/star.rb +13 -0
  101. data/lib/shoes/mock/text_block.rb +29 -0
  102. data/lib/shoes/mock/timer.rb +8 -0
  103. data/lib/shoes/oval.rb +28 -0
  104. data/lib/shoes/point.rb +43 -0
  105. data/lib/shoes/progress.rb +26 -0
  106. data/lib/shoes/radio.rb +15 -0
  107. data/lib/shoes/rect.rb +28 -0
  108. data/lib/shoes/renamed_delegate.rb +15 -0
  109. data/lib/shoes/shape.rb +175 -0
  110. data/lib/shoes/slot.rb +232 -0
  111. data/lib/shoes/slot_contents.rb +56 -0
  112. data/lib/shoes/sound.rb +16 -0
  113. data/lib/shoes/span.rb +16 -0
  114. data/lib/shoes/star.rb +49 -0
  115. data/lib/shoes/swt.rb +114 -0
  116. data/lib/shoes/swt/animation.rb +46 -0
  117. data/lib/shoes/swt/app.rb +300 -0
  118. data/lib/shoes/swt/arc.rb +70 -0
  119. data/lib/shoes/swt/background.rb +31 -0
  120. data/lib/shoes/swt/border.rb +37 -0
  121. data/lib/shoes/swt/button.rb +18 -0
  122. data/lib/shoes/swt/check.rb +14 -0
  123. data/lib/shoes/swt/check_button.rb +19 -0
  124. data/lib/shoes/swt/color.rb +45 -0
  125. data/lib/shoes/swt/common/child.rb +16 -0
  126. data/lib/shoes/swt/common/clear.rb +24 -0
  127. data/lib/shoes/swt/common/clickable.rb +62 -0
  128. data/lib/shoes/swt/common/container.rb +28 -0
  129. data/lib/shoes/swt/common/fill.rb +37 -0
  130. data/lib/shoes/swt/common/painter.rb +83 -0
  131. data/lib/shoes/swt/common/painter_updates_position.rb +12 -0
  132. data/lib/shoes/swt/common/resource.rb +14 -0
  133. data/lib/shoes/swt/common/selection_listener.rb +14 -0
  134. data/lib/shoes/swt/common/stroke.rb +41 -0
  135. data/lib/shoes/swt/common/toggle.rb +13 -0
  136. data/lib/shoes/swt/common/update_position.rb +15 -0
  137. data/lib/shoes/swt/dialog.rb +89 -0
  138. data/lib/shoes/swt/disposed_protection.rb +23 -0
  139. data/lib/shoes/swt/download.rb +24 -0
  140. data/lib/shoes/swt/fitted_text_layout.rb +94 -0
  141. data/lib/shoes/swt/fitted_text_layout_collection.rb +108 -0
  142. data/lib/shoes/swt/font.rb +32 -0
  143. data/lib/shoes/swt/gradient.rb +77 -0
  144. data/lib/shoes/swt/image.rb +130 -0
  145. data/lib/shoes/swt/image_pattern.rb +19 -0
  146. data/lib/shoes/swt/input_box.rb +73 -0
  147. data/lib/shoes/swt/key_listener.rb +145 -0
  148. data/lib/shoes/swt/line.rb +57 -0
  149. data/lib/shoes/swt/link.rb +37 -0
  150. data/lib/shoes/swt/link_segment.rb +108 -0
  151. data/lib/shoes/swt/list_box.rb +49 -0
  152. data/lib/shoes/swt/mouse_move_listener.rb +61 -0
  153. data/lib/shoes/swt/oval.rb +53 -0
  154. data/lib/shoes/swt/progress.rb +35 -0
  155. data/lib/shoes/swt/radio.rb +29 -0
  156. data/lib/shoes/swt/radio_group.rb +54 -0
  157. data/lib/shoes/swt/rect.rb +31 -0
  158. data/lib/shoes/swt/rect_painter.rb +23 -0
  159. data/lib/shoes/swt/redrawing_aspect.rb +122 -0
  160. data/lib/shoes/swt/shape.rb +101 -0
  161. data/lib/shoes/swt/shoes_layout.rb +43 -0
  162. data/lib/shoes/swt/slot.rb +25 -0
  163. data/lib/shoes/swt/sound.rb +119 -0
  164. data/lib/shoes/swt/star.rb +51 -0
  165. data/lib/shoes/swt/swt_button.rb +49 -0
  166. data/lib/shoes/swt/text_block.rb +133 -0
  167. data/lib/shoes/swt/text_block_cursor_painter.rb +112 -0
  168. data/lib/shoes/swt/text_block_fitter.rb +180 -0
  169. data/lib/shoes/swt/text_block_painter.rb +49 -0
  170. data/lib/shoes/swt/text_font_factory.rb +27 -0
  171. data/lib/shoes/swt/text_style_factory.rb +88 -0
  172. data/lib/shoes/swt/timer.rb +19 -0
  173. data/lib/shoes/swt/tooling/leak_hunter.rb +84 -0
  174. data/lib/shoes/text.rb +14 -0
  175. data/lib/shoes/text_block.rb +162 -0
  176. data/lib/shoes/timer.rb +10 -0
  177. data/lib/shoes/url.rb +47 -0
  178. data/lib/shoes/version.rb +1 -1
  179. data/lib/shoes/widget.rb +73 -0
  180. data/lib/support/jl1.0.1.jar +0 -0
  181. data/lib/support/jogg-0.0.7.jar +0 -0
  182. data/lib/support/jorbis-0.0.15.jar +0 -0
  183. data/lib/support/log4j-1.2.16.jar +0 -0
  184. data/lib/support/mp3spi1.9.5.jar +0 -0
  185. data/lib/support/tritonus_share.jar +0 -0
  186. data/lib/support/vorbisspi1.0.3.jar +0 -0
  187. data/samples/README +86 -0
  188. data/samples/class-book-adjusted.rb +45 -0
  189. data/samples/class-book.rb +10 -10
  190. data/samples/cy.png +0 -0
  191. data/samples/expert-definr.rb +6 -6
  192. data/samples/expert-funnies.rb +23 -14
  193. data/samples/expert-game-of-life-adjusted.rb +249 -0
  194. data/samples/expert-game-of-life.rb +243 -0
  195. data/samples/expert-irb-adjusted.rb +110 -0
  196. data/samples/expert-irb.rb +7 -7
  197. data/samples/expert-minesweeper-adjusted.rb +272 -0
  198. data/samples/expert-minesweeper.rb +53 -53
  199. data/samples/expert-othello-adjusted.rb +325 -0
  200. data/samples/expert-othello.rb +38 -39
  201. data/samples/expert-pong.rb +10 -10
  202. data/samples/expert-snake.rb +78 -0
  203. data/samples/expert-tankspank.rb +354 -354
  204. data/samples/good-arc.rb +20 -12
  205. data/samples/good-clock-adjusted.rb +49 -0
  206. data/samples/good-clock.rb +5 -5
  207. data/samples/good-displace.rb +98 -0
  208. data/samples/good-follow.rb +3 -3
  209. data/samples/good-potato-chopping.rb +22 -0
  210. data/samples/good-reminder.rb +51 -51
  211. data/samples/good-vjot.rb +15 -13
  212. data/samples/loogink.png +0 -0
  213. data/samples/nks_poem.rb +22 -0
  214. data/samples/original-manual-adjusted.rb +475 -0
  215. data/samples/original-manual.rb +472 -0
  216. data/samples/potato_chopping/1258_s001.gif +0 -0
  217. data/samples/potato_chopping/1258_s002.gif +0 -0
  218. data/samples/potato_chopping/1258_s003.gif +0 -0
  219. data/samples/potato_chopping/1258_s004.gif +0 -0
  220. data/samples/potato_chopping/1258_s005.gif +0 -0
  221. data/samples/potato_chopping/1258_s006.gif +0 -0
  222. data/samples/potato_chopping/1258_s007.gif +0 -0
  223. data/samples/potato_chopping/1258_s008.gif +0 -0
  224. data/samples/potato_chopping/1258_s009.gif +0 -0
  225. data/samples/potato_chopping/1258_s010.gif +0 -0
  226. data/samples/potato_chopping/1258_s011.gif +0 -0
  227. data/samples/potato_chopping/1258_s012.gif +0 -0
  228. data/samples/potato_chopping/1258_s013.gif +0 -0
  229. data/samples/potato_chopping/1258_s014.gif +0 -0
  230. data/samples/potato_chopping/1258_s015.gif +0 -0
  231. data/samples/potato_chopping/1258_s016.gif +0 -0
  232. data/samples/potato_chopping/1258_s017.gif +0 -0
  233. data/samples/potato_chopping/1258_s018.gif +0 -0
  234. data/samples/potato_chopping/1258_s019.gif +0 -0
  235. data/samples/potato_chopping/1258_s020.gif +0 -0
  236. data/samples/potato_chopping/1258_s021.gif +0 -0
  237. data/samples/potato_chopping/1258_s022.gif +0 -0
  238. data/samples/potato_chopping/1258_s023.gif +0 -0
  239. data/samples/potato_chopping/1258_s024.gif +0 -0
  240. data/samples/potato_chopping/1258_s025.gif +0 -0
  241. data/samples/potato_chopping/1258_s026.gif +0 -0
  242. data/samples/potato_chopping/1258_s027.gif +0 -0
  243. data/samples/potato_chopping/1258_s028.gif +0 -0
  244. data/samples/potato_chopping/1258_s029.gif +0 -0
  245. data/samples/potato_chopping/1258_s030.gif +0 -0
  246. data/samples/potato_chopping/1258_s031.gif +0 -0
  247. data/samples/potato_chopping/1258_s032.gif +0 -0
  248. data/samples/potato_chopping/1258_s033.gif +0 -0
  249. data/samples/potato_chopping/1258_s034.gif +0 -0
  250. data/samples/potato_chopping/1258_s035.gif +0 -0
  251. data/samples/potato_chopping/1258_s036.gif +0 -0
  252. data/samples/potato_chopping/1258_s037.gif +0 -0
  253. data/samples/potato_chopping/1258_s038.gif +0 -0
  254. data/samples/potato_chopping/1258_s039.gif +0 -0
  255. data/samples/potato_chopping/1258_s040.gif +0 -0
  256. data/samples/potato_chopping/1258_s041.gif +0 -0
  257. data/samples/potato_chopping/1258_s042.gif +0 -0
  258. data/samples/potato_chopping/1258_s043.gif +0 -0
  259. data/samples/potato_chopping/1258_s044.gif +0 -0
  260. data/samples/potato_chopping/1258_s045.gif +0 -0
  261. data/samples/potato_chopping/1258_s046.gif +0 -0
  262. data/samples/potato_chopping/1258_s047.gif +0 -0
  263. data/samples/potato_chopping/1258_s048.gif +0 -0
  264. data/samples/potato_chopping/1258_s049.gif +0 -0
  265. data/samples/potato_chopping/1258_s050.gif +0 -0
  266. data/samples/potato_chopping/1258_s051.gif +0 -0
  267. data/samples/potato_chopping/1258_s052.gif +0 -0
  268. data/samples/potato_chopping/1258_s053.gif +0 -0
  269. data/samples/potato_chopping/1258_s054.gif +0 -0
  270. data/samples/potato_chopping/1258_s055.gif +0 -0
  271. data/samples/potato_chopping/1258_s056.gif +0 -0
  272. data/samples/potato_chopping/1258_s057.gif +0 -0
  273. data/samples/potato_chopping/1258_s058.gif +0 -0
  274. data/samples/potato_chopping/1258_s059.gif +0 -0
  275. data/samples/sample1.rb +30 -0
  276. data/samples/sample12.rb +21 -0
  277. data/samples/sample13.rb +13 -0
  278. data/samples/sample14.rb +64 -0
  279. data/samples/sample15.rb +18 -0
  280. data/samples/sample16.rb +10 -0
  281. data/samples/sample17.rb +10 -0
  282. data/samples/sample2.rb +14 -0
  283. data/samples/sample21.rb +5 -0
  284. data/samples/sample23.rb +8 -0
  285. data/samples/sample24.rb +21 -0
  286. data/samples/sample27.rb +18 -0
  287. data/samples/sample3.rb +14 -0
  288. data/samples/sample31.rb +22 -0
  289. data/samples/sample34.rb +27 -0
  290. data/samples/sample35.rb +32 -0
  291. data/samples/sample37.rb +8 -0
  292. data/samples/sample4.rb +7 -0
  293. data/samples/sample42.rb +14 -0
  294. data/samples/sample45.rb +11 -0
  295. data/samples/sample56.rb +10 -0
  296. data/samples/sample6.rb +9 -0
  297. data/samples/sample7.rb +3 -0
  298. data/samples/sample8.rb +7 -0
  299. data/samples/sample9.rb +10 -0
  300. data/samples/simple-accordion.rb +7 -7
  301. data/samples/simple-anim-shapes.rb +3 -3
  302. data/samples/simple-anim-text.rb +2 -2
  303. data/samples/simple-animate.rb +12 -0
  304. data/samples/simple-arc.rb +2 -2
  305. data/samples/simple-bounce.rb +4 -4
  306. data/samples/simple-brightness-transitions.rb +8 -0
  307. data/samples/simple-button-animate.rb +16 -0
  308. data/samples/simple-calc-2.rb +34 -0
  309. data/samples/simple-calc.rb +11 -11
  310. data/samples/simple-color-selector.rb +10 -0
  311. data/samples/simple-color-transitions.rb +11 -0
  312. data/samples/simple-control-sizes.rb +12 -12
  313. data/samples/simple-dialogs-outside.rb +12 -0
  314. data/samples/simple-dialogs.rb +4 -1
  315. data/samples/simple-displace.rb +15 -0
  316. data/samples/simple-downloader.rb +11 -11
  317. data/samples/simple-editor.rb +5 -5
  318. data/samples/simple-face.rb +14 -0
  319. data/samples/simple-flow-wrap.rb +11 -0
  320. data/samples/simple-font.rb +17 -0
  321. data/samples/simple-form.rb +14 -13
  322. data/samples/simple-fullscreen.rb +4 -0
  323. data/samples/simple-guess-game.rb +28 -0
  324. data/samples/simple-keypress.rb +14 -0
  325. data/samples/simple-manual.rb +2 -0
  326. data/samples/simple-mask.rb +4 -4
  327. data/samples/simple-menu.rb +28 -12
  328. data/samples/simple-mouse-follow.rb +8 -0
  329. data/samples/simple-move.rb +13 -0
  330. data/samples/simple-oval.rb +3 -0
  331. data/samples/simple-sample-executor.rb +6 -0
  332. data/samples/simple-shoes-intro.rb +22 -0
  333. data/samples/simple-slide.rb +15 -4
  334. data/samples/simple-sound.rb +30 -0
  335. data/samples/simple-sphere.rb +6 -6
  336. data/samples/simple-stripes.rb +8 -0
  337. data/samples/simple-timer.rb +4 -2
  338. data/samples/simple-video.rb +2 -2
  339. data/samples/sounds/102719__sarge4267__explosion.mp3 +0 -0
  340. data/samples/sounds/145622__andybrannan__train-fog-horn-long-wyomming.aiff +0 -0
  341. data/samples/sounds/46492__phreaksaccount__shields1.ogg +0 -0
  342. data/samples/sounds/61847__simon-rue__boink-v3.wav +0 -0
  343. data/shoes.gemspec +31 -11
  344. data/snapshots/sample1.png +0 -0
  345. data/snapshots/sample10.png +0 -0
  346. data/snapshots/sample11.png +0 -0
  347. data/snapshots/sample12.png +0 -0
  348. data/snapshots/sample13.png +0 -0
  349. data/snapshots/sample14.png +0 -0
  350. data/snapshots/sample15.png +0 -0
  351. data/snapshots/sample16.png +0 -0
  352. data/snapshots/sample17.png +0 -0
  353. data/snapshots/sample18.png +0 -0
  354. data/snapshots/sample19.png +0 -0
  355. data/snapshots/sample2.png +0 -0
  356. data/snapshots/sample20.png +0 -0
  357. data/snapshots/sample21.png +0 -0
  358. data/snapshots/sample22.png +0 -0
  359. data/snapshots/sample23.png +0 -0
  360. data/snapshots/sample24.png +0 -0
  361. data/snapshots/sample27.png +0 -0
  362. data/snapshots/sample28.png +0 -0
  363. data/snapshots/sample29.png +0 -0
  364. data/snapshots/sample3.png +0 -0
  365. data/snapshots/sample30.png +0 -0
  366. data/snapshots/sample31.png +0 -0
  367. data/snapshots/sample34.png +0 -0
  368. data/snapshots/sample35.png +0 -0
  369. data/snapshots/sample36.png +0 -0
  370. data/snapshots/sample37.png +0 -0
  371. data/snapshots/sample4.png +0 -0
  372. data/snapshots/sample42.png +0 -0
  373. data/snapshots/sample44.png +0 -0
  374. data/snapshots/sample45.png +0 -0
  375. data/snapshots/sample46.png +0 -0
  376. data/snapshots/sample5.png +0 -0
  377. data/snapshots/sample6.png +0 -0
  378. data/snapshots/sample7.png +0 -0
  379. data/snapshots/sample8.png +0 -0
  380. data/snapshots/sample9.png +0 -0
  381. data/snapshots/sample99.png +0 -0
  382. data/spec/async_helper.rb +21 -0
  383. data/spec/code_coverage.rb +11 -0
  384. data/spec/shoes/animation_spec.rb +65 -0
  385. data/spec/shoes/app_spec.rb +411 -0
  386. data/spec/shoes/arc_spec.rb +53 -0
  387. data/spec/shoes/background_spec.rb +48 -0
  388. data/spec/shoes/border_spec.rb +43 -0
  389. data/spec/shoes/builtin_methods_spec.rb +84 -0
  390. data/spec/shoes/button_spec.rb +41 -0
  391. data/spec/shoes/check_spec.rb +31 -0
  392. data/spec/shoes/cli_spec.rb +16 -0
  393. data/spec/shoes/color_spec.rb +396 -0
  394. data/spec/shoes/common/style_normalizer_spec.rb +28 -0
  395. data/spec/shoes/common/style_spec.rb +58 -0
  396. data/spec/shoes/configuration_spec.rb +37 -0
  397. data/spec/shoes/constants_spec.rb +38 -0
  398. data/spec/shoes/dialog_spec.rb +163 -0
  399. data/spec/shoes/dimension_spec.rb +381 -0
  400. data/spec/shoes/dimensions_spec.rb +831 -0
  401. data/spec/shoes/download_spec.rb +133 -0
  402. data/spec/shoes/flow_spec.rb +92 -0
  403. data/spec/shoes/font_spec.rb +38 -0
  404. data/spec/shoes/framework_learning_spec.rb +30 -0
  405. data/spec/shoes/helpers/fake_element.rb +11 -0
  406. data/spec/shoes/helpers/sample17_helper.rb +66 -0
  407. data/spec/shoes/image_spec.rb +45 -0
  408. data/spec/shoes/images/shoe.jpg +0 -0
  409. data/spec/shoes/input_box_spec.rb +44 -0
  410. data/spec/shoes/integration_spec.rb +20 -0
  411. data/spec/shoes/keypress_spec.rb +11 -0
  412. data/spec/shoes/keyrelease_spec.rb +12 -0
  413. data/spec/shoes/line_spec.rb +47 -0
  414. data/spec/shoes/link_spec.rb +89 -0
  415. data/spec/shoes/list_box_spec.rb +63 -0
  416. data/spec/shoes/logger/ruby_spec.rb +9 -0
  417. data/spec/shoes/logger_spec.rb +45 -0
  418. data/spec/shoes/oval_spec.rb +20 -0
  419. data/spec/shoes/point_spec.rb +51 -0
  420. data/spec/shoes/progress_spec.rb +40 -0
  421. data/spec/shoes/radio_spec.rb +28 -0
  422. data/spec/shoes/rect_spec.rb +38 -0
  423. data/spec/shoes/renamed_delegate_spec.rb +70 -0
  424. data/spec/shoes/shape_spec.rb +54 -0
  425. data/spec/shoes/shared_examples/button.rb +6 -0
  426. data/spec/shoes/shared_examples/changeable.rb +26 -0
  427. data/spec/shoes/shared_examples/clickable.rb +5 -0
  428. data/spec/shoes/shared_examples/common_methods.rb +42 -0
  429. data/spec/shoes/shared_examples/dimensions.rb +32 -0
  430. data/spec/shoes/shared_examples/dsl.rb +42 -0
  431. data/spec/shoes/shared_examples/dsl/animate.rb +29 -0
  432. data/spec/shoes/shared_examples/dsl/arc.rb +45 -0
  433. data/spec/shoes/shared_examples/dsl/background.rb +26 -0
  434. data/spec/shoes/shared_examples/dsl/border.rb +10 -0
  435. data/spec/shoes/shared_examples/dsl/cap.rb +6 -0
  436. data/spec/shoes/shared_examples/dsl/check.rb +11 -0
  437. data/spec/shoes/shared_examples/dsl/edit_box.rb +8 -0
  438. data/spec/shoes/shared_examples/dsl/edit_line.rb +8 -0
  439. data/spec/shoes/shared_examples/dsl/editable_element.rb +29 -0
  440. data/spec/shoes/shared_examples/dsl/fill.rb +27 -0
  441. data/spec/shoes/shared_examples/dsl/flow.rb +15 -0
  442. data/spec/shoes/shared_examples/dsl/gradient.rb +52 -0
  443. data/spec/shoes/shared_examples/dsl/image.rb +21 -0
  444. data/spec/shoes/shared_examples/dsl/line.rb +9 -0
  445. data/spec/shoes/shared_examples/dsl/nofill.rb +6 -0
  446. data/spec/shoes/shared_examples/dsl/nostroke.rb +6 -0
  447. data/spec/shoes/shared_examples/dsl/oval.rb +60 -0
  448. data/spec/shoes/shared_examples/dsl/pattern.rb +34 -0
  449. data/spec/shoes/shared_examples/dsl/progress.rb +7 -0
  450. data/spec/shoes/shared_examples/dsl/rect.rb +92 -0
  451. data/spec/shoes/shared_examples/dsl/rgb.rb +26 -0
  452. data/spec/shoes/shared_examples/dsl/shape.rb +21 -0
  453. data/spec/shoes/shared_examples/dsl/star.rb +48 -0
  454. data/spec/shoes/shared_examples/dsl/stroke.rb +30 -0
  455. data/spec/shoes/shared_examples/dsl/strokewidth.rb +19 -0
  456. data/spec/shoes/shared_examples/dsl/style.rb +32 -0
  457. data/spec/shoes/shared_examples/dsl/text_elements.rb +81 -0
  458. data/spec/shoes/shared_examples/dsl_app_context.rb +8 -0
  459. data/spec/shoes/shared_examples/hover_leave.rb +11 -0
  460. data/spec/shoes/shared_examples/parent.rb +6 -0
  461. data/spec/shoes/shared_examples/shared_element_method.rb +52 -0
  462. data/spec/shoes/shared_examples/slot.rb +272 -0
  463. data/spec/shoes/shared_examples/state.rb +19 -0
  464. data/spec/shoes/shared_examples/style.rb +24 -0
  465. data/spec/shoes/slot_spec.rb +60 -0
  466. data/spec/shoes/sound_spec.rb +15 -0
  467. data/spec/shoes/span_spec.rb +94 -0
  468. data/spec/shoes/spec_helper.rb +1 -0
  469. data/spec/shoes/stack_spec.rb +53 -0
  470. data/spec/shoes/star_spec.rb +30 -0
  471. data/spec/shoes/text_block_spec.rb +242 -0
  472. data/spec/shoes/url_spec.rb +66 -0
  473. data/spec/shoes/widget_spec.rb +34 -0
  474. data/spec/shoes_spec.rb +44 -0
  475. data/spec/spec_helper.rb +16 -0
  476. data/spec/swt_shoes/animation_spec.rb +86 -0
  477. data/spec/swt_shoes/app_spec.rb +75 -0
  478. data/spec/swt_shoes/arc_spec.rb +101 -0
  479. data/spec/swt_shoes/background_spec.rb +56 -0
  480. data/spec/swt_shoes/border_spec.rb +51 -0
  481. data/spec/swt_shoes/button_spec.rb +101 -0
  482. data/spec/swt_shoes/check_spec.rb +28 -0
  483. data/spec/swt_shoes/color_spec.rb +67 -0
  484. data/spec/swt_shoes/common/painter_spec.rb +29 -0
  485. data/spec/swt_shoes/configuration_spec.rb +12 -0
  486. data/spec/swt_shoes/dialog_spec.rb +106 -0
  487. data/spec/swt_shoes/disposed_protection_spec.rb +49 -0
  488. data/spec/swt_shoes/fitted_text_layout_collection_spec.rb +174 -0
  489. data/spec/swt_shoes/fitted_text_layout_spec.rb +130 -0
  490. data/spec/swt_shoes/flow_spec.rb +26 -0
  491. data/spec/swt_shoes/font_spec.rb +33 -0
  492. data/spec/swt_shoes/gradient_spec.rb +20 -0
  493. data/spec/swt_shoes/image_pattern_spec.rb +19 -0
  494. data/spec/swt_shoes/image_spec.rb +100 -0
  495. data/spec/swt_shoes/input_box_spec.rb +110 -0
  496. data/spec/swt_shoes/integration_spec.rb +18 -0
  497. data/spec/swt_shoes/key_listener_spec.rb +320 -0
  498. data/spec/swt_shoes/line_spec.rb +43 -0
  499. data/spec/swt_shoes/link_segment_spec.rb +103 -0
  500. data/spec/swt_shoes/link_spec.rb +59 -0
  501. data/spec/swt_shoes/list_box_spec.rb +51 -0
  502. data/spec/swt_shoes/minimal.png +0 -0
  503. data/spec/swt_shoes/mouse_move_listener_spec.rb +129 -0
  504. data/spec/swt_shoes/oval_spec.rb +51 -0
  505. data/spec/swt_shoes/progress_spec.rb +44 -0
  506. data/spec/swt_shoes/radio_group_spec.rb +73 -0
  507. data/spec/swt_shoes/radio_spec.rb +56 -0
  508. data/spec/swt_shoes/rect_painter_spec.rb +45 -0
  509. data/spec/swt_shoes/rect_spec.rb +19 -0
  510. data/spec/swt_shoes/shape_spec.rb +81 -0
  511. data/spec/swt_shoes/shared_examples/button.rb +24 -0
  512. data/spec/swt_shoes/shared_examples/clearable.rb +32 -0
  513. data/spec/swt_shoes/shared_examples/clickable.rb +60 -0
  514. data/spec/swt_shoes/shared_examples/movable.rb +36 -0
  515. data/spec/swt_shoes/shared_examples/paintable_spec.rb +7 -0
  516. data/spec/swt_shoes/shared_examples/painter.rb +83 -0
  517. data/spec/swt_shoes/shared_examples/pattern.rb +32 -0
  518. data/spec/swt_shoes/shared_examples/swt_app_context.rb +17 -0
  519. data/spec/swt_shoes/shared_examples/togglable.rb +15 -0
  520. data/spec/swt_shoes/shell_control_listener_spec.rb +23 -0
  521. data/spec/swt_shoes/sound.rb +10 -0
  522. data/spec/swt_shoes/spec_helper.rb +31 -0
  523. data/spec/swt_shoes/star_spec.rb +47 -0
  524. data/spec/swt_shoes/text_block_cursor_painter_spec.rb +202 -0
  525. data/spec/swt_shoes/text_block_fitter_spec.rb +181 -0
  526. data/spec/swt_shoes/text_block_painter_spec.rb +221 -0
  527. data/spec/swt_shoes/text_block_spec.rb +183 -0
  528. data/static/PKGBUILD +47 -0
  529. data/static/downloading.png +0 -0
  530. data/static/manual-en.txt +119 -128
  531. data/static/manual-ja.txt +97 -93
  532. data/static/manual.css +19 -2
  533. data/static/shoes-icon-brown.png +0 -0
  534. data/static/shoes-manual-apps.png +0 -0
  535. metadata +740 -402
  536. data/README.old +0 -117
  537. data/Rakefile.bk +0 -651
  538. data/bin/main.skel +0 -104
  539. data/bugs/issue-012e9468ddc7b0cb7e1503413a8a11c4f8707b67.yaml +0 -21
  540. data/bugs/issue-0711ff8b67baa63586f11d0096fee9dd4436bf58.yaml +0 -23
  541. data/bugs/issue-07f87998d93eb401e22395c11085676389b935c4.yaml +0 -22
  542. data/bugs/issue-0bff2d80008803cbc7efbcdacdc60ef2163664d2.yaml +0 -22
  543. data/bugs/issue-0c66f223d19efbca7b692f3b91961f407ad7abec.yaml +0 -24
  544. data/bugs/issue-183bc3c7a8f575aff2b24e0bf22aa0dfcc8e4fc2.yaml +0 -29
  545. data/bugs/issue-1bad1e60a04cb3adb6a8f3ded128af2e16b56ffe.yaml +0 -18
  546. data/bugs/issue-1f1d43f76bf4de79d7f94adbae6dd506a9d81633.yaml +0 -41
  547. data/bugs/issue-320924117cadb045cc91f2a6fca922b4d81d4bb5.yaml +0 -20
  548. data/bugs/issue-33e5c8355fbf65252ea9e939714651df8bd8cb3b.yaml +0 -25
  549. data/bugs/issue-36f7c8262a72bcd5e28cfa4ed29328b8237ea79b.yaml +0 -20
  550. data/bugs/issue-39bf04ee50c3bef67b89b8e9beb28657805587ce.yaml +0 -18
  551. data/bugs/issue-3e28ba7754f73d02ef416eef989af707a8c00f01.yaml +0 -23
  552. data/bugs/issue-3f638cc03f41f9c3fdf217355321f1563f8fee45.yaml +0 -22
  553. data/bugs/issue-41e48e14f1ef4f6deb69be68165d7dd3ffd99156.yaml +0 -22
  554. data/bugs/issue-4c9408166a2aa5dd333bbb05520deebf4ded08e0.yaml +0 -22
  555. data/bugs/issue-55c687e108ecd5aeb8e0d0aeb4294984f84acd3e.yaml +0 -18
  556. data/bugs/issue-5811d34692cc292717a58ec1df1f8948cf30d826.yaml +0 -28
  557. data/bugs/issue-5a7c1f59a0526f9cea7fb366867cf1e6ed8ef69d.yaml +0 -22
  558. data/bugs/issue-688a2c2566bef6a03efa57a4ae1f7cfa8fc74444.yaml +0 -21
  559. data/bugs/issue-78b16c7988ade2ef96e716fa8cb9a004bd4ced65.yaml +0 -33
  560. data/bugs/issue-804ee49f9800154eddf0650690c7a9bb5626253f.yaml +0 -27
  561. data/bugs/issue-807dd1c610b2e941a5d454e26b2eac27e89a0ab4.yaml +0 -22
  562. data/bugs/issue-822ee33ec11ebd25f90ea86e8438de7891e63aee.yaml +0 -18
  563. data/bugs/issue-82ff7152cebb8a1cb065b864cb4fe22de2328146.yaml +0 -29
  564. data/bugs/issue-856afbdcdd4970ad54b8ce4a6c017fbaab45f49d.yaml +0 -31
  565. data/bugs/issue-8d49e32fb21522651c67490adb4d80076dbb14e1.yaml +0 -24
  566. data/bugs/issue-91583359653a9d530c1e32be72d874d847a306e7.yaml +0 -21
  567. data/bugs/issue-af41a5229613172764e7d3c98431172db337053d.yaml +0 -20
  568. data/bugs/issue-bd9856b3788dd429c998a5af1b2aae8221cb80b7.yaml +0 -28
  569. data/bugs/issue-be22aef5c564fb7b5e9938343136a9cd6a2edb7b.yaml +0 -22
  570. data/bugs/issue-bf8697523c77c326e7e35fc82cf3dd739ae92310.yaml +0 -27
  571. data/bugs/issue-cdd4b4795f34d6ff46e56ece10f8216a4a5456b2.yaml +0 -25
  572. data/bugs/issue-d9bfb5581d745ef9deb3b9b2e08ef74d1cd43082.yaml +0 -20
  573. data/bugs/issue-e0ce2f687cc096f35715d28b0af88589f4ab6cc6.yaml +0 -18
  574. data/bugs/issue-e4b0aca4a10a574b333aeaecaaf221dbc5ed22c6.yaml +0 -38
  575. data/bugs/issue-f263746594b95ba778455730478ee8df60ee639d.yaml +0 -22
  576. data/bugs/project.yaml +0 -72
  577. data/builddeps.sh +0 -102
  578. data/gemlib/shoes.rb +0 -1
  579. data/lib/shoes/cache.rb +0 -54
  580. data/lib/shoes/chipmunk.rb +0 -35
  581. data/lib/shoes/data.rb +0 -39
  582. data/lib/shoes/inspect.rb +0 -128
  583. data/lib/shoes/log.rb +0 -48
  584. data/lib/shoes/minitar.rb +0 -986
  585. data/lib/shoes/override.rb +0 -38
  586. data/lib/shoes/pack.rb +0 -543
  587. data/lib/shoes/search.rb +0 -46
  588. data/lib/shoes/setup.rb +0 -329
  589. data/lib/shoes/shy.rb +0 -131
  590. data/lib/shoes/shybuilder.rb +0 -44
  591. data/make/darwin/deps.vlc +0 -12
  592. data/make/darwin/dylibs.shoes +0 -22
  593. data/make/darwin/dylibs.video +0 -11
  594. data/make/darwin/env.rb +0 -81
  595. data/make/darwin/tasks.rb +0 -105
  596. data/make/linux/env.rb +0 -65
  597. data/make/linux/tasks.rb +0 -61
  598. data/make/make.rb +0 -85
  599. data/make/mingw/dlls +0 -19
  600. data/make/mingw/env.rb +0 -69
  601. data/make/mingw/tasks.rb +0 -70
  602. data/make/rakefile_common.rb +0 -8
  603. data/manual-snapshots/class-book.png +0 -0
  604. data/manual-snapshots/expert-definr.png +0 -0
  605. data/manual-snapshots/expert-funnies.png +0 -0
  606. data/manual-snapshots/expert-irb.png +0 -0
  607. data/manual-snapshots/expert-minesweeper.png +0 -0
  608. data/manual-snapshots/expert-othello.png +0 -0
  609. data/manual-snapshots/expert-pong.png +0 -0
  610. data/manual-snapshots/expert-tankspank.png +0 -0
  611. data/manual-snapshots/good-arc.png +0 -0
  612. data/manual-snapshots/good-clock.png +0 -0
  613. data/manual-snapshots/good-follow.png +0 -0
  614. data/manual-snapshots/good-reminder.png +0 -0
  615. data/manual-snapshots/good-vjot.png +0 -0
  616. data/manual-snapshots/simple-accordion.png +0 -0
  617. data/manual-snapshots/simple-anim-shapes.png +0 -0
  618. data/manual-snapshots/simple-anim-text.png +0 -0
  619. data/manual-snapshots/simple-arc.png +0 -0
  620. data/manual-snapshots/simple-bounce.png +0 -0
  621. data/manual-snapshots/simple-calc.png +0 -0
  622. data/manual-snapshots/simple-chipmunk.png +0 -0
  623. data/manual-snapshots/simple-control-sizes.png +0 -0
  624. data/manual-snapshots/simple-curve.png +0 -0
  625. data/manual-snapshots/simple-dialogs.png +0 -0
  626. data/manual-snapshots/simple-downloader.png +0 -0
  627. data/manual-snapshots/simple-draw.png +0 -0
  628. data/manual-snapshots/simple-editor.png +0 -0
  629. data/manual-snapshots/simple-form.png +0 -0
  630. data/manual-snapshots/simple-mask.png +0 -0
  631. data/manual-snapshots/simple-menu.png +0 -0
  632. data/manual-snapshots/simple-menu1.png +0 -0
  633. data/manual-snapshots/simple-rubygems.png +0 -0
  634. data/manual-snapshots/simple-slide.png +0 -0
  635. data/manual-snapshots/simple-sphere.png +0 -0
  636. data/manual-snapshots/simple-sqlite3.png +0 -0
  637. data/manual-snapshots/simple-timer.png +0 -0
  638. data/manual-snapshots/simple-video.png +0 -0
  639. data/platform/mac/Info.plist +0 -55
  640. data/platform/mac/build-deps.sh +0 -658
  641. data/platform/mac/command-manual.rb +0 -1
  642. data/platform/mac/deps-osx.patch +0 -159
  643. data/platform/mac/dmg_ds_store +0 -0
  644. data/platform/mac/pangorc +0 -2
  645. data/platform/mac/pkg-dmg +0 -1447
  646. data/platform/mac/shoes +0 -31
  647. data/platform/mac/shoes-launch +0 -7
  648. data/platform/mac/stub.m +0 -178
  649. data/platform/mac/version.plist +0 -14
  650. data/platform/msw/base.nsi +0 -644
  651. data/platform/msw/installer-1.bmp +0 -0
  652. data/platform/msw/installer-2.bmp +0 -0
  653. data/platform/msw/shoes.exe.manifest +0 -17
  654. data/platform/msw/shoes.ico +0 -0
  655. data/platform/msw/stub-inject.c +0 -59
  656. data/platform/msw/stub.c +0 -271
  657. data/platform/msw/stub32.h +0 -14
  658. data/platform/msw/stub32.rc +0 -16
  659. data/platform/nix/INSTALL +0 -56
  660. data/platform/nix/Makefile +0 -144
  661. data/platform/nix/shoes.launch +0 -20
  662. data/platform/skel.rb +0 -27
  663. data/rakefile_darwin.rb +0 -7
  664. data/rakefile_linux.rb +0 -3
  665. data/rakefile_mingw.rb +0 -7
  666. data/samples/simple-chipmunk.rb +0 -26
  667. data/samples/simple-menu1.rb +0 -35
  668. data/samples/simple-rubygems.rb +0 -29
  669. data/samples/simple-sqlite3.rb +0 -13
  670. data/shoes/app.c +0 -591
  671. data/shoes/app.h +0 -110
  672. data/shoes/appwin32.h +0 -13
  673. data/shoes/appwin32.rc +0 -28
  674. data/shoes/canvas.c +0 -2202
  675. data/shoes/canvas.h +0 -682
  676. data/shoes/code.h +0 -14
  677. data/shoes/config.h +0 -232
  678. data/shoes/effects.c +0 -243
  679. data/shoes/effects.h +0 -7
  680. data/shoes/http.h +0 -44
  681. data/shoes/http/common.h +0 -86
  682. data/shoes/http/curl.c +0 -259
  683. data/shoes/http/nsurl.m +0 -274
  684. data/shoes/http/windownload.c +0 -114
  685. data/shoes/http/winhttp.c +0 -216
  686. data/shoes/http/winhttp.h +0 -19
  687. data/shoes/image.c +0 -1020
  688. data/shoes/internal.c +0 -46
  689. data/shoes/internal.h +0 -63
  690. data/shoes/native.h +0 -110
  691. data/shoes/native/cocoa.h +0 -105
  692. data/shoes/native/cocoa.m +0 -1557
  693. data/shoes/native/gtk.c +0 -1257
  694. data/shoes/native/windows.c +0 -2392
  695. data/shoes/ruby.c +0 -5221
  696. data/shoes/ruby.h +0 -299
  697. data/shoes/world.c +0 -243
  698. data/shoes/world.h +0 -63
  699. data/static/stubs/blank.exe +0 -0
  700. data/static/stubs/blank.hfz +0 -0
  701. data/static/stubs/blank.run +0 -375
  702. data/static/stubs/cocoa-install +0 -0
  703. data/static/stubs/sh-install +0 -49
  704. data/static/stubs/shoes-stub-inject.exe +0 -0
  705. data/static/stubs/shoes-stub.exe +0 -0
  706. data/test/shoes_test.rb +0 -8
  707. data/test/test_helper.rb +0 -25
  708. data/use-deps +0 -12
  709. data/use-tmp-dep +0 -8
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 29a51f2d1e2fbe9eb3a1f139a00a9336f86d0b17
4
+ data.tar.gz: 8ed0ebb6efee29a532e09a031129b679c6e8b7df
5
+ SHA512:
6
+ metadata.gz: 06c22bb69c311c08aa164f03c8e24cf25a1799aa91317a483f14daa2ef59bfb1f6aad1957a5ff07ed243e89cf801f58acf292e75a5f96d8cb273b14fd309e7b4
7
+ data.tar.gz: bb102f5480a16ae1fd809568ca6aeb7802e090c8c3f28d55a621a820faf1be7986ca86b80a4e76bf6db90ce55485f779cbe74921429ccda9d5fa7baf2ac342e5
data/.gitignore CHANGED
@@ -1,3 +1,40 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+ tags
16
+ *.bundle
17
+ *.so
18
+
19
+ ## BUNDLER
20
+ .bundle
21
+ Gemfile.lock
22
+
23
+ ## YARD
24
+ .yardoc
25
+ _yardoc
26
+ doc
27
+
28
+ ## INTELLIJ/RUBYMINE
29
+ .idea
30
+
31
+ ## PROJECT::GENERAL
32
+ coverage
33
+ rdoc
34
+ pkg
35
+ jruby-lint.html
36
+
37
+ ## PROJECT::SPECIFIC
1
38
  *.o
2
39
  *.obj
3
40
  *.res
@@ -7,6 +44,10 @@ deps
7
44
  dist
8
45
  pkg
9
46
  *.app
10
- req/*
11
- *~
12
- *.swp
47
+ docs-*
48
+ spec/test_app/pkg
49
+ testing
50
+ tmp/*
51
+
52
+ # ignore built gem so you don't commit it accidentally
53
+ *.gem
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format progress
3
+ --order random
@@ -0,0 +1 @@
1
+ shoes
@@ -0,0 +1 @@
1
+ jruby-1.7.12
@@ -0,0 +1,31 @@
1
+ language: ruby
2
+ script: "rake spec:all"
3
+ rvm:
4
+ - jruby-19mode
5
+ - jruby-head
6
+ jdk:
7
+ - openjdk7
8
+ - oraclejdk7
9
+ - openjdk6
10
+ matrix:
11
+ allow_failures:
12
+ - rvm: jruby-head
13
+ fast_finish: true
14
+ notifications:
15
+ irc: "irc.freenode.org#shoes"
16
+ email:
17
+ recipients:
18
+ - davor@davor.se
19
+ - wasnotrice@gmail.com
20
+ - tobias.pfeiffer@student.hpi.uni-potsdam.de
21
+ - ashbbb@gmail.com
22
+ - james@jamesrgifford.com
23
+ - peter.fitzgibbons@gmail.com
24
+ - fism88@gmail.com
25
+ - jason@jasonrclark.net
26
+ on_success: change # [always|never|change] # default: change
27
+ on_failure: change # [always|never|change] # default: always
28
+ before_script:
29
+ - "export DISPLAY=:99.0"
30
+ - "sh -e /etc/init.d/xvfb start"
31
+ - "sleep 3"
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ = BROWN SHOES NEEDS A NEW RELEASE SCHEDULE!!
2
+ * Name Suggestions anyone?
3
+
1
4
  = Policeman
2
5
  == 17th August, 2010
3
6
  * Move to Ruby 1.9.1
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,11 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec' do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
7
+ watch(%r{^lib/shoes/mock/(.+)\.rb$}) { |m| "spec/shoes/#{m[1]}_spec.rb" }
8
+ watch(%r{^lib/shoes/swt/(.+)\.rb$}) { |m| "spec/swt_shoes/#{m[1]}_spec.rb" }
9
+ watch('lib/shoes/dsl.rb') { |m| "spec/swt_shoes/dsl_spec.rb" }
10
+ end
11
+
@@ -1,3 +1,4 @@
1
+ Copyright (C) 2011 Steve Klabnik, Peter Fitzgibbons
1
2
  Copyright (c) 2008 why the lucky stiff
2
3
  Except:
3
4
  fonts/Coolvetica.ttf (c) 1999 Ray Larabie
data/README.md CHANGED
@@ -1,76 +1,186 @@
1
- <pre>
2
- ((( |||_| ///\ [[[_ (((
3
- ))) || | \\/ [[_ )))
4
- an artsy any-platform app kit
5
- http://shoesrb.com
6
- </pre>
1
+ # shoes4 [![Build Status](https://secure.travis-ci.org/shoes/shoes4.svg?branch=master)](http://travis-ci.org/shoes/shoes4)[![Code Climate](https://img.shields.io/codeclimate/github/shoes/shoes4.svg)](https://codeclimate.com/github/shoes/shoes4)[![Coverage Status](https://img.shields.io/coveralls/shoes/shoes4/badge/master.svg)](https://coveralls.io/r/shoes/shoes4)[![Dependency Status](https://img.shields.io/gemnasium/shoes/shoes4.svg)](https://gemnasium.com/shoes/shoes4)
7
2
 
8
- # About Shoes
3
+ Shoes 4 : the next version of Shoes
9
4
 
10
- Shoes is the best little DSL for cross-platform GUI programming there is. It feels like real Ruby, rather than just another C++ library wrapper. If Gtk or wxWidgets is Rails, Shoes is Sinatra.
5
+ ## Still in development
11
6
 
12
- # Let me tell you a story about Shoes
7
+ Hi there, thanks for checking by! Shoes4 is still in development. It doesn't support all of the shoes DSL just yet.
8
+ But if you want to check it out, that's awesome! If you're not too adventurous just yet you can still use the [old shoes](https://github.com/shoes/shoes)!
13
9
 
14
- Way way back in the day, there was a guy named \_why. He created a project known as [Hackety Hack](http://hackety-hack.com) to teach programming to everyone. In order to reach all corners of the earth, \_why decided to make Hackety Hack work on Windows, Mac OS X, and Linux. This was a lot of work, and so \_why decided to share his toolkit with the world. Thus, Shoes was born.
10
+ There is a first preview release now :)
15
11
 
16
- Everybody loved Shoes. Many apps were made, and put into [The Shoebox](http://the-shoebox.org/). But, one day, \_why left. In his memory, Team Shoes assembled, and carried on making Shoes. They released Shoes 3 in late summer 2010.
12
+ ## Installing Shoes4
17
13
 
18
- # So what do these Shoes look like?
14
+ There are two ways to get your hands on shoes 4 - the preview gem release and installing it straight from github. For both you need a current [JRuby](http://www.jruby.org/) installation.
19
15
 
20
- Here's a little Shoes app. It's a stopwatch!
21
16
 
22
- Shoes.app :height => 150, :width => 250 do
23
- background rgb(240, 250, 208)
24
- stack :margin => 10 do
25
- button "Start" do
26
- @time = Time.now
27
- @label.replace "Stop watch started at #@time"
28
- end
29
- button "Stop" do
30
- @label.replace "Stopped, ", strong("#{Time.now - @time}"), " seconds elapsed."
31
- end
32
- @label = para "Press ", strong("start"), " to begin timing."
33
- end
34
- end
17
+ ### Get a JDK and JRuby
35
18
 
36
- Here's what it looks like:
19
+ So your first step is to install a [JDK](http://www.oracle.com/technetwork/java/javase/downloads/) (shoes also works with [OpenJDK](http://openjdk.java.net/)) and [JRuby](http://jruby.org). Make sure to grab the appropriate JRuby version for your operating system. On Linux/Mac you can also use ruby installation tools to install JRuby. For instance [rvm](http://rvm.io/):
37
20
 
38
- ![shoes timer](https://github.com/shoes/shoes/raw/develop/manual-snapshots/simple-timer.png)
21
+ $ rvm install jruby
39
22
 
40
- Pretty simple! For more samples, the manual, and a free book, check out [the Shoes website](http://shoesrb.com/).
23
+ ### Installing Shoes4 as a gem
41
24
 
42
- # Using Shoes
25
+ gem install shoes --pre
43
26
 
44
- If you'd like to use Shoes to develop some apps... awesome! It's super easy: Just go to the [downloads page on the Shoes website](http://shoesrb.com/downloads) and download a copy of Shoes for your platform. Mac OSX, Windows, and Linux supported!
45
27
 
46
- After you install Shoes, run it! You'll get a window like this:
28
+ ### Installing Shoes4 from github
47
29
 
48
- ![shoes main window](https://github.com/shoes/shoes/raw/develop/static/shoes_main_window.png)
30
+ If you want to be on the bleeding edge or want to contribute code you need to install it straight from the github repository.
49
31
 
50
- You can then open any .rb file with Shoes code inside by choosing "Open an App." It'll open it up and run it, right away.
32
+ #### *nix (Mac OSX/Linux)
51
33
 
52
- Once you're happy with your app, you can choose "Package an App" to wrap up your app as a .exe, .app, or a .run. Then you can share it with someone without a pair of Shoes to call their own.
34
+ 1. Fork the repository and clone your fork, or
53
35
 
54
- # Making your own Shoes
36
+ $ git clone git://github.com/shoes/shoes4.git
55
37
 
56
- You can make your own pair of Shoes with a little bit of elbow grease. Since there are different instructions on each platform, we've got a page up on the [Shoes development wiki](http://github.com/shoes/shoes/wiki) about it. It's [right here](https://github.com/shoes/shoes/wiki/Building-Shoes).
38
+ 2. Set up your local environment
57
39
 
58
- # Shoes Around the Web
40
+ $ cd shoes4
41
+ $ gem install bundler && bundle install
59
42
 
60
- If you want to keep up to date with what's going on with Shoes, you can find us in various places:
43
+ Note: If you got rvm, rbenv or something like that installed it might complain that you should use jruby version xx. That's because we keep our .ruby-version files up to date. You should be able to run it with a JRuby version >= 1.7.0. We recommend up to date versions though.
61
44
 
62
- * [Official Shoes Site](http://shoesrb.com/)
63
- * [Source Code @ GitHub](http://github.com/shoes/shoes)
64
- * [Issue tracker @ GitHub](http://github.com/shoes/shoes/issues)
65
- * [Mailing List](http://librelist.com/browser/shoes/) (send an email to shoes@librelist.com to join)
66
- * [Twitter account](http://twitter.com/shoooesrb)
67
- * [Facebook page](http://www.facebook.com/pages/Shoes/132605040125019)
68
- * IRC room on Freenode, #shoes
45
+ 3. You're ready to go!
69
46
 
70
- # Helping out with Shoes
47
+ #### Windows
71
48
 
72
- So you'd like to lend a helping hand, eh? Great! We'd love to have you. To submit a patch to Shoes, just fork us, and send a pull request.
49
+ 1. Fork the repository and clone your fork, or
73
50
 
74
- If you don't have any ideas yourself, take a look at the [Issue tracker](http://github.com/shoes/shoes/issues) and see if anything strikes your fancy. If you need help working on something, don't be afraid to post to the mailing list about it!
51
+ C:\tmp> git clone git://github.com/shoes/shoes4.git
75
52
 
76
- If you're not a programmer, you can help Shoes by talking about it! Blog posts, tweets, tell your neighbors, call your grandma, whatever! Share Shoes with everyone!
53
+ 2. Set up your local environment
54
+
55
+ C:\tmp>cd shoes4
56
+ C:\tmp\shoes4>jruby -S gem install bundler
57
+ C:\tmp\shoes4>jruby -S bundle install
58
+
59
+ 3. You're ready to go!
60
+
61
+ ## Running a Shoes App
62
+
63
+ Shoes 4 comes with a command-line app runner. Just pass it the filename of your Shoes app.
64
+
65
+ $ bin/shoes samples/simple-sound.rb
66
+
67
+ **Note:** For Windows, `C:\tmp\shoes4>bin\shoes samples\simple-sound.rb`
68
+
69
+ There is also a simple ruby starter script which you may use as follows:
70
+
71
+ $ bin/ruby-shoes samples/simple-sound.rb
72
+
73
+ This does not work yet on Mac as JRuby (the JVM) needs some additional parameters. Here you can just do the following (which basically is what bin/shoes does):
74
+
75
+ $ jruby -J-XstartOnFirstThread bin/ruby-shoes samples/simple-sound.rb
76
+
77
+ Another alternative yet is to put `require 'shoes'` at the top of your applications, then you can simply do
78
+
79
+ $ jruby path/to/file.rb
80
+
81
+ ## Want to see what shoes can do?
82
+
83
+ You can run `rake samples` and random samples we believe are working will be run until you quit with Ctr + C. Some of them are really simple, while others are more complex or even games!
84
+ If you notice any issue with those samples please [let us know](https://github.com/shoes/shoes4/issues/new)!
85
+
86
+ ## Packaging a Shoes App
87
+
88
+ Packaging is just a baby, so be gentle.
89
+
90
+ In order to package an app, you need to have the Shoes gem installed in your environment. If you didn't do the gem installation you can always generate a gem and install it from the current source:
91
+
92
+ $ rake gem
93
+ $ gem install pkg/shoes-4.0.0.pre1.gem
94
+
95
+ Now, you can package an app. But first, look here:
96
+
97
+ - The packager will include ***everything*** in the directory of your shoes script and below, unless you tell it not to.
98
+ - The packager will probably not work properly if it detects a `.gemspec` or a `Gemfile`. It uses Warbler, which always looks for those files. If you run the specs, you may notice some warnings like this:
99
+
100
+ > warning: Bundler \`path' components are not currently supported.
101
+ > The \`shoes-4.0.0.pre1' component was not bundled.
102
+ > Your application may fail to boot!
103
+
104
+ That's Warbler talking. Actually, we sneak the Shoes gem in anyway, but don't tell.
105
+
106
+ Okay, now for real. The simplest thing is to put your script in a directory by itself and then
107
+
108
+ $ bin/shoes -p swt:app path/to/directory-of/your-shoes-app.rb
109
+
110
+ You'll find your app at `path/to/directory-of/pkg/Shoes App.app`.
111
+
112
+ If you want more control (like you want to name your app something besides "Shoes App", or you don't want to include all of those files we talked about before), make an `app.yaml` file. See [the example](https://github.com/shoes/shoes4/blob/master/app.yaml) for more details.
113
+
114
+ ***Note:*** *If you use an `app.yaml`, you will have to customize or comment out each option. The example is just an example ;)*
115
+
116
+ When you have an `app.yaml` file right next to your script, you have three options:
117
+
118
+ $ bin/shoes -p swt:app path/to/directory-of/your-shoes-app.rb
119
+ $ bin/shoes -p swt:app path/to/directory-of/app.yaml
120
+ $ bin/shoes -p swt:app path/to/directory-of
121
+
122
+ The packager will find your instructions using any of those commands. Again, you'll find your app in the `pkg` directory inside your project's directory. Find out more at `bin/shoes --help`.
123
+
124
+ Oh, and you can also just run your Shoes apps with `bin/shoes`.
125
+
126
+ ## Want to contribute?
127
+
128
+ That's awesome, thank you!
129
+
130
+ You can go ahead an try to fix one of our [issues](https://github.com/shoes/shoes4/issues).
131
+ We have introduced a new tag 'Newcomer Friendly' for issues we believe are suitable to get started with shoes contributing. These issues either are relatively easy to accomplish or don't depend on a lot of other shoes code (e.g. completely new features) so that it's easier to get started.
132
+ Please feel free to tackle any issue - we will help you if needed. The tag is just a suggestion! =)
133
+
134
+ Also there is a list of samples that already work at samples/README, along with all the other samples. You can try to get a new sample to run. In order to do so you can run `rake non_samples` to run a random sample we think does not work. If you just want to list the non working samples you can also run `rake list_non_samples`.
135
+
136
+ With all you do, please make sure to write specs as Shoes 4 is developed TDD-style (see the [Running Specs](https://github.com/shoes/shoes4#running-specs) section below). So make sure that you don't break any tests :-)
137
+
138
+ We write our specs in rspec and are currently in the process of migrating from the old `should` syntax to the [new `expect` syntax](http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax). We basically say that whenever you touch a spec it'd be good if you converted it to the new syntax. Also new specs should be written in the new expect syntax.
139
+
140
+ If you feel unsure about testing or your implementation just open an issue or a pull request. Pull requests don't need to be done - they are great discussion starters! We're happy to help you get your contribution ready to be merged in order to help build Shoes 4!
141
+
142
+ In fact we greatly appreciate early pull requests to review code and help you find your way around Shoes4! =)
143
+
144
+ If you have questions, also feel free to drop by on the #shoes channel on FreeNode irc. People might not respond instantly, but after some time someone will respond :-)
145
+
146
+ It sometimes is also a good way to refactor some code or write some specs in order to get familiar with a project. If you want to try this approach you can have a look at our [Code Climate](https://codeclimate.com/github/shoes/shoes4) to find candidates for refactoring or after running the specs locally take a peak into the coverage directory and open index.html - it shows you our current coverage data. See something that isn't covered and maybe you can write a spec for it?
147
+
148
+ Refer to the following section for information on how to run the specs, that were mentioned before :-)
149
+
150
+ ## Running Specs
151
+
152
+ Shoes 4 is developed in a TDD style. You should be writing and running the specs :)
153
+
154
+ There are two kinds of Shoes 4 specs:
155
+
156
+ 1. **Integration specs:** These specify the functionality of the Shoes
157
+ DSL. They can be run with any compatible Shoes backend. Shoes 4 comes
158
+ with a mock backend and an Swt backend that can run the integration
159
+ specs.
160
+
161
+ 2. **Isolation specs:** These specify the internal behavior of a Shoes
162
+ backend, in isolation from the DSL. Shoes 4 comes with an isolation spec
163
+ suite for the Swt backend.
164
+
165
+ There are rake tasks for running specs. Some examples:
166
+
167
+ $ rake spec # Run the whole spec suite
168
+ $ rake spec:shoes # Run integration specs using the mock backend
169
+ $ rake spec:swt # Run integration specs using the Swt backend, plus isolation specs for the Swt backend
170
+ $ rake spec:swt:isolation # Run isolation specs for the Swt backend
171
+ $ rake spec:swt:integration # Run integration specs using the Swt backend
172
+ $ rake spec[Shape] # Run the whole spec suite, but only for Shape
173
+ $ rake spec:shoes[Shape] # Run integration specs for Shape using the mock backend
174
+ $ rake spec:swt[Shape] # Run integration and isolation specs for Shape, using the Swt backend
175
+ $ rake spec:swt:isolation[Shape] # Run isolation specs for Shape using the Swt backend
176
+
177
+ **Note:** For Windows, `C:\tmp\shoes4>jruby -S rake spec`
178
+
179
+ ## Contact
180
+
181
+ Want to get in touch with the shoes community? That's great! You can get in touch here:
182
+
183
+ * You can join the mailing list, simply send an email to shoes@librelist.com - you can also check out [the archives](http://librelist.com/browser/shoes/)
184
+ * We also have an irc channel #shoes on freenode - a lot of people are idling there so it might take some time to react
185
+
186
+ However we try to keep most discussions about the development in this repository/its issues so everyone can see them and look them up.
data/Rakefile CHANGED
@@ -1,130 +1,217 @@
1
- require 'rubygems'
2
1
  require 'rake'
3
2
  require 'rake/clean'
4
- if RUBY_VERSION != '1.8.7'
5
- require_relative 'platform/skel'
6
- else
7
- require File.join(File.dirname(__FILE__), 'platform/skel')
3
+ require 'rubygems/package_task'
4
+ require 'rspec/core/rake_task'
5
+ require 'bundler/gem_tasks'
6
+
7
+ PACKAGE_DIR = 'pkg'
8
+ SAMPLES_DIR = "samples"
9
+
10
+ CLEAN.include FileList[PACKAGE_DIR, 'doc', 'coverage', "spec/test_app/#{PACKAGE_DIR}"]
11
+
12
+ # Necessary for tasks to have description which is convenient in a few cases
13
+ Rake::TaskManager.record_task_metadata = true
14
+
15
+ require 'jruby'
16
+ JRuby.runtime.instance_config.runRubyInProcess = false
17
+
18
+ # thanks Dan Lucraft!
19
+ def jruby_run(cmd, swt = false)
20
+ opts = "-J-XstartOnFirstThread" if swt && RbConfig::CONFIG["host_os"] =~ /darwin/
21
+
22
+ # see https://github.com/jruby/jruby/wiki/FAQs
23
+ # "How can I increase the heap/memory size when launching a sub-JRuby?"
24
+ sh( "jruby --debug --1.9 -Ispec #{opts} -S #{cmd}" )
8
25
  end
9
- require 'fileutils'
10
- require 'find'
11
- require 'yaml'
12
- include FileUtils
13
-
14
- APP = YAML.load_file(File.join(ENV['APP'] || ".", "app.yaml"))
15
- APPNAME = APP['name']
16
- RELEASE_ID, RELEASE_NAME = APP['version'], APP['release']
17
- NAME = APP['shortname'] || APP['name'].downcase.gsub(/\W+/, '')
18
- SONAME = 'shoes'
19
-
20
- require 'rake/testtask'
21
- Rake::TestTask.new do |t|
22
- t.pattern = "test/*_test.rb"
23
- end
24
-
25
- require 'bundler'
26
- Bundler::GemHelper.install_tasks
27
-
28
- GIT = ENV['GIT'] || "git"
29
- REVISION = (`#{GIT} rev-list HEAD`.split.length + 1).to_s
30
- VERS = ENV['VERSION'] || "0.r#{REVISION}"
31
- PKG = "#{NAME}-#{VERS}"
32
- APPARGS = APP['run']
33
- FLAGS = %w[DEBUG VIDEO]
34
- VLC_VERSION = (RUBY_PLATFORM =~ /win32/ ? "0.8": `vlc --version 2>/dev/null`.split[2])
35
- VLC_0_8 = VLC_VERSION !~ /^0\.9/
36
-
37
- BIN = "*.{bundle,jar,o,so,obj,pdb,pch,res,lib,def,exp,exe,ilk}"
38
- CLEAN.include ["{bin,shoes}/#{BIN}", "req/**/#{BIN}", "dist"]
39
-
40
- RUBY_SO = Config::CONFIG['RUBY_SO_NAME']
41
- RUBY_V = Config::CONFIG['ruby_version']
42
- RUBY_1_9 = (RUBY_V =~ /^1\.9/)
43
- if RUBY_1_9
44
- $: << "."
26
+
27
+ def rspec(files, options = "")
28
+ rspec_opts = "#{options} #{files}"
29
+ "rspec --tty #{rspec_opts}"
45
30
  end
46
31
 
47
- if ENV['APP']
48
- %w[dmg icons].each do |subk|
49
- APP[subk].keys.each do |name|
50
- APP[subk][name] = File.join(ENV['APP'], APP[subk][name])
51
- end
52
- end
32
+ # run rspec in separate Jruby JVM
33
+ # options :
34
+ # :swt - true/false(default) When True, will run Jruby with SWT-required -X-startOnFirstThread
35
+ # :rspec - string Options to pass to Rspec commandline.
36
+ #
37
+ def jruby_rspec(files, args)
38
+ swt = args.delete(:swt)
39
+ rspec_opts = spec_opts_from_args(args)
40
+ rspec_opts << " #{ENV['RSPEC_OPTS']}"
41
+
42
+ jruby_run(rspec(files, rspec_opts), swt)
43
+
44
+ #out = jruby_run(rspec(files, rspec_opts), swt)
45
+ #ok, result = out.split("\n").last
46
+ #examples_failures = result.match /\d* examples, \d* failures/
47
+
48
+ #return { :examples => examples_failures[1], :failures => examples_failures[2] }
53
49
  end
54
50
 
55
- if File.exists? ".git/refs/tags/#{RELEASE_ID}/#{RELEASE_NAME}"
56
- abort "** Rename this release (and add to lib/shoes.rb) #{RELEASE_NAME} has already been tagged."
51
+ def spec_opts_from_args(args)
52
+ opts = []
53
+ opts << "-e ::#{args[:module]}" if args[:module]
54
+ opts += Array(args[:require]).map {|lib| "-r#{lib}"}
55
+ opts += args[:excludes].map { |tag| "--tag ~#{tag}:true" } if args[:excludes]
56
+ opts += args[:includes].map { |tag| "--tag #{tag}:true" } if args[:includes]
57
+ opts.join ' '
57
58
  end
58
59
 
59
- case RUBY_PLATFORM
60
- when /mingw/
61
- require File.expand_path('rakefile_mingw')
62
- Builder = MakeMinGW
63
- when /darwin/
64
- require File.expand_path('rakefile_darwin')
65
- Builder = MakeDarwin
66
- when /linux/
67
- require File.expand_path('rakefile_linux')
68
- Builder = MakeLinux
69
- else
70
- puts "Sorry, your platform [#{RUBY_PLATFORM}] is not supported..."
60
+ def swt_args(args)
61
+ args = args.to_hash
62
+ args[:swt] = true
63
+ args[:require] = 'swt_shoes/spec_helper'
64
+ # Adjust includes/excludes appropriately
65
+ # args[:includes] = [:swt]
66
+ args[:excludes] = [:no_swt]
67
+ args[:excludes] << :fails_on_osx if RbConfig::CONFIG["host_os"] =~ /darwin/
68
+ args
71
69
  end
72
70
 
73
- # --------------------------
74
- # common platform tasks
71
+ task :default => :spec
75
72
 
76
- desc "Same as `rake build'"
77
- task :default => [:build]
73
+ desc "Run All Specs"
74
+ task :spec, [:module] => "spec:all" do
78
75
 
79
- desc "Does a full compile, with installer"
80
- task :package => [:build, :installer]
76
+ end
81
77
 
82
- task "shoes/version.h" do |t|
83
- File.open(t.name, 'w') do |f|
84
- f << %{#define SHOES_RELEASE_ID #{RELEASE_ID}\n#define SHOES_RELEASE_NAME "#{RELEASE_NAME}"\n#define SHOES_REVISION #{REVISION}\n#define SHOES_BUILD_DATE #{Time.now.strftime("%Y%m%d")}\n#define SHOES_PLATFORM "#{RUBY_PLATFORM}"\n}
78
+ namespace :spec do
79
+ desc "Run All Specs / All Modules"
80
+ task :default => ["spec:all"]
81
+
82
+ desc "Run Specs on Shoes + All Frameworks
83
+ Limit the examples to specific :modules :
84
+ Animation
85
+ App
86
+ Button
87
+ Flow
88
+
89
+ ie. $ rake spec:all[Flow]
90
+ "
91
+ task "all", [:module] do |t, args|
92
+ Rake::Task["spec:shoes"].invoke(args[:module])
93
+ Rake::Task["spec:swt"].invoke(args[:module])
85
94
  end
86
- end
87
95
 
88
- task "dist/VERSION.txt" do |t|
89
- File.open(t.name, 'w') do |f|
90
- f << %{shoes #{RELEASE_NAME.downcase} (0.r#{REVISION}) [#{RUBY_PLATFORM} Ruby#{RUBY_V}]}
91
- %w[VIDEO DEBUG].each { |x| f << " +#{x.downcase}" if ENV[x] }
92
- f << "\n"
96
+ task :swt, [:module] do |t, args|
97
+ Rake::Task['spec:swt:all'].invoke(args[:module])
93
98
  end
94
- end
95
99
 
96
- # shoes is small, if any include changes, go ahead and build from scratch.
97
- SRC.zip(OBJ).each do |c, o|
98
- file o => [c] + Dir["shoes/*.h"]
99
- end
100
+ namespace :swt do
101
+ desc "Run all specs with SWT backend
102
+ Limit the examples to specific :modules : "
103
+ task :all, [:module] do |t, args|
104
+ argh = swt_args(args)
105
+ files = (Dir['spec/swt_shoes/*_spec.rb'] + Dir['spec/shoes/*_spec.rb']).join ' '
106
+ jruby_rspec(files, argh)
107
+ end
108
+
109
+ desc "Run isolated Swt backend specs"
110
+ task :isolation, [:module] do |t, args|
111
+ argh = swt_args(args)
112
+ files = Dir['spec/swt_shoes/*_spec.rb'].join ' '
113
+ jruby_rspec(files, argh)
114
+ end
100
115
 
101
- # --------------------------
102
- # tasks depending on Builder = MakeLinux|MakeDarwin|MakeMinGW
116
+ desc "Run integration specs with Swt backend"
117
+ task :integration, [:module] do |t, args|
118
+ argh = swt_args(args)
119
+ files = Dir['spec/shoes/*_spec.rb'].join ' '
120
+ jruby_rspec(files, argh)
121
+ end
122
+ end
103
123
 
104
- desc "Does a full compile, for the OS you're running on"
105
- task :build => [:build_os, "dist/VERSION.txt"] do
106
- Builder.common_build
107
- Builder.copy_deps_to_dist
108
- Builder.copy_files_to_dist
109
- Builder.setup_system_resources
110
- end
124
+ desc "Specs for base Shoes libraries
125
+ Limit the examples to specific :modules : "
126
+ task "shoes", [:module] do |t, args|
127
+ argh = args.to_hash
128
+ files = Dir['spec/shoes/**/*_spec.rb'].join ' '
129
+ jruby_rspec(files, argh)
130
+ end
111
131
 
112
- task "dist/#{NAME}" => ["dist/lib#{SONAME}.#{DLEXT}", "bin/main.o"] + ADD_DLL do |t|
113
- Builder.make_app t.name
114
132
  end
115
133
 
116
- task "dist/lib#{SONAME}.#{DLEXT}" => ['shoes/version.h'] + OBJ do |t|
117
- Builder.make_so t.name
118
- end
134
+ desc "Working with samples"
135
+ namespace :samples do
119
136
 
120
- rule ".o" => ".m" do |t|
121
- Builder.cc t
137
+ def samples_from_file(filename)
138
+ samples = File.read("#{SAMPLES_DIR}/#{filename}").lines
139
+ samples.map {|s| s.sub(/#.*$/, '')}.map(&:strip).select {|s| s != ''}.map {|s| "#{SAMPLES_DIR}/#{s}"}
140
+ end
141
+
142
+ def working_samples
143
+ samples = samples_from_file "README"
144
+ puts "#{samples.size} samples are known to work"
145
+ samples
146
+ end
147
+
148
+ def non_samples
149
+ all_samples = Dir[File.join(SAMPLES_DIR, '*.rb')]
150
+ result = all_samples - working_samples
151
+ puts "#{result.size} samples are not known to work"
152
+ result
153
+ end
154
+
155
+ def run_sample(sample_name, index, total)
156
+ print "Running #{sample_name} (#{index + 1} of #{total})...quit to run next sample"
157
+ system "bin/shoes #{sample_name}"
158
+ end
159
+
160
+ def run_samples(samples)
161
+ samples.each_with_index do |sample, index|
162
+ run_sample(sample, index, samples.size)
163
+ end
164
+ end
165
+
166
+ desc "Run all working samples in random order"
167
+ task :random do |t|
168
+ puts t.comment
169
+ run_samples working_samples.shuffle
170
+ end
171
+
172
+ desc "Run all working samples in alphabetical order"
173
+ task :good do |t|
174
+ puts t.comment
175
+ run_samples working_samples.sort
176
+ end
177
+
178
+ desc "Run all non-working samples in random order"
179
+ task :bad do |t|
180
+ puts t.comment
181
+ run_samples non_samples.shuffle
182
+ end
183
+
184
+ desc "Create list of non-working samples"
185
+ task :bad_list do |t|
186
+ puts t.comment
187
+ non_samples.each{|non_sample| puts non_sample}
188
+ end
189
+
190
+ desc "Run all samples listed in samples/filename"
191
+ task :subset, [:filename] do |t, args|
192
+ puts t.comment
193
+ run_samples samples_from_file(args[:filename])
194
+ end
122
195
  end
123
196
 
124
- rule ".o" => ".c" do |t|
125
- Builder.cc t
197
+ task :samples => ['samples:random']
198
+ task :non_samples => ['samples:bad']
199
+ task :list_non_samples => ['samples:bad_list']
200
+
201
+ begin
202
+ require 'yard'
203
+
204
+ YARD::Rake::YardocTask.new do |t|
205
+ t.options = ['-mmarkdown']
206
+ end
207
+ rescue LoadError
208
+ desc "Generate YARD Documentation"
209
+ task :yard do
210
+ abort 'YARD is not available. Try: gem install yard'
211
+ end
126
212
  end
127
213
 
128
- task :installer do
129
- Builder.make_installer
214
+ spec = Gem::Specification.load('shoes.gemspec')
215
+ Gem::PackageTask.new(spec) do |gem|
216
+ gem.package_dir = PACKAGE_DIR
130
217
  end