fxruby 1.6.13-mswin32

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 (496) 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 +133 -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 +685 -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/datatarget.rb +223 -0
  78. data/examples/dctest.rb +696 -0
  79. data/examples/dialog.rb +143 -0
  80. data/examples/dilbert.rb +67 -0
  81. data/examples/dirlist.rb +63 -0
  82. data/examples/dragdrop.rb +97 -0
  83. data/examples/dragsource.rb +80 -0
  84. data/examples/dropsite.rb +59 -0
  85. data/examples/foursplit.rb +97 -0
  86. data/examples/gltest.rb +330 -0
  87. data/examples/glviewer.rb +576 -0
  88. data/examples/groupbox.rb +392 -0
  89. data/examples/header.rb +149 -0
  90. data/examples/hello.rb +12 -0
  91. data/examples/hello2.rb +51 -0
  92. data/examples/iRAA.rb +153 -0
  93. data/examples/iconlist.rb +92 -0
  94. data/examples/icons/AngryGuyInBunnySuit.ico +0 -0
  95. data/examples/icons/FatBot.ico +0 -0
  96. data/examples/icons/FlippedySwitch.ico +0 -0
  97. data/examples/icons/LeGoon.ico +0 -0
  98. data/examples/icons/Net.ico +0 -0
  99. data/examples/icons/RedMacOS.ico +0 -0
  100. data/examples/icons/SawBlade.ico +0 -0
  101. data/examples/icons/backview.png +0 -0
  102. data/examples/icons/big.png +0 -0
  103. data/examples/icons/bigfolder.png +0 -0
  104. data/examples/icons/bigpenguin.png +0 -0
  105. data/examples/icons/bottomview.png +0 -0
  106. data/examples/icons/camera.png +0 -0
  107. data/examples/icons/capbutt.png +0 -0
  108. data/examples/icons/capnotlast.png +0 -0
  109. data/examples/icons/capproj.png +0 -0
  110. data/examples/icons/capround.png +0 -0
  111. data/examples/icons/colorpal.png +0 -0
  112. data/examples/icons/copy.png +0 -0
  113. data/examples/icons/cut.png +0 -0
  114. data/examples/icons/delimit.png +0 -0
  115. data/examples/icons/dippy.png +0 -0
  116. data/examples/icons/double_dash.png +0 -0
  117. data/examples/icons/filenew.png +0 -0
  118. data/examples/icons/fileopen.png +0 -0
  119. data/examples/icons/filesave.png +0 -0
  120. data/examples/icons/filesaveas.png +0 -0
  121. data/examples/icons/fonts.png +0 -0
  122. data/examples/icons/fox.png +0 -0
  123. data/examples/icons/foxicon.png +0 -0
  124. data/examples/icons/frontview.png +0 -0
  125. data/examples/icons/gem_big.png +0 -0
  126. data/examples/icons/gem_small.png +0 -0
  127. data/examples/icons/hello2.png +0 -0
  128. data/examples/icons/help.png +0 -0
  129. data/examples/icons/indent.png +0 -0
  130. data/examples/icons/jbevel.png +0 -0
  131. data/examples/icons/jmiter.png +0 -0
  132. data/examples/icons/jround.png +0 -0
  133. data/examples/icons/kill.png +0 -0
  134. data/examples/icons/leftview.png +0 -0
  135. data/examples/icons/light.png +0 -0
  136. data/examples/icons/minidoc.png +0 -0
  137. data/examples/icons/minifolder.png +0 -0
  138. data/examples/icons/minifolderopen.png +0 -0
  139. data/examples/icons/newfolder.png +0 -0
  140. data/examples/icons/nolight.png +0 -0
  141. data/examples/icons/onoff_dash.png +0 -0
  142. data/examples/icons/palette.png +0 -0
  143. data/examples/icons/parallel.png +0 -0
  144. data/examples/icons/paste.png +0 -0
  145. data/examples/icons/pattern.png +0 -0
  146. data/examples/icons/penguin.png +0 -0
  147. data/examples/icons/perspective.png +0 -0
  148. data/examples/icons/printicon.png +0 -0
  149. data/examples/icons/prop.png +0 -0
  150. data/examples/icons/redo.png +0 -0
  151. data/examples/icons/rightview.png +0 -0
  152. data/examples/icons/saveas.png +0 -0
  153. data/examples/icons/shutter1.png +0 -0
  154. data/examples/icons/shutter2.png +0 -0
  155. data/examples/icons/small.png +0 -0
  156. data/examples/icons/smoothlight.png +0 -0
  157. data/examples/icons/solid_line.png +0 -0
  158. data/examples/icons/tbuplevel.png +0 -0
  159. data/examples/icons/topview.png +0 -0
  160. data/examples/icons/undo.png +0 -0
  161. data/examples/icons/winapp.png +0 -0
  162. data/examples/icons/zoom.png +0 -0
  163. data/examples/image.rb +279 -0
  164. data/examples/imageviewer.rb +509 -0
  165. data/examples/inputs.rb +83 -0
  166. data/examples/mditest.rb +180 -0
  167. data/examples/pig.rb +77 -0
  168. data/examples/raabrowser.rb +122 -0
  169. data/examples/ratio.rb +80 -0
  170. data/examples/rulerview.rb +27 -0
  171. data/examples/scintilla-test.rb +81 -0
  172. data/examples/scribble-orig.rb +186 -0
  173. data/examples/scribble.rb +162 -0
  174. data/examples/shutter.rb +158 -0
  175. data/examples/splitter.rb +211 -0
  176. data/examples/styledtext.rb +82 -0
  177. data/examples/tabbook.rb +165 -0
  178. data/examples/table.rb +187 -0
  179. data/examples/textedit/commands.rb +114 -0
  180. data/examples/textedit/helpwindow.rb +299 -0
  181. data/examples/textedit/prefdialog.rb +239 -0
  182. data/examples/textedit/textedit.rb +1763 -0
  183. data/examples/unicode.rb +36 -0
  184. data/ext/fox16/fox16.so +0 -0
  185. data/index.html +14 -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 +2725 -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 +286 -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 +69 -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/stress1.rb +94 -0
  483. data/tests/stress2.rb +51 -0
  484. data/tests/stress3.rb +117 -0
  485. data/tests/testcase.rb +37 -0
  486. data/web/art/fxrubylogo.png +0 -0
  487. data/web/art/fxrubylogo_small.png +0 -0
  488. data/web/art/line.gif +0 -0
  489. data/web/art/oul_grey.gif +0 -0
  490. data/web/art/our.gif +0 -0
  491. data/web/downloads.html +93 -0
  492. data/web/home.html +113 -0
  493. data/web/menu.html +50 -0
  494. data/web/styles.css +167 -0
  495. data/web/top.html +15 -0
  496. metadata +548 -0
@@ -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,187 @@
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
+ extract = FXMenuCommand.new(filemenu, "Extract")
91
+ extract.connect(SEL_COMMAND) do
92
+ result = @table.extractText(0, @table.numRows-1, 0, @table.numColumns-1)
93
+ puts result
94
+ end
95
+
96
+ # Options Menu
97
+ tablemenu = FXMenuPane.new(self)
98
+ FXMenuCheck.new(tablemenu, "Horizontal grid", @table, FXTable::ID_HORZ_GRID)
99
+ FXMenuCheck.new(tablemenu, "Vertical grid", @table, FXTable::ID_VERT_GRID)
100
+ FXMenuTitle.new(menubar, "&Options", nil, tablemenu)
101
+
102
+ # Manipulations Menu
103
+ manipmenu = FXMenuPane.new(self)
104
+ FXMenuCommand.new(manipmenu, "Delete Column\tCtl-C", nil,
105
+ @table, FXTable::ID_DELETE_COLUMN)
106
+ FXMenuCommand.new(manipmenu, "Delete Row\tCtl-R", nil,
107
+ @table, FXTable::ID_DELETE_ROW)
108
+ FXMenuCommand.new(manipmenu, "Insert Column\tCtl-Shift-C", nil,
109
+ @table, FXTable::ID_INSERT_COLUMN)
110
+ FXMenuCommand.new(manipmenu, "Insert Row\tCtl-Shift-R", nil,
111
+ @table, FXTable::ID_INSERT_ROW)
112
+ FXMenuCommand.new(manipmenu, "Resize table...").connect(SEL_COMMAND, method(:onCmdResizeTable))
113
+ FXMenuTitle.new(menubar, "&Manipulations", nil, manipmenu)
114
+
115
+ # Selection Menu
116
+ selectmenu = FXMenuPane.new(self)
117
+ FXMenuCommand.new(selectmenu, "Select All", nil, @table, FXTable::ID_SELECT_ALL)
118
+ FXMenuCommand.new(selectmenu, "Select Cell", nil, @table, FXTable::ID_SELECT_CELL)
119
+ FXMenuCommand.new(selectmenu, "Select Row", nil, @table, FXTable::ID_SELECT_ROW)
120
+ FXMenuCommand.new(selectmenu, "Select Column", nil, @table, FXTable::ID_SELECT_COLUMN)
121
+ FXMenuCommand.new(selectmenu, "Deselect All", nil, @table, FXTable::ID_DESELECT_ALL)
122
+ FXMenuCommand.new(selectmenu, "Cut to Clipboard", nil, @table, FXTable::ID_CUT_SEL)
123
+ FXMenuCommand.new(selectmenu, "Copy to Clipboard", nil, @table, FXTable::ID_COPY_SEL)
124
+ FXMenuCommand.new(selectmenu, "Paste from Clipboard", nil, @table, FXTable::ID_PASTE_SEL)
125
+ FXMenuCommand.new(selectmenu, "Delete", nil, @table, FXTable::ID_DELETE_SEL)
126
+ FXMenuTitle.new(menubar, "&Selection", nil, selectmenu)
127
+ end
128
+
129
+ # Resize the table
130
+ def onCmdResizeTable(sender, sel, ptr)
131
+ # Create an empty dialog box
132
+ dlg = FXDialogBox.new(self, "Resize Table")
133
+
134
+ # Set up its contents
135
+ frame = FXHorizontalFrame.new(dlg, LAYOUT_FILL_X|LAYOUT_FILL_Y)
136
+ FXLabel.new(frame, "Rows:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
137
+ rows = FXTextField.new(frame, 5,
138
+ :opts => JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
139
+ FXLabel.new(frame, "Columns:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
140
+ cols = FXTextField.new(frame, 5,
141
+ :opts => JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
142
+ FXButton.new(frame, "Cancel", nil, dlg, FXDialogBox::ID_CANCEL,
143
+ FRAME_RAISED|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
144
+ FXButton.new(frame, " OK ", nil, dlg, FXDialogBox::ID_ACCEPT,
145
+ FRAME_RAISED|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
146
+
147
+ # Initialize the text fields' contents
148
+ oldnr, oldnc = @table.numRows, @table.numColumns
149
+ rows.text = oldnr.to_s
150
+ cols.text = oldnc.to_s
151
+
152
+ # FXDialogBox#execute will return non-zero if the user clicks OK
153
+ if dlg.execute != 0
154
+ nr, nc = rows.text.to_i, cols.text.to_i
155
+ nr = 0 if nr < 0
156
+ nc = 0 if nc < 0
157
+ @table.setTableSize(nr, nc)
158
+ (0...nr).each { |r|
159
+ (0...nc).each { |c|
160
+ # @table.setItemText(r, c, "r:#{r+1} c:#{c+1}")
161
+ }
162
+ }
163
+ end
164
+ return 1
165
+ end
166
+
167
+ # Create and show this window
168
+ def create
169
+ super
170
+ show(PLACEMENT_SCREEN)
171
+ end
172
+ end
173
+
174
+ # Start the whole thing
175
+ if __FILE__ == $0
176
+ # Make application
177
+ application = FXApp.new("TableApp", "FoxTest")
178
+
179
+ # Make window
180
+ TableWindow.new(application)
181
+
182
+ # Create app
183
+ application.create
184
+
185
+ # Run
186
+ application.run
187
+ end
@@ -0,0 +1,114 @@
1
+ require 'fox16'
2
+ require 'fox16/undolist'
3
+
4
+ include Fox
5
+
6
+ # Undo record for text fragment
7
+ class FXTextCommand < FXCommand
8
+
9
+ def initialize(txt, change)
10
+ @text = txt
11
+ @buffer = nil
12
+ @pos = change.pos
13
+ @numCharsDeleted = change.ndel
14
+ @numCharsInserted = change.nins
15
+ end
16
+
17
+ def size
18
+ (@buffer != nil) ? @buffer.size : 0
19
+ end
20
+ end
21
+
22
+ # Insert command
23
+ class FXTextInsert < FXTextCommand
24
+
25
+ def undoName
26
+ "Undo insert"
27
+ end
28
+
29
+ def redoName
30
+ "Redo insert"
31
+ end
32
+
33
+ # Undoing an insert removes the previously inserted text
34
+ def undo
35
+ @buffer = @text.extractText(@pos, @numCharsInserted)
36
+ @text.removeText(@pos, @numCharsInserted)
37
+ @text.cursorPos = @pos
38
+ @text.makePositionVisible(@pos)
39
+ end
40
+
41
+ # Redoing an insert re-inserts the same text
42
+ def redo
43
+ @text.insertText(@pos, @buffer)
44
+ @text.cursorPos = @pos + @numCharsInserted
45
+ @text.makePositionVisible(@pos + @numCharsInserted)
46
+ @buffer = nil
47
+ end
48
+ end
49
+
50
+ # Delete command
51
+ class FXTextDelete < FXTextCommand
52
+ def initialize(txt, change)
53
+ super(txt, change)
54
+ @buffer = change.del
55
+ end
56
+
57
+ def undoName
58
+ "Undo delete"
59
+ end
60
+
61
+ def redoName
62
+ "Redo delete"
63
+ end
64
+
65
+ # Undoing a delete re-inserts the deleted text
66
+ def undo
67
+ @text.insertText(@pos, @buffer)
68
+ @text.cursorPos = @pos + @buffer.length
69
+ @text.makePositionVisible(@pos + @buffer.length)
70
+ @buffer = nil
71
+ end
72
+
73
+ # Redoing a delete removes it again
74
+ def redo
75
+ @buffer = @text.extractText(@pos, @numCharsDeleted)
76
+ @text.removeText(@pos, @buffer.length)
77
+ @text.cursorPos = @pos
78
+ @text.makePositionVisible(@pos)
79
+ end
80
+ end
81
+
82
+ # Replace command
83
+ class FXTextReplace < FXTextCommand
84
+ def initialize(txt, change)
85
+ super(txt, change)
86
+ @buffer = change.del
87
+ end
88
+
89
+ def undoName
90
+ "Undo replace"
91
+ end
92
+
93
+ def redoName
94
+ "Redo replace"
95
+ end
96
+
97
+ # Undoing a replace reinserts the old text
98
+ def undo
99
+ tmp = @text.extractText(@pos, @numCharsInserted)
100
+ @text.replaceText(@pos, @numCharsInserted, @buffer)
101
+ @text.cursorPos = @pos + @buffer.length
102
+ @text.makePositionVisible(@pos + @buffer.length)
103
+ @buffer = tmp
104
+ end
105
+
106
+ # Redo a replace reinserts the new text
107
+ def redo
108
+ tmp = @text.extractText(@pos, @numCharsDeleted)
109
+ @text.replaceText(@pos, @numCharsDeleted, @buffer)
110
+ @text.cursorPos = @pos + @numCharsInserted
111
+ @text.makePositionVisible(@pos + @numCharsInserted)
112
+ @buffer = tmp
113
+ end
114
+ end