fxruby 1.6.15-x86-mswin32-60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. data/LICENSE +456 -0
  2. data/README +39 -0
  3. data/doc/apes02.html +21 -0
  4. data/doc/apes03.html +39 -0
  5. data/doc/book.html +3 -0
  6. data/doc/build.html +132 -0
  7. data/doc/ch03s02.html +23 -0
  8. data/doc/ch03s03.html +52 -0
  9. data/doc/ch03s04.html +36 -0
  10. data/doc/ch03s05.html +60 -0
  11. data/doc/ch04s02.html +71 -0
  12. data/doc/ch04s03.html +37 -0
  13. data/doc/ch04s04.html +72 -0
  14. data/doc/ch05s02.html +260 -0
  15. data/doc/ch05s03.html +127 -0
  16. data/doc/changes.html +733 -0
  17. data/doc/clipboardtut.html +67 -0
  18. data/doc/differences.html +190 -0
  19. data/doc/dragdroptut.html +263 -0
  20. data/doc/events.html +36 -0
  21. data/doc/examples.html +104 -0
  22. data/doc/gems.html +73 -0
  23. data/doc/goals.html +41 -0
  24. data/doc/images/babelfish.png +0 -0
  25. data/doc/images/browser.png +0 -0
  26. data/doc/images/button.png +0 -0
  27. data/doc/images/call-chain-example.png +0 -0
  28. data/doc/images/colordialog.png +0 -0
  29. data/doc/images/datatarget.png +0 -0
  30. data/doc/images/dialog.png +0 -0
  31. data/doc/images/dilbert.png +0 -0
  32. data/doc/images/dirlist.png +0 -0
  33. data/doc/images/dropsite-droprejected.png +0 -0
  34. data/doc/images/foursplit.png +0 -0
  35. data/doc/images/gltest.png +0 -0
  36. data/doc/images/glviewer.png +0 -0
  37. data/doc/images/groupbox.png +0 -0
  38. data/doc/images/header.png +0 -0
  39. data/doc/images/hello-with-button.png +0 -0
  40. data/doc/images/hello-with-icon-1.png +0 -0
  41. data/doc/images/hello-with-icon-2.png +0 -0
  42. data/doc/images/hello-with-icon-3.png +0 -0
  43. data/doc/images/hello-with-tooltip.png +0 -0
  44. data/doc/images/hello-without-button.png +0 -0
  45. data/doc/images/hello.png +0 -0
  46. data/doc/images/hello2.png +0 -0
  47. data/doc/images/iconlist-bigicons.png +0 -0
  48. data/doc/images/iconlist-details.png +0 -0
  49. data/doc/images/image.png +0 -0
  50. data/doc/images/imageviewer.png +0 -0
  51. data/doc/images/inheritance.png +0 -0
  52. data/doc/images/mditest.png +0 -0
  53. data/doc/images/raabrowser.png +0 -0
  54. data/doc/images/scribble.png +0 -0
  55. data/doc/images/shutter.png +0 -0
  56. data/doc/images/splitter.png +0 -0
  57. data/doc/images/tabbook.png +0 -0
  58. data/doc/images/table.png +0 -0
  59. data/doc/images/tutorial1.png +0 -0
  60. data/doc/implementation.html +16 -0
  61. data/doc/infosources.html +33 -0
  62. data/doc/library.html +30 -0
  63. data/doc/opengl.html +73 -0
  64. data/doc/pt01.html +3 -0
  65. data/doc/pt02.html +3 -0
  66. data/doc/scintilla.html +36 -0
  67. data/doc/style.css +247 -0
  68. data/doc/subversion.html +21 -0
  69. data/doc/tutorial1.html +90 -0
  70. data/doc/unicode.html +56 -0
  71. data/examples/RAA.rb +25 -0
  72. data/examples/README +53 -0
  73. data/examples/babelfish.rb +72 -0
  74. data/examples/bounce.rb +159 -0
  75. data/examples/browser.rb +191 -0
  76. data/examples/button.rb +168 -0
  77. data/examples/custom_table_item.rb +170 -0
  78. data/examples/datatarget.rb +223 -0
  79. data/examples/dctest.rb +696 -0
  80. data/examples/dialog.rb +143 -0
  81. data/examples/dilbert.rb +66 -0
  82. data/examples/dirlist.rb +63 -0
  83. data/examples/dragdrop.rb +97 -0
  84. data/examples/dragsource.rb +80 -0
  85. data/examples/dropsite.rb +59 -0
  86. data/examples/foursplit.rb +97 -0
  87. data/examples/gltest.rb +330 -0
  88. data/examples/glviewer.rb +576 -0
  89. data/examples/groupbox.rb +392 -0
  90. data/examples/header.rb +149 -0
  91. data/examples/hello.rb +12 -0
  92. data/examples/hello2.rb +51 -0
  93. data/examples/iRAA.rb +153 -0
  94. data/examples/iconlist.rb +92 -0
  95. data/examples/icons/AngryGuyInBunnySuit.ico +0 -0
  96. data/examples/icons/FatBot.ico +0 -0
  97. data/examples/icons/FlippedySwitch.ico +0 -0
  98. data/examples/icons/LeGoon.ico +0 -0
  99. data/examples/icons/Net.ico +0 -0
  100. data/examples/icons/RedMacOS.ico +0 -0
  101. data/examples/icons/SawBlade.ico +0 -0
  102. data/examples/icons/backview.png +0 -0
  103. data/examples/icons/big.png +0 -0
  104. data/examples/icons/bigfolder.png +0 -0
  105. data/examples/icons/bigpenguin.png +0 -0
  106. data/examples/icons/bottomview.png +0 -0
  107. data/examples/icons/camera.png +0 -0
  108. data/examples/icons/capbutt.png +0 -0
  109. data/examples/icons/capnotlast.png +0 -0
  110. data/examples/icons/capproj.png +0 -0
  111. data/examples/icons/capround.png +0 -0
  112. data/examples/icons/colorpal.png +0 -0
  113. data/examples/icons/copy.png +0 -0
  114. data/examples/icons/cut.png +0 -0
  115. data/examples/icons/delimit.png +0 -0
  116. data/examples/icons/dippy.png +0 -0
  117. data/examples/icons/double_dash.png +0 -0
  118. data/examples/icons/filenew.png +0 -0
  119. data/examples/icons/fileopen.png +0 -0
  120. data/examples/icons/filesave.png +0 -0
  121. data/examples/icons/filesaveas.png +0 -0
  122. data/examples/icons/fonts.png +0 -0
  123. data/examples/icons/fox.png +0 -0
  124. data/examples/icons/foxicon.png +0 -0
  125. data/examples/icons/frontview.png +0 -0
  126. data/examples/icons/gem_big.png +0 -0
  127. data/examples/icons/gem_small.png +0 -0
  128. data/examples/icons/hello2.png +0 -0
  129. data/examples/icons/help.png +0 -0
  130. data/examples/icons/indent.png +0 -0
  131. data/examples/icons/jbevel.png +0 -0
  132. data/examples/icons/jmiter.png +0 -0
  133. data/examples/icons/jround.png +0 -0
  134. data/examples/icons/kill.png +0 -0
  135. data/examples/icons/leftview.png +0 -0
  136. data/examples/icons/light.png +0 -0
  137. data/examples/icons/minidoc.png +0 -0
  138. data/examples/icons/minifolder.png +0 -0
  139. data/examples/icons/minifolderopen.png +0 -0
  140. data/examples/icons/newfolder.png +0 -0
  141. data/examples/icons/nolight.png +0 -0
  142. data/examples/icons/onoff_dash.png +0 -0
  143. data/examples/icons/palette.png +0 -0
  144. data/examples/icons/parallel.png +0 -0
  145. data/examples/icons/paste.png +0 -0
  146. data/examples/icons/pattern.png +0 -0
  147. data/examples/icons/penguin.png +0 -0
  148. data/examples/icons/perspective.png +0 -0
  149. data/examples/icons/printicon.png +0 -0
  150. data/examples/icons/prop.png +0 -0
  151. data/examples/icons/redo.png +0 -0
  152. data/examples/icons/rightview.png +0 -0
  153. data/examples/icons/saveas.png +0 -0
  154. data/examples/icons/shutter1.png +0 -0
  155. data/examples/icons/shutter2.png +0 -0
  156. data/examples/icons/small.png +0 -0
  157. data/examples/icons/smoothlight.png +0 -0
  158. data/examples/icons/solid_line.png +0 -0
  159. data/examples/icons/tbuplevel.png +0 -0
  160. data/examples/icons/topview.png +0 -0
  161. data/examples/icons/undo.png +0 -0
  162. data/examples/icons/winapp.png +0 -0
  163. data/examples/icons/zoom.png +0 -0
  164. data/examples/image.rb +279 -0
  165. data/examples/imageviewer.rb +509 -0
  166. data/examples/inputs.rb +83 -0
  167. data/examples/mditest.rb +180 -0
  168. data/examples/pig.rb +77 -0
  169. data/examples/raabrowser.rb +122 -0
  170. data/examples/ratio.rb +80 -0
  171. data/examples/rulerview.rb +27 -0
  172. data/examples/scintilla-test.rb +81 -0
  173. data/examples/scribble-orig.rb +186 -0
  174. data/examples/scribble.rb +162 -0
  175. data/examples/shutter.rb +158 -0
  176. data/examples/splitter.rb +211 -0
  177. data/examples/styledtext.rb +82 -0
  178. data/examples/tabbook.rb +165 -0
  179. data/examples/table.rb +182 -0
  180. data/examples/textedit/commands.rb +114 -0
  181. data/examples/textedit/helpwindow.rb +299 -0
  182. data/examples/textedit/prefdialog.rb +239 -0
  183. data/examples/textedit/textedit.rb +1763 -0
  184. data/examples/unicode.rb +36 -0
  185. data/ext/fox16/fox16.so +0 -0
  186. data/lib/fox16/aliases.rb +5611 -0
  187. data/lib/fox16/calendar.rb +217 -0
  188. data/lib/fox16/chore.rb +105 -0
  189. data/lib/fox16/colors.rb +280 -0
  190. data/lib/fox16/core.rb +681 -0
  191. data/lib/fox16/dict.rb +35 -0
  192. data/lib/fox16/execute_nonmodal.rb +70 -0
  193. data/lib/fox16/glgroup.rb +166 -0
  194. data/lib/fox16/glshapes.rb +456 -0
  195. data/lib/fox16/input.rb +59 -0
  196. data/lib/fox16/irb.rb +178 -0
  197. data/lib/fox16/iterators.rb +420 -0
  198. data/lib/fox16/keys.rb +1374 -0
  199. data/lib/fox16/kwargs.rb +2736 -0
  200. data/lib/fox16/missingdep.rb +14 -0
  201. data/lib/fox16/pseudokeyboard.rb +40 -0
  202. data/lib/fox16/pseudomouse.rb +87 -0
  203. data/lib/fox16/responder.rb +70 -0
  204. data/lib/fox16/responder2.rb +131 -0
  205. data/lib/fox16/scintilla.rb +3641 -0
  206. data/lib/fox16/settings.rb +18 -0
  207. data/lib/fox16/signal.rb +71 -0
  208. data/lib/fox16/splashscreen.rb +82 -0
  209. data/lib/fox16/timeout.rb +136 -0
  210. data/lib/fox16/undolist.rb +455 -0
  211. data/lib/fox16/version.rb +9 -0
  212. data/rdoc-sources/FX4Splitter.rb +156 -0
  213. data/rdoc-sources/FX7Segment.rb +54 -0
  214. data/rdoc-sources/FXAccelTable.rb +102 -0
  215. data/rdoc-sources/FXApp.rb +545 -0
  216. data/rdoc-sources/FXArrowButton.rb +69 -0
  217. data/rdoc-sources/FXBMPIcon.rb +67 -0
  218. data/rdoc-sources/FXBMPImage.rb +30 -0
  219. data/rdoc-sources/FXBitmap.rb +115 -0
  220. data/rdoc-sources/FXBitmapFrame.rb +31 -0
  221. data/rdoc-sources/FXBitmapView.rb +44 -0
  222. data/rdoc-sources/FXButton.rb +59 -0
  223. data/rdoc-sources/FXCURCursor.rb +13 -0
  224. data/rdoc-sources/FXCanvas.rb +18 -0
  225. data/rdoc-sources/FXCheckButton.rb +58 -0
  226. data/rdoc-sources/FXChoiceBox.rb +49 -0
  227. data/rdoc-sources/FXColorBar.rb +48 -0
  228. data/rdoc-sources/FXColorDialog.rb +37 -0
  229. data/rdoc-sources/FXColorList.rb +55 -0
  230. data/rdoc-sources/FXColorRing.rb +49 -0
  231. data/rdoc-sources/FXColorSelector.rb +65 -0
  232. data/rdoc-sources/FXColorWell.rb +65 -0
  233. data/rdoc-sources/FXColorWheel.rb +57 -0
  234. data/rdoc-sources/FXComboBox.rb +214 -0
  235. data/rdoc-sources/FXComposite.rb +34 -0
  236. data/rdoc-sources/FXCursor.rb +67 -0
  237. data/rdoc-sources/FXDC.rb +720 -0
  238. data/rdoc-sources/FXDCPrint.rb +127 -0
  239. data/rdoc-sources/FXDCWindow.rb +33 -0
  240. data/rdoc-sources/FXDataTarget.rb +66 -0
  241. data/rdoc-sources/FXDebugTarget.rb +25 -0
  242. data/rdoc-sources/FXDelegator.rb +23 -0
  243. data/rdoc-sources/FXDial.rb +107 -0
  244. data/rdoc-sources/FXDialogBox.rb +32 -0
  245. data/rdoc-sources/FXDict.rb +79 -0
  246. data/rdoc-sources/FXDirBox.rb +55 -0
  247. data/rdoc-sources/FXDirDialog.rb +47 -0
  248. data/rdoc-sources/FXDirList.rb +149 -0
  249. data/rdoc-sources/FXDirSelector.rb +64 -0
  250. data/rdoc-sources/FXDockBar.rb +151 -0
  251. data/rdoc-sources/FXDockHandler.rb +26 -0
  252. data/rdoc-sources/FXDockSite.rb +104 -0
  253. data/rdoc-sources/FXDockTitle.rb +26 -0
  254. data/rdoc-sources/FXDocument.rb +29 -0
  255. data/rdoc-sources/FXDragCorner.rb +19 -0
  256. data/rdoc-sources/FXDrawable.rb +27 -0
  257. data/rdoc-sources/FXDriveBox.rb +46 -0
  258. data/rdoc-sources/FXExtentd.rb +85 -0
  259. data/rdoc-sources/FXExtentf.rb +85 -0
  260. data/rdoc-sources/FXFileDialog.rb +217 -0
  261. data/rdoc-sources/FXFileDict.rb +131 -0
  262. data/rdoc-sources/FXFileList.rb +208 -0
  263. data/rdoc-sources/FXFileSelector.rb +184 -0
  264. data/rdoc-sources/FXFileStream.rb +27 -0
  265. data/rdoc-sources/FXFoldingList.rb +504 -0
  266. data/rdoc-sources/FXFont.rb +361 -0
  267. data/rdoc-sources/FXFontDialog.rb +14 -0
  268. data/rdoc-sources/FXFontSelector.rb +37 -0
  269. data/rdoc-sources/FXFrame.rb +53 -0
  270. data/rdoc-sources/FXGIFCursor.rb +50 -0
  271. data/rdoc-sources/FXGIFIcon.rb +31 -0
  272. data/rdoc-sources/FXGIFImage.rb +29 -0
  273. data/rdoc-sources/FXGLCanvas.rb +45 -0
  274. data/rdoc-sources/FXGLContext.rb +40 -0
  275. data/rdoc-sources/FXGLObject.rb +75 -0
  276. data/rdoc-sources/FXGLShape.rb +69 -0
  277. data/rdoc-sources/FXGLViewer.rb +332 -0
  278. data/rdoc-sources/FXGLVisual.rb +94 -0
  279. data/rdoc-sources/FXGradientBar.rb +301 -0
  280. data/rdoc-sources/FXGroupBox.rb +36 -0
  281. data/rdoc-sources/FXHeader.rb +411 -0
  282. data/rdoc-sources/FXHorizontalFrame.rb +29 -0
  283. data/rdoc-sources/FXICOIcon.rb +65 -0
  284. data/rdoc-sources/FXICOImage.rb +31 -0
  285. data/rdoc-sources/FXIcon.rb +38 -0
  286. data/rdoc-sources/FXIconDict.rb +48 -0
  287. data/rdoc-sources/FXIconList.rb +450 -0
  288. data/rdoc-sources/FXIconSource.rb +100 -0
  289. data/rdoc-sources/FXId.rb +34 -0
  290. data/rdoc-sources/FXImage.rb +292 -0
  291. data/rdoc-sources/FXImageFrame.rb +36 -0
  292. data/rdoc-sources/FXImageView.rb +35 -0
  293. data/rdoc-sources/FXInputDialog.rb +80 -0
  294. data/rdoc-sources/FXJPGIcon.rb +70 -0
  295. data/rdoc-sources/FXJPGImage.rb +38 -0
  296. data/rdoc-sources/FXKnob.rb +76 -0
  297. data/rdoc-sources/FXLabel.rb +72 -0
  298. data/rdoc-sources/FXList.rb +443 -0
  299. data/rdoc-sources/FXListBox.rb +191 -0
  300. data/rdoc-sources/FXMDIButton.rb +67 -0
  301. data/rdoc-sources/FXMDIChild.rb +155 -0
  302. data/rdoc-sources/FXMDIClient.rb +65 -0
  303. data/rdoc-sources/FXMainWindow.rb +26 -0
  304. data/rdoc-sources/FXMatrix.rb +57 -0
  305. data/rdoc-sources/FXMemoryBuffer.rb +28 -0
  306. data/rdoc-sources/FXMemoryStream.rb +50 -0
  307. data/rdoc-sources/FXMenuBar.rb +23 -0
  308. data/rdoc-sources/FXMenuButton.rb +84 -0
  309. data/rdoc-sources/FXMenuCaption.rb +53 -0
  310. data/rdoc-sources/FXMenuCascade.rb +18 -0
  311. data/rdoc-sources/FXMenuCheck.rb +30 -0
  312. data/rdoc-sources/FXMenuCommand.rb +26 -0
  313. data/rdoc-sources/FXMenuPane.rb +13 -0
  314. data/rdoc-sources/FXMenuRadio.rb +33 -0
  315. data/rdoc-sources/FXMenuSeparator.rb +21 -0
  316. data/rdoc-sources/FXMenuTitle.rb +27 -0
  317. data/rdoc-sources/FXMessageBox.rb +73 -0
  318. data/rdoc-sources/FXObject.rb +28 -0
  319. data/rdoc-sources/FXOptionMenu.rb +83 -0
  320. data/rdoc-sources/FXPCXIcon.rb +63 -0
  321. data/rdoc-sources/FXPCXImage.rb +31 -0
  322. data/rdoc-sources/FXPNGIcon.rb +66 -0
  323. data/rdoc-sources/FXPNGImage.rb +34 -0
  324. data/rdoc-sources/FXPPMIcon.rb +36 -0
  325. data/rdoc-sources/FXPPMImage.rb +31 -0
  326. data/rdoc-sources/FXPacker.rb +63 -0
  327. data/rdoc-sources/FXPicker.rb +27 -0
  328. data/rdoc-sources/FXPopup.rb +53 -0
  329. data/rdoc-sources/FXPrintDialog.rb +36 -0
  330. data/rdoc-sources/FXProgressBar.rb +57 -0
  331. data/rdoc-sources/FXProgressDialog.rb +36 -0
  332. data/rdoc-sources/FXQuatd.rb +164 -0
  333. data/rdoc-sources/FXQuatf.rb +173 -0
  334. data/rdoc-sources/FXRGBIcon.rb +64 -0
  335. data/rdoc-sources/FXRGBImage.rb +31 -0
  336. data/rdoc-sources/FXRadioButton.rb +70 -0
  337. data/rdoc-sources/FXRanged.rb +100 -0
  338. data/rdoc-sources/FXRangef.rb +100 -0
  339. data/rdoc-sources/FXRealSlider.rb +101 -0
  340. data/rdoc-sources/FXRealSpinner.rb +140 -0
  341. data/rdoc-sources/FXRecentFiles.rb +77 -0
  342. data/rdoc-sources/FXRectangle.rb +149 -0
  343. data/rdoc-sources/FXRegion.rb +64 -0
  344. data/rdoc-sources/FXRegistry.rb +56 -0
  345. data/rdoc-sources/FXReplaceDialog.rb +56 -0
  346. data/rdoc-sources/FXRootWindow.rb +17 -0
  347. data/rdoc-sources/FXRuler.rb +130 -0
  348. data/rdoc-sources/FXRulerView.rb +225 -0
  349. data/rdoc-sources/FXScintilla.rb +121 -0
  350. data/rdoc-sources/FXScrollArea.rb +86 -0
  351. data/rdoc-sources/FXScrollBar.rb +107 -0
  352. data/rdoc-sources/FXScrollPane.rb +28 -0
  353. data/rdoc-sources/FXScrollWindow.rb +38 -0
  354. data/rdoc-sources/FXSearchDialog.rb +24 -0
  355. data/rdoc-sources/FXSeparator.rb +74 -0
  356. data/rdoc-sources/FXSettings.rb +248 -0
  357. data/rdoc-sources/FXShell.rb +8 -0
  358. data/rdoc-sources/FXShutter.rb +102 -0
  359. data/rdoc-sources/FXSize.rb +95 -0
  360. data/rdoc-sources/FXSlider.rb +98 -0
  361. data/rdoc-sources/FXSphered.rb +80 -0
  362. data/rdoc-sources/FXSpheref.rb +80 -0
  363. data/rdoc-sources/FXSpinner.rb +136 -0
  364. data/rdoc-sources/FXSplashWindow.rb +27 -0
  365. data/rdoc-sources/FXSplitter.rb +89 -0
  366. data/rdoc-sources/FXSpring.rb +61 -0
  367. data/rdoc-sources/FXStatusBar.rb +42 -0
  368. data/rdoc-sources/FXStatusLine.rb +60 -0
  369. data/rdoc-sources/FXStream.rb +142 -0
  370. data/rdoc-sources/FXStringDict.rb +38 -0
  371. data/rdoc-sources/FXSwitcher.rb +78 -0
  372. data/rdoc-sources/FXTGAIcon.rb +63 -0
  373. data/rdoc-sources/FXTGAImage.rb +31 -0
  374. data/rdoc-sources/FXTIFIcon.rb +70 -0
  375. data/rdoc-sources/FXTIFImage.rb +37 -0
  376. data/rdoc-sources/FXTabBar.rb +80 -0
  377. data/rdoc-sources/FXTabBook.rb +41 -0
  378. data/rdoc-sources/FXTabItem.rb +58 -0
  379. data/rdoc-sources/FXTable.rb +967 -0
  380. data/rdoc-sources/FXText.rb +581 -0
  381. data/rdoc-sources/FXTextField.rb +151 -0
  382. data/rdoc-sources/FXToggleButton.rb +70 -0
  383. data/rdoc-sources/FXToolBar.rb +61 -0
  384. data/rdoc-sources/FXToolBarGrip.rb +50 -0
  385. data/rdoc-sources/FXToolBarShell.rb +44 -0
  386. data/rdoc-sources/FXToolBarTab.rb +74 -0
  387. data/rdoc-sources/FXToolTip.rb +39 -0
  388. data/rdoc-sources/FXTopWindow.rb +163 -0
  389. data/rdoc-sources/FXTranslator.rb +32 -0
  390. data/rdoc-sources/FXTreeList.rb +514 -0
  391. data/rdoc-sources/FXTreeListBox.rb +219 -0
  392. data/rdoc-sources/FXTriStateButton.rb +49 -0
  393. data/rdoc-sources/FXVec2d.rb +96 -0
  394. data/rdoc-sources/FXVec2f.rb +96 -0
  395. data/rdoc-sources/FXVec3d.rb +113 -0
  396. data/rdoc-sources/FXVec3f.rb +113 -0
  397. data/rdoc-sources/FXVec4d.rb +129 -0
  398. data/rdoc-sources/FXVec4f.rb +129 -0
  399. data/rdoc-sources/FXVerticalFrame.rb +29 -0
  400. data/rdoc-sources/FXVisual.rb +79 -0
  401. data/rdoc-sources/FXWindow.rb +725 -0
  402. data/rdoc-sources/FXWizard.rb +59 -0
  403. data/rdoc-sources/FXXBMIcon.rb +37 -0
  404. data/rdoc-sources/FXXBMImage.rb +32 -0
  405. data/rdoc-sources/FXXPMIcon.rb +65 -0
  406. data/rdoc-sources/FXXPMImage.rb +31 -0
  407. data/rdoc-sources/README.rdoc +53 -0
  408. data/rdoc-sources/fxdefs.rb +90 -0
  409. data/tests/README +19 -0
  410. data/tests/TC_FXAccelTable.rb +43 -0
  411. data/tests/TC_FXApp.rb +16 -0
  412. data/tests/TC_FXArc.rb +26 -0
  413. data/tests/TC_FXBMPIcon.rb +15 -0
  414. data/tests/TC_FXBMPImage.rb +15 -0
  415. data/tests/TC_FXButton.rb +72 -0
  416. data/tests/TC_FXCheckButton.rb +57 -0
  417. data/tests/TC_FXComboBox.rb +63 -0
  418. data/tests/TC_FXDC.rb +372 -0
  419. data/tests/TC_FXDCPrint.rb +102 -0
  420. data/tests/TC_FXDCWindow.rb +23 -0
  421. data/tests/TC_FXDataTarget.rb +24 -0
  422. data/tests/TC_FXDialogBox.rb +12 -0
  423. data/tests/TC_FXDirList.rb +30 -0
  424. data/tests/TC_FXFileAssoc.rb +62 -0
  425. data/tests/TC_FXFileStream.rb +90 -0
  426. data/tests/TC_FXFoldingList.rb +32 -0
  427. data/tests/TC_FXFont.rb +69 -0
  428. data/tests/TC_FXFontDesc.rb +58 -0
  429. data/tests/TC_FXGLGroup.rb +32 -0
  430. data/tests/TC_FXGLShape.rb +28 -0
  431. data/tests/TC_FXGLViewer.rb +20 -0
  432. data/tests/TC_FXGradientBar.rb +89 -0
  433. data/tests/TC_FXHeader.rb +82 -0
  434. data/tests/TC_FXHiliteStyle.rb +23 -0
  435. data/tests/TC_FXIconDict.rb +52 -0
  436. data/tests/TC_FXIconList.rb +192 -0
  437. data/tests/TC_FXId.rb +19 -0
  438. data/tests/TC_FXImage.rb +155 -0
  439. data/tests/TC_FXLight.rb +33 -0
  440. data/tests/TC_FXList.rb +116 -0
  441. data/tests/TC_FXListBox.rb +49 -0
  442. data/tests/TC_FXMainWindow.rb +12 -0
  443. data/tests/TC_FXMat4f.rb +228 -0
  444. data/tests/TC_FXMaterial.rb +89 -0
  445. data/tests/TC_FXMemoryStream.rb +97 -0
  446. data/tests/TC_FXMenuCheck.rb +57 -0
  447. data/tests/TC_FXMenuCommand.rb +12 -0
  448. data/tests/TC_FXMenuRadio.rb +57 -0
  449. data/tests/TC_FXMessageBox.rb +25 -0
  450. data/tests/TC_FXPoint.rb +57 -0
  451. data/tests/TC_FXQuatf.rb +77 -0
  452. data/tests/TC_FXRadioButton.rb +57 -0
  453. data/tests/TC_FXRangef.rb +48 -0
  454. data/tests/TC_FXRectangle.rb +88 -0
  455. data/tests/TC_FXRegion.rb +54 -0
  456. data/tests/TC_FXRegistry.rb +27 -0
  457. data/tests/TC_FXScrollArea.rb +28 -0
  458. data/tests/TC_FXScrollWindow.rb +28 -0
  459. data/tests/TC_FXSegment.rb +22 -0
  460. data/tests/TC_FXSettings.rb +34 -0
  461. data/tests/TC_FXShell.rb +26 -0
  462. data/tests/TC_FXSize.rb +54 -0
  463. data/tests/TC_FXStream.rb +11 -0
  464. data/tests/TC_FXTable.rb +368 -0
  465. data/tests/TC_FXTableItem.rb +48 -0
  466. data/tests/TC_FXText.rb +96 -0
  467. data/tests/TC_FXTopWindow.rb +32 -0
  468. data/tests/TC_FXTreeList.rb +100 -0
  469. data/tests/TC_FXTreeListBox.rb +41 -0
  470. data/tests/TC_FXUndoList.rb +43 -0
  471. data/tests/TC_FXVec2d.rb +142 -0
  472. data/tests/TC_FXVec2f.rb +137 -0
  473. data/tests/TC_FXVec3d.rb +150 -0
  474. data/tests/TC_FXVec3f.rb +150 -0
  475. data/tests/TC_FXVec4f.rb +158 -0
  476. data/tests/TC_FXViewport.rb +30 -0
  477. data/tests/TC_FXXBMIcon.rb +15 -0
  478. data/tests/TC_FXXBMImage.rb +15 -0
  479. data/tests/TC_FXXPMIcon.rb +15 -0
  480. data/tests/TC_FXXPMImage.rb +15 -0
  481. data/tests/TC_Misc.rb +157 -0
  482. data/tests/TC_downcast.rb +15 -0
  483. data/tests/TS_All.rb +25 -0
  484. data/tests/blankpage.ps +166 -0
  485. data/tests/howdypage.ps +181 -0
  486. data/tests/stress1.rb +92 -0
  487. data/tests/stress2.rb +51 -0
  488. data/tests/stress3.rb +117 -0
  489. data/tests/testcase.rb +37 -0
  490. metadata +549 -0
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fox16'
4
+
5
+ include Fox
6
+
7
+ class InputHandlerWindow < FXMainWindow
8
+
9
+ def initialize(app)
10
+ # Initialize base class first
11
+ super(app, "Input Handlers Test", :opts => DECOR_ALL, :width => 400, :height => 300)
12
+
13
+ # Text area plus a button
14
+ commands = FXHorizontalFrame.new(self, LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X)
15
+ FXLabel.new(commands, "Command:")
16
+ @cmdInput = FXTextField.new(commands, 30, :opts => FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X)
17
+ @cmdInput.connect(SEL_COMMAND, method(:onCmdText))
18
+ FXHorizontalSeparator.new(self, LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X)
19
+ textFrame = FXVerticalFrame.new(self,
20
+ FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
21
+
22
+ # Output will be displayed in a multiline text area
23
+ @cmdOutput = FXText.new(textFrame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
24
+
25
+ # Initialize the pipe
26
+ @pipe = nil
27
+ end
28
+
29
+ # Create and show the main window
30
+ def create
31
+ super
32
+ show(PLACEMENT_SCREEN)
33
+ end
34
+
35
+ # Remove previous input (if any)
36
+ def closePipe
37
+ if @pipe
38
+ getApp().removeInput(@pipe, INPUT_READ|INPUT_EXCEPT)
39
+ @pipe = nil
40
+ end
41
+ end
42
+
43
+ def onCmdText(sender, sel, ptr)
44
+ # Stop previous command
45
+ closePipe
46
+
47
+ # Clean up the output window
48
+ @cmdOutput.text = ""
49
+
50
+ # Open a new pipe
51
+ @pipe = IO.popen(@cmdInput.text)
52
+
53
+ # Register input callbacks and return
54
+ getApp().addInput(@pipe, INPUT_READ|INPUT_EXCEPT) do |sender, sel, ptr|
55
+ case FXSELTYPE(sel)
56
+ when SEL_IO_READ
57
+ text = @pipe.read_nonblock(256)
58
+ if text && text.length > 0
59
+ @cmdOutput.appendText(text)
60
+ else
61
+ closePipe
62
+ end
63
+ when SEL_IO_EXCEPT
64
+ # puts 'onPipeExcept'
65
+ end
66
+ end
67
+ return 1
68
+ end
69
+ end
70
+
71
+ if $0 == __FILE__
72
+ # Construct an application
73
+ application = FXApp.new('InputHandler', 'FoxTest')
74
+
75
+ # Construct the main window
76
+ InputHandlerWindow.new(application)
77
+
78
+ # Create and show the application windows
79
+ application.create
80
+
81
+ # Run the application
82
+ application.run
83
+ end
@@ -0,0 +1,180 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fox16'
4
+ require 'fox16/colors'
5
+
6
+ include Fox
7
+
8
+ TYGER = <<END_OF_POEM
9
+ The Tyger
10
+
11
+ Tyger! Tyger! burning bright
12
+ In the forests of the night
13
+ What immortal hand or eye
14
+ Could frame thy fearful symmetry?
15
+
16
+ In what distant deeps or skies
17
+ Burnt the fire of thine eyes?
18
+ On what wings dare he aspire?
19
+ What the hand dare seize the fire?
20
+
21
+ And what shoulder, and what art,
22
+ Could twist the sinews of thy heart,
23
+ And when thy heart began to beat,
24
+ What dread hand? and what dread feet?
25
+
26
+ What the hammer? what the chain?
27
+ In what furnace was thy brain?
28
+ What the anvil? what dread grasp
29
+ Dare its deadly terrors clasp?
30
+
31
+ When the stars threw down their spears,
32
+ And water'd heaven with their tears,
33
+ Did he smile his work to see?
34
+ Did he who made the Lamb make thee?
35
+
36
+ Tyger! Tyger! burning bright
37
+ In the forests of the night,
38
+ What immortal hand or eye,
39
+ Dare frame thy fearful symmetry?
40
+
41
+
42
+
43
+ - William Blake
44
+ END_OF_POEM
45
+
46
+ class MDITestWindow < FXMainWindow
47
+
48
+ def initialize(app)
49
+ # Invoke base class initialize method first
50
+ super(app, "MDI Widget Test", :opts => DECOR_ALL, :width => 800, :height => 600)
51
+
52
+ # Create the font
53
+ @font = FXFont.new(getApp(), "courier", 15, FONTWEIGHT_BOLD)
54
+
55
+ # Menubar
56
+ menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
57
+
58
+ # Status bar
59
+ FXStatusBar.new(self,
60
+ LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER)
61
+
62
+ # MDI Client
63
+ @mdiclient = FXMDIClient.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y)
64
+
65
+ # Icon for MDI Child
66
+ @mdiicon = nil
67
+ File.open(File.join("icons", "penguin.png"), "rb") do |f|
68
+ @mdiicon = FXPNGIcon.new(getApp(), f.read)
69
+ end
70
+
71
+ # Make MDI Menu
72
+ @mdimenu = FXMDIMenu.new(self, @mdiclient)
73
+
74
+ # MDI buttons in menu:- note the message ID's!!!!!
75
+ # Normally, MDI commands are simply sensitized or desensitized;
76
+ # Under the menubar, however, they're hidden if the MDI Client is
77
+ # not maximized. To do this, they must have different ID's.
78
+ FXMDIWindowButton.new(menubar, @mdimenu, @mdiclient, FXMDIClient::ID_MDI_MENUWINDOW,
79
+ LAYOUT_LEFT)
80
+ FXMDIDeleteButton.new(menubar, @mdiclient, FXMDIClient::ID_MDI_MENUCLOSE,
81
+ FRAME_RAISED|LAYOUT_RIGHT)
82
+ FXMDIRestoreButton.new(menubar, @mdiclient, FXMDIClient::ID_MDI_MENURESTORE,
83
+ FRAME_RAISED|LAYOUT_RIGHT)
84
+ FXMDIMinimizeButton.new(menubar, @mdiclient,
85
+ FXMDIClient::ID_MDI_MENUMINIMIZE, FRAME_RAISED|LAYOUT_RIGHT)
86
+
87
+ # Create a few test windows to get started
88
+ mdichild = createTestWindow(10, 10, 400, 300)
89
+ @mdiclient.setActiveChild(mdichild)
90
+ createTestWindow(20, 20, 400, 300)
91
+ createTestWindow(30, 30, 400, 300)
92
+
93
+ # File menu
94
+ filemenu = FXMenuPane.new(self)
95
+ newCmd = FXMenuCommand.new(filemenu, "&New\tCtl-N\tCreate new document.")
96
+ newCmd.connect(SEL_COMMAND, method(:onCmdNew))
97
+ FXMenuCommand.new(filemenu, "&Quit\tCtl-Q\tQuit application.", nil,
98
+ getApp(), FXApp::ID_QUIT, 0)
99
+ FXMenuTitle.new(menubar, "&File", nil, filemenu)
100
+
101
+ # Window menu
102
+ windowmenu = FXMenuPane.new(self)
103
+ FXMenuCommand.new(windowmenu, "Tile &Horizontally", nil,
104
+ @mdiclient, FXMDIClient::ID_MDI_TILEHORIZONTAL)
105
+ FXMenuCommand.new(windowmenu, "Tile &Vertically", nil,
106
+ @mdiclient, FXMDIClient::ID_MDI_TILEVERTICAL)
107
+ FXMenuCommand.new(windowmenu, "C&ascade", nil,
108
+ @mdiclient, FXMDIClient::ID_MDI_CASCADE)
109
+ FXMenuCommand.new(windowmenu, "&Close", nil,
110
+ @mdiclient, FXMDIClient::ID_MDI_CLOSE)
111
+ sep1 = FXMenuSeparator.new(windowmenu)
112
+ sep1.setTarget(@mdiclient)
113
+ sep1.setSelector(FXMDIClient::ID_MDI_ANY)
114
+ FXMenuCommand.new(windowmenu, nil, nil, @mdiclient, FXMDIClient::ID_MDI_1)
115
+ FXMenuCommand.new(windowmenu, nil, nil, @mdiclient, FXMDIClient::ID_MDI_2)
116
+ FXMenuCommand.new(windowmenu, nil, nil, @mdiclient, FXMDIClient::ID_MDI_3)
117
+ FXMenuCommand.new(windowmenu, nil, nil, @mdiclient, FXMDIClient::ID_MDI_4)
118
+ FXMenuCommand.new(windowmenu, "&Others...", nil, @mdiclient, FXMDIClient::ID_MDI_OVER_5)
119
+ FXMenuTitle.new(menubar,"&Window", nil, windowmenu)
120
+
121
+ # Help menu
122
+ helpmenu = FXMenuPane.new(self)
123
+ FXMenuCommand.new(helpmenu, "&About FOX...").connect(SEL_COMMAND) {
124
+ FXMessageBox.information(self, MBOX_OK, "About MDI Test",
125
+ "Test of the FOX MDI Widgets\nWritten by Jeroen van der Zijp")
126
+ }
127
+ FXMenuTitle.new(menubar, "&Help", nil, helpmenu, LAYOUT_RIGHT)
128
+ end
129
+
130
+ # Create a new MDI child window
131
+ def createTestWindow(x, y, w, h)
132
+ mdichild = FXMDIChild.new(@mdiclient, "Child", @mdiicon, @mdimenu,
133
+ 0, x, y, w, h)
134
+ scrollwindow = FXScrollWindow.new(mdichild, 0)
135
+ scrollwindow.verticalScrollBar.setLine(@font.fontHeight)
136
+ btn = FXButton.new(scrollwindow, TYGER,
137
+ :opts => LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT, :width => 600, :height => 1000)
138
+ btn.font = @font
139
+ btn.backColor = FXColor::White
140
+ mdichild
141
+ end
142
+
143
+ # New
144
+ def onCmdNew(sender, sel, ptr)
145
+ mdichild = createTestWindow(20, 20, 300, 200)
146
+ mdichild.create
147
+ return 1
148
+ end
149
+
150
+ # Start
151
+ def create
152
+ super
153
+
154
+ # At the time the first three MDI windows are constructed, we don't
155
+ # yet know the font height and so we cannot accurately set the line
156
+ # height for the vertical scrollbar. Now that the real font has been
157
+ # created, we can go back and fix the scrollbar line heights for these
158
+ # windows.
159
+ @font.create
160
+ @mdiclient.each_child do |mdichild|
161
+ mdichild.contentWindow.verticalScrollBar.setLine(@font.fontHeight)
162
+ end
163
+
164
+ show(PLACEMENT_SCREEN)
165
+ end
166
+ end
167
+
168
+ if __FILE__ == $0
169
+ # Make application
170
+ application = FXApp.new("MDIApp", "FoxTest")
171
+
172
+ # Make window
173
+ MDITestWindow.new(application)
174
+
175
+ # Create app
176
+ application.create
177
+
178
+ # Run
179
+ application.run
180
+ end
data/examples/pig.rb ADDED
@@ -0,0 +1,77 @@
1
+ #
2
+ # This is a FOX version of Thomas and Hunt's timeless classic,
3
+ # the Pig It! example (from the "Ruby/Tk" chapter of "Programming
4
+ # Ruby".
5
+ #
6
+
7
+ require 'fox16'
8
+
9
+ include Fox
10
+
11
+ class PigBox < FXMainWindow
12
+ def pig(word)
13
+ leadingCap = word =~ /^A-Z/
14
+ word.downcase!
15
+ res = case word
16
+ when /^aeiouy/
17
+ word+"way"
18
+ when /^([^aeiouy]+)(.*)/
19
+ $2+$1+"ay"
20
+ else
21
+ word
22
+ end
23
+ leadingCap ? res.capitalize : res
24
+ end
25
+
26
+ def showPig
27
+ @text.value = @text.value.split.collect{|w| pig(w)}.join(" ")
28
+ end
29
+
30
+ def initialize(app)
31
+ # Initialize base class
32
+ super(app, "Pig")
33
+
34
+ @text = FXDataTarget.new("")
35
+
36
+ top = FXVerticalFrame.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y) do |theFrame|
37
+ theFrame.padLeft = 10
38
+ theFrame.padRight = 10
39
+ theFrame.padBottom = 10
40
+ theFrame.padTop = 10
41
+ theFrame.vSpacing = 20
42
+ end
43
+
44
+ p = proc { showPig }
45
+
46
+ FXLabel.new(top, 'Enter Text:') do |theLabel|
47
+ theLabel.layoutHints = LAYOUT_FILL_X
48
+ end
49
+
50
+ FXTextField.new(top, 20, @text, FXDataTarget::ID_VALUE) do |theTextField|
51
+ theTextField.layoutHints = LAYOUT_FILL_X
52
+ theTextField.setFocus()
53
+ end
54
+
55
+ FXButton.new(top, 'Pig It') do |pigButton|
56
+ pigButton.connect(SEL_COMMAND, p)
57
+ pigButton.layoutHints = LAYOUT_CENTER_X
58
+ end
59
+
60
+ FXButton.new(top, 'Exit') do |exitButton|
61
+ exitButton.connect(SEL_COMMAND) { exit }
62
+ exitButton.layoutHints = LAYOUT_CENTER_X
63
+ end
64
+ end
65
+
66
+ def create
67
+ super
68
+ show(PLACEMENT_SCREEN)
69
+ end
70
+ end
71
+
72
+ if __FILE__ == $0
73
+ app = FXApp.new("Pig It", "FXRuby")
74
+ PigBox.new(app)
75
+ app.create
76
+ app.run
77
+ end
@@ -0,0 +1,122 @@
1
+ require 'fox16'
2
+ require 'cgi'
3
+ require 'soap/wsdlDriver'
4
+
5
+ include Fox
6
+
7
+ class RAABrowserWindow < FXMainWindow
8
+
9
+ def initialize(app)
10
+ # Initialize base class
11
+ super(app, "Ruby Application Archive", :opts => DECOR_ALL, :width => 600, :height => 600)
12
+
13
+ # Contents
14
+ contents = FXHorizontalFrame.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y)
15
+
16
+ # Horizontal splitter
17
+ splitter = FXSplitter.new(contents, (LAYOUT_SIDE_TOP|LAYOUT_FILL_X|
18
+ LAYOUT_FILL_Y|SPLITTER_TRACKING|SPLITTER_HORIZONTAL))
19
+
20
+ # Create a sunken frame to hold the tree list
21
+ groupbox = FXGroupBox.new(splitter, "Contents",
22
+ LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
23
+ frame = FXHorizontalFrame.new(groupbox,
24
+ LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK)
25
+
26
+ # Create the empty tree list
27
+ @treeList = FXTreeList.new(frame,
28
+ :opts => TREELIST_BROWSESELECT|TREELIST_SHOWS_LINES|TREELIST_SHOWS_BOXES|TREELIST_ROOT_BOXES|LAYOUT_FILL_X|LAYOUT_FILL_Y)
29
+ @treeList.connect(SEL_COMMAND) do |sender, sel, item|
30
+ if @treeList.isItemLeaf(item)
31
+ getApp().beginWaitCursor do
32
+ begin
33
+ gem = @raa.gem(item.text)
34
+ @category.value = gem.category.major + "/" + gem.category.minor
35
+ @projectName.value = gem.project.name
36
+ @version.value = gem.project.version
37
+ @status.value = gem.project.status
38
+ @lastUpdate.value = gem.updated.strftime("%F %T GMT")
39
+ @owner.value = "#{gem.owner.name} (#{gem.owner.email.to_s})"
40
+ @homepage.value = gem.project.url.to_s
41
+ @download.value = gem.project.download.to_s
42
+ @license.value = gem.project.license
43
+ @description.value = CGI::unescapeHTML(gem.project.description).gsub(/\r\n/, "\n")
44
+ rescue SOAP::PostUnavailableError => ex
45
+ getApp().endWaitCursor
46
+ FXMessageBox.error(self, MBOX_OK, "SOAP Error", ex.message)
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ # Set up data targets for the product-specific information
53
+ @category = FXDataTarget.new("")
54
+ @projectName = FXDataTarget.new("")
55
+ @version = FXDataTarget.new("")
56
+ @status = FXDataTarget.new("")
57
+ @lastUpdate = FXDataTarget.new("")
58
+ @owner = FXDataTarget.new("")
59
+ @homepage = FXDataTarget.new("")
60
+ @download = FXDataTarget.new("")
61
+ @license = FXDataTarget.new("")
62
+ @description = FXDataTarget.new("")
63
+
64
+ # Information appears on the right-hand side
65
+ infoFrame = FXVerticalFrame.new(splitter, LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT|FRAME_SUNKEN|FRAME_THICK)
66
+
67
+ infoBox = FXGroupBox.new(infoFrame, "Info", GROUPBOX_NORMAL|LAYOUT_FILL_X|FRAME_GROOVE)
68
+ infoMatrix = FXMatrix.new(infoBox, 2, MATRIX_BY_COLUMNS|LAYOUT_FILL_X|LAYOUT_FILL_Y)
69
+ FXLabel.new(infoMatrix, "Category:")
70
+ FXTextField.new(infoMatrix, 20, @category, FXDataTarget::ID_VALUE, TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
71
+ FXLabel.new(infoMatrix, "Project name:")
72
+ FXTextField.new(infoMatrix, 20, @projectName, FXDataTarget::ID_VALUE, TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
73
+ FXLabel.new(infoMatrix, "Version:")
74
+ FXTextField.new(infoMatrix, 20, @version, FXDataTarget::ID_VALUE, TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
75
+ FXLabel.new(infoMatrix, "Status:")
76
+ FXTextField.new(infoMatrix, 20, @status, FXDataTarget::ID_VALUE, TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
77
+ FXLabel.new(infoMatrix, "Last update:")
78
+ FXTextField.new(infoMatrix, 20, @lastUpdate, FXDataTarget::ID_VALUE, TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
79
+ FXLabel.new(infoMatrix, "Owner:")
80
+ FXTextField.new(infoMatrix, 20, @owner, FXDataTarget::ID_VALUE, TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
81
+ FXLabel.new(infoMatrix, "Homepage:")
82
+ FXTextField.new(infoMatrix, 20, @homepage, FXDataTarget::ID_VALUE, TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
83
+ FXLabel.new(infoMatrix, "Download:")
84
+ FXTextField.new(infoMatrix, 20, @download, FXDataTarget::ID_VALUE, TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
85
+ FXLabel.new(infoMatrix, "License:")
86
+ FXTextField.new(infoMatrix, 20, @license, FXDataTarget::ID_VALUE, TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
87
+
88
+ descriptionBox = FXGroupBox.new(infoFrame, "Description", GROUPBOX_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
89
+ descriptionFrame = FXHorizontalFrame.new(descriptionBox, FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
90
+ FXText.new(descriptionFrame, @description, FXDataTarget::ID_VALUE, TEXT_READONLY|TEXT_WORDWRAP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
91
+
92
+ # Initialize the service
93
+ @raa = SOAP::WSDLDriverFactory.new("http://www2.ruby-lang.org/xmlns/soap/interface/RAA/0.0.4/").create_rpc_driver
94
+
95
+ # Set up the product tree list
96
+ @productTree = @raa.tree_by_category
97
+ @productTree.keys.sort.each do |sectionName|
98
+ sectionHash = @productTree[sectionName]
99
+ sectionItem = @treeList.appendItem(nil, sectionName)
100
+ sectionHash.keys.sort.each do |categoryName|
101
+ categoryArray = sectionHash[categoryName]
102
+ categoryItem = @treeList.appendItem(sectionItem, categoryName)
103
+ categoryArray.each do |productName|
104
+ productItem = @treeList.appendItem(categoryItem, productName)
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ def create
111
+ super
112
+ @treeList.parent.parent.setWidth(@treeList.font.getTextWidth('M'*24))
113
+ show(PLACEMENT_SCREEN)
114
+ end
115
+ end
116
+
117
+ if __FILE__ == $0
118
+ app = FXApp.new("RAABrowser", "FoxTest")
119
+ RAABrowserWindow.new(app)
120
+ app.create
121
+ app.run
122
+ end