fxruby 1.2.2

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 (692) hide show
  1. data/ANNOUNCE +25 -0
  2. data/ChangeLog +10606 -0
  3. data/INSTALL +50 -0
  4. data/LICENSE +456 -0
  5. data/README +39 -0
  6. data/doc/apes02.html +21 -0
  7. data/doc/apes03.html +39 -0
  8. data/doc/book.html +3 -0
  9. data/doc/build.html +144 -0
  10. data/doc/ch03s02.html +24 -0
  11. data/doc/ch03s03.html +53 -0
  12. data/doc/ch03s04.html +37 -0
  13. data/doc/ch03s05.html +61 -0
  14. data/doc/ch04s02.html +72 -0
  15. data/doc/ch04s03.html +37 -0
  16. data/doc/ch04s04.html +72 -0
  17. data/doc/ch05s02.html +262 -0
  18. data/doc/ch05s03.html +128 -0
  19. data/doc/changes.html +75 -0
  20. data/doc/clipboardtut.html +68 -0
  21. data/doc/cvs.html +35 -0
  22. data/doc/differences.html +11 -0
  23. data/doc/dragdroptut.html +266 -0
  24. data/doc/events.html +36 -0
  25. data/doc/examples.html +104 -0
  26. data/doc/gems.html +73 -0
  27. data/doc/goals.html +39 -0
  28. data/doc/images/babelfish.png +0 -0
  29. data/doc/images/browser.png +0 -0
  30. data/doc/images/button.png +0 -0
  31. data/doc/images/call-chain-example.png +0 -0
  32. data/doc/images/colordialog.png +0 -0
  33. data/doc/images/datatarget.png +0 -0
  34. data/doc/images/dialog.png +0 -0
  35. data/doc/images/dilbert.png +0 -0
  36. data/doc/images/dirlist.png +0 -0
  37. data/doc/images/dropsite-droprejected.png +0 -0
  38. data/doc/images/foursplit.png +0 -0
  39. data/doc/images/gltest.png +0 -0
  40. data/doc/images/glviewer.png +0 -0
  41. data/doc/images/groupbox.png +0 -0
  42. data/doc/images/header.png +0 -0
  43. data/doc/images/hello-with-button.png +0 -0
  44. data/doc/images/hello-with-icon-1.png +0 -0
  45. data/doc/images/hello-with-icon-2.png +0 -0
  46. data/doc/images/hello-with-icon-3.png +0 -0
  47. data/doc/images/hello-with-tooltip.png +0 -0
  48. data/doc/images/hello-without-button.png +0 -0
  49. data/doc/images/hello.png +0 -0
  50. data/doc/images/hello2.png +0 -0
  51. data/doc/images/iconlist-bigicons.png +0 -0
  52. data/doc/images/iconlist-details.png +0 -0
  53. data/doc/images/image.png +0 -0
  54. data/doc/images/imageviewer.png +0 -0
  55. data/doc/images/inheritance.png +0 -0
  56. data/doc/images/mditest.png +0 -0
  57. data/doc/images/raabrowser.png +0 -0
  58. data/doc/images/scribble.png +0 -0
  59. data/doc/images/shutter.png +0 -0
  60. data/doc/images/splitter.png +0 -0
  61. data/doc/images/tabbook.png +0 -0
  62. data/doc/images/table.png +0 -0
  63. data/doc/images/tutorial1.png +0 -0
  64. data/doc/implementation.html +16 -0
  65. data/doc/infosources.html +33 -0
  66. data/doc/library.html +30 -0
  67. data/doc/opengl.html +73 -0
  68. data/doc/pt01.html +3 -0
  69. data/doc/pt02.html +3 -0
  70. data/doc/scintilla.html +36 -0
  71. data/doc/todo.html +40 -0
  72. data/doc/tutorial1.html +97 -0
  73. data/examples/RAA.rb +25 -0
  74. data/examples/README +53 -0
  75. data/examples/babelfish.rb +107 -0
  76. data/examples/bounce.rb +159 -0
  77. data/examples/browser.rb +191 -0
  78. data/examples/button.rb +160 -0
  79. data/examples/datatarget.rb +223 -0
  80. data/examples/dctest.rb +702 -0
  81. data/examples/dialog.rb +148 -0
  82. data/examples/dilbert.rb +105 -0
  83. data/examples/dirlist.rb +63 -0
  84. data/examples/dragdrop.rb +101 -0
  85. data/examples/dragsource.rb +81 -0
  86. data/examples/dropsite.rb +61 -0
  87. data/examples/foursplit.rb +103 -0
  88. data/examples/gltest.rb +342 -0
  89. data/examples/glviewer.rb +579 -0
  90. data/examples/groupbox.rb +422 -0
  91. data/examples/header.rb +150 -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 +104 -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 +281 -0
  166. data/examples/imageviewer.rb +513 -0
  167. data/examples/inputs.rb +84 -0
  168. data/examples/mditest.rb +180 -0
  169. data/examples/pig.rb +77 -0
  170. data/examples/raabrowser.rb +132 -0
  171. data/examples/scintilla-test.rb +81 -0
  172. data/examples/scribble-orig.rb +186 -0
  173. data/examples/scribble.rb +166 -0
  174. data/examples/shutter.rb +158 -0
  175. data/examples/splitter.rb +211 -0
  176. data/examples/styledtext.rb +92 -0
  177. data/examples/tabbook.rb +124 -0
  178. data/examples/table.rb +187 -0
  179. data/examples/textedit/commands.rb +117 -0
  180. data/examples/textedit/helpwindow.rb +295 -0
  181. data/examples/textedit/prefdialog.rb +235 -0
  182. data/examples/textedit/textedit.rb +1767 -0
  183. data/ext/fox12/FXRbApp.cpp +127 -0
  184. data/ext/fox12/FXRbDataTarget.cpp +106 -0
  185. data/ext/fox12/FXRbGLViewer.cpp +89 -0
  186. data/ext/fox12/FXRuby.cpp +1818 -0
  187. data/ext/fox12/MANIFEST +189 -0
  188. data/ext/fox12/core_wrap.cpp +10119 -0
  189. data/ext/fox12/dc_wrap.cpp +2638 -0
  190. data/ext/fox12/dialogs_wrap.cpp +6244 -0
  191. data/ext/fox12/extconf.rb +176 -0
  192. data/ext/fox12/frames_wrap.cpp +8274 -0
  193. data/ext/fox12/fx3d_wrap.cpp +9315 -0
  194. data/ext/fox12/iconlist_wrap.cpp +3742 -0
  195. data/ext/fox12/icons_wrap.cpp +4040 -0
  196. data/ext/fox12/image_wrap.cpp +4026 -0
  197. data/ext/fox12/impl.cpp +1064 -0
  198. data/ext/fox12/include/FXMemoryBuffer.h +52 -0
  199. data/ext/fox12/include/FXRb4Splitter.h +54 -0
  200. data/ext/fox12/include/FXRbAccelTable.h +46 -0
  201. data/ext/fox12/include/FXRbApp.h +137 -0
  202. data/ext/fox12/include/FXRbAppVirtuals.h +15 -0
  203. data/ext/fox12/include/FXRbArrowButton.h +51 -0
  204. data/ext/fox12/include/FXRbBMPIcon.h +54 -0
  205. data/ext/fox12/include/FXRbBMPImage.h +54 -0
  206. data/ext/fox12/include/FXRbBitmap.h +115 -0
  207. data/ext/fox12/include/FXRbBitmapFrame.h +56 -0
  208. data/ext/fox12/include/FXRbBitmapView.h +52 -0
  209. data/ext/fox12/include/FXRbBitmapVirtuals.h +27 -0
  210. data/ext/fox12/include/FXRbButton.h +51 -0
  211. data/ext/fox12/include/FXRbCURCursor.h +60 -0
  212. data/ext/fox12/include/FXRbCanvas.h +51 -0
  213. data/ext/fox12/include/FXRbCheckButton.h +51 -0
  214. data/ext/fox12/include/FXRbColorBar.h +51 -0
  215. data/ext/fox12/include/FXRbColorDialog.h +53 -0
  216. data/ext/fox12/include/FXRbColorSelector.h +51 -0
  217. data/ext/fox12/include/FXRbColorWell.h +51 -0
  218. data/ext/fox12/include/FXRbColorWheel.h +51 -0
  219. data/ext/fox12/include/FXRbComboBox.h +56 -0
  220. data/ext/fox12/include/FXRbCommon.h +86 -0
  221. data/ext/fox12/include/FXRbComposite.h +51 -0
  222. data/ext/fox12/include/FXRbCursor.h +87 -0
  223. data/ext/fox12/include/FXRbCursorVirtuals.h +6 -0
  224. data/ext/fox12/include/FXRbDC.h +385 -0
  225. data/ext/fox12/include/FXRbDCPrint.h +49 -0
  226. data/ext/fox12/include/FXRbDCVirtuals.h +166 -0
  227. data/ext/fox12/include/FXRbDCWindow.h +64 -0
  228. data/ext/fox12/include/FXRbDataTarget.h +65 -0
  229. data/ext/fox12/include/FXRbDebugTarget.h +46 -0
  230. data/ext/fox12/include/FXRbDelegator.h +46 -0
  231. data/ext/fox12/include/FXRbDial.h +51 -0
  232. data/ext/fox12/include/FXRbDialogBox.h +68 -0
  233. data/ext/fox12/include/FXRbDialogBoxVirtuals.h +3 -0
  234. data/ext/fox12/include/FXRbDict.h +46 -0
  235. data/ext/fox12/include/FXRbDirBox.h +51 -0
  236. data/ext/fox12/include/FXRbDirDialog.h +53 -0
  237. data/ext/fox12/include/FXRbDirList.h +79 -0
  238. data/ext/fox12/include/FXRbDirSelector.h +51 -0
  239. data/ext/fox12/include/FXRbDocument.h +46 -0
  240. data/ext/fox12/include/FXRbDragCorner.h +51 -0
  241. data/ext/fox12/include/FXRbDrawable.h +64 -0
  242. data/ext/fox12/include/FXRbDrawableVirtuals.h +3 -0
  243. data/ext/fox12/include/FXRbDriveBox.h +51 -0
  244. data/ext/fox12/include/FXRbFileDialog.h +56 -0
  245. data/ext/fox12/include/FXRbFileDict.h +104 -0
  246. data/ext/fox12/include/FXRbFileDictVirtuals.h +9 -0
  247. data/ext/fox12/include/FXRbFileList.h +81 -0
  248. data/ext/fox12/include/FXRbFileSelector.h +51 -0
  249. data/ext/fox12/include/FXRbFoldingItemVirtuals.h +45 -0
  250. data/ext/fox12/include/FXRbFoldingList.h +183 -0
  251. data/ext/fox12/include/FXRbFont.h +70 -0
  252. data/ext/fox12/include/FXRbFontDialog.h +53 -0
  253. data/ext/fox12/include/FXRbFontSelector.h +51 -0
  254. data/ext/fox12/include/FXRbFrame.h +51 -0
  255. data/ext/fox12/include/FXRbGIFCursor.h +60 -0
  256. data/ext/fox12/include/FXRbGIFIcon.h +54 -0
  257. data/ext/fox12/include/FXRbGIFImage.h +54 -0
  258. data/ext/fox12/include/FXRbGLCanvas.h +92 -0
  259. data/ext/fox12/include/FXRbGLCanvasVirtuals.h +13 -0
  260. data/ext/fox12/include/FXRbGLContext.h +58 -0
  261. data/ext/fox12/include/FXRbGLObject.h +103 -0
  262. data/ext/fox12/include/FXRbGLObjectVirtuals.h +22 -0
  263. data/ext/fox12/include/FXRbGLShape.h +81 -0
  264. data/ext/fox12/include/FXRbGLShapeVirtuals.h +8 -0
  265. data/ext/fox12/include/FXRbGLViewer.h +83 -0
  266. data/ext/fox12/include/FXRbGLViewerVirtuals.h +6 -0
  267. data/ext/fox12/include/FXRbGLVisual.h +56 -0
  268. data/ext/fox12/include/FXRbGradientBar.h +55 -0
  269. data/ext/fox12/include/FXRbGroupBox.h +51 -0
  270. data/ext/fox12/include/FXRbHeader.h +125 -0
  271. data/ext/fox12/include/FXRbHeaderItemVirtuals.h +22 -0
  272. data/ext/fox12/include/FXRbHorizontalFrame.h +51 -0
  273. data/ext/fox12/include/FXRbICOIcon.h +54 -0
  274. data/ext/fox12/include/FXRbICOImage.h +54 -0
  275. data/ext/fox12/include/FXRbIcon.h +57 -0
  276. data/ext/fox12/include/FXRbIconItemVirtuals.h +71 -0
  277. data/ext/fox12/include/FXRbIconList.h +266 -0
  278. data/ext/fox12/include/FXRbIconListVirtuals.h +21 -0
  279. data/ext/fox12/include/FXRbId.h +74 -0
  280. data/ext/fox12/include/FXRbIdVirtuals.h +9 -0
  281. data/ext/fox12/include/FXRbImage.h +162 -0
  282. data/ext/fox12/include/FXRbImageFrame.h +56 -0
  283. data/ext/fox12/include/FXRbImageView.h +52 -0
  284. data/ext/fox12/include/FXRbImageVirtuals.h +51 -0
  285. data/ext/fox12/include/FXRbInputDialog.h +53 -0
  286. data/ext/fox12/include/FXRbJPGIcon.h +54 -0
  287. data/ext/fox12/include/FXRbJPGImage.h +54 -0
  288. data/ext/fox12/include/FXRbLabel.h +51 -0
  289. data/ext/fox12/include/FXRbList.h +204 -0
  290. data/ext/fox12/include/FXRbListBox.h +56 -0
  291. data/ext/fox12/include/FXRbListItemVirtuals.h +36 -0
  292. data/ext/fox12/include/FXRbListVirtuals.h +18 -0
  293. data/ext/fox12/include/FXRbMDIButton.h +162 -0
  294. data/ext/fox12/include/FXRbMDIChild.h +82 -0
  295. data/ext/fox12/include/FXRbMDIChildVirtuals.h +12 -0
  296. data/ext/fox12/include/FXRbMDIClient.h +80 -0
  297. data/ext/fox12/include/FXRbMDIClientVirtuals.h +12 -0
  298. data/ext/fox12/include/FXRbMainWindow.h +54 -0
  299. data/ext/fox12/include/FXRbMatrix.h +51 -0
  300. data/ext/fox12/include/FXRbMenuBar.h +63 -0
  301. data/ext/fox12/include/FXRbMenuButton.h +51 -0
  302. data/ext/fox12/include/FXRbMenuCaption.h +51 -0
  303. data/ext/fox12/include/FXRbMenuCascade.h +51 -0
  304. data/ext/fox12/include/FXRbMenuCheck.h +49 -0
  305. data/ext/fox12/include/FXRbMenuCommand.h +49 -0
  306. data/ext/fox12/include/FXRbMenuPane.h +52 -0
  307. data/ext/fox12/include/FXRbMenuRadio.h +49 -0
  308. data/ext/fox12/include/FXRbMenuSeparator.h +51 -0
  309. data/ext/fox12/include/FXRbMenuTitle.h +51 -0
  310. data/ext/fox12/include/FXRbMessageBox.h +56 -0
  311. data/ext/fox12/include/FXRbObject.h +67 -0
  312. data/ext/fox12/include/FXRbObjectVirtuals.h +9 -0
  313. data/ext/fox12/include/FXRbOptionMenu.h +73 -0
  314. data/ext/fox12/include/FXRbPCXIcon.h +54 -0
  315. data/ext/fox12/include/FXRbPCXImage.h +54 -0
  316. data/ext/fox12/include/FXRbPNGIcon.h +54 -0
  317. data/ext/fox12/include/FXRbPNGImage.h +54 -0
  318. data/ext/fox12/include/FXRbPPMIcon.h +54 -0
  319. data/ext/fox12/include/FXRbPPMImage.h +54 -0
  320. data/ext/fox12/include/FXRbPacker.h +51 -0
  321. data/ext/fox12/include/FXRbPicker.h +51 -0
  322. data/ext/fox12/include/FXRbPopup.h +70 -0
  323. data/ext/fox12/include/FXRbPopupVirtuals.h +6 -0
  324. data/ext/fox12/include/FXRbPrintDialog.h +53 -0
  325. data/ext/fox12/include/FXRbProgressBar.h +51 -0
  326. data/ext/fox12/include/FXRbProgressDialog.h +53 -0
  327. data/ext/fox12/include/FXRbRGBIcon.h +54 -0
  328. data/ext/fox12/include/FXRbRGBImage.h +54 -0
  329. data/ext/fox12/include/FXRbRadioButton.h +51 -0
  330. data/ext/fox12/include/FXRbRealSlider.h +51 -0
  331. data/ext/fox12/include/FXRbRealSpinner.h +64 -0
  332. data/ext/fox12/include/FXRbRealSpinnerVirtuals.h +3 -0
  333. data/ext/fox12/include/FXRbRecentFiles.h +49 -0
  334. data/ext/fox12/include/FXRbRegistry.h +46 -0
  335. data/ext/fox12/include/FXRbReplaceDialog.h +53 -0
  336. data/ext/fox12/include/FXRbRootWindow.h +51 -0
  337. data/ext/fox12/include/FXRbRuler.h +56 -0
  338. data/ext/fox12/include/FXRbScintilla.h +52 -0
  339. data/ext/fox12/include/FXRbScrollArea.h +82 -0
  340. data/ext/fox12/include/FXRbScrollAreaVirtuals.h +13 -0
  341. data/ext/fox12/include/FXRbScrollBar.h +73 -0
  342. data/ext/fox12/include/FXRbScrollPane.h +52 -0
  343. data/ext/fox12/include/FXRbScrollWindow.h +52 -0
  344. data/ext/fox12/include/FXRbSearchDialog.h +53 -0
  345. data/ext/fox12/include/FXRbSeparator.h +95 -0
  346. data/ext/fox12/include/FXRbSettings.h +46 -0
  347. data/ext/fox12/include/FXRbShell.h +56 -0
  348. data/ext/fox12/include/FXRbShutter.h +86 -0
  349. data/ext/fox12/include/FXRbShutterVirtuals.h +3 -0
  350. data/ext/fox12/include/FXRbSlider.h +51 -0
  351. data/ext/fox12/include/FXRbSpinner.h +64 -0
  352. data/ext/fox12/include/FXRbSpinnerVirtuals.h +3 -0
  353. data/ext/fox12/include/FXRbSplitter.h +54 -0
  354. data/ext/fox12/include/FXRbSpring.h +51 -0
  355. data/ext/fox12/include/FXRbStatusBar.h +51 -0
  356. data/ext/fox12/include/FXRbStatusLine.h +51 -0
  357. data/ext/fox12/include/FXRbStream.h +101 -0
  358. data/ext/fox12/include/FXRbStreamVirtuals.h +9 -0
  359. data/ext/fox12/include/FXRbStringDict.h +46 -0
  360. data/ext/fox12/include/FXRbSwitcher.h +51 -0
  361. data/ext/fox12/include/FXRbTGAIcon.h +54 -0
  362. data/ext/fox12/include/FXRbTGAImage.h +54 -0
  363. data/ext/fox12/include/FXRbTIFIcon.h +54 -0
  364. data/ext/fox12/include/FXRbTIFImage.h +54 -0
  365. data/ext/fox12/include/FXRbTabBar.h +64 -0
  366. data/ext/fox12/include/FXRbTabBarVirtuals.h +3 -0
  367. data/ext/fox12/include/FXRbTabBook.h +52 -0
  368. data/ext/fox12/include/FXRbTabItem.h +51 -0
  369. data/ext/fox12/include/FXRbTable.h +416 -0
  370. data/ext/fox12/include/FXRbTableItemVirtuals.h +68 -0
  371. data/ext/fox12/include/FXRbTableVirtuals.h +73 -0
  372. data/ext/fox12/include/FXRbText.h +89 -0
  373. data/ext/fox12/include/FXRbTextField.h +51 -0
  374. data/ext/fox12/include/FXRbTextVirtuals.h +9 -0
  375. data/ext/fox12/include/FXRbToggleButton.h +51 -0
  376. data/ext/fox12/include/FXRbToolBar.h +80 -0
  377. data/ext/fox12/include/FXRbToolBarGrip.h +51 -0
  378. data/ext/fox12/include/FXRbToolBarShell.h +52 -0
  379. data/ext/fox12/include/FXRbToolBarTab.h +51 -0
  380. data/ext/fox12/include/FXRbToolBarVirtuals.h +6 -0
  381. data/ext/fox12/include/FXRbToolTip.h +51 -0
  382. data/ext/fox12/include/FXRbTopWindow.h +91 -0
  383. data/ext/fox12/include/FXRbTopWindowVirtuals.h +15 -0
  384. data/ext/fox12/include/FXRbTreeItemVirtuals.h +42 -0
  385. data/ext/fox12/include/FXRbTreeList.h +249 -0
  386. data/ext/fox12/include/FXRbTreeListBox.h +53 -0
  387. data/ext/fox12/include/FXRbTreeListVirtuals.h +30 -0
  388. data/ext/fox12/include/FXRbTriStateButton.h +51 -0
  389. data/ext/fox12/include/FXRbVerticalFrame.h +51 -0
  390. data/ext/fox12/include/FXRbVisual.h +56 -0
  391. data/ext/fox12/include/FXRbWindow.h +200 -0
  392. data/ext/fox12/include/FXRbWindowVirtuals.h +69 -0
  393. data/ext/fox12/include/FXRbWizard.h +60 -0
  394. data/ext/fox12/include/FXRbXBMIcon.h +54 -0
  395. data/ext/fox12/include/FXRbXBMImage.h +54 -0
  396. data/ext/fox12/include/FXRbXPMIcon.h +54 -0
  397. data/ext/fox12/include/FXRbXPMImage.h +54 -0
  398. data/ext/fox12/include/FXRuby.h +728 -0
  399. data/ext/fox12/include/impl.h +201 -0
  400. data/ext/fox12/include/inlinestubs.h +1063 -0
  401. data/ext/fox12/label_wrap.cpp +4945 -0
  402. data/ext/fox12/layout_wrap.cpp +5061 -0
  403. data/ext/fox12/librb.c +636 -0
  404. data/ext/fox12/list_wrap.cpp +2212 -0
  405. data/ext/fox12/markfuncs.cpp +1568 -0
  406. data/ext/fox12/mdi_wrap.cpp +4521 -0
  407. data/ext/fox12/menu_wrap.cpp +4673 -0
  408. data/ext/fox12/scintilla_wrap.cpp +2245 -0
  409. data/ext/fox12/table_wrap.cpp +3581 -0
  410. data/ext/fox12/text_wrap.cpp +3539 -0
  411. data/ext/fox12/treelist_wrap.cpp +5609 -0
  412. data/ext/fox12/ui_wrap.cpp +10017 -0
  413. data/index.html +14 -0
  414. data/lib/fox12/aliases.rb +5211 -0
  415. data/lib/fox12/calendar.rb +218 -0
  416. data/lib/fox12/chore.rb +51 -0
  417. data/lib/fox12/colors.rb +282 -0
  418. data/lib/fox12/core.rb +249 -0
  419. data/lib/fox12/dict.rb +35 -0
  420. data/lib/fox12/glgroup.rb +165 -0
  421. data/lib/fox12/glshapes.rb +457 -0
  422. data/lib/fox12/input.rb +56 -0
  423. data/lib/fox12/irb.rb +179 -0
  424. data/lib/fox12/iterators.rb +331 -0
  425. data/lib/fox12/keys.rb +1376 -0
  426. data/lib/fox12/missingdep.rb +16 -0
  427. data/lib/fox12/pseudokeyboard.rb +36 -0
  428. data/lib/fox12/pseudomouse.rb +84 -0
  429. data/lib/fox12/responder.rb +72 -0
  430. data/lib/fox12/responder2.rb +122 -0
  431. data/lib/fox12/scintilla.rb +2629 -0
  432. data/lib/fox12/settings.rb +18 -0
  433. data/lib/fox12/signal.rb +68 -0
  434. data/lib/fox12/timeout.rb +58 -0
  435. data/lib/fox12/undolist.rb +456 -0
  436. data/lib/fox12/version.rb +11 -0
  437. data/rdoc-sources/FX4Splitter.rb +138 -0
  438. data/rdoc-sources/FXAccelTable.rb +67 -0
  439. data/rdoc-sources/FXApp.rb +557 -0
  440. data/rdoc-sources/FXArrowButton.rb +69 -0
  441. data/rdoc-sources/FXBMPIcon.rb +45 -0
  442. data/rdoc-sources/FXBMPImage.rb +20 -0
  443. data/rdoc-sources/FXBitmap.rb +78 -0
  444. data/rdoc-sources/FXBitmapFrame.rb +29 -0
  445. data/rdoc-sources/FXBitmapView.rb +41 -0
  446. data/rdoc-sources/FXButton.rb +43 -0
  447. data/rdoc-sources/FXCURCursor.rb +13 -0
  448. data/rdoc-sources/FXCanvas.rb +18 -0
  449. data/rdoc-sources/FXCheckButton.rb +57 -0
  450. data/rdoc-sources/FXColorBar.rb +43 -0
  451. data/rdoc-sources/FXColorDialog.rb +36 -0
  452. data/rdoc-sources/FXColorSelector.rb +65 -0
  453. data/rdoc-sources/FXColorWell.rb +57 -0
  454. data/rdoc-sources/FXColorWheel.rb +35 -0
  455. data/rdoc-sources/FXComboBox.rb +153 -0
  456. data/rdoc-sources/FXComposite.rb +34 -0
  457. data/rdoc-sources/FXCursor.rb +67 -0
  458. data/rdoc-sources/FXDC.rb +667 -0
  459. data/rdoc-sources/FXDCPrint.rb +127 -0
  460. data/rdoc-sources/FXDCWindow.rb +37 -0
  461. data/rdoc-sources/FXDataTarget.rb +41 -0
  462. data/rdoc-sources/FXDebugTarget.rb +25 -0
  463. data/rdoc-sources/FXDelegator.rb +23 -0
  464. data/rdoc-sources/FXDial.rb +68 -0
  465. data/rdoc-sources/FXDialogBox.rb +36 -0
  466. data/rdoc-sources/FXDict.rb +79 -0
  467. data/rdoc-sources/FXDirBox.rb +49 -0
  468. data/rdoc-sources/FXDirDialog.rb +18 -0
  469. data/rdoc-sources/FXDirList.rb +143 -0
  470. data/rdoc-sources/FXDirSelector.rb +30 -0
  471. data/rdoc-sources/FXDocument.rb +29 -0
  472. data/rdoc-sources/FXDragCorner.rb +19 -0
  473. data/rdoc-sources/FXDrawable.rb +27 -0
  474. data/rdoc-sources/FXDriveBox.rb +46 -0
  475. data/rdoc-sources/FXFileDialog.rb +132 -0
  476. data/rdoc-sources/FXFileDict.rb +168 -0
  477. data/rdoc-sources/FXFileList.rb +163 -0
  478. data/rdoc-sources/FXFileSelector.rb +148 -0
  479. data/rdoc-sources/FXFileStream.rb +24 -0
  480. data/rdoc-sources/FXFoldingList.rb +453 -0
  481. data/rdoc-sources/FXFont.rb +345 -0
  482. data/rdoc-sources/FXFontDialog.rb +14 -0
  483. data/rdoc-sources/FXFontSelector.rb +37 -0
  484. data/rdoc-sources/FXFrame.rb +47 -0
  485. data/rdoc-sources/FXGIFCursor.rb +38 -0
  486. data/rdoc-sources/FXGIFIcon.rb +21 -0
  487. data/rdoc-sources/FXGIFImage.rb +19 -0
  488. data/rdoc-sources/FXGLCanvas.rb +45 -0
  489. data/rdoc-sources/FXGLContext.rb +41 -0
  490. data/rdoc-sources/FXGLObject.rb +75 -0
  491. data/rdoc-sources/FXGLShape.rb +75 -0
  492. data/rdoc-sources/FXGLViewer.rb +309 -0
  493. data/rdoc-sources/FXGLVisual.rb +94 -0
  494. data/rdoc-sources/FXGradientBar.rb +291 -0
  495. data/rdoc-sources/FXGroupBox.rb +33 -0
  496. data/rdoc-sources/FXHeader.rb +377 -0
  497. data/rdoc-sources/FXHorizontalFrame.rb +29 -0
  498. data/rdoc-sources/FXICOIcon.rb +50 -0
  499. data/rdoc-sources/FXICOImage.rb +21 -0
  500. data/rdoc-sources/FXIcon.rb +38 -0
  501. data/rdoc-sources/FXIconList.rb +418 -0
  502. data/rdoc-sources/FXId.rb +34 -0
  503. data/rdoc-sources/FXImage.rb +198 -0
  504. data/rdoc-sources/FXImageFrame.rb +22 -0
  505. data/rdoc-sources/FXImageView.rb +35 -0
  506. data/rdoc-sources/FXInputDialog.rb +62 -0
  507. data/rdoc-sources/FXJPGIcon.rb +52 -0
  508. data/rdoc-sources/FXJPGImage.rb +25 -0
  509. data/rdoc-sources/FXLabel.rb +66 -0
  510. data/rdoc-sources/FXList.rb +412 -0
  511. data/rdoc-sources/FXListBox.rb +158 -0
  512. data/rdoc-sources/FXMDIButton.rb +67 -0
  513. data/rdoc-sources/FXMDIChild.rb +145 -0
  514. data/rdoc-sources/FXMDIClient.rb +67 -0
  515. data/rdoc-sources/FXMainWindow.rb +20 -0
  516. data/rdoc-sources/FXMat4.rb +171 -0
  517. data/rdoc-sources/FXMatrix.rb +57 -0
  518. data/rdoc-sources/FXMemoryBuffer.rb +19 -0
  519. data/rdoc-sources/FXMemoryStream.rb +45 -0
  520. data/rdoc-sources/FXMenuBar.rb +23 -0
  521. data/rdoc-sources/FXMenuButton.rb +84 -0
  522. data/rdoc-sources/FXMenuCaption.rb +47 -0
  523. data/rdoc-sources/FXMenuCascade.rb +18 -0
  524. data/rdoc-sources/FXMenuCheck.rb +30 -0
  525. data/rdoc-sources/FXMenuCommand.rb +27 -0
  526. data/rdoc-sources/FXMenuPane.rb +13 -0
  527. data/rdoc-sources/FXMenuRadio.rb +30 -0
  528. data/rdoc-sources/FXMenuSeparator.rb +21 -0
  529. data/rdoc-sources/FXMenuTitle.rb +27 -0
  530. data/rdoc-sources/FXMessageBox.rb +77 -0
  531. data/rdoc-sources/FXObject.rb +22 -0
  532. data/rdoc-sources/FXOptionMenu.rb +76 -0
  533. data/rdoc-sources/FXPCXIcon.rb +48 -0
  534. data/rdoc-sources/FXPCXImage.rb +21 -0
  535. data/rdoc-sources/FXPNGIcon.rb +48 -0
  536. data/rdoc-sources/FXPNGImage.rb +21 -0
  537. data/rdoc-sources/FXPPMIcon.rb +21 -0
  538. data/rdoc-sources/FXPPMImage.rb +21 -0
  539. data/rdoc-sources/FXPacker.rb +62 -0
  540. data/rdoc-sources/FXPicker.rb +27 -0
  541. data/rdoc-sources/FXPopup.rb +53 -0
  542. data/rdoc-sources/FXPrintDialog.rb +36 -0
  543. data/rdoc-sources/FXProgressBar.rb +57 -0
  544. data/rdoc-sources/FXProgressDialog.rb +36 -0
  545. data/rdoc-sources/FXQuatd.rb +1 -0
  546. data/rdoc-sources/FXQuatf.rb +1 -0
  547. data/rdoc-sources/FXRGBIcon.rb +49 -0
  548. data/rdoc-sources/FXRGBImage.rb +21 -0
  549. data/rdoc-sources/FXRadioButton.rb +64 -0
  550. data/rdoc-sources/FXRanged.rb +97 -0
  551. data/rdoc-sources/FXRangef.rb +97 -0
  552. data/rdoc-sources/FXRealSlider.rb +99 -0
  553. data/rdoc-sources/FXRealSpinner.rb +133 -0
  554. data/rdoc-sources/FXRecentFiles.rb +73 -0
  555. data/rdoc-sources/FXRectangle.rb +137 -0
  556. data/rdoc-sources/FXRegion.rb +64 -0
  557. data/rdoc-sources/FXRegistry.rb +39 -0
  558. data/rdoc-sources/FXReplaceDialog.rb +56 -0
  559. data/rdoc-sources/FXRootWindow.rb +17 -0
  560. data/rdoc-sources/FXRuler.rb +60 -0
  561. data/rdoc-sources/FXScintilla.rb +121 -0
  562. data/rdoc-sources/FXScrollArea.rb +86 -0
  563. data/rdoc-sources/FXScrollBar.rb +101 -0
  564. data/rdoc-sources/FXScrollPane.rb +23 -0
  565. data/rdoc-sources/FXScrollWindow.rb +38 -0
  566. data/rdoc-sources/FXSearchDialog.rb +24 -0
  567. data/rdoc-sources/FXSeparator.rb +64 -0
  568. data/rdoc-sources/FXSettings.rb +222 -0
  569. data/rdoc-sources/FXShell.rb +7 -0
  570. data/rdoc-sources/FXShutter.rb +97 -0
  571. data/rdoc-sources/FXSize.rb +30 -0
  572. data/rdoc-sources/FXSlider.rb +96 -0
  573. data/rdoc-sources/FXSphered.rb +65 -0
  574. data/rdoc-sources/FXSpheref.rb +65 -0
  575. data/rdoc-sources/FXSpinner.rb +132 -0
  576. data/rdoc-sources/FXSplitter.rb +88 -0
  577. data/rdoc-sources/FXSpring.rb +61 -0
  578. data/rdoc-sources/FXStatusBar.rb +42 -0
  579. data/rdoc-sources/FXStatusLine.rb +60 -0
  580. data/rdoc-sources/FXStream.rb +115 -0
  581. data/rdoc-sources/FXStringDict.rb +38 -0
  582. data/rdoc-sources/FXSwitcher.rb +78 -0
  583. data/rdoc-sources/FXTGAIcon.rb +48 -0
  584. data/rdoc-sources/FXTGAImage.rb +21 -0
  585. data/rdoc-sources/FXTIFIcon.rb +52 -0
  586. data/rdoc-sources/FXTIFImage.rb +24 -0
  587. data/rdoc-sources/FXTabBar.rb +76 -0
  588. data/rdoc-sources/FXTabBook.rb +38 -0
  589. data/rdoc-sources/FXTabItem.rb +51 -0
  590. data/rdoc-sources/FXTable.rb +654 -0
  591. data/rdoc-sources/FXText.rb +533 -0
  592. data/rdoc-sources/FXTextField.rb +141 -0
  593. data/rdoc-sources/FXToggleButton.rb +69 -0
  594. data/rdoc-sources/FXToolBar.rb +121 -0
  595. data/rdoc-sources/FXToolBarGrip.rb +55 -0
  596. data/rdoc-sources/FXToolBarShell.rb +44 -0
  597. data/rdoc-sources/FXToolTip.rb +36 -0
  598. data/rdoc-sources/FXTopWindow.rb +92 -0
  599. data/rdoc-sources/FXTreeList.rb +503 -0
  600. data/rdoc-sources/FXTreeListBox.rb +182 -0
  601. data/rdoc-sources/FXTriStateButton.rb +49 -0
  602. data/rdoc-sources/FXVec.rb +97 -0
  603. data/rdoc-sources/FXVec4.rb +91 -0
  604. data/rdoc-sources/FXVerticalFrame.rb +29 -0
  605. data/rdoc-sources/FXVisual.rb +79 -0
  606. data/rdoc-sources/FXWindow.rb +633 -0
  607. data/rdoc-sources/FXWizard.rb +63 -0
  608. data/rdoc-sources/FXXBMIcon.rb +22 -0
  609. data/rdoc-sources/FXXBMImage.rb +22 -0
  610. data/rdoc-sources/FXXPMIcon.rb +50 -0
  611. data/rdoc-sources/FXXPMImage.rb +21 -0
  612. data/rdoc-sources/README.rdoc +53 -0
  613. data/rdoc-sources/fxdefs.rb +90 -0
  614. data/tests/README +19 -0
  615. data/tests/TC_FXAccelTable.rb +43 -0
  616. data/tests/TC_FXApp.rb +15 -0
  617. data/tests/TC_FXArc.rb +26 -0
  618. data/tests/TC_FXButton.rb +72 -0
  619. data/tests/TC_FXCheckButton.rb +57 -0
  620. data/tests/TC_FXComboBox.rb +36 -0
  621. data/tests/TC_FXDC.rb +372 -0
  622. data/tests/TC_FXDCPrint.rb +102 -0
  623. data/tests/TC_FXDCWindow.rb +23 -0
  624. data/tests/TC_FXDataTarget.rb +24 -0
  625. data/tests/TC_FXDirList.rb +30 -0
  626. data/tests/TC_FXFileAssoc.rb +62 -0
  627. data/tests/TC_FXFileStream.rb +90 -0
  628. data/tests/TC_FXFont.rb +59 -0
  629. data/tests/TC_FXFontDesc.rb +62 -0
  630. data/tests/TC_FXGLGroup.rb +32 -0
  631. data/tests/TC_FXGLShape.rb +28 -0
  632. data/tests/TC_FXGLViewer.rb +18 -0
  633. data/tests/TC_FXGradientBar.rb +89 -0
  634. data/tests/TC_FXHeader.rb +82 -0
  635. data/tests/TC_FXIconDict.rb +52 -0
  636. data/tests/TC_FXIconList.rb +192 -0
  637. data/tests/TC_FXId.rb +19 -0
  638. data/tests/TC_FXImage.rb +144 -0
  639. data/tests/TC_FXLight.rb +33 -0
  640. data/tests/TC_FXList.rb +116 -0
  641. data/tests/TC_FXListBox.rb +49 -0
  642. data/tests/TC_FXMat4f.rb +228 -0
  643. data/tests/TC_FXMaterial.rb +75 -0
  644. data/tests/TC_FXMemoryStream.rb +87 -0
  645. data/tests/TC_FXMenuCommand.rb +26 -0
  646. data/tests/TC_FXPoint.rb +57 -0
  647. data/tests/TC_FXQuatf.rb +77 -0
  648. data/tests/TC_FXRadioButton.rb +57 -0
  649. data/tests/TC_FXRangef.rb +48 -0
  650. data/tests/TC_FXRectangle.rb +88 -0
  651. data/tests/TC_FXRegion.rb +54 -0
  652. data/tests/TC_FXRegistry.rb +27 -0
  653. data/tests/TC_FXScrollArea.rb +28 -0
  654. data/tests/TC_FXScrollWindow.rb +28 -0
  655. data/tests/TC_FXSegment.rb +22 -0
  656. data/tests/TC_FXShell.rb +26 -0
  657. data/tests/TC_FXSize.rb +54 -0
  658. data/tests/TC_FXStream.rb +11 -0
  659. data/tests/TC_FXTable.rb +468 -0
  660. data/tests/TC_FXTableItem.rb +48 -0
  661. data/tests/TC_FXText.rb +81 -0
  662. data/tests/TC_FXTopWindow.rb +32 -0
  663. data/tests/TC_FXTreeList.rb +83 -0
  664. data/tests/TC_FXTreeListBox.rb +23 -0
  665. data/tests/TC_FXUndoList.rb +43 -0
  666. data/tests/TC_FXVec2d.rb +142 -0
  667. data/tests/TC_FXVec2f.rb +137 -0
  668. data/tests/TC_FXVec3d.rb +150 -0
  669. data/tests/TC_FXVec3f.rb +150 -0
  670. data/tests/TC_FXVec4f.rb +158 -0
  671. data/tests/TC_FXViewport.rb +30 -0
  672. data/tests/TC_Misc.rb +157 -0
  673. data/tests/TC_downcast.rb +15 -0
  674. data/tests/TS_All.rb +25 -0
  675. data/tests/blankpage.ps +166 -0
  676. data/tests/doit.rb +5 -0
  677. data/tests/howdypage.ps +181 -0
  678. data/tests/stress1.rb +94 -0
  679. data/tests/stress2.rb +51 -0
  680. data/tests/stress3.rb +117 -0
  681. data/tests/testcase.rb +38 -0
  682. data/web/art/fxrubylogo.png +0 -0
  683. data/web/art/fxrubylogo_small.png +0 -0
  684. data/web/art/line.gif +0 -0
  685. data/web/art/oul_grey.gif +0 -0
  686. data/web/art/our.gif +0 -0
  687. data/web/downloads.html +91 -0
  688. data/web/home.html +109 -0
  689. data/web/menu.html +50 -0
  690. data/web/styles.css +167 -0
  691. data/web/top.html +15 -0
  692. metadata +737 -0
@@ -0,0 +1,18 @@
1
+ #
2
+ # Adds some methods to FOX's FXSettings class
3
+ #
4
+ module Fox
5
+ class FXSettings
6
+ #
7
+ # Iterate over sections (where each section is a dictionary).
8
+ #
9
+ def each_section
10
+ pos = first
11
+ while pos < getTotalSize()
12
+ yield data(pos)
13
+ pos = self.next(pos)
14
+ end
15
+ end
16
+ end
17
+ end
18
+
@@ -0,0 +1,68 @@
1
+ require 'fox12'
2
+
3
+ module Fox
4
+ class FXApp
5
+
6
+ alias addSignalOrig addSignal # :nodoc:
7
+
8
+ #
9
+ # Register a signal processing message to be sent to target object when
10
+ # the specified signal is raised.
11
+ #
12
+ # There are several forms for #addSignal; the original form (from FOX)
13
+ # takes (up to) five arguments:
14
+ #
15
+ # anApp.addSignal(aSignal, anObject, aMessageId, sendImmediately=false, flags=0)
16
+ #
17
+ # Here, _aSignal_ is a string indicating the operating system signal of interest
18
+ # (such as "SIGINT").
19
+ # The second and third arguments are the target object and message identifier for
20
+ # the message to be sent when this signal is raised.
21
+ # If _sendImmediately_ is +true+, the message will be sent to the target right away;
22
+ # this should be used with extreme care as the application is interrupted
23
+ # at an unknown point it its execution.
24
+ # The _flags_ are to be set as per POSIX definitions.
25
+ #
26
+ # A second form of #addSignal takes a Method instance as its second argument:
27
+ #
28
+ # anApp.addSignal(aSignal, aMethod, sendImmediately=false, flags=0)
29
+ #
30
+ # For this form, the method should have the standard argument list
31
+ # for a FOX message handler. That is, the method should take three
32
+ # arguments, for the message _sender_ (an FXObject), the message _selector_,
33
+ # and the message _data_ (if any).
34
+ #
35
+ # The last form of #addSignal takes a block:
36
+ #
37
+ # anApp.addSignal(aSignal, sendImmediately=false, flags=0) { |sender, sel, data|
38
+ # ... handle the signal ...
39
+ # }
40
+ #
41
+
42
+ def addSignal(sig, *args, &block)
43
+ tgt, sel, immediate, flags = nil, 0, false, 0
44
+ if args.length > 0
45
+ if args[0].respond_to? :call
46
+ tgt = FXPseudoTarget.new
47
+ tgt.pconnect(SEL_SIGNAL, args[0], block)
48
+ immediate = (args.length > 1) ? args[1] : false
49
+ flags = (args.length > 2) ? args[2] : 0
50
+ elsif (args[0].kind_of? TrueClass) || (args[0].kind_of? FalseClass)
51
+ tgt = FXPseudoTarget.new
52
+ tgt.pconnect(SEL_SIGNAL, nil, block)
53
+ immediate = args[0]
54
+ flags = (args.length > 1) ? args[1] : 0
55
+ else # it's some other kind of object
56
+ tgt = args[0]
57
+ sel = (args.length > 1) ? args[1] : 0
58
+ immediate = (args.length > 2) ? args[2] : false
59
+ flags = (args.length > 3) ? args[3] : 0
60
+ end
61
+ else
62
+ tgt = FXPseudoTarget.new
63
+ tgt.pconnect(SEL_SIGNAL, nil, block)
64
+ end
65
+ addSignalOrig(sig, tgt, sel, immediate, flags)
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,58 @@
1
+ require 'fox12'
2
+
3
+ module Fox
4
+ class FXApp
5
+
6
+ alias addTimeoutOrig addTimeout # :nodoc:
7
+
8
+ #
9
+ # Register a timeout message to be sent to a target object;
10
+ # the timer fires only once after the interval expires.
11
+ #
12
+ # There are several forms for #addTimeout; the original form (from FOX)
13
+ # takes three arguments:
14
+ #
15
+ # anApp.addTimeout(aDelay, anObject, aMessageId)
16
+ #
17
+ # Here, _aDelay_ is the time interval (in milliseconds) to wait
18
+ # before firing this timeout. The second and third arguments are the
19
+ # target object and message identifier for the message to be sent when
20
+ # this timeout fires.
21
+ #
22
+ # A second form of #addTimeout takes a Method instance as its single argument:
23
+ #
24
+ # anApp.addTimeout(aDelay, aMethod)
25
+ #
26
+ # For this form, the method should have the standard argument list
27
+ # for a FOX message handler. That is, the method should take three
28
+ # arguments, for the message _sender_ (an FXObject), the message _selector_,
29
+ # and the message _data_ (if any).
30
+ #
31
+ # The last form of #addTimeout takes a block:
32
+ #
33
+ # anApp.addTimeout(aDelay) { |sender, sel, data|
34
+ # ... handle the chore ...
35
+ # }
36
+ #
37
+ # All of these return a reference to an opaque FXTimer instance that
38
+ # can be passed to #removeTimeout if it is necessary to remove the timeout
39
+ # before it fires.
40
+ #
41
+ def addTimeout(ms, *args, &block)
42
+ tgt, sel = nil, 0
43
+ if args.length > 0
44
+ if args[0].respond_to? :call
45
+ tgt = FXPseudoTarget.new
46
+ tgt.pconnect(SEL_TIMEOUT, args[0], nil)
47
+ else # it's some other kind of object
48
+ tgt = args[0]
49
+ sel = args[1]
50
+ end
51
+ else
52
+ tgt = FXPseudoTarget.new
53
+ tgt.pconnect(SEL_TIMEOUT, nil, block)
54
+ end
55
+ addTimeoutOrig(tgt, sel, ms)
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,456 @@
1
+ #
2
+ # This is a "pure Ruby" implementation of the FXUndoList and
3
+ # FXCommand classes from the standard FOX distribution. Since those
4
+ # classes are independent of the rest of FOX this is a simpler (and probably
5
+ # more efficient) approach than trying to wrap the original C++ classes.
6
+ #
7
+ # Notes (by Jeroen, lifted from FXUndoList.cpp):
8
+ #
9
+ # * When a command is undone, it's moved to the redo list.
10
+ # * When a command is redone, it's moved back to the undo list.
11
+ # * Whenever adding a new command, the redo list is deleted.
12
+ # * At any time, you can trim down the undo list down to a given
13
+ # maximum size or a given number of undo records. This should
14
+ # keep the memory overhead within sensible bounds.
15
+ # * To keep track of when we get back to an "unmodified" state, a mark
16
+ # can be set. The <em>mark</em> is basically a counter which is incremented
17
+ # with every undo record added, and decremented when undoing a command.
18
+ # When we get back to 0, we are back to the unmodified state.
19
+ #
20
+ # If, after setting the mark, we have called FXUndoList#undo, then
21
+ # the mark can be reached by calling FXUndoList#redo.
22
+ #
23
+ # If the marked position is in the redo-list, then adding a new undo
24
+ # record will cause the redo-list to be deleted, and the marked position
25
+ # will become unreachable.
26
+ #
27
+ # The marked state may also become unreachable when the undo list is trimmed.
28
+ #
29
+ # * You can call also kill the redo list without adding a new command
30
+ # to the undo list, although this may cause the marked position to
31
+ # become unreachable.
32
+ # * We measure the size of the undo-records in the undo-list; when the
33
+ # records are moved to the redo-list, they usually contain different
34
+ # information!
35
+
36
+ require 'fox12'
37
+ require 'fox12/responder'
38
+
39
+ module Fox
40
+
41
+ #
42
+ # The undo list manages a list of undoable (and redoable) commands for a FOX
43
+ # application; it works hand-in-hand with subclasses of FXCommand and is
44
+ # an application of the well-known <em>Command</em> pattern. Your application
45
+ # code should implement any number of command classes and then add then to an
46
+ # FXUndoList instance. For an example of how this works, see the textedit
47
+ # example program from the FXRuby distribution.
48
+ #
49
+ # == Class Constants
50
+ #
51
+ # [FXUndoList::ID_UNDO] Message identifier for the undo method.
52
+ # When a +SEL_COMMAND+ message with this identifier
53
+ # is sent to an undo list, it undoes the last command.
54
+ # FXUndoList also provides a +SEL_UPDATE+ handler for this
55
+ # identifier, that enables or disables the sender
56
+ # depending on whether it's possible to undo.
57
+ #
58
+ # [FXUndoList::ID\_UNDO\_ALL] Message identifier for the "undo all" method. FXUndoList handles both
59
+ # the +SEL_COMMAND+ and +SEL_UPDATE+ messages for this message
60
+ # identifier.
61
+ #
62
+ # [FXUndoList::ID_REDO] Message identifier for the redo method. When a +SEL_COMMAND+ message
63
+ # with this identifier is sent to an undo list, it redoes the last command.
64
+ # FXUndoList also provides a +SEL_UPDATE+ handler for this identifier,
65
+ # that enables or disables the sender depending on whether it's possible to
66
+ # redo.
67
+ #
68
+ # [FXUndoList::ID\_REDO\_ALL] Message identifier for the "redo all" method. FXUndoList handles both
69
+ # the +SEL_COMMAND+ and +SEL_UPDATE+ messages for this message
70
+ # identifier.
71
+ #
72
+ # [FXUndoList::ID_CLEAR] Message identifier for the "clear" method. FXUndoList handles both
73
+ # the +SEL_COMMAND+ and +SEL_UPDATE+ messages for this message
74
+ # identifier.
75
+ #
76
+ # [FXUndoList::ID_REVERT] Message identifier for the "revert" method. FXUndoList handles both
77
+ # the +SEL_COMMAND+ and +SEL_UPDATE+ messages for this message
78
+ # identifier.
79
+ #
80
+ class FXUndoList < FXObject
81
+
82
+ include Responder
83
+
84
+ ID_CLEAR,
85
+ ID_REVERT,
86
+ ID_UNDO,
87
+ ID_REDO,
88
+ ID_UNDO_ALL,
89
+ ID_REDO_ALL,
90
+ ID_LAST = enum(0, 7)
91
+
92
+ #
93
+ # Returns an initialized FXUndoList instance.
94
+ #
95
+ def initialize
96
+ # Be sure to call base class initialize
97
+ super
98
+
99
+ # Set up the message map for this instance
100
+ FXMAPFUNC(SEL_COMMAND, ID_CLEAR, "onCmdClear")
101
+ FXMAPFUNC(SEL_UPDATE, ID_CLEAR, "onUpdClear")
102
+ FXMAPFUNC(SEL_COMMAND, ID_REVERT, "onCmdRevert")
103
+ FXMAPFUNC(SEL_UPDATE, ID_REVERT, "onUpdRevert")
104
+ FXMAPFUNC(SEL_COMMAND, ID_UNDO, "onCmdUndo")
105
+ FXMAPFUNC(SEL_UPDATE, ID_UNDO, "onUpdUndo")
106
+ FXMAPFUNC(SEL_COMMAND, ID_REDO, "onCmdRedo")
107
+ FXMAPFUNC(SEL_UPDATE, ID_REDO, "onUpdRedo")
108
+ FXMAPFUNC(SEL_COMMAND, ID_UNDO_ALL, "onCmdUndoAll")
109
+ FXMAPFUNC(SEL_UPDATE, ID_UNDO_ALL, "onUpdUndo")
110
+ FXMAPFUNC(SEL_COMMAND, ID_REDO_ALL, "onCmdRedoAll")
111
+ FXMAPFUNC(SEL_UPDATE, ID_REDO_ALL, "onUpdRedo")
112
+
113
+ # Instance variables
114
+ @undolist = []
115
+ @redolist = []
116
+ @marker = nil
117
+ @size = 0
118
+ end
119
+
120
+ #
121
+ # Cut the redo list
122
+ #
123
+ def cut
124
+ @redolist.clear
125
+ unless @marker.nil?
126
+ @marker = nil if @marker < 0
127
+ end
128
+ end
129
+
130
+ #
131
+ # Add new _command_ (an FXCommand instance) to the list.
132
+ # If _doit_ is +true+, the command is also executed.
133
+ #
134
+ def add(command, doit=false)
135
+ # Cut redo list
136
+ cut
137
+
138
+ # No command given?
139
+ return true if command.nil?
140
+
141
+ # Add it to the end of the undo list
142
+ @undolist.push(command)
143
+
144
+ # Execute it right now?
145
+ command.redo if doit
146
+
147
+ # Update size
148
+ @size += command.size # measured after redo
149
+
150
+ # Update the mark distance
151
+ @marker = @marker + 1 unless @marker.nil?
152
+
153
+ # Done
154
+ return true
155
+ end
156
+
157
+ #
158
+ # Undo last command.
159
+ #
160
+ def undo
161
+ unless @undolist.empty?
162
+ command = @undolist.pop
163
+ @size -= command.size
164
+ command.undo
165
+ @redolist.push(command)
166
+ @marker = @marker - 1 unless @marker.nil?
167
+ return true
168
+ end
169
+ return false
170
+ end
171
+
172
+ #
173
+ # Redo next command
174
+ #
175
+ def redo
176
+ unless @redolist.empty?
177
+ command = @redolist.pop
178
+ command.redo
179
+ @undolist.push(command)
180
+ @size += command.size
181
+ @marker = @marker + 1 unless @marker.nil?
182
+ return true
183
+ end
184
+ return false
185
+ end
186
+
187
+ #
188
+ # Undo all commands
189
+ #
190
+ def undoAll
191
+ undo while canUndo?
192
+ end
193
+
194
+ #
195
+ # Redo all commands
196
+ #
197
+ def redoAll
198
+ redo while canRedo?
199
+ end
200
+
201
+ #
202
+ # Revert to marked
203
+ #
204
+ def revert
205
+ unless @marker.nil?
206
+ undo while (@marker > 0)
207
+ redo while (@marker < 0)
208
+ return true
209
+ end
210
+ return false
211
+ end
212
+
213
+ #
214
+ # Return +true+ if we can still undo some commands
215
+ # (i.e. the undo list is not empty).
216
+ #
217
+ def canUndo?
218
+ (@undolist.empty? == false)
219
+ end
220
+
221
+ #
222
+ # Return +true+ if we can still redo some commands
223
+ # (i.e. the redo list is not empty).
224
+ #
225
+ def canRedo?
226
+ (@redolist.empty? == false)
227
+ end
228
+
229
+ #
230
+ # Return +true+ if there is a previously marked
231
+ # state that we can revert to.
232
+ #
233
+ def canRevert?
234
+ (@marker != nil) && (@marker != 0)
235
+ end
236
+
237
+ #
238
+ # Returns the current undo command.
239
+ #
240
+ def current
241
+ @undolist.last
242
+ end
243
+
244
+ #
245
+ # Return the name of the first available undo command.
246
+ # If no undo command is available, returns +nil+.
247
+ #
248
+ def undoName
249
+ if canUndo?
250
+ current.undoName
251
+ else
252
+ nil
253
+ end
254
+ end
255
+
256
+ #
257
+ # Return the name of the first available redo command.
258
+ # If no redo command is available, returns +nil+.
259
+ #
260
+ def redoName
261
+ if canRedo?
262
+ @redolist.last.redoName
263
+ else
264
+ nil
265
+ end
266
+ end
267
+
268
+ #
269
+ # Returns the number of undo records.
270
+ #
271
+ def undoCount
272
+ @undolist.size
273
+ end
274
+
275
+ #
276
+ # Returns the total size of undo information.
277
+ #
278
+ def undoSize
279
+ @size
280
+ end
281
+
282
+ #
283
+ # Clear the list
284
+ #
285
+ def clear
286
+ @undolist.clear
287
+ @redolist.clear
288
+ @marker = nil
289
+ @size = 0
290
+ end
291
+
292
+ #
293
+ # Trim undo list down to at most _nc_ commands.
294
+ #
295
+ def trimCount(nc)
296
+ if @undolist.size > nc
297
+ numRemoved = @undolist.size - nc
298
+ @undolist[0, numRemoved].each { |command| @size -= command.size }
299
+ @undolist[0, numRemoved] = nil
300
+ @marker = nil if (@marker != nil && @marker > @undolist.size)
301
+ end
302
+ end
303
+
304
+ #
305
+ # Trim undo list down to at most _size_.
306
+ #
307
+ def trimSize(sz)
308
+ if @size > sz
309
+ s = 0
310
+ @undolist.reverse.each_index { |i|
311
+ j = @undolist.size - (i + 1)
312
+ s += @undolist[j].size
313
+ @undolist[j] = nil if (s > sz)
314
+ }
315
+ @undolist.compact!
316
+ @marker = nil if (@marker != nil && @marker > @undolist.size)
317
+ end
318
+ end
319
+
320
+ #
321
+ # Mark current state
322
+ #
323
+ def mark
324
+ @marker = 0
325
+ end
326
+
327
+ #
328
+ # Unmark undo list
329
+ #
330
+ def unmark
331
+ @marker = nil
332
+ end
333
+
334
+ #
335
+ # Return +true+ if the undo list is marked.
336
+ #
337
+ def marked?
338
+ @marker == 0
339
+ end
340
+
341
+ def onCmdUndo(sender, sel, ptr) # :nodoc:
342
+ undo
343
+ return 1
344
+ end
345
+
346
+ def onUpdUndo(sender, sel, ptr) # :nodoc:
347
+ if canUndo?
348
+ sender.handle(self, MKUINT(FXWindow::ID_ENABLE, SEL_COMMAND), nil)
349
+ else
350
+ sender.handle(self, MKUINT(FXWindow::ID_DISABLE, SEL_COMMAND), nil)
351
+ end
352
+ return 1
353
+ end
354
+
355
+ def onCmdRedo(sender, sel, ptr) # :nodoc:
356
+ self.redo
357
+ return 1
358
+ end
359
+
360
+ def onUpdRedo(sender, sel, ptr) # :nodoc:
361
+ if canRedo?
362
+ sender.handle(self, MKUINT(FXWindow::ID_ENABLE, SEL_COMMAND), nil)
363
+ else
364
+ sender.handle(self, MKUINT(FXWindow::ID_DISABLE, SEL_COMMAND), nil)
365
+ end
366
+ return 1
367
+ end
368
+
369
+ def onCmdClear(sender, sel, ptr) # :nodoc:
370
+ clear
371
+ return 1
372
+ end
373
+
374
+ def onUpdClear(sender, sel, ptr) # :nodoc:
375
+ if canUndo? || canRedo?
376
+ sender.handle(self, MKUINT(FXWindow::ID_ENABLE, SEL_COMMAND), nil)
377
+ else
378
+ sender.handle(self, MKUINT(FXWindow::ID_DISABLE, SEL_COMMAND), nil)
379
+ end
380
+ return 1
381
+ end
382
+
383
+ def onCmdRevert(sender, sel, ptr) # :nodoc:
384
+ revert
385
+ return 1
386
+ end
387
+
388
+ def onUpdRevert(sender, sel, ptr) # :nodoc:
389
+ if canRevert?
390
+ sender.handle(self, MKUINT(FXWindow::ID_ENABLE, SEL_COMMAND), nil)
391
+ else
392
+ sender.handle(self, MKUINT(FXWindow::ID_DISABLE, SEL_COMMAND), nil)
393
+ end
394
+ return 1
395
+ end
396
+
397
+ def onCmdUndoAll(sender, sel, ptr) # :nodoc:
398
+ undoAll
399
+ return 1
400
+ end
401
+
402
+ def onCmdRedoAll(sender, sel, ptr) # :nodoc:
403
+ redoAll
404
+ return 1
405
+ end
406
+ end
407
+
408
+ #
409
+ # FXCommand is an "abstract" base class for your application's commands. At a
410
+ # minimum, your concrete subclasses of FXCommand should implement the
411
+ # #undo, #redo, #undoName, and #redoName methods.
412
+ #
413
+ class FXCommand
414
+ #
415
+ # Undo this command; this should save enough information for a
416
+ # subsequent redo.
417
+ #
418
+ def undo
419
+ raise NotImpError
420
+ end
421
+
422
+ #
423
+ # Redo this command; this should save enough information for a
424
+ # subsequent undo.
425
+ #
426
+ def redo
427
+ raise NotImpError
428
+ end
429
+
430
+ #
431
+ # Name of the undo command to be shown on a button or menu command;
432
+ # for example, "Undo Delete".
433
+ #
434
+ def undoName
435
+ raise NotImpError
436
+ end
437
+
438
+ #
439
+ # Name of the redo command to be shown on a button or menu command;
440
+ # for example, "Redo Delete".
441
+ #
442
+ def redoName
443
+ raise NotImpError
444
+ end
445
+
446
+ #
447
+ # Returns the size of the information in the undo record, i.e. the
448
+ # number of bytes required to store it in memory. This is only used
449
+ # by the FXUndoList#trimSize method, which can be called to reduce
450
+ # the memory use of the undo list to a certain size.
451
+ #
452
+ def size
453
+ 0
454
+ end
455
+ end
456
+ end