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
data/lib/fox16/core.rb ADDED
@@ -0,0 +1,681 @@
1
+ module Fox
2
+
3
+ class FXIconItem
4
+ def <=>(otherItem)
5
+ text <=> otherItem.text
6
+ end
7
+ end
8
+
9
+ class FXListItem
10
+ def <=>(otherItem)
11
+ text <=> otherItem.text
12
+ end
13
+ end
14
+
15
+ class FXTreeItem
16
+ def <=>(otherItem)
17
+ text <=> otherItem.text
18
+ end
19
+ end
20
+
21
+ class FXTreeList
22
+ def addItemFirst(*args) # :nodoc:
23
+ warn "addItemFirst() is deprecated; use prependItem() instead"
24
+ prependItem(*args)
25
+ end
26
+
27
+ def addItemLast(*args) # :nodoc:
28
+ warn "addItemLast() is deprecated; use appendItem() instead"
29
+ appendItem(*args)
30
+ end
31
+
32
+ def addItemAfter(other, *args) # :nodoc:
33
+ warn "addItemAfter() is deprecated; use insertItem() instead"
34
+ insertItem(other.next, other.parent, *args)
35
+ end
36
+
37
+ def addItemBefore(other, *args) # :nodoc:
38
+ warn "addItemBefore() is deprecated; use insertItem() instead"
39
+ insertItem(other, other.parent, *args)
40
+ end
41
+
42
+ def reparentItem(item, father) # :nodoc:
43
+ warn "reparentItem() is deprecated; use moveItem() instead"
44
+ moveItem(nil, father, item)
45
+ end
46
+
47
+ def moveItemBefore(other, item) # :nodoc:
48
+ warn "moveItemBefore() is deprecated; use moveItem() instead"
49
+ moveItem(other, other.parent, item)
50
+ end
51
+
52
+ def moveItemAfter(other, item) # :nodoc:
53
+ warn "moveItemAfter() is deprecated; use moveItem() instead"
54
+ moveItem(other.next, other.parent, item)
55
+ end
56
+ end
57
+
58
+ class FXTreeListBox
59
+ def addItemFirst(*args) # :nodoc:
60
+ warn "addItemFirst() is deprecated; use prependItem() instead"
61
+ prependItem(*args)
62
+ end
63
+ def addItemLast(*args) # :nodoc:
64
+ warn "addItemLast() is deprecated; use appendItem() instead"
65
+ appendItem(*args)
66
+ end
67
+ def addItemAfter(other, *args) # :nodoc:
68
+ warn "addItemAfter() is deprecated; use insertItem() instead"
69
+ insertItem(other.next, other.parent, *args)
70
+ end
71
+ def addItemBefore(other, *args) # :nodoc:
72
+ warn "addItemBefore() is deprecated; use insertItem() instead"
73
+ insertItem(other, other.parent, *args)
74
+ end
75
+ end
76
+
77
+ class FXDataTarget
78
+ #
79
+ # Returns the stringified representation of this
80
+ # data target's value.
81
+ #
82
+ def to_s
83
+ value.to_s
84
+ end
85
+ end
86
+
87
+ class FXDockBar
88
+ # Allow docking on the specified side, where _side_ is one of the +ALLOW+
89
+ # constants listed above.
90
+ def allowSide(side)
91
+ self.allowedSides = self.allowedSides | side
92
+ end
93
+
94
+ # Disallow docking on the specified side, where _side_ is one of the
95
+ # +ALLOW+ constants listed above.
96
+ def disallowSide(side)
97
+ self.allowedSides = self.allowedSides & ~side
98
+ end
99
+
100
+ # Return +true+ if docking is allowed on the specified side, where _side_
101
+ # is one of the +ALLOW+ constants listed above.
102
+ #
103
+ def allowedSide?(side)
104
+ (allowedSides & side) != 0
105
+ end
106
+ end
107
+
108
+ class FXFileDialog
109
+ # Allow navigation for this file dialog
110
+ def allowNavigation
111
+ self.navigationAllowed = true
112
+ end
113
+
114
+ # Disallow navigation for this file dialog
115
+ def disallowNavigation
116
+ self.navigationAllowed = false
117
+ end
118
+ end
119
+
120
+ class FXFileList
121
+ #
122
+ # Show parent directories.
123
+ #
124
+ def showParentDirs
125
+ self.parentDirsShown = true
126
+ end
127
+
128
+ #
129
+ # Hide parent directories
130
+ #
131
+ def hideParentDirs
132
+ self.parentDirsShown = false
133
+ end
134
+ end
135
+
136
+ class FXFileSelector
137
+ # Allow navigation for this file selector
138
+ def allowNavigation
139
+ self.navigationAllowed = true
140
+ end
141
+
142
+ # Disallow navigation for this file selector
143
+ def disallowNavigation
144
+ self.navigationAllowed = false
145
+ end
146
+ end
147
+
148
+ class FXHeader
149
+ #
150
+ # Returns true if the specified header item's arrow points
151
+ # up. Raises IndexError if _index_ is out of bounds.
152
+ #
153
+ def arrowUp?(index)
154
+ if index < 0 || index >= numItems
155
+ raise IndexError, "header item index out of bounds"
156
+ else
157
+ getArrowDir(index) == Fox::TRUE
158
+ end
159
+ end
160
+
161
+ #
162
+ # Returns true if the specified header item's arrow points
163
+ # down. Raises IndexError if _index_ is out of bounds.
164
+ #
165
+ def arrowDown?(index)
166
+ if index < 0 || index >= numItems
167
+ raise IndexError, "header item index out of bounds"
168
+ else
169
+ getArrowDir(index) == Fox::FALSE
170
+ end
171
+ end
172
+
173
+ #
174
+ # Returns true if the specified header item does not display
175
+ # any arrow. Raises IndexError if _index_ is out of bounds.
176
+ #
177
+ def arrowMaybe?(index)
178
+ if index < 0 || index >= numItems
179
+ raise IndexError, "header item index out of bounds"
180
+ else
181
+ getArrowDir(index) == Fox::MAYBE
182
+ end
183
+ end
184
+ end
185
+
186
+ class FXHiliteStyle
187
+ #
188
+ # Construct a new FXHiliteStyle instance, with fields initialized from
189
+ # an FXText instance.
190
+ #
191
+ def FXHiliteStyle.from_text(textw)
192
+ hs = new
193
+ hs.activeBackColor = textw.activeBackColor
194
+ hs.hiliteBackColor = textw.hiliteBackColor
195
+ hs.hiliteForeColor = textw.hiliteTextColor
196
+ hs.normalBackColor = textw.backColor
197
+ hs.normalForeColor = textw.textColor
198
+ hs.selectBackColor = textw.selBackColor
199
+ hs.selectForeColor = textw.selTextColor
200
+ hs.style = 0
201
+ hs
202
+ end
203
+ end
204
+
205
+ class FXScrollArea
206
+ # Returns a reference to the scroll corner (an FXScrollCorner instance) for this window.
207
+ def scrollCorner
208
+ verticalScrollBar.next
209
+ end
210
+ end
211
+
212
+ class FXSettings
213
+ #
214
+ # Read a boolean registry entry from the specified _section_ and _key_.
215
+ # If no value is found, the _default_ value is returned.
216
+ #
217
+ def readBoolEntry(section, key, default=false)
218
+ default = default ? 1 : 0
219
+ readIntEntry(section, key, default) != 0
220
+ end
221
+
222
+ #
223
+ # Write a boolean registry _value_ to the specified _section_ and _key_.
224
+ #
225
+ def writeBoolEntry(section, key, value)
226
+ writeIntEntry(section, key, value ? 1 : 0)
227
+ end
228
+ end
229
+
230
+ class FXVec2d
231
+ # Convert to array
232
+ def to_a
233
+ [x, y]
234
+ end
235
+
236
+ # Convert to string
237
+ def to_s
238
+ to_a.to_s
239
+ end
240
+ end
241
+
242
+ class FXVec2f
243
+ # Convert to array
244
+ def to_a; [x, y]; end
245
+
246
+ # Convert to string
247
+ def to_s; to_a.to_s; end
248
+ end
249
+
250
+ class FXVec3d
251
+ # Convert to array
252
+ def to_a; [x, y, z]; end
253
+
254
+ # Convert to string
255
+ def to_s; to_a.to_s; end
256
+ end
257
+
258
+ class FXVec3f
259
+ # Convert to array
260
+ def to_a; [x, y, z]; end
261
+
262
+ # Convert to string
263
+ def to_s; to_a.to_s; end
264
+ end
265
+
266
+ class FXVec4d
267
+ # Convert to array
268
+ def to_a; [x, y, z, w]; end
269
+
270
+ # Convert to string
271
+ def to_s; to_a.to_s; end
272
+ end
273
+
274
+ class FXVec4f
275
+ # Convert to array
276
+ def to_a; [x, y, z, w]; end
277
+
278
+ # Convert to string
279
+ def to_s; to_a.to_s; end
280
+ end
281
+
282
+ class FXWindow
283
+ #
284
+ # Iterate over the child windows for this window.
285
+ # Note that this only reaches the direct child windows for this window
286
+ # and no deeper descendants. To traverse the entire widget tree,
287
+ # use #each_child_recursive.
288
+ #
289
+ def each_child # :yields: child
290
+ child = self.first
291
+ while child
292
+ next_child = child.next
293
+ yield child
294
+ child = next_child
295
+ end
296
+ end
297
+
298
+ #
299
+ # Traverse the widget tree starting from this window
300
+ # using depth-first traversal.
301
+ #
302
+ def each_child_recursive # :yields: child
303
+ each_child do |child|
304
+ yield child
305
+ child.each_child_recursive do |subchild|
306
+ yield subchild
307
+ end
308
+ end
309
+ end
310
+
311
+
312
+ # Returns an array containing all child windows of this window
313
+ def children
314
+ kids = []
315
+ each_child { |kid| kids << kid }
316
+ kids
317
+ end
318
+
319
+ # Return +true+ if this window (self) comes before sibling window _other_.
320
+ def before?(other)
321
+ FXWindow.before?(other)
322
+ end
323
+
324
+ # Return +true+ if this window (_self_) comes after sibling window _other_,
325
+ def after?(other)
326
+ FXWindow.after?(other)
327
+ end
328
+
329
+ # Relink this window before sibling window _other_, in the parent's window list.
330
+ def linkBefore(other)
331
+ reparent(self.parent, other)
332
+ end
333
+
334
+ # Relink this window after sibling window _other_, in the parent's window list.
335
+ def linkAfter(other)
336
+ reparent(self.parent, other.next)
337
+ end
338
+
339
+ # Setting visible to +true+ calls #show, setting it to +false+ calls #hide.
340
+ def visible=(vis)
341
+ if vis
342
+ show
343
+ else
344
+ hide
345
+ end
346
+ end
347
+ end
348
+
349
+ #
350
+ # The drag-and-drop data used for colors is a sequence of unsigned short
351
+ # integers, in native byte ordering. Here, we use the 'S' directive for
352
+ # String#unpack (which treats two successive characters as an unsigned short
353
+ # in native byte order) to decode the R, G, B and A values.
354
+ #
355
+ def Fox.fxdecodeColorData(data)
356
+ clr = data.unpack('S4')
357
+ Fox.FXRGBA((clr[0]+128)/257, (clr[1]+128)/257, (clr[2]+128)/257, (clr[3]+128)/257)
358
+ end
359
+
360
+ #
361
+ # The drag-and-drop data used for colors is a sequence of unsigned short
362
+ # integers, in native byte ordering. Here, we use the 'S' directive for
363
+ # Array#pack (which treats two successive characters as an unsigned short
364
+ # in native byte order) to encode the R, G, B and A values.
365
+ #
366
+ def Fox.fxencodeColorData(rgba)
367
+ clr = [ 257*Fox.FXREDVAL(rgba), 257*Fox.FXGREENVAL(rgba), 257*Fox.FXBLUEVAL(rgba), 257*Fox.FXALPHAVAL(rgba) ]
368
+ clr.pack('S4')
369
+ end
370
+
371
+ #
372
+ # The drag-and-drop data used for clipboard strings (i.e. when the
373
+ # drag type is FXWindow.stringType) is either a null-terminated
374
+ # string (for Microsoft Windows) or a non-null terminated string
375
+ # (for X11). Use this method to convert string data from the
376
+ # clipboard back into a Ruby string.
377
+ #
378
+ def Fox.fxdecodeStringData(data)
379
+ if /mswin/ =~ PLATFORM
380
+ data.chop
381
+ else
382
+ data
383
+ end
384
+ end
385
+
386
+ #
387
+ # The drag-and-drop data used for clipboard strings (i.e. when the
388
+ # drag type is FXWindow.stringType) is either a null-terminated
389
+ # string (for Microsoft Windows) or a non-null terminated string
390
+ # (for X11). Use this method to convert Ruby strings into a format
391
+ # appropriate for the current platform.
392
+ #
393
+ def Fox.fxencodeStringData(str)
394
+ if /mswin/ =~ PLATFORM
395
+ str + "\0"
396
+ else
397
+ str
398
+ end
399
+ end
400
+
401
+ #
402
+ # FXStreamError is the base class for exceptions which can occur when
403
+ # working with FXStream and its subclasses.
404
+ #
405
+ class FXStreamError < StandardError
406
+ #
407
+ # This is a factory method that takes an FXStreamStatus code
408
+ # as its input and returns the appropriate exception class.
409
+ #
410
+ def FXStreamError.makeStreamError(status)
411
+ case status
412
+ when FXStreamEnd
413
+ FXStreamEndError
414
+ when FXStreamFull
415
+ FXStreamFullError
416
+ when FXStreamNoWrite
417
+ FXStreamNoWriteError
418
+ when FXStreamNoRead
419
+ FXStreamNoReadError
420
+ when FXStreamFormat
421
+ FXStreamFormatError
422
+ when FXStreamUnknown
423
+ FXStreamUnknownError
424
+ when FXStreamAlloc
425
+ FXStreamAllocError
426
+ when FXStreamFailure
427
+ FXStreamFailureError
428
+ else
429
+ FXStreamError
430
+ end
431
+ end
432
+ end
433
+
434
+ # Tried to read past the end of a stream
435
+ class FXStreamEndError < FXStreamError ; end
436
+
437
+ # Filled up a stream's internal buffer, or the disk is full
438
+ class FXStreamFullError < FXStreamError ; end
439
+
440
+ # Unable to open for write
441
+ class FXStreamNoWriteError < FXStreamError ; end
442
+
443
+ # Unable to open for read
444
+ class FXStreamNoReadError < FXStreamError ; end
445
+
446
+ # Stream format error
447
+ class FXStreamFormatError < FXStreamError ; end
448
+
449
+ # Trying to read unknown class
450
+ class FXStreamUnknownError < FXStreamError ; end
451
+
452
+ # Alloc failed
453
+ class FXStreamAllocError < FXStreamError ; end
454
+
455
+ # General failure
456
+ class FXStreamFailureError < FXStreamError ; end
457
+
458
+ class FXCheckButton
459
+ # Return +true+ if this check button is in the checked state.
460
+ def checked?
461
+ self.checkState == TRUE
462
+ end
463
+
464
+ # Return +true+ if this check button is in the unchecked state.
465
+ def unchecked?
466
+ self.checkState == FALSE
467
+ end
468
+
469
+ # Return +true+ if this check button is in the indeterminate, or "maybe", state.
470
+ def maybe?
471
+ self.checkState == MAYBE
472
+ end
473
+ end
474
+
475
+ class FXComboTableItem < FXTableItem
476
+ #
477
+ # Construct new combobox table item
478
+ #
479
+ def initialize(text, ic=nil, ptr=nil)
480
+ super(nil, ic, ptr)
481
+ self.selections = text
482
+ end
483
+
484
+ # Create input control for editing this item
485
+ def getControlFor(table)
486
+ combo = FXComboBox.new(table, 1, :opts => COMBOBOX_STATIC, :padLeft => table.marginLeft, :padRight => table.marginRight, :padTop => table.marginTop, :padBottom => table.marginBottom)
487
+ combo.create
488
+ justify = 0
489
+ justify |= JUSTIFY_LEFT if (self.justify & FXTableItem::LEFT) != 0
490
+ justify |= JUSTIFY_RIGHT if (self.justify & FXTableItem::RIGHT) != 0
491
+ justify |= JUSTIFY_TOP if (self.justify & FXTableItem::TOP) != 0
492
+ justify |= JUSTIFY_BOTTOM if (self.justify & FXTableItem::BOTTOM) != 0
493
+ combo.justify = justify
494
+ combo.font = table.font
495
+ combo.backColor = table.backColor
496
+ combo.textColor = table.textColor
497
+ combo.selBackColor = table.selBackColor
498
+ combo.selTextColor = table.selTextColor
499
+ combo.fillItems(selections)
500
+ combo.text = text
501
+ combo.numVisible = [20, combo.numItems].min
502
+ combo
503
+ end
504
+
505
+ # Set value from input control
506
+ def setFromControl(comboBox)
507
+ self.text = comboBox.text
508
+ end
509
+
510
+ # Set selections as an array of strings
511
+ def selections=(strings)
512
+ @selections = strings
513
+ if @selections.empty?
514
+ self.text = nil
515
+ else
516
+ self.text = @selections[0]
517
+ end
518
+ end
519
+
520
+ # Return selections
521
+ def selections
522
+ @selections
523
+ end
524
+ end
525
+
526
+ class FXMenuCheck
527
+ # Return +true+ if this menu check button is in the checked state.
528
+ def checked?
529
+ self.checkState == TRUE
530
+ end
531
+
532
+ # Return +true+ if this menu check button is in the unchecked state.
533
+ def unchecked?
534
+ self.checkState == FALSE
535
+ end
536
+
537
+ # Return +true+ if this menu check button is in the indeterminate, or "maybe", state.
538
+ def maybe?
539
+ self.checkState == MAYBE
540
+ end
541
+ end
542
+
543
+ class FXRadioButton
544
+ # Return +true+ if this radio button is in the checked state.
545
+ def checked?
546
+ self.checkState == TRUE
547
+ end
548
+
549
+ # Return +true+ if this radio button is in the unchecked state.
550
+ def unchecked?
551
+ self.checkState == FALSE
552
+ end
553
+
554
+ # Return +true+ if this radio button is in the indeterminate, or "maybe", state.
555
+ def maybe?
556
+ self.checkState == MAYBE
557
+ end
558
+ end
559
+
560
+ class FXMenuRadio
561
+ # Return +true+ if this menu radio button is in the checked state.
562
+ def checked?
563
+ self.checkState == TRUE
564
+ end
565
+
566
+ # Return +true+ if this menu radio button is in the unchecked state.
567
+ def unchecked?
568
+ self.checkState == FALSE
569
+ end
570
+
571
+ # Return +true+ if this menu radio button is in the indeterminate, or "maybe", state.
572
+ def maybe?
573
+ self.checkState == MAYBE
574
+ end
575
+ end
576
+
577
+ class FXDC
578
+ #
579
+ # Draw a circle centered at (_x_, _y_), with specified radius.
580
+ #
581
+ # === Parameters:
582
+ #
583
+ # +x+:: x-coordinate of the circle's center [Integer]
584
+ # +y+:: y-coordinate of the circle's center [Integer]
585
+ # +r+:: radius of the circle, in pixels [Integer]
586
+ #
587
+ # See also #fillCircle.
588
+ #
589
+ def drawCircle(x, y, r)
590
+ drawArc(x-r, y-r, 2*r, 2*r, 0, 360*64)
591
+ end
592
+
593
+ #
594
+ # Draw a filled circle centered at (_x_, _y_), with specified radius.
595
+ #
596
+ # === Parameters:
597
+ #
598
+ # +x+:: x-coordinate of the circle's center [Integer]
599
+ # +y+:: y-coordinate of the circle's center [Integer]
600
+ # +r+:: radius of the circle, in pixels [Integer]
601
+ #
602
+ # See also #drawCircle.
603
+ #
604
+ def fillCircle(x, y, r)
605
+ fillArc(x-r, y-r, 2*r, 2*r, 0, 360*64)
606
+ end
607
+ end
608
+
609
+ class FXHVec
610
+ def normalize!
611
+ normalized = self.normalize
612
+ 0.upto(3) { |idx| self[idx] = normalized[idx] }
613
+ self
614
+ end
615
+ end
616
+
617
+ class FXTable
618
+ #
619
+ # Append _numColumns_ columns to the right of the table..
620
+ # If _notify_ is +true+, a <tt>SEL_INSERTED</tt> message is sent to the
621
+ # table�s message target for each cell that is inserted.
622
+ #
623
+ def appendColumns(numColumns=1, notify=false)
624
+ insertColumns(self.numColumns, numColumns, notify)
625
+ end
626
+
627
+ #
628
+ # Append _numRows_ rows to the bottom of the table..
629
+ # If _notify_ is +true+, a <tt>SEL_INSERTED</tt> message is sent to the
630
+ # table�s message target for each cell that is inserted.
631
+ #
632
+ def appendRows(numRows=1, notify=false)
633
+ insertRows(self.numRows, numRows, notify)
634
+ end
635
+
636
+ # Select cell at (_row_, _col_).
637
+ # If _notify_ is +true+, a +SEL_SELECTED+ message is sent to the table's message target
638
+ # after the item is selected.
639
+ # Raises IndexError if either _row_ or _col_ is out of bounds.
640
+ #
641
+ def selectItem(row, col, notify=false)
642
+ selectRange(row, row, col, col, notify)
643
+ end
644
+
645
+ =begin
646
+
647
+ # Deselect cell at (_row_, _col_).
648
+ # If _notify_ is +true+, a +SEL_DESELECTED+ message is sent to the table's message target
649
+ # after the item is deselected.
650
+ # Raises IndexError if either _row_ or _col_ is out of bounds.
651
+ #
652
+ def deselectItem(row, col, notify=false)
653
+ raise IndexError, "row index out of bounds" if row < 0 || row >= numRows
654
+ raise IndexError, "column index out of bounds" if col < 0 || col >= numColumns
655
+ deselectRange(row, row, col, col, notify)
656
+ end
657
+
658
+ # Deselect range.
659
+ # If _notify_ is +true+, a +SEL_DESELECTED+ message is sent to the table's message
660
+ # target for each previously selected cell that becomes deselected as a result of
661
+ # this operation.
662
+ # Raises IndexError if _startRow_, _endRow_, _startColumn_ or _endColumn_ is out of bounds.
663
+ def deselectRange(startRow, endRow, startColumn, endColumn, notify=false)
664
+ raise IndexError, "starting row index out of bounds" if startRow < 0 || startRow >= numRows
665
+ raise IndexError, "ending row index out of bounds" if endRow < 0 || endRow >= numRows
666
+ raise IndexError, "starting column index out of bounds" if startColumn < 0 || startColumn >= numColumns
667
+ raise IndexError, "ending column index out of bounds" if endColumn < 0 || endColumn >= numColumns
668
+ changes = false
669
+ for row in startRow..endRow
670
+ for col in startColumn..endColumn
671
+ changes |= deselectItem(row, col, notify)
672
+ end
673
+ end
674
+ changes
675
+ end
676
+
677
+ =end
678
+
679
+ end
680
+ end
681
+