fxruby 1.6.19-x86-mingw32

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 (497) 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 +777 -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/charts.rb +35 -0
  78. data/examples/custom_table_item.rb +170 -0
  79. data/examples/datatarget.rb +223 -0
  80. data/examples/dctest.rb +696 -0
  81. data/examples/dialog.rb +143 -0
  82. data/examples/dilbert.rb +66 -0
  83. data/examples/dirlist.rb +63 -0
  84. data/examples/dragdrop.rb +97 -0
  85. data/examples/dragsource.rb +80 -0
  86. data/examples/dropsite.rb +59 -0
  87. data/examples/foursplit.rb +97 -0
  88. data/examples/gltest.rb +330 -0
  89. data/examples/glviewer.rb +576 -0
  90. data/examples/groupbox.rb +392 -0
  91. data/examples/header.rb +149 -0
  92. data/examples/hello.rb +12 -0
  93. data/examples/hello2.rb +51 -0
  94. data/examples/iRAA.rb +153 -0
  95. data/examples/iconlist.rb +92 -0
  96. data/examples/icons/AngryGuyInBunnySuit.ico +0 -0
  97. data/examples/icons/FatBot.ico +0 -0
  98. data/examples/icons/FlippedySwitch.ico +0 -0
  99. data/examples/icons/LeGoon.ico +0 -0
  100. data/examples/icons/Net.ico +0 -0
  101. data/examples/icons/RedMacOS.ico +0 -0
  102. data/examples/icons/SawBlade.ico +0 -0
  103. data/examples/icons/backview.png +0 -0
  104. data/examples/icons/big.png +0 -0
  105. data/examples/icons/bigfolder.png +0 -0
  106. data/examples/icons/bigpenguin.png +0 -0
  107. data/examples/icons/bottomview.png +0 -0
  108. data/examples/icons/camera.png +0 -0
  109. data/examples/icons/capbutt.png +0 -0
  110. data/examples/icons/capnotlast.png +0 -0
  111. data/examples/icons/capproj.png +0 -0
  112. data/examples/icons/capround.png +0 -0
  113. data/examples/icons/colorpal.png +0 -0
  114. data/examples/icons/copy.png +0 -0
  115. data/examples/icons/cut.png +0 -0
  116. data/examples/icons/delimit.png +0 -0
  117. data/examples/icons/dippy.png +0 -0
  118. data/examples/icons/double_dash.png +0 -0
  119. data/examples/icons/filenew.png +0 -0
  120. data/examples/icons/fileopen.png +0 -0
  121. data/examples/icons/filesave.png +0 -0
  122. data/examples/icons/filesaveas.png +0 -0
  123. data/examples/icons/fonts.png +0 -0
  124. data/examples/icons/fox.png +0 -0
  125. data/examples/icons/foxicon.png +0 -0
  126. data/examples/icons/frontview.png +0 -0
  127. data/examples/icons/gem_big.png +0 -0
  128. data/examples/icons/gem_small.png +0 -0
  129. data/examples/icons/hello2.png +0 -0
  130. data/examples/icons/help.png +0 -0
  131. data/examples/icons/indent.png +0 -0
  132. data/examples/icons/jbevel.png +0 -0
  133. data/examples/icons/jmiter.png +0 -0
  134. data/examples/icons/jround.png +0 -0
  135. data/examples/icons/kill.png +0 -0
  136. data/examples/icons/leftview.png +0 -0
  137. data/examples/icons/light.png +0 -0
  138. data/examples/icons/minidoc.png +0 -0
  139. data/examples/icons/minifolder.png +0 -0
  140. data/examples/icons/minifolderopen.png +0 -0
  141. data/examples/icons/newfolder.png +0 -0
  142. data/examples/icons/nolight.png +0 -0
  143. data/examples/icons/onoff_dash.png +0 -0
  144. data/examples/icons/palette.png +0 -0
  145. data/examples/icons/parallel.png +0 -0
  146. data/examples/icons/paste.png +0 -0
  147. data/examples/icons/pattern.png +0 -0
  148. data/examples/icons/penguin.png +0 -0
  149. data/examples/icons/perspective.png +0 -0
  150. data/examples/icons/printicon.png +0 -0
  151. data/examples/icons/prop.png +0 -0
  152. data/examples/icons/redo.png +0 -0
  153. data/examples/icons/rightview.png +0 -0
  154. data/examples/icons/saveas.png +0 -0
  155. data/examples/icons/shutter1.png +0 -0
  156. data/examples/icons/shutter2.png +0 -0
  157. data/examples/icons/small.png +0 -0
  158. data/examples/icons/smoothlight.png +0 -0
  159. data/examples/icons/solid_line.png +0 -0
  160. data/examples/icons/tbuplevel.png +0 -0
  161. data/examples/icons/topview.png +0 -0
  162. data/examples/icons/undo.png +0 -0
  163. data/examples/icons/winapp.png +0 -0
  164. data/examples/icons/zoom.png +0 -0
  165. data/examples/image.rb +279 -0
  166. data/examples/imageviewer.rb +509 -0
  167. data/examples/inputs.rb +83 -0
  168. data/examples/mditest.rb +180 -0
  169. data/examples/pig.rb +77 -0
  170. data/examples/raabrowser.rb +122 -0
  171. data/examples/ratio.rb +80 -0
  172. data/examples/rulerview.rb +27 -0
  173. data/examples/scintilla-test.rb +81 -0
  174. data/examples/scribble-orig.rb +186 -0
  175. data/examples/scribble.rb +162 -0
  176. data/examples/shutter.rb +158 -0
  177. data/examples/splitter.rb +211 -0
  178. data/examples/styledtext.rb +82 -0
  179. data/examples/tabbook.rb +165 -0
  180. data/examples/table.rb +182 -0
  181. data/examples/textedit/commands.rb +114 -0
  182. data/examples/textedit/helpwindow.rb +299 -0
  183. data/examples/textedit/prefdialog.rb +239 -0
  184. data/examples/textedit/textedit.rb +1763 -0
  185. data/examples/unicode.rb +36 -0
  186. data/ext/fox16/fox16.so +0 -0
  187. data/index.html +14 -0
  188. data/lib/fox16/accel_table.rb +70 -0
  189. data/lib/fox16/aliases.rb +5611 -0
  190. data/lib/fox16/calendar.rb +217 -0
  191. data/lib/fox16/chore.rb +105 -0
  192. data/lib/fox16/colors.rb +280 -0
  193. data/lib/fox16/core.rb +700 -0
  194. data/lib/fox16/dict.rb +35 -0
  195. data/lib/fox16/exceptions_for_fxerror.rb +17 -0
  196. data/lib/fox16/execute_nonmodal.rb +70 -0
  197. data/lib/fox16/glgroup.rb +166 -0
  198. data/lib/fox16/glshapes.rb +456 -0
  199. data/lib/fox16/input.rb +59 -0
  200. data/lib/fox16/irb.rb +178 -0
  201. data/lib/fox16/iterators.rb +420 -0
  202. data/lib/fox16/keys.rb +1374 -0
  203. data/lib/fox16/kwargs.rb +2740 -0
  204. data/lib/fox16/missingdep.rb +14 -0
  205. data/lib/fox16/pseudokeyboard.rb +40 -0
  206. data/lib/fox16/pseudomouse.rb +87 -0
  207. data/lib/fox16/responder.rb +70 -0
  208. data/lib/fox16/responder2.rb +132 -0
  209. data/lib/fox16/scintilla.rb +3641 -0
  210. data/lib/fox16/settings.rb +18 -0
  211. data/lib/fox16/signal.rb +71 -0
  212. data/lib/fox16/splashscreen.rb +82 -0
  213. data/lib/fox16/timeout.rb +136 -0
  214. data/lib/fox16/undolist.rb +455 -0
  215. data/lib/fox16/version.rb +9 -0
  216. data/rdoc-sources/FX4Splitter.rb +156 -0
  217. data/rdoc-sources/FX7Segment.rb +54 -0
  218. data/rdoc-sources/FXAccelTable.rb +84 -0
  219. data/rdoc-sources/FXApp.rb +545 -0
  220. data/rdoc-sources/FXArrowButton.rb +69 -0
  221. data/rdoc-sources/FXBMPIcon.rb +67 -0
  222. data/rdoc-sources/FXBMPImage.rb +30 -0
  223. data/rdoc-sources/FXBitmap.rb +115 -0
  224. data/rdoc-sources/FXBitmapFrame.rb +31 -0
  225. data/rdoc-sources/FXBitmapView.rb +44 -0
  226. data/rdoc-sources/FXButton.rb +59 -0
  227. data/rdoc-sources/FXCURCursor.rb +13 -0
  228. data/rdoc-sources/FXCanvas.rb +18 -0
  229. data/rdoc-sources/FXCheckButton.rb +58 -0
  230. data/rdoc-sources/FXChoiceBox.rb +49 -0
  231. data/rdoc-sources/FXColorBar.rb +48 -0
  232. data/rdoc-sources/FXColorDialog.rb +37 -0
  233. data/rdoc-sources/FXColorList.rb +55 -0
  234. data/rdoc-sources/FXColorRing.rb +49 -0
  235. data/rdoc-sources/FXColorSelector.rb +65 -0
  236. data/rdoc-sources/FXColorWell.rb +65 -0
  237. data/rdoc-sources/FXColorWheel.rb +57 -0
  238. data/rdoc-sources/FXComboBox.rb +214 -0
  239. data/rdoc-sources/FXComposite.rb +34 -0
  240. data/rdoc-sources/FXCursor.rb +67 -0
  241. data/rdoc-sources/FXDC.rb +720 -0
  242. data/rdoc-sources/FXDCPrint.rb +127 -0
  243. data/rdoc-sources/FXDCWindow.rb +33 -0
  244. data/rdoc-sources/FXDataTarget.rb +66 -0
  245. data/rdoc-sources/FXDebugTarget.rb +25 -0
  246. data/rdoc-sources/FXDelegator.rb +23 -0
  247. data/rdoc-sources/FXDial.rb +107 -0
  248. data/rdoc-sources/FXDialogBox.rb +32 -0
  249. data/rdoc-sources/FXDict.rb +79 -0
  250. data/rdoc-sources/FXDirBox.rb +55 -0
  251. data/rdoc-sources/FXDirDialog.rb +47 -0
  252. data/rdoc-sources/FXDirList.rb +149 -0
  253. data/rdoc-sources/FXDirSelector.rb +64 -0
  254. data/rdoc-sources/FXDockBar.rb +151 -0
  255. data/rdoc-sources/FXDockHandler.rb +26 -0
  256. data/rdoc-sources/FXDockSite.rb +104 -0
  257. data/rdoc-sources/FXDockTitle.rb +26 -0
  258. data/rdoc-sources/FXDocument.rb +29 -0
  259. data/rdoc-sources/FXDragCorner.rb +19 -0
  260. data/rdoc-sources/FXDrawable.rb +27 -0
  261. data/rdoc-sources/FXDriveBox.rb +46 -0
  262. data/rdoc-sources/FXExtentd.rb +85 -0
  263. data/rdoc-sources/FXExtentf.rb +85 -0
  264. data/rdoc-sources/FXFileDialog.rb +217 -0
  265. data/rdoc-sources/FXFileDict.rb +131 -0
  266. data/rdoc-sources/FXFileList.rb +208 -0
  267. data/rdoc-sources/FXFileSelector.rb +184 -0
  268. data/rdoc-sources/FXFileStream.rb +27 -0
  269. data/rdoc-sources/FXFoldingList.rb +504 -0
  270. data/rdoc-sources/FXFont.rb +361 -0
  271. data/rdoc-sources/FXFontDialog.rb +14 -0
  272. data/rdoc-sources/FXFontSelector.rb +37 -0
  273. data/rdoc-sources/FXFrame.rb +53 -0
  274. data/rdoc-sources/FXGIFCursor.rb +50 -0
  275. data/rdoc-sources/FXGIFIcon.rb +31 -0
  276. data/rdoc-sources/FXGIFImage.rb +29 -0
  277. data/rdoc-sources/FXGLCanvas.rb +45 -0
  278. data/rdoc-sources/FXGLContext.rb +40 -0
  279. data/rdoc-sources/FXGLObject.rb +75 -0
  280. data/rdoc-sources/FXGLShape.rb +69 -0
  281. data/rdoc-sources/FXGLViewer.rb +332 -0
  282. data/rdoc-sources/FXGLVisual.rb +94 -0
  283. data/rdoc-sources/FXGradientBar.rb +301 -0
  284. data/rdoc-sources/FXGroupBox.rb +36 -0
  285. data/rdoc-sources/FXHeader.rb +411 -0
  286. data/rdoc-sources/FXHorizontalFrame.rb +29 -0
  287. data/rdoc-sources/FXICOIcon.rb +65 -0
  288. data/rdoc-sources/FXICOImage.rb +31 -0
  289. data/rdoc-sources/FXIcon.rb +38 -0
  290. data/rdoc-sources/FXIconDict.rb +48 -0
  291. data/rdoc-sources/FXIconList.rb +450 -0
  292. data/rdoc-sources/FXIconSource.rb +100 -0
  293. data/rdoc-sources/FXId.rb +34 -0
  294. data/rdoc-sources/FXImage.rb +292 -0
  295. data/rdoc-sources/FXImageFrame.rb +36 -0
  296. data/rdoc-sources/FXImageView.rb +35 -0
  297. data/rdoc-sources/FXInputDialog.rb +80 -0
  298. data/rdoc-sources/FXJPGIcon.rb +70 -0
  299. data/rdoc-sources/FXJPGImage.rb +38 -0
  300. data/rdoc-sources/FXKnob.rb +76 -0
  301. data/rdoc-sources/FXLabel.rb +72 -0
  302. data/rdoc-sources/FXList.rb +443 -0
  303. data/rdoc-sources/FXListBox.rb +191 -0
  304. data/rdoc-sources/FXMDIButton.rb +67 -0
  305. data/rdoc-sources/FXMDIChild.rb +155 -0
  306. data/rdoc-sources/FXMDIClient.rb +65 -0
  307. data/rdoc-sources/FXMainWindow.rb +26 -0
  308. data/rdoc-sources/FXMatrix.rb +57 -0
  309. data/rdoc-sources/FXMemoryBuffer.rb +28 -0
  310. data/rdoc-sources/FXMemoryStream.rb +50 -0
  311. data/rdoc-sources/FXMenuBar.rb +23 -0
  312. data/rdoc-sources/FXMenuButton.rb +84 -0
  313. data/rdoc-sources/FXMenuCaption.rb +53 -0
  314. data/rdoc-sources/FXMenuCascade.rb +18 -0
  315. data/rdoc-sources/FXMenuCheck.rb +30 -0
  316. data/rdoc-sources/FXMenuCommand.rb +26 -0
  317. data/rdoc-sources/FXMenuPane.rb +13 -0
  318. data/rdoc-sources/FXMenuRadio.rb +33 -0
  319. data/rdoc-sources/FXMenuSeparator.rb +21 -0
  320. data/rdoc-sources/FXMenuTitle.rb +27 -0
  321. data/rdoc-sources/FXMessageBox.rb +73 -0
  322. data/rdoc-sources/FXObject.rb +28 -0
  323. data/rdoc-sources/FXOptionMenu.rb +83 -0
  324. data/rdoc-sources/FXPCXIcon.rb +63 -0
  325. data/rdoc-sources/FXPCXImage.rb +31 -0
  326. data/rdoc-sources/FXPNGIcon.rb +66 -0
  327. data/rdoc-sources/FXPNGImage.rb +34 -0
  328. data/rdoc-sources/FXPPMIcon.rb +36 -0
  329. data/rdoc-sources/FXPPMImage.rb +31 -0
  330. data/rdoc-sources/FXPacker.rb +63 -0
  331. data/rdoc-sources/FXPicker.rb +27 -0
  332. data/rdoc-sources/FXPopup.rb +53 -0
  333. data/rdoc-sources/FXPrintDialog.rb +36 -0
  334. data/rdoc-sources/FXProgressBar.rb +57 -0
  335. data/rdoc-sources/FXProgressDialog.rb +36 -0
  336. data/rdoc-sources/FXQuatd.rb +164 -0
  337. data/rdoc-sources/FXQuatf.rb +173 -0
  338. data/rdoc-sources/FXRGBIcon.rb +64 -0
  339. data/rdoc-sources/FXRGBImage.rb +31 -0
  340. data/rdoc-sources/FXRadioButton.rb +70 -0
  341. data/rdoc-sources/FXRanged.rb +100 -0
  342. data/rdoc-sources/FXRangef.rb +100 -0
  343. data/rdoc-sources/FXRealSlider.rb +101 -0
  344. data/rdoc-sources/FXRealSpinner.rb +140 -0
  345. data/rdoc-sources/FXRecentFiles.rb +77 -0
  346. data/rdoc-sources/FXRectangle.rb +149 -0
  347. data/rdoc-sources/FXRegion.rb +64 -0
  348. data/rdoc-sources/FXRegistry.rb +56 -0
  349. data/rdoc-sources/FXReplaceDialog.rb +56 -0
  350. data/rdoc-sources/FXRootWindow.rb +17 -0
  351. data/rdoc-sources/FXRuler.rb +130 -0
  352. data/rdoc-sources/FXRulerView.rb +225 -0
  353. data/rdoc-sources/FXScintilla.rb +121 -0
  354. data/rdoc-sources/FXScrollArea.rb +86 -0
  355. data/rdoc-sources/FXScrollBar.rb +107 -0
  356. data/rdoc-sources/FXScrollPane.rb +28 -0
  357. data/rdoc-sources/FXScrollWindow.rb +38 -0
  358. data/rdoc-sources/FXSearchDialog.rb +24 -0
  359. data/rdoc-sources/FXSeparator.rb +74 -0
  360. data/rdoc-sources/FXSettings.rb +248 -0
  361. data/rdoc-sources/FXShell.rb +8 -0
  362. data/rdoc-sources/FXShutter.rb +102 -0
  363. data/rdoc-sources/FXSize.rb +95 -0
  364. data/rdoc-sources/FXSlider.rb +98 -0
  365. data/rdoc-sources/FXSphered.rb +80 -0
  366. data/rdoc-sources/FXSpheref.rb +80 -0
  367. data/rdoc-sources/FXSpinner.rb +136 -0
  368. data/rdoc-sources/FXSplashWindow.rb +27 -0
  369. data/rdoc-sources/FXSplitter.rb +89 -0
  370. data/rdoc-sources/FXSpring.rb +61 -0
  371. data/rdoc-sources/FXStatusBar.rb +42 -0
  372. data/rdoc-sources/FXStatusLine.rb +60 -0
  373. data/rdoc-sources/FXStream.rb +142 -0
  374. data/rdoc-sources/FXStringDict.rb +38 -0
  375. data/rdoc-sources/FXSwitcher.rb +78 -0
  376. data/rdoc-sources/FXTGAIcon.rb +63 -0
  377. data/rdoc-sources/FXTGAImage.rb +31 -0
  378. data/rdoc-sources/FXTIFIcon.rb +70 -0
  379. data/rdoc-sources/FXTIFImage.rb +37 -0
  380. data/rdoc-sources/FXTabBar.rb +80 -0
  381. data/rdoc-sources/FXTabBook.rb +41 -0
  382. data/rdoc-sources/FXTabItem.rb +58 -0
  383. data/rdoc-sources/FXTable.rb +975 -0
  384. data/rdoc-sources/FXText.rb +581 -0
  385. data/rdoc-sources/FXTextField.rb +151 -0
  386. data/rdoc-sources/FXToggleButton.rb +70 -0
  387. data/rdoc-sources/FXToolBar.rb +61 -0
  388. data/rdoc-sources/FXToolBarGrip.rb +50 -0
  389. data/rdoc-sources/FXToolBarShell.rb +44 -0
  390. data/rdoc-sources/FXToolBarTab.rb +74 -0
  391. data/rdoc-sources/FXToolTip.rb +39 -0
  392. data/rdoc-sources/FXTopWindow.rb +163 -0
  393. data/rdoc-sources/FXTranslator.rb +32 -0
  394. data/rdoc-sources/FXTreeList.rb +514 -0
  395. data/rdoc-sources/FXTreeListBox.rb +219 -0
  396. data/rdoc-sources/FXTriStateButton.rb +49 -0
  397. data/rdoc-sources/FXVec2d.rb +96 -0
  398. data/rdoc-sources/FXVec2f.rb +96 -0
  399. data/rdoc-sources/FXVec3d.rb +118 -0
  400. data/rdoc-sources/FXVec3f.rb +118 -0
  401. data/rdoc-sources/FXVec4d.rb +139 -0
  402. data/rdoc-sources/FXVec4f.rb +139 -0
  403. data/rdoc-sources/FXVerticalFrame.rb +29 -0
  404. data/rdoc-sources/FXVisual.rb +79 -0
  405. data/rdoc-sources/FXWindow.rb +725 -0
  406. data/rdoc-sources/FXWizard.rb +59 -0
  407. data/rdoc-sources/FXXBMIcon.rb +37 -0
  408. data/rdoc-sources/FXXBMImage.rb +32 -0
  409. data/rdoc-sources/FXXPMIcon.rb +65 -0
  410. data/rdoc-sources/FXXPMImage.rb +31 -0
  411. data/rdoc-sources/README.rdoc +53 -0
  412. data/rdoc-sources/fxdefs.rb +90 -0
  413. data/tests/README +19 -0
  414. data/tests/TC_FXAccelTable.rb +57 -0
  415. data/tests/TC_FXApp.rb +16 -0
  416. data/tests/TC_FXArc.rb +26 -0
  417. data/tests/TC_FXBMPIcon.rb +15 -0
  418. data/tests/TC_FXBMPImage.rb +15 -0
  419. data/tests/TC_FXButton.rb +78 -0
  420. data/tests/TC_FXCheckButton.rb +57 -0
  421. data/tests/TC_FXComboBox.rb +63 -0
  422. data/tests/TC_FXDC.rb +372 -0
  423. data/tests/TC_FXDCPrint.rb +101 -0
  424. data/tests/TC_FXDCWindow.rb +23 -0
  425. data/tests/TC_FXDataTarget.rb +24 -0
  426. data/tests/TC_FXDialogBox.rb +12 -0
  427. data/tests/TC_FXDirList.rb +30 -0
  428. data/tests/TC_FXExtentd.rb +21 -0
  429. data/tests/TC_FXExtentf.rb +21 -0
  430. data/tests/TC_FXFileAssoc.rb +62 -0
  431. data/tests/TC_FXFileStream.rb +89 -0
  432. data/tests/TC_FXFoldingList.rb +32 -0
  433. data/tests/TC_FXFont.rb +69 -0
  434. data/tests/TC_FXFontDesc.rb +58 -0
  435. data/tests/TC_FXGLGroup.rb +32 -0
  436. data/tests/TC_FXGLShape.rb +28 -0
  437. data/tests/TC_FXGLViewer.rb +20 -0
  438. data/tests/TC_FXGradientBar.rb +89 -0
  439. data/tests/TC_FXHeader.rb +82 -0
  440. data/tests/TC_FXHiliteStyle.rb +23 -0
  441. data/tests/TC_FXIconDict.rb +52 -0
  442. data/tests/TC_FXIconList.rb +192 -0
  443. data/tests/TC_FXId.rb +19 -0
  444. data/tests/TC_FXImage.rb +155 -0
  445. data/tests/TC_FXLight.rb +33 -0
  446. data/tests/TC_FXList.rb +116 -0
  447. data/tests/TC_FXListBox.rb +49 -0
  448. data/tests/TC_FXMainWindow.rb +19 -0
  449. data/tests/TC_FXMat4f.rb +228 -0
  450. data/tests/TC_FXMaterial.rb +89 -0
  451. data/tests/TC_FXMemoryStream.rb +97 -0
  452. data/tests/TC_FXMenuCheck.rb +57 -0
  453. data/tests/TC_FXMenuCommand.rb +12 -0
  454. data/tests/TC_FXMenuRadio.rb +57 -0
  455. data/tests/TC_FXMessageBox.rb +25 -0
  456. data/tests/TC_FXPoint.rb +57 -0
  457. data/tests/TC_FXQuatf.rb +93 -0
  458. data/tests/TC_FXRadioButton.rb +57 -0
  459. data/tests/TC_FXRanged.rb +42 -0
  460. data/tests/TC_FXRangef.rb +42 -0
  461. data/tests/TC_FXRectangle.rb +88 -0
  462. data/tests/TC_FXRegion.rb +54 -0
  463. data/tests/TC_FXRegistry.rb +27 -0
  464. data/tests/TC_FXScrollArea.rb +28 -0
  465. data/tests/TC_FXScrollWindow.rb +28 -0
  466. data/tests/TC_FXSegment.rb +22 -0
  467. data/tests/TC_FXSettings.rb +34 -0
  468. data/tests/TC_FXShell.rb +26 -0
  469. data/tests/TC_FXSize.rb +54 -0
  470. data/tests/TC_FXStream.rb +11 -0
  471. data/tests/TC_FXTable.rb +561 -0
  472. data/tests/TC_FXTableItem.rb +48 -0
  473. data/tests/TC_FXText.rb +96 -0
  474. data/tests/TC_FXTopWindow.rb +32 -0
  475. data/tests/TC_FXTreeList.rb +100 -0
  476. data/tests/TC_FXTreeListBox.rb +41 -0
  477. data/tests/TC_FXUndoList.rb +43 -0
  478. data/tests/TC_FXVec2d.rb +142 -0
  479. data/tests/TC_FXVec2f.rb +137 -0
  480. data/tests/TC_FXVec3d.rb +150 -0
  481. data/tests/TC_FXVec3f.rb +150 -0
  482. data/tests/TC_FXVec4f.rb +158 -0
  483. data/tests/TC_FXViewport.rb +30 -0
  484. data/tests/TC_FXXBMIcon.rb +15 -0
  485. data/tests/TC_FXXBMImage.rb +15 -0
  486. data/tests/TC_FXXPMIcon.rb +15 -0
  487. data/tests/TC_FXXPMImage.rb +15 -0
  488. data/tests/TC_Misc.rb +157 -0
  489. data/tests/TC_downcast.rb +15 -0
  490. data/tests/TS_All.rb +25 -0
  491. data/tests/blankpage.ps +166 -0
  492. data/tests/howdypage.ps +181 -0
  493. data/tests/stress1.rb +92 -0
  494. data/tests/stress2.rb +51 -0
  495. data/tests/stress3.rb +117 -0
  496. data/tests/testcase.rb +37 -0
  497. metadata +556 -0
@@ -0,0 +1,168 @@
1
+ #/usr/bin/env ruby
2
+
3
+ require 'fox16'
4
+
5
+ include Fox
6
+
7
+ class ButtonWindow < FXMainWindow
8
+
9
+ def initialize(app)
10
+ # Invoke base class initialize first
11
+ super(app, "Button Test", :opts => DECOR_ALL, :x => 100, :y => 100)
12
+
13
+ # Create a tooltip
14
+ FXToolTip.new(self.getApp())
15
+
16
+ # Status bar
17
+ statusbar = FXStatusBar.new(self,
18
+ LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER)
19
+
20
+ # Controls on the right
21
+ controls = FXVerticalFrame.new(self,
22
+ LAYOUT_SIDE_RIGHT|LAYOUT_FILL_Y|PACK_UNIFORM_WIDTH)
23
+
24
+ # Separator
25
+ FXVerticalSeparator.new(self,
26
+ LAYOUT_SIDE_RIGHT|LAYOUT_FILL_Y|SEPARATOR_GROOVE)
27
+
28
+ # Contents
29
+ contents = FXHorizontalFrame.new(self,
30
+ LAYOUT_SIDE_LEFT|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y|PACK_UNIFORM_WIDTH,
31
+ :padding => 20)
32
+
33
+ # Construct icon from a PNG file on disk
34
+ bigpenguin = loadIcon("bigpenguin.png")
35
+
36
+ # The button
37
+ @button = FXButton.new(contents,
38
+ "&This is a multi-line label on\na button to show off the full\n" +
39
+ "capabilities of the button object.\t" +
40
+ "It also has a tooltip\n(which, by the way, can be multi-line also).\t" +
41
+ "Here's a helpful message for the status line.",
42
+ bigpenguin,
43
+ :opts => FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_X|LAYOUT_CENTER_Y|LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT,
44
+ :width => 300, :height => 200)
45
+
46
+ checkButton = FXCheckButton.new(controls, "Toolbar Style\tCool \"poppy\" style buttons")
47
+ checkButton.connect(SEL_COMMAND) do |sender, sel, checked|
48
+ if checked
49
+ @button.buttonStyle |= BUTTON_TOOLBAR
50
+ @button.frameStyle = FRAME_RAISED
51
+ else
52
+ @button.buttonStyle &= ~BUTTON_TOOLBAR
53
+ @button.frameStyle = FRAME_RAISED|FRAME_THICK
54
+ end
55
+ end
56
+
57
+ group1 = FXGroupBox.new(controls, "Horizontal Placement",
58
+ GROUPBOX_TITLE_CENTER|FRAME_RIDGE)
59
+ @group1_dt = FXDataTarget.new(2)
60
+ @group1_dt.connect(SEL_COMMAND) do
61
+ case @group1_dt.value
62
+ when 0
63
+ @button.iconPosition = (@button.iconPosition|ICON_BEFORE_TEXT) & ~ICON_AFTER_TEXT
64
+ when 1
65
+ @button.iconPosition = (@button.iconPosition|ICON_AFTER_TEXT) & ~ICON_BEFORE_TEXT
66
+ when 2
67
+ @button.iconPosition = (@button.iconPosition & ~ICON_AFTER_TEXT) & ~ICON_BEFORE_TEXT
68
+ end
69
+ end
70
+ FXRadioButton.new(group1, "Before Text", @group1_dt, FXDataTarget::ID_OPTION)
71
+ FXRadioButton.new(group1, "After Text", @group1_dt, FXDataTarget::ID_OPTION + 1)
72
+ FXRadioButton.new(group1, "Centered", @group1_dt, FXDataTarget::ID_OPTION + 2)
73
+
74
+ group2 = FXGroupBox.new(controls, "Vertical Placement",
75
+ GROUPBOX_TITLE_CENTER|FRAME_RIDGE)
76
+ @group2_dt = FXDataTarget.new(2)
77
+ @group2_dt.connect(SEL_COMMAND) do
78
+ case @group2_dt.value
79
+ when 0
80
+ @button.iconPosition = (@button.iconPosition|ICON_ABOVE_TEXT) & ~ICON_BELOW_TEXT
81
+ when 1
82
+ @button.iconPosition = (@button.iconPosition|ICON_BELOW_TEXT) & ~ICON_ABOVE_TEXT
83
+ when 2
84
+ @button.iconPosition = (@button.iconPosition & ~ICON_ABOVE_TEXT) & ~ICON_BELOW_TEXT
85
+ end
86
+ end
87
+ FXRadioButton.new(group2, "Above Text", @group2_dt, FXDataTarget::ID_OPTION)
88
+ FXRadioButton.new(group2, "Below Text", @group2_dt, FXDataTarget::ID_OPTION + 1)
89
+ FXRadioButton.new(group2, "Centered", @group2_dt, FXDataTarget::ID_OPTION + 2)
90
+
91
+ group3 = FXGroupBox.new(controls, "Horizontal Justification",
92
+ GROUPBOX_TITLE_CENTER|FRAME_RIDGE)
93
+ @group3_dt = FXDataTarget.new(0)
94
+ @group3_dt.connect(SEL_COMMAND) do
95
+ case @group3_dt.value
96
+ when 0
97
+ @button.justify &= ~JUSTIFY_HZ_APART
98
+ when 1
99
+ @button.justify = (@button.justify & ~JUSTIFY_HZ_APART) | JUSTIFY_LEFT
100
+ when 2
101
+ @button.justify = (@button.justify & ~JUSTIFY_HZ_APART) | JUSTIFY_RIGHT
102
+ when 3
103
+ @button.justify |= JUSTIFY_HZ_APART
104
+ end
105
+ end
106
+ FXRadioButton.new(group3, "Center", @group3_dt, FXDataTarget::ID_OPTION)
107
+ FXRadioButton.new(group3, "Left", @group3_dt, FXDataTarget::ID_OPTION + 1)
108
+ FXRadioButton.new(group3, "Right", @group3_dt, FXDataTarget::ID_OPTION + 2)
109
+ FXRadioButton.new(group3, "Apart", @group3_dt, FXDataTarget::ID_OPTION + 3)
110
+
111
+ group4 = FXGroupBox.new(controls, "Vertical Justification",
112
+ GROUPBOX_TITLE_CENTER|FRAME_RIDGE)
113
+ @group4_dt = FXDataTarget.new(0)
114
+ @group4_dt.connect(SEL_COMMAND) do
115
+ case @group4_dt.value
116
+ when 0
117
+ @button.justify &= ~JUSTIFY_VT_APART
118
+ when 1
119
+ @button.justify = (@button.justify & ~JUSTIFY_VT_APART) | JUSTIFY_TOP
120
+ when 2
121
+ @button.justify = (@button.justify & ~JUSTIFY_VT_APART) | JUSTIFY_BOTTOM
122
+ when 3
123
+ @button.justify |= JUSTIFY_VT_APART
124
+ end
125
+ end
126
+ FXRadioButton.new(group4, "Center", @group4_dt, FXDataTarget::ID_OPTION)
127
+ FXRadioButton.new(group4, "Top", @group4_dt, FXDataTarget::ID_OPTION + 1)
128
+ FXRadioButton.new(group4, "Bottom", @group4_dt, FXDataTarget::ID_OPTION + 2)
129
+ FXRadioButton.new(group4, "Apart", @group4_dt, FXDataTarget::ID_OPTION + 3)
130
+
131
+ quitButton = FXButton.new(controls, "&Quit", :opts => FRAME_RAISED|FRAME_THICK|LAYOUT_FILL_X)
132
+ quitButton.connect(SEL_COMMAND) { getApp().exit(0) }
133
+ end
134
+
135
+ # Load the named icon from a file
136
+ def loadIcon(filename)
137
+ begin
138
+ filename = File.join("icons", filename)
139
+ icon = nil
140
+ File.open(filename, "rb") do |f|
141
+ icon = FXPNGIcon.new(getApp(), f.read)
142
+ end
143
+ icon
144
+ rescue
145
+ raise RuntimeError, "Couldn't load icon: #{filename}"
146
+ end
147
+ end
148
+
149
+ def create
150
+ super
151
+ show(PLACEMENT_SCREEN)
152
+ end
153
+ end
154
+
155
+ if __FILE__ == $0
156
+ # Construct an application
157
+ application = FXApp.new("Button", "FoxTest")
158
+
159
+ # Construct the main window
160
+ ButtonWindow.new(application)
161
+
162
+ # Create the application
163
+ application.create
164
+
165
+ # Run it
166
+ application.run
167
+ end
168
+
@@ -0,0 +1,35 @@
1
+ require 'fox16'
2
+ require 'google_chart'
3
+ require 'open-uri'
4
+
5
+ include Fox
6
+
7
+ class ChartsWindow < FXMainWindow
8
+ def initialize(app)
9
+ super(app, "Google Charts Demo", :width => 650, :height => 250)
10
+ FXImageFrame.new(self, nil, :opts => LAYOUT_FILL) do |f|
11
+ f.image = FXPNGImage.new(app, open(bar_chart.to_escaped_url, "rb").read)
12
+ end
13
+ end
14
+
15
+ def bar_chart
16
+ GoogleChart::BarChart.new('600x200', 'My Chart', :vertical) do |bc|
17
+ bc.data 'Trend 1', [5,4,3,1,3,5], '0000ff'
18
+ bc.data 'Trend 2', [1,2,3,4,5,6], 'ff0000'
19
+ bc.data 'Trend 3', [6,5,4,4,5,6], '00ff00'
20
+ end
21
+ end
22
+
23
+ def create
24
+ super
25
+ show(PLACEMENT_SCREEN)
26
+ end
27
+ end
28
+
29
+ if __FILE__ == $0
30
+ FXApp.new do |app|
31
+ ChartsWindow.new(app)
32
+ app.create
33
+ app.run
34
+ end
35
+ end
@@ -0,0 +1,170 @@
1
+ require 'fox16'
2
+
3
+ include Fox
4
+
5
+ class CustomTableItem < FXTableItem
6
+ def drawContent(table, dc, x, y, w, h)
7
+ puts "in drawContent()"
8
+ hg = table.horizontalGridShown?
9
+ vg = table.verticalGridShown?
10
+ ml = table.marginLeft + (vg ? 1 : 0)
11
+ mt = table.marginTop + (hg ? 1 : 0)
12
+ mr = table.marginRight
13
+ mb = table.marginBottom
14
+ font = dc.font
15
+ lbl = text
16
+ icn = icon
17
+
18
+ # Text width and height
19
+ beg, tw, th = 0, 0, 0
20
+ begin
21
+ _end = beg;
22
+ _end += 1 while _end < lbl.length && lbl[_end].chr != '\n'
23
+ t = font.getTextWidth(lbl[beg..._end])
24
+ tw = t if t > tw
25
+ th += font.fontHeight
26
+ beg = _end + 1
27
+ end while _end < lbl.length
28
+
29
+ # Icon size
30
+ iw, ih = 0, 0
31
+ unless icn.nil?
32
+ iw = icn.width
33
+ ih = icn.height
34
+ end
35
+
36
+ # Icon-text spacing
37
+ s = 0
38
+ s = 4 if (iw > 0 && tw > 0)
39
+
40
+ # Fix x coordinate
41
+ if justify & LEFT == 1
42
+ case iconPosition
43
+ when BEFORE
44
+ ix = x + ml
45
+ tx = ix + iw + s
46
+ when AFTER
47
+ tx = x + ml
48
+ ix = tx + tw + s
49
+ else
50
+ ix = x + ml
51
+ tx = x + ml
52
+ end
53
+ elsif justify & RIGHT == 1
54
+ case iconPosition
55
+ when BEFORE
56
+ tx = x + w - mr - tw
57
+ ix = tx - iw - s
58
+ when AFTER
59
+ ix = x + w - mr - iw
60
+ tx = ix - tw - s
61
+ else
62
+ ix = x + w - mr - iw
63
+ tx = x + w - mr - tw
64
+ end
65
+ else
66
+ case iconPosition
67
+ when BEFORE
68
+ ix = x + (ml + w - mr)/2 - (tw + iw + s)/2
69
+ tx = ix + iw + s
70
+ when AFTER
71
+ tx = x + (ml + w - mr)/2 - (tw + iw + s)/2
72
+ ix = tx + tw + s
73
+ else
74
+ ix = x + (ml + w - mr)/2 - iw/2
75
+ tx = x + (ml + w - mr)/2 -tw/2
76
+ end
77
+ end
78
+
79
+ # Fix y coordinate
80
+ if justify & TOP == 1
81
+ case iconPosition
82
+ when ABOVE
83
+ iy = y + mt
84
+ ty = iy + ih
85
+ when BELOW
86
+ ty = y + mt
87
+ iy = ty + th
88
+ else
89
+ iy = y + mt
90
+ ty = y + mt
91
+ end
92
+ elsif justify & BOTTOM == 1
93
+ case iconPosition
94
+ when ABOVE
95
+ ty = y + h - mb - th
96
+ iy = ty - ih
97
+ when BELOW
98
+ iy = y + h - mb - ih
99
+ ty = iy - th
100
+ else
101
+ iy = y + h - mb - ih
102
+ ty = y + h - mb - th
103
+ end
104
+ else
105
+ case iconPosition
106
+ when ABOVE
107
+ iy = y + (mt + h - mb)/2 - (th + ih)/2
108
+ ty = iy + ih
109
+ when BELOW
110
+ ty = y + (mt + h - mb)/2 - (th + ih)/2
111
+ iy = ty + th
112
+ else
113
+ iy = y + (mt + h - mb)/2 - ih/2
114
+ ty = y + (mt + h - mb)/2 - th/2
115
+ end
116
+ end
117
+
118
+ # Paint icon
119
+ dc.drawIcon(icn, ix, iy) unless icn.nil?
120
+
121
+ # Text color
122
+ if selected?
123
+ dc.foreground = table.selTextColor
124
+ else
125
+ dc.foreground = table.textColor
126
+ end
127
+ puts "dc.foreground = (#{FXREDVAL(dc.foreground)}, #{FXGREENVAL(dc.foreground)}, #{FXBLUEVAL(dc.foreground)})"
128
+
129
+ # Draw text
130
+ yy = ty + font.fontAscent
131
+ beg = 0
132
+ begin
133
+ _end = beg
134
+ _end += 1 while _end < lbl.length && lbl[_end].chr != '\n'
135
+ if justify & LEFT == 1
136
+ xx = tx
137
+ elsif justify & RIGHT == 1
138
+ xx = tx + tw - font.getTextWidth(lbl[beg..._end])
139
+ else
140
+ xx = tx + (tw - font.getTextWidth(lbl[beg..._end]))/2
141
+ end
142
+ dc.drawText(xx, yy, lbl[beg..._end])
143
+ yy += font.fontHeight
144
+ beg = _end + 1
145
+ end while _end < lbl.length
146
+ end
147
+ end
148
+
149
+ class CustomTable < FXTable
150
+ def createItem *parameters
151
+ CustomTableItem.new *parameters
152
+ end
153
+ end
154
+
155
+ app = FXApp.new
156
+ main = FXMainWindow.new app, 'Test'
157
+
158
+ table = CustomTable.new main
159
+ table.setTableSize 2, 2
160
+ table.visibleRows = 2
161
+ table.visibleColumns = 2
162
+
163
+ table.setItemText 0, 0, 'one'
164
+ table.setItemText 0, 1, 'two'
165
+ table.setItemText 1, 0, 'three'
166
+ table.setItemText 1, 1, 'four'
167
+
168
+ app.create
169
+ main.show PLACEMENT_SCREEN
170
+ app.run
@@ -0,0 +1,223 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fox16'
4
+ require 'fox16/colors'
5
+
6
+ include Fox
7
+
8
+ BLURB = <<END
9
+ FXDataTarget can be used to connect a widget to an application variable without any of the
10
+ tradional "glue" programming code.
11
+
12
+ The widgets below are connected (via FXDataTarget) to an integer, real, string, option, and
13
+ color variable, respectively.
14
+
15
+ Changing one of them will cause all widgets connected to the same FXDataTarget to
16
+ update so as to reflect the value of the application variable.
17
+
18
+ The progress bar below shows a time-varying variable, demonstrating that widgets
19
+ can be updated via FXDataTarget's regardless how the variables are changed.
20
+
21
+ Note that the "Option" pulldown menu is also connected to the option variable!
22
+ END
23
+
24
+ class DataTargetWindow < FXMainWindow
25
+ def initialize(app)
26
+ # Initialize base class
27
+ super(app, "Data Targets Test", :opts => DECOR_ALL, :x => 20, :y => 20, :width => 700, :height => 460)
28
+
29
+ # Create a data target with an integer value
30
+ @intTarget = FXDataTarget.new(10)
31
+
32
+ # Create a data target with a floating point value
33
+ @floatTarget = FXDataTarget.new(3.1415927)
34
+
35
+ # Create a data target with a string value
36
+ @stringTarget = FXDataTarget.new("FOX")
37
+
38
+ # Create a data target with a color value
39
+ @colorTarget = FXDataTarget.new(FXColor::Red)
40
+
41
+ # Create an integer data target to track the selected option
42
+ @optionTarget = FXDataTarget.new(1)
43
+
44
+ # Create another integer data target to track the "progress"
45
+ @progressTarget = FXDataTarget.new(0)
46
+
47
+ # Menubar
48
+ menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
49
+
50
+ # File menu
51
+ filemenu = FXMenuPane.new(self)
52
+ FXMenuCommand.new(filemenu, "Progress dialog...").connect(SEL_COMMAND) do
53
+ @progressdialog.show(PLACEMENT_OWNER)
54
+ end
55
+ FXMenuCommand.new(filemenu, "&Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT)
56
+ FXMenuTitle.new(menubar, "&File", nil, filemenu)
57
+
58
+ # Create a progress dialog that's also tied into the integer data target's value
59
+ @progressdialog = FXProgressDialog.new(self, "Progress", "Incoming...", PROGRESSDIALOG_CANCEL|DECOR_BORDER|DECOR_RESIZE)
60
+ @progressdialog.target = @intTarget
61
+ @progressdialog.selector = FXDataTarget::ID_VALUE
62
+
63
+ # Option menu
64
+ optionmenu = FXMenuPane.new(self)
65
+ FXMenuCheck.new(optionmenu, "Option 1", @optionTarget, FXDataTarget::ID_OPTION+1)
66
+ FXMenuCheck.new(optionmenu, "Option 2", @optionTarget, FXDataTarget::ID_OPTION+2)
67
+ FXMenuCheck.new(optionmenu, "Option 3", @optionTarget, FXDataTarget::ID_OPTION+3)
68
+ FXMenuCheck.new(optionmenu, "Option 4", @optionTarget, FXDataTarget::ID_OPTION+4)
69
+ FXMenuTitle.new(menubar, "&Option", nil, optionmenu)
70
+
71
+ # Lone progress bar at the bottom
72
+ FXProgressBar.new(self, @progressTarget, FXDataTarget::ID_VALUE,
73
+ LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK)
74
+
75
+ FXHorizontalSeparator.new(self,
76
+ LAYOUT_SIDE_TOP|SEPARATOR_GROOVE|LAYOUT_FILL_X)
77
+
78
+ horframe = FXHorizontalFrame.new(self, LAYOUT_SIDE_TOP | LAYOUT_FILL_X)
79
+ FXLabel.new(horframe, BLURB, nil, LAYOUT_SIDE_TOP | JUSTIFY_LEFT)
80
+
81
+ FXProgressBar.new(horframe, @intTarget, FXDataTarget::ID_VALUE,
82
+ PROGRESSBAR_PERCENTAGE | PROGRESSBAR_DIAL | LAYOUT_SIDE_TOP |
83
+ LAYOUT_SIDE_RIGHT | LAYOUT_RIGHT | LAYOUT_FILL_Y | LAYOUT_FILL_X)
84
+
85
+ FXHorizontalSeparator.new(self,
86
+ LAYOUT_SIDE_TOP|SEPARATOR_GROOVE|LAYOUT_FILL_X)
87
+ FXSlider.new(self, @intTarget, FXDataTarget::ID_VALUE, (SLIDER_VERTICAL|
88
+ SLIDER_INSIDE_BAR|LAYOUT_SIDE_RIGHT|LAYOUT_FILL_Y|LAYOUT_FIX_WIDTH),
89
+ :width => 20)
90
+
91
+ # Arrange nicely
92
+ matrix = FXMatrix.new(self, 7,
93
+ MATRIX_BY_COLUMNS|LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
94
+
95
+ # First row
96
+ FXLabel.new(matrix, "&Integer", nil,
97
+ LAYOUT_CENTER_Y|LAYOUT_CENTER_X|JUSTIFY_RIGHT|LAYOUT_FILL_ROW)
98
+ FXTextField.new(matrix, 10, @intTarget, FXDataTarget::ID_VALUE,
99
+ LAYOUT_CENTER_Y|LAYOUT_CENTER_X|FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW)
100
+ FXTextField.new(matrix, 10, @intTarget, FXDataTarget::ID_VALUE,
101
+ LAYOUT_CENTER_Y|LAYOUT_CENTER_X|FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW)
102
+ FXSlider.new(matrix, @intTarget, FXDataTarget::ID_VALUE,
103
+ LAYOUT_CENTER_Y|LAYOUT_FILL_ROW|LAYOUT_FIX_WIDTH, :width => 100)
104
+ FXDial.new(matrix, @intTarget, FXDataTarget::ID_VALUE, (LAYOUT_CENTER_Y|
105
+ LAYOUT_FILL_ROW|LAYOUT_FIX_WIDTH|DIAL_HORIZONTAL|DIAL_HAS_NOTCH),
106
+ :width => 100)
107
+ FXSpinner.new(matrix, 5, @intTarget, FXDataTarget::ID_VALUE,
108
+ SPIN_CYCLIC|FRAME_SUNKEN|FRAME_THICK|LAYOUT_CENTER_Y|LAYOUT_FILL_ROW)
109
+ FXProgressBar.new(matrix, @intTarget, FXDataTarget::ID_VALUE,
110
+ (LAYOUT_CENTER_Y|LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|
111
+ PROGRESSBAR_PERCENTAGE|LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW))
112
+
113
+ # Second row
114
+ FXLabel.new(matrix, "&Real", nil,
115
+ LAYOUT_CENTER_Y|LAYOUT_CENTER_X|JUSTIFY_RIGHT|LAYOUT_FILL_ROW)
116
+ FXTextField.new(matrix, 10, @floatTarget, FXDataTarget::ID_VALUE,
117
+ (TEXTFIELD_REAL|LAYOUT_CENTER_Y|LAYOUT_CENTER_X|
118
+ FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW))
119
+ FXTextField.new(matrix, 10, @floatTarget, FXDataTarget::ID_VALUE,
120
+ (TEXTFIELD_REAL|LAYOUT_CENTER_Y|LAYOUT_CENTER_X|
121
+ FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW))
122
+ FXSlider.new(matrix, @floatTarget, FXDataTarget::ID_VALUE,
123
+ LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW|LAYOUT_FIX_WIDTH, :width => 100)
124
+ FXDial.new(matrix, @floatTarget, FXDataTarget::ID_VALUE,
125
+ (LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW|LAYOUT_FIX_WIDTH|
126
+ DIAL_HORIZONTAL|DIAL_HAS_NOTCH), :width => 100)
127
+
128
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
129
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
130
+
131
+ # Third row
132
+ FXLabel.new(matrix, "&String", nil,
133
+ LAYOUT_CENTER_Y|LAYOUT_CENTER_X|JUSTIFY_RIGHT|LAYOUT_FILL_ROW)
134
+ FXTextField.new(matrix, 10, @stringTarget, FXDataTarget::ID_VALUE,
135
+ LAYOUT_CENTER_Y|LAYOUT_CENTER_X|FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW)
136
+ FXTextField.new(matrix, 10, @stringTarget, FXDataTarget::ID_VALUE,
137
+ LAYOUT_CENTER_Y|LAYOUT_CENTER_X|FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW)
138
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
139
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
140
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
141
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
142
+
143
+ # Fourth row
144
+ FXLabel.new(matrix, "&Option", nil,
145
+ LAYOUT_CENTER_Y|LAYOUT_CENTER_X|JUSTIFY_RIGHT|LAYOUT_FILL_ROW)
146
+ FXTextField.new(matrix, 10, @optionTarget, FXDataTarget::ID_VALUE,
147
+ (TEXTFIELD_INTEGER|LAYOUT_CENTER_Y|LAYOUT_CENTER_X|FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_ROW))
148
+ FXRadioButton.new(matrix, "Option &1",
149
+ @optionTarget, FXDataTarget::ID_OPTION + 1,
150
+ LAYOUT_CENTER_Y|LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW|ICON_BEFORE_TEXT)
151
+ FXRadioButton.new(matrix, "Option &2",
152
+ @optionTarget, FXDataTarget::ID_OPTION + 2,
153
+ LAYOUT_CENTER_Y|LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW|ICON_BEFORE_TEXT)
154
+ FXRadioButton.new(matrix, "Option &3",
155
+ @optionTarget, FXDataTarget::ID_OPTION + 3,
156
+ LAYOUT_CENTER_Y|LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW|ICON_BEFORE_TEXT)
157
+ FXRadioButton.new(matrix, "Option &4",
158
+ @optionTarget, FXDataTarget::ID_OPTION + 4,
159
+ LAYOUT_CENTER_Y|LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW|ICON_BEFORE_TEXT)
160
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
161
+
162
+ # Fifth
163
+ FXLabel.new(matrix, "&Color", nil,
164
+ LAYOUT_CENTER_Y|LAYOUT_CENTER_X|JUSTIFY_RIGHT|LAYOUT_FILL_ROW)
165
+ FXColorWell.new(matrix, 0, @colorTarget, FXDataTarget::ID_VALUE,
166
+ LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW, :padLeft => 0, :padRight => 0, :padTop => 0, :padBottom => 0)
167
+ FXColorWell.new(matrix, 0, @colorTarget, FXDataTarget::ID_VALUE,
168
+ LAYOUT_CENTER_Y|LAYOUT_FILL_X|LAYOUT_FILL_ROW, :padLeft => 0, :padRight => 0, :padTop => 0, :padBottom => 0)
169
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
170
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
171
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
172
+ FXFrame.new(matrix, LAYOUT_FILL_COLUMN|LAYOUT_FILL_ROW)
173
+
174
+ # Install an accelerator
175
+ self.accelTable.addAccel(fxparseAccel("Ctl-Q"), getApp(), FXSEL(SEL_COMMAND, FXApp::ID_QUIT))
176
+ end
177
+
178
+ # Timer expired; update the progress
179
+ def onTimeout(sender, sel, ptr)
180
+ # Increment the progress modulo 100
181
+ @progressTarget.value = (@progressTarget.value + 1) % 100
182
+
183
+ # Reset the timer for next time
184
+ getApp().addTimeout(80, method(:onTimeout))
185
+ end
186
+
187
+ # Quit
188
+ def onCmdQuit(sender, sel, ptr)
189
+ getApp.exit(0)
190
+ end
191
+
192
+ # Start
193
+ def create
194
+ # Create window
195
+ super
196
+
197
+ # Kick off the timer
198
+ getApp().addTimeout(80, method(:onTimeout))
199
+
200
+ # Show the main window
201
+ show(PLACEMENT_SCREEN)
202
+ end
203
+ end
204
+
205
+ if __FILE__ == $0
206
+ # Make an application
207
+ application = FXApp.new("DataTarget", "FoxTest")
208
+
209
+ # Current threads implementation causes problems for this example, so disable
210
+ application.threadsEnabled = false
211
+
212
+ # Create main window
213
+ window = DataTargetWindow.new(application)
214
+
215
+ # Handle interrupts to quit application gracefully
216
+ application.addSignal("SIGINT", window.method(:onCmdQuit))
217
+
218
+ # Create the application
219
+ application.create
220
+
221
+ # Run
222
+ application.run
223
+ end