fxruby 1.6.14-universal-darwin-9

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 (491) 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 +697 -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 +93 -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.bundle +0 -0
  186. data/lib/fox16/aliases.rb +5598 -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 +371 -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 +211 -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 +33 -0
  281. data/rdoc-sources/FXHeader.rb +408 -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 +447 -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 +77 -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 +69 -0
  298. data/rdoc-sources/FXList.rb +440 -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 +50 -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 +72 -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 +578 -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 +36 -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 +15 -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 +52 -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_FXDirList.rb +30 -0
  423. data/tests/TC_FXFileAssoc.rb +62 -0
  424. data/tests/TC_FXFileStream.rb +90 -0
  425. data/tests/TC_FXFoldingList.rb +32 -0
  426. data/tests/TC_FXFont.rb +69 -0
  427. data/tests/TC_FXFontDesc.rb +58 -0
  428. data/tests/TC_FXGLGroup.rb +32 -0
  429. data/tests/TC_FXGLShape.rb +28 -0
  430. data/tests/TC_FXGLViewer.rb +20 -0
  431. data/tests/TC_FXGradientBar.rb +89 -0
  432. data/tests/TC_FXHeader.rb +82 -0
  433. data/tests/TC_FXIconDict.rb +52 -0
  434. data/tests/TC_FXIconList.rb +192 -0
  435. data/tests/TC_FXId.rb +19 -0
  436. data/tests/TC_FXImage.rb +155 -0
  437. data/tests/TC_FXLight.rb +33 -0
  438. data/tests/TC_FXList.rb +116 -0
  439. data/tests/TC_FXListBox.rb +49 -0
  440. data/tests/TC_FXMat4f.rb +228 -0
  441. data/tests/TC_FXMaterial.rb +89 -0
  442. data/tests/TC_FXMemoryStream.rb +97 -0
  443. data/tests/TC_FXMenuCheck.rb +57 -0
  444. data/tests/TC_FXMenuCommand.rb +12 -0
  445. data/tests/TC_FXMenuRadio.rb +57 -0
  446. data/tests/TC_FXPoint.rb +57 -0
  447. data/tests/TC_FXQuatf.rb +77 -0
  448. data/tests/TC_FXRadioButton.rb +57 -0
  449. data/tests/TC_FXRangef.rb +48 -0
  450. data/tests/TC_FXRectangle.rb +88 -0
  451. data/tests/TC_FXRegion.rb +54 -0
  452. data/tests/TC_FXRegistry.rb +27 -0
  453. data/tests/TC_FXScrollArea.rb +28 -0
  454. data/tests/TC_FXScrollWindow.rb +28 -0
  455. data/tests/TC_FXSegment.rb +22 -0
  456. data/tests/TC_FXSettings.rb +34 -0
  457. data/tests/TC_FXShell.rb +26 -0
  458. data/tests/TC_FXSize.rb +54 -0
  459. data/tests/TC_FXStream.rb +11 -0
  460. data/tests/TC_FXTable.rb +368 -0
  461. data/tests/TC_FXTableItem.rb +48 -0
  462. data/tests/TC_FXText.rb +96 -0
  463. data/tests/TC_FXTopWindow.rb +32 -0
  464. data/tests/TC_FXTreeList.rb +100 -0
  465. data/tests/TC_FXTreeListBox.rb +41 -0
  466. data/tests/TC_FXUndoList.rb +43 -0
  467. data/tests/TC_FXVec2d.rb +142 -0
  468. data/tests/TC_FXVec2f.rb +137 -0
  469. data/tests/TC_FXVec3d.rb +150 -0
  470. data/tests/TC_FXVec3f.rb +150 -0
  471. data/tests/TC_FXVec4f.rb +158 -0
  472. data/tests/TC_FXViewport.rb +30 -0
  473. data/tests/TC_FXXBMIcon.rb +15 -0
  474. data/tests/TC_FXXBMImage.rb +15 -0
  475. data/tests/TC_FXXPMIcon.rb +15 -0
  476. data/tests/TC_FXXPMImage.rb +15 -0
  477. data/tests/TC_Misc.rb +157 -0
  478. data/tests/TC_downcast.rb +15 -0
  479. data/tests/TS_All.rb +25 -0
  480. data/tests/blankpage.ps +166 -0
  481. data/tests/howdypage.ps +181 -0
  482. data/tests/output.ps +166 -0
  483. data/tests/stress1.rb +92 -0
  484. data/tests/stress2.rb +51 -0
  485. data/tests/stress3.rb +117 -0
  486. data/tests/testcase.rb +37 -0
  487. data/web/community.html +94 -0
  488. data/web/documentation.html +100 -0
  489. data/web/downloads.html +114 -0
  490. data/web/index.html +96 -0
  491. metadata +550 -0
@@ -0,0 +1,211 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fox16'
4
+
5
+ include Fox
6
+
7
+ class SplitterWindow < FXMainWindow
8
+
9
+ # Convenience function to load & construct an icon
10
+ def makeIcon(filename)
11
+ begin
12
+ filename = File.join("icons", filename)
13
+ icon = nil
14
+ File.open(filename, "rb") do |f|
15
+ icon = FXPNGIcon.new(getApp(), f.read)
16
+ end
17
+ icon
18
+ rescue
19
+ raise RuntimeError, "Couldn't load icon: #{filename}"
20
+ end
21
+ end
22
+
23
+
24
+ def initialize(app)
25
+ # Do base class initialize first
26
+ super(app, "Splitter Test", :opts => DECOR_ALL, :width => 800, :height => 600)
27
+
28
+ # Construct some icons we'll use
29
+ folder_open = makeIcon("minifolderopen.png")
30
+ folder_closed = makeIcon("minifolder.png")
31
+ doc = makeIcon("minidoc.png")
32
+
33
+ # Menu bar
34
+ menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
35
+
36
+ # Status bar
37
+ status = FXStatusBar.new(self,
38
+ LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER)
39
+
40
+ # File menu
41
+ filemenu = FXMenuPane.new(self)
42
+ FXMenuCommand.new(filemenu, "Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT)
43
+ FXMenuTitle.new(menubar, "&File", nil, filemenu)
44
+
45
+ # Main window interior
46
+ @splitter = FXSplitter.new(self, (LAYOUT_SIDE_TOP|LAYOUT_FILL_X|
47
+ LAYOUT_FILL_Y|SPLITTER_REVERSED|SPLITTER_TRACKING))
48
+ group1 = FXVerticalFrame.new(@splitter,
49
+ FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
50
+ group2 = FXVerticalFrame.new(@splitter,
51
+ FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
52
+ group3 = FXVerticalFrame.new(@splitter,
53
+ FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
54
+
55
+ # Mode menu
56
+ modemenu = FXMenuPane.new(self)
57
+ FXMenuCommand.new(modemenu, "Reverse\t\tReverse split order").connect(SEL_COMMAND) {
58
+ @splitter.splitterStyle |= SPLITTER_REVERSED
59
+ }
60
+ FXMenuCommand.new(modemenu, "Normal\t\tNormal split order").connect(SEL_COMMAND) {
61
+ @splitter.splitterStyle &= ~SPLITTER_REVERSED
62
+ }
63
+ FXMenuCommand.new(modemenu, "Horizontal\t\tHorizontal split").connect(SEL_COMMAND) {
64
+ @splitter.splitterStyle &= ~SPLITTER_VERTICAL
65
+ }
66
+ FXMenuCommand.new(modemenu, "Vertical\t\tVertical split").connect(SEL_COMMAND) {
67
+ @splitter.splitterStyle |= SPLITTER_VERTICAL
68
+ }
69
+ trackingBtn = FXMenuCheck.new(modemenu, "Tracking\t\tToggle continuous tracking mode")
70
+ trackingBtn.connect(SEL_COMMAND, method(:onCmdTracking))
71
+ trackingBtn.connect(SEL_UPDATE, method(:onUpdTracking))
72
+ FXMenuCheck.new(modemenu, "Toggle pane 1", group1, FXWindow::ID_TOGGLESHOWN)
73
+ FXMenuCheck.new(modemenu, "Toggle pane 2", group2, FXWindow::ID_TOGGLESHOWN)
74
+ FXMenuCheck.new(modemenu, "Toggle pane 3", group3, FXWindow::ID_TOGGLESHOWN)
75
+
76
+ FXMenuTitle.new(menubar, "&Mode", nil, modemenu)
77
+
78
+ tree = FXTreeList.new(group1,
79
+ :opts => (LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_RIGHT|TREELIST_SHOWS_LINES|
80
+ TREELIST_SHOWS_BOXES|TREELIST_ROOT_BOXES|TREELIST_EXTENDEDSELECT))
81
+
82
+ topmost = tree.appendItem(nil, "Top", folder_open, folder_closed)
83
+ tree.expandTree(topmost)
84
+ tree.appendItem(topmost, "First", doc, doc)
85
+ tree.appendItem(topmost, "Second", doc, doc)
86
+ tree.appendItem(topmost, "Third", doc, doc)
87
+ branch = tree.appendItem(topmost, "Fourth", folder_open, folder_closed)
88
+ tree.expandTree(branch)
89
+ tree.appendItem(branch, "Fourth-First", doc, doc)
90
+ tree.appendItem(branch, "Fourth-Second", doc, doc)
91
+ twig = tree.appendItem(branch, "Fourth-Third",
92
+ folder_open, folder_closed)
93
+ tree.appendItem(twig, "Fourth-Third-First", doc, doc)
94
+ tree.appendItem(twig, "Fourth-Third-Second", doc, doc)
95
+ tree.appendItem(twig, "Fourth-Third-Third", doc, doc)
96
+ leaf = tree.appendItem(twig, "Fourth-Third-Fourth",
97
+ folder_open, folder_closed)
98
+ leaf.setEnabled(false)
99
+ tree.appendItem(leaf, "Fourth-Third-Fourth-First", doc, doc)
100
+ tree.appendItem(leaf, "Fourth-Third-Fourth-Second", doc, doc)
101
+ tree.appendItem(leaf, "Fourth-Third-Fourth-Third", doc, doc)
102
+ twig = tree.appendItem(branch, "Fourth-Fourth",
103
+ folder_open, folder_closed)
104
+ tree.appendItem(twig, "Fourth-Fourth-First", doc, doc)
105
+ tree.appendItem(twig, "Fourth-Fourth-Second", doc, doc)
106
+ tree.appendItem(twig, "Fourth-Fourth-Third", doc, doc)
107
+ 0.upto(9) { |i| tree.appendItem(twig, i.to_s, doc, doc) }
108
+ twig = tree.appendItem(branch, "Fourth-Fifth",
109
+ folder_open, folder_closed)
110
+ tree.expandTree(twig)
111
+ tree.appendItem(twig, "Fourth-Fifth-First", doc, doc)
112
+ tree.appendItem(twig, "Fourth-Fifth-Second", doc, doc)
113
+ tree.appendItem(twig, "Fourth-Fifth-Third", doc, doc)
114
+ 0.upto(9) { |i| tree.appendItem(twig, i.to_s, doc, doc) }
115
+ tree.appendItem(topmost, "Fifth", doc, doc)
116
+ tree.appendItem(topmost, "Sixth", doc, doc)
117
+ branch = tree.appendItem(topmost, "Seventh", folder_open, folder_closed)
118
+ tree.appendItem(branch, "Seventh-First", doc, doc)
119
+ tree.appendItem(branch, "Seventh-Second", doc, doc)
120
+ tree.appendItem(branch, "Seventh-Third", doc, doc)
121
+ tree.appendItem(topmost, "Eighth", doc, doc)
122
+
123
+ FXLabel.new(group2, "Matrix", nil, LAYOUT_CENTER_X)
124
+ FXHorizontalSeparator.new(group2, SEPARATOR_GROOVE|LAYOUT_FILL_X)
125
+ matrix = FXMatrix.new(group2, 2, MATRIX_BY_COLUMNS|LAYOUT_FILL_X)
126
+
127
+ FXLabel.new(matrix, "Alpha:", nil,
128
+ JUSTIFY_RIGHT|LAYOUT_FILL_X|LAYOUT_CENTER_Y)
129
+ FXTextField.new(matrix, 2, nil, 0, (FRAME_SUNKEN|FRAME_THICK|
130
+ LAYOUT_FILL_X|LAYOUT_CENTER_Y|LAYOUT_FILL_COLUMN))
131
+ FXLabel.new(matrix, "Beta:", nil,
132
+ JUSTIFY_RIGHT|LAYOUT_FILL_X|LAYOUT_CENTER_Y)
133
+ FXTextField.new(matrix, 2, nil, 0, (FRAME_SUNKEN|FRAME_THICK|
134
+ LAYOUT_FILL_X|LAYOUT_CENTER_Y|LAYOUT_FILL_COLUMN))
135
+ FXLabel.new(matrix, "Gamma:", nil,
136
+ JUSTIFY_RIGHT|LAYOUT_FILL_X|LAYOUT_CENTER_Y)
137
+ FXTextField.new(matrix, 2, nil, 0, (FRAME_SUNKEN|FRAME_THICK|
138
+ LAYOUT_FILL_X|LAYOUT_CENTER_Y|LAYOUT_FILL_COLUMN))
139
+
140
+ continuousCheck = FXCheckButton.new(group2,
141
+ "Continuous Tracking\tSplitter continuously tracks split changes")
142
+ continuousCheck.connect(SEL_COMMAND, method(:onCmdTracking))
143
+ continuousCheck.connect(SEL_UPDATE, method(:onUpdTracking))
144
+
145
+ FXLabel.new(group3, "Quite a Stretch", nil, LAYOUT_CENTER_X)
146
+ FXHorizontalSeparator.new(group3, SEPARATOR_GROOVE|LAYOUT_FILL_X)
147
+ mat = FXMatrix.new(group3, 3, LAYOUT_FILL_X|LAYOUT_FILL_Y)
148
+
149
+ FXButton.new(mat, "One\nStretch the row\nStretch in Y\nStretch in X\t" +
150
+ "The possibilities are endless..", nil, nil, 0,
151
+ FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FILL_ROW)
152
+ FXButton.new(mat, "Two\nStretch in X\tThe possibilities are endless..", nil,
153
+ nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X)
154
+ FXButton.new(mat, "Three\nStretch the row\nStretch in Y\nStretch in X\t" +
155
+ "The possibilities are endless..", nil, nil, 0,
156
+ FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FILL_ROW)
157
+
158
+ FXButton.new(mat, "Four\nStretch the column\nStretch the row\n" +
159
+ "Stretch in Y\nStretch in X\tThe possibilities are endless..", nil,
160
+ nil, 0, (FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y|
161
+ LAYOUT_FILL_ROW|LAYOUT_FILL_COLUMN))
162
+ FXButton.new(mat, "Five\nStretch the column\nStretch in Y\n" +
163
+ "Stretch in X\tThe possibilities are endless..", nil, nil, 0,
164
+ FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FILL_COLUMN)
165
+ FXButton.new(mat, "Six\nStretch the column\nStretch the row\n" +
166
+ "Stretch in Y\nStretch in X\tThe possibilities are endless..", nil,
167
+ nil, 0, (FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y|
168
+ LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW))
169
+
170
+ FXButton.new(mat, "Seven\nStretch the column\nStretch the row\n" +
171
+ "Center in Y\nCenter in X\tThe possibilities are endless..", nil,
172
+ nil, 0, (FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_Y|LAYOUT_CENTER_X|
173
+ LAYOUT_FILL_ROW|LAYOUT_FILL_COLUMN))
174
+ FXButton.new(mat,
175
+ "Eight\nStretch the column\tThe possibilities are endless..",nil,
176
+ nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_COLUMN)
177
+ FXButton.new(mat, "Nine\nStretch the column\nStretch the row\n" +
178
+ "Stretch in Y\tThe possibilities are endless..", nil, nil, 0,
179
+ (FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_FILL_Y|
180
+ LAYOUT_FILL_ROW|LAYOUT_FILL_COLUMN))
181
+
182
+ # Make a tool tip
183
+ FXToolTip.new(getApp(), 0)
184
+ end
185
+
186
+ def onCmdTracking(sender, sel, ptr)
187
+ @splitter.splitterStyle ^= SPLITTER_TRACKING
188
+ return 1
189
+ end
190
+
191
+ def onUpdTracking(sender, sel, ptr)
192
+ if (@splitter.splitterStyle & SPLITTER_TRACKING) != 0
193
+ sender.handle(self, FXSEL(SEL_COMMAND, ID_CHECK), nil)
194
+ else
195
+ sender.handle(self, FXSEL(SEL_COMMAND, ID_UNCHECK), nil)
196
+ end
197
+ return 1
198
+ end
199
+
200
+ def create
201
+ super
202
+ show(PLACEMENT_SCREEN)
203
+ end
204
+ end
205
+
206
+ if __FILE__ == $0
207
+ application = FXApp.new("Splitter", "FoxTest")
208
+ SplitterWindow.new(application)
209
+ application.create
210
+ application.run
211
+ end
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fox16'
4
+ require 'fox16/colors'
5
+
6
+ include Fox
7
+
8
+ PREAMBLE = <<EOM
9
+ We the people of the United States, in order to form a more perfect union,
10
+ establish justice, insure domestic tranquility, provide for the common defense,
11
+ promote the general welfare, and secure the blessings of liberty to ourselves and
12
+ our posterity, do ordain and establish this Constitution for the United States of America.
13
+ EOM
14
+
15
+ class StyledTextWindow < FXMainWindow
16
+ def initialize(app)
17
+ # Call the base class initialize() first
18
+ super(app, "Styled Text Test")
19
+ self.width = 400
20
+ self.height = 300
21
+
22
+ # Menu bar, along the top
23
+ menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
24
+
25
+ # Button bar along the bottom
26
+ buttons = FXHorizontalFrame.new(self, LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X)
27
+
28
+ # The frame takes up the rest of the space
29
+ textframe = FXHorizontalFrame.new(self,
30
+ LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK)
31
+
32
+ # File menu
33
+ filemenu = FXMenuPane.new(self)
34
+ FXMenuCommand.new(filemenu, "&Quit\tCtl-Q\tQuit the application.", nil,
35
+ getApp(), FXApp::ID_QUIT)
36
+ FXMenuTitle.new(menubar, "&File", nil, filemenu)
37
+
38
+ # Text window
39
+ text = FXText.new(textframe, nil, 0,
40
+ TEXT_READONLY|TEXT_WORDWRAP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
41
+
42
+ # Construct some hilite styles
43
+ hs1 = FXHiliteStyle.from_text(text)
44
+ hs1.normalForeColor = FXColor::Red
45
+ hs1.normalBackColor = FXColor::Blue
46
+ hs1.style = FXText::STYLE_BOLD
47
+
48
+ hs2 = FXHiliteStyle.from_text(text)
49
+ hs2.normalForeColor = FXColor::Blue
50
+ hs2.normalBackColor = FXColor::Yellow
51
+ hs2.style = FXText::STYLE_UNDERLINE
52
+
53
+ # Enable the style buffer for this text widget
54
+ text.styled = true
55
+
56
+ # Set the styles
57
+ text.hiliteStyles = [hs1, hs2]
58
+
59
+ # Set the text
60
+ text.text = PREAMBLE.gsub!(/\n/, "")
61
+
62
+ # Change the style for this phrase to hs1 [index 1]
63
+ phrase = "a more perfect union"
64
+ text.changeStyle(PREAMBLE.index(phrase), phrase.length, 1)
65
+
66
+ # Change the style for this phrase to hs2 [index 2]
67
+ phrase = "United States of America"
68
+ text.changeStyle(PREAMBLE.index(phrase), phrase.length, 2)
69
+ end
70
+
71
+ def create
72
+ super
73
+ show(PLACEMENT_SCREEN)
74
+ end
75
+ end
76
+
77
+ if __FILE__ == $0
78
+ application = FXApp.new("StyledText", "FoxTest")
79
+ StyledTextWindow.new(application)
80
+ application.create
81
+ application.run
82
+ end
@@ -0,0 +1,165 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fox16'
4
+
5
+ include Fox
6
+
7
+ class TabBookWindow < FXMainWindow
8
+
9
+ def initialize(app)
10
+ # Call the base class initializer first
11
+ super(app, "Tab Book Test", :opts => DECOR_ALL, :width => 600, :height => 400)
12
+
13
+ # Make a tooltip
14
+ FXToolTip.new(getApp())
15
+
16
+ # Menubar appears along the top of the main window
17
+ menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
18
+
19
+ # Separator
20
+ FXHorizontalSeparator.new(self,
21
+ LAYOUT_SIDE_TOP|LAYOUT_FILL_X|SEPARATOR_GROOVE)
22
+
23
+ # Contents
24
+ contents = FXHorizontalFrame.new(self,
25
+ LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y|PACK_UNIFORM_WIDTH)
26
+
27
+ # Switcher
28
+ @tabbook = FXTabBook.new(contents,:opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
29
+
30
+ # First item is a list
31
+ @tab1 = FXTabItem.new(@tabbook, "&Simple List", nil)
32
+ listframe = FXHorizontalFrame.new(@tabbook, FRAME_THICK|FRAME_RAISED)
33
+ simplelist = FXList.new(listframe, :opts => LIST_EXTENDEDSELECT|LAYOUT_FILL_X|LAYOUT_FILL_Y)
34
+ simplelist.appendItem("First Entry")
35
+ simplelist.appendItem("Second Entry")
36
+ simplelist.appendItem("Third Entry")
37
+ simplelist.appendItem("Fourth Entry")
38
+
39
+ # Second item is a file list
40
+ @tab2 = FXTabItem.new(@tabbook, "F&ile List", nil)
41
+ @fileframe = FXHorizontalFrame.new(@tabbook, FRAME_THICK|FRAME_RAISED)
42
+ filelist = FXFileList.new(@fileframe, :opts => ICONLIST_EXTENDEDSELECT|LAYOUT_FILL_X|LAYOUT_FILL_Y)
43
+
44
+ # Third item is a directory list
45
+ @tab3 = FXTabItem.new(@tabbook, "T&ree List", nil)
46
+ dirframe = FXHorizontalFrame.new(@tabbook, FRAME_THICK|FRAME_RAISED)
47
+ dirlist = FXDirList.new(dirframe,
48
+ :opts => DIRLIST_SHOWFILES|TREELIST_SHOWS_LINES|TREELIST_SHOWS_BOXES|LAYOUT_FILL_X|LAYOUT_FILL_Y)
49
+
50
+ # File Menu
51
+ filemenu = FXMenuPane.new(self)
52
+ FXMenuCommand.new(filemenu, "&Simple List", nil,
53
+ @tabbook, FXTabBar::ID_OPEN_FIRST+0)
54
+ FXMenuCommand.new(filemenu, "F&ile List", nil,
55
+ @tabbook, FXTabBar::ID_OPEN_FIRST+1)
56
+ FXMenuCommand.new(filemenu, "T&ree List", nil,
57
+ @tabbook, FXTabBar::ID_OPEN_FIRST+2)
58
+ FXMenuCommand.new(filemenu, "&Quit\tCtl-Q", nil,
59
+ getApp(), FXApp::ID_QUIT)
60
+ FXMenuTitle.new(menubar, "&File", nil, filemenu)
61
+
62
+ # Tab side
63
+ tabmenu = FXMenuPane.new(self)
64
+ hideShow = FXMenuCheck.new(tabmenu, "Hide/Show Tab 2")
65
+ hideShow.connect(SEL_COMMAND) {
66
+ if @tab2.shown?
67
+ @tab2.hide
68
+ @fileframe.hide
69
+ else
70
+ @tab2.show
71
+ @fileframe.show
72
+ end
73
+ @tab2.recalc
74
+ @fileframe.recalc
75
+ }
76
+ hideShow.connect(SEL_UPDATE) { hideShow.check = @tab2.shown? }
77
+
78
+ FXMenuSeparator.new(tabmenu)
79
+
80
+ topTabsCmd = FXMenuRadio.new(tabmenu, "&Top Tabs")
81
+ topTabsCmd.connect(SEL_COMMAND) do
82
+ @tabbook.tabStyle = TABBOOK_TOPTABS
83
+ @tab1.tabOrientation = TAB_TOP
84
+ @tab2.tabOrientation = TAB_TOP
85
+ @tab3.tabOrientation = TAB_TOP
86
+ end
87
+ topTabsCmd.connect(SEL_UPDATE) do |sender, sel, ptr|
88
+ sender.check = (@tabbook.tabStyle == TABBOOK_TOPTABS)
89
+ end
90
+
91
+ bottomTabsCmd = FXMenuRadio.new(tabmenu, "&Bottom Tabs")
92
+ bottomTabsCmd.connect(SEL_COMMAND) do
93
+ @tabbook.tabStyle = TABBOOK_BOTTOMTABS
94
+ @tab1.tabOrientation = TAB_BOTTOM
95
+ @tab2.tabOrientation = TAB_BOTTOM
96
+ @tab3.tabOrientation = TAB_BOTTOM
97
+ end
98
+ bottomTabsCmd.connect(SEL_UPDATE) do |sender, sel, ptr|
99
+ sender.check = (@tabbook.tabStyle == TABBOOK_BOTTOMTABS)
100
+ end
101
+
102
+ leftTabsCmd = FXMenuRadio.new(tabmenu, "&Left Tabs")
103
+ leftTabsCmd.connect(SEL_COMMAND) do
104
+ @tabbook.tabStyle = TABBOOK_LEFTTABS
105
+ @tab1.tabOrientation = TAB_LEFT
106
+ @tab2.tabOrientation = TAB_LEFT
107
+ @tab3.tabOrientation = TAB_LEFT
108
+ end
109
+ leftTabsCmd.connect(SEL_UPDATE) do |sender, sel, ptr|
110
+ sender.check = (@tabbook.tabStyle == TABBOOK_LEFTTABS)
111
+ end
112
+
113
+ rightTabsCmd = FXMenuRadio.new(tabmenu, "&Right Tabs")
114
+ rightTabsCmd.connect(SEL_COMMAND) do
115
+ @tabbook.tabStyle = TABBOOK_RIGHTTABS
116
+ @tab1.tabOrientation = TAB_RIGHT
117
+ @tab2.tabOrientation = TAB_RIGHT
118
+ @tab3.tabOrientation = TAB_RIGHT
119
+ end
120
+ rightTabsCmd.connect(SEL_UPDATE) do |sender, sel, ptr|
121
+ sender.check = (@tabbook.tabStyle == TABBOOK_RIGHTTABS)
122
+ end
123
+
124
+ FXMenuSeparator.new(tabmenu)
125
+
126
+ addTabCmd = FXMenuCommand.new(tabmenu, "Add Tab")
127
+ addTabCmd.connect(SEL_COMMAND) do
128
+ FXTabItem.new(@tabbook, "New Tab")
129
+ FXHorizontalFrame.new(@tabbook, FRAME_THICK|FRAME_RAISED) do |hf|
130
+ FXLabel.new(hf, "Always add tab item and contents together.", :opts => LAYOUT_FILL)
131
+ end
132
+ @tabbook.create # realize widgets
133
+ @tabbook.recalc # mark parent layout dirty
134
+ end
135
+
136
+ removeTabCmd = FXMenuCommand.new(tabmenu, "Remove Last Tab")
137
+ removeTabCmd.connect(SEL_COMMAND) do
138
+ numTabs = @tabbook.numChildren/2
139
+ doomedTab = numTabs - 1
140
+ @tabbook.removeChild(@tabbook.childAtIndex(2*doomedTab+1))
141
+ @tabbook.removeChild(@tabbook.childAtIndex(2*doomedTab))
142
+ end
143
+
144
+ FXMenuTitle.new(menubar, "&Tab Placement", nil, tabmenu)
145
+ end
146
+
147
+ def create
148
+ super
149
+ show(PLACEMENT_SCREEN)
150
+ end
151
+ end
152
+
153
+ if __FILE__ == $0
154
+ # Make an application
155
+ application = FXApp.new("TabBook", "FoxTest")
156
+
157
+ # Build the main window
158
+ TabBookWindow.new(application)
159
+
160
+ # Create the application and its windows
161
+ application.create
162
+
163
+ # Run
164
+ application.run
165
+ end
data/examples/table.rb ADDED
@@ -0,0 +1,182 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fox16'
4
+ require 'date'
5
+
6
+ include Fox
7
+
8
+ class TableWindow < FXMainWindow
9
+
10
+ def initialize(app)
11
+ # Call the base class initializer first
12
+ super(app, "Table Widget Test", :opts => DECOR_ALL)
13
+
14
+ # Tooltip
15
+ tooltip = FXToolTip.new(getApp())
16
+
17
+ # Icon used in some cells
18
+ penguinicon = nil
19
+ File.open(File.join('icons', 'penguin.png'), 'rb') do |f|
20
+ penguinicon = FXPNGIcon.new(getApp(), f.read, 0, IMAGE_ALPHAGUESS)
21
+ end
22
+
23
+ # Menubar
24
+ menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
25
+
26
+ # Separator
27
+ FXHorizontalSeparator.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|SEPARATOR_GROOVE)
28
+
29
+ # Contents
30
+ contents = FXVerticalFrame.new(self, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y)
31
+
32
+ frame = FXVerticalFrame.new(contents,
33
+ FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
34
+
35
+ # Table
36
+ @table = FXTable.new(frame,
37
+ :opts => TABLE_COL_SIZABLE|TABLE_ROW_SIZABLE|LAYOUT_FILL_X|LAYOUT_FILL_Y,
38
+ :padding => 2)
39
+
40
+ @table.visibleRows = 20
41
+ @table.visibleColumns = 8
42
+
43
+ @table.setTableSize(50, 14)
44
+
45
+ @table.setBackColor(FXRGB(255, 255, 255))
46
+ @table.setCellColor(0, 0, FXRGB(255, 255, 255))
47
+ @table.setCellColor(0, 1, FXRGB(255, 240, 240))
48
+ @table.setCellColor(1, 0, FXRGB(240, 255, 240))
49
+ @table.setCellColor(1, 1, FXRGB(240, 240, 255))
50
+
51
+ # Initialize the scrollable part of the table
52
+ (0..49).each do |r|
53
+ (0..13).each do |c|
54
+ @table.setItemText(r, c, "r:#{r} c:#{c}")
55
+ end
56
+ end
57
+
58
+ # Initialize column headers
59
+ (0...12).each { |c| @table.setColumnText(c, Date::MONTHNAMES[c+1]) }
60
+
61
+ # Initialize row headers
62
+ (0...50).each { |r| @table.setRowText(r, "Row#{r}") }
63
+
64
+ @table.setItemText(10, 10, "This is multi-\nline text")
65
+ @table.setItemJustify(10, 10, FXTableItem::CENTER_X|FXTableItem::CENTER_Y)
66
+
67
+ @table.setItem(3, 3, nil)
68
+ @table.setItem(5, 6, @table.getItem(5, 5))
69
+ @table.setItem(5, 7, @table.getItem(5, 5))
70
+ @table.setItemText(5, 5, "Spanning Item")
71
+ @table.setItemJustify(5, 5, FXTableItem::CENTER_X|FXTableItem::CENTER_Y)
72
+
73
+ @table.getItem( 9, 9).borders = FXTableItem::TBORDER|FXTableItem::LBORDER|FXTableItem::BBORDER
74
+ @table.getItem( 9, 10).borders = FXTableItem::TBORDER|FXTableItem::RBORDER|FXTableItem::BBORDER
75
+
76
+ @table.getItem(40, 13).borders = FXTableItem::LBORDER|FXTableItem::TBORDER|FXTableItem::RBORDER|FXTableItem::BBORDER
77
+ @table.getItem(49, 13).borders = FXTableItem::LBORDER|FXTableItem::TBORDER|FXTableItem::RBORDER|FXTableItem::BBORDER
78
+ @table.getItem( 5, 0).borders = FXTableItem::LBORDER|FXTableItem::TBORDER|FXTableItem::RBORDER|FXTableItem::BBORDER
79
+
80
+ @table.getItem(6, 6).icon = penguinicon
81
+ @table.getItem(6, 6).iconPosition = FXTableItem::ABOVE # icon above the text
82
+ @table.getItem(6, 6).justify = FXTableItem::CENTER_X|FXTableItem::CENTER_Y
83
+
84
+ @table.getItem(3, 4).stipple = STIPPLE_CROSSDIAG
85
+
86
+ # File Menu
87
+ filemenu = FXMenuPane.new(self)
88
+ FXMenuCommand.new(filemenu, "&Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT)
89
+ FXMenuTitle.new(menubar, "&File", nil, filemenu)
90
+
91
+ # Options Menu
92
+ tablemenu = FXMenuPane.new(self)
93
+ FXMenuCheck.new(tablemenu, "Horizontal grid", @table, FXTable::ID_HORZ_GRID)
94
+ FXMenuCheck.new(tablemenu, "Vertical grid", @table, FXTable::ID_VERT_GRID)
95
+ FXMenuTitle.new(menubar, "&Options", nil, tablemenu)
96
+
97
+ # Manipulations Menu
98
+ manipmenu = FXMenuPane.new(self)
99
+ FXMenuCommand.new(manipmenu, "Delete Column\tCtl-C", nil,
100
+ @table, FXTable::ID_DELETE_COLUMN)
101
+ FXMenuCommand.new(manipmenu, "Delete Row\tCtl-R", nil,
102
+ @table, FXTable::ID_DELETE_ROW)
103
+ FXMenuCommand.new(manipmenu, "Insert Column\tCtl-Shift-C", nil,
104
+ @table, FXTable::ID_INSERT_COLUMN)
105
+ FXMenuCommand.new(manipmenu, "Insert Row\tCtl-Shift-R", nil,
106
+ @table, FXTable::ID_INSERT_ROW)
107
+ FXMenuCommand.new(manipmenu, "Resize table...").connect(SEL_COMMAND, method(:onCmdResizeTable))
108
+ FXMenuTitle.new(menubar, "&Manipulations", nil, manipmenu)
109
+
110
+ # Selection Menu
111
+ selectmenu = FXMenuPane.new(self)
112
+ FXMenuCommand.new(selectmenu, "Select All", nil, @table, FXTable::ID_SELECT_ALL)
113
+ FXMenuCommand.new(selectmenu, "Select Cell", nil, @table, FXTable::ID_SELECT_CELL)
114
+ FXMenuCommand.new(selectmenu, "Select Row", nil, @table, FXTable::ID_SELECT_ROW)
115
+ FXMenuCommand.new(selectmenu, "Select Column", nil, @table, FXTable::ID_SELECT_COLUMN)
116
+ FXMenuCommand.new(selectmenu, "Deselect All", nil, @table, FXTable::ID_DESELECT_ALL)
117
+ FXMenuCommand.new(selectmenu, "Cut to Clipboard", nil, @table, FXTable::ID_CUT_SEL)
118
+ FXMenuCommand.new(selectmenu, "Copy to Clipboard", nil, @table, FXTable::ID_COPY_SEL)
119
+ FXMenuCommand.new(selectmenu, "Paste from Clipboard", nil, @table, FXTable::ID_PASTE_SEL)
120
+ FXMenuCommand.new(selectmenu, "Delete", nil, @table, FXTable::ID_DELETE_SEL)
121
+ FXMenuTitle.new(menubar, "&Selection", nil, selectmenu)
122
+ end
123
+
124
+ # Resize the table
125
+ def onCmdResizeTable(sender, sel, ptr)
126
+ # Create an empty dialog box
127
+ dlg = FXDialogBox.new(self, "Resize Table")
128
+
129
+ # Set up its contents
130
+ frame = FXHorizontalFrame.new(dlg, LAYOUT_FILL_X|LAYOUT_FILL_Y)
131
+ FXLabel.new(frame, "Rows:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
132
+ rows = FXTextField.new(frame, 5,
133
+ :opts => JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
134
+ FXLabel.new(frame, "Columns:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
135
+ cols = FXTextField.new(frame, 5,
136
+ :opts => JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
137
+ FXButton.new(frame, "Cancel", nil, dlg, FXDialogBox::ID_CANCEL,
138
+ FRAME_RAISED|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
139
+ FXButton.new(frame, " OK ", nil, dlg, FXDialogBox::ID_ACCEPT,
140
+ FRAME_RAISED|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
141
+
142
+ # Initialize the text fields' contents
143
+ oldnr, oldnc = @table.numRows, @table.numColumns
144
+ rows.text = oldnr.to_s
145
+ cols.text = oldnc.to_s
146
+
147
+ # FXDialogBox#execute will return non-zero if the user clicks OK
148
+ if dlg.execute != 0
149
+ nr, nc = rows.text.to_i, cols.text.to_i
150
+ nr = 0 if nr < 0
151
+ nc = 0 if nc < 0
152
+ @table.setTableSize(nr, nc)
153
+ (0...nr).each { |r|
154
+ (0...nc).each { |c|
155
+ # @table.setItemText(r, c, "r:#{r+1} c:#{c+1}")
156
+ }
157
+ }
158
+ end
159
+ return 1
160
+ end
161
+
162
+ # Create and show this window
163
+ def create
164
+ super
165
+ show(PLACEMENT_SCREEN)
166
+ end
167
+ end
168
+
169
+ # Start the whole thing
170
+ if __FILE__ == $0
171
+ # Make application
172
+ application = FXApp.new("TableApp", "FoxTest")
173
+
174
+ # Make window
175
+ TableWindow.new(application)
176
+
177
+ # Create app
178
+ application.create
179
+
180
+ # Run
181
+ application.run
182
+ end