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,59 @@
1
+ module Fox
2
+
3
+ class FXApp
4
+
5
+ alias addInputOrig addInput # :nodoc:
6
+
7
+ #
8
+ # Add a file descriptor _fileDesc_ to be watched for activity as determined
9
+ # by _mode_, where _mode_ is a bitwise OR (+INPUT_READ+, +INPUT_WRITE+, +INPUT_EXCEPT+).
10
+ # A message of type +SEL_IO_READ+, +SEL_IO_WRITE+, or +SEL_IO_EXCEPT+ will be sent
11
+ # to the target when the specified activity is detected on the file descriptor.
12
+ #
13
+ # There are several forms for #addInput; the original form (from FOX)
14
+ # takes four arguments:
15
+ #
16
+ # anApp.addInput(fileDesc, mode, anObject, aMessageId)
17
+ #
18
+ # A second form takes three arguments:
19
+ #
20
+ # anApp.addInput(fileDesc, mode, aMethod)
21
+ #
22
+ # For this form, _aMethod_ should have the standard argument list
23
+ # for a FOX message handler. That is, the method should take three
24
+ # arguments, for the message _sender_ (an FXObject), the message _selector_,
25
+ # and the message _data_ (if any).
26
+ #
27
+ # The last form of #addInput takes a block:
28
+ #
29
+ # anApp.addInput(fileDesc, mode) { |sender, sel, data|
30
+ # ... handle the I/O event ...
31
+ # }
32
+ #
33
+
34
+ def addInput(fd, mode, *args, &block)
35
+ params = {}
36
+ params = args.pop if args.last.is_a? Hash
37
+ tgt, sel = nil, 0
38
+ if args.length > 0
39
+ if args[0].respond_to? :call
40
+ tgt = FXPseudoTarget.new
41
+ tgt.pconnect(SEL_IO_READ, args[0], params)
42
+ tgt.pconnect(SEL_IO_WRITE, args[0], params)
43
+ tgt.pconnect(SEL_IO_EXCEPT, args[0], params)
44
+ else # it's some other kind of object
45
+ tgt = args[0]
46
+ sel = args[1]
47
+ end
48
+ else
49
+ tgt = FXPseudoTarget.new
50
+ tgt.pconnect(SEL_IO_READ, block, params)
51
+ tgt.pconnect(SEL_IO_WRITE, block, params)
52
+ tgt.pconnect(SEL_IO_EXCEPT, block, params)
53
+ end
54
+ addInputOrig(fd, mode, tgt, sel)
55
+ end
56
+
57
+ end # class FXApp
58
+
59
+ end # module Fox
data/lib/fox16/irb.rb ADDED
@@ -0,0 +1,178 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ #
4
+ # This is version 0.1.1 of Gilles Filippini's FXIrb, an attempt to embed
5
+ # IRB into an FXRuby FXText widget. The master page for this is here:
6
+ #
7
+ # http://www.rubygarden.org/ruby?FXIrb
8
+ #
9
+ # TODO
10
+ # - handle user input redirection
11
+ # - ^D
12
+ # - readonly everywhere but for the command line
13
+ # - readline
14
+
15
+ require "irb"
16
+ require "singleton"
17
+ require "fcntl"
18
+
19
+ module IRB
20
+ def IRB.start_in_fxirb(redir)
21
+ IRB.initialize(nil)
22
+ IRB.parse_opts
23
+ IRB.load_modules
24
+
25
+ irb = Irb.new(nil, redir)
26
+
27
+ @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
28
+ @CONF[:MAIN_CONTEXT] = irb.context
29
+ trap("SIGINT") do
30
+ irb.signal_handle
31
+ end
32
+
33
+ catch(:IRB_EXIT) do
34
+ irb.eval_input
35
+ end
36
+ print "\n"
37
+ end
38
+ end
39
+
40
+ class Redirect < IRB::StdioInputMethod
41
+ def initialize(dest)
42
+ super()
43
+ @dest = dest
44
+ end
45
+
46
+ def gets
47
+ close
48
+ @dest.write(prompt)
49
+ str = @dest.gets(@prompt)
50
+ if /^exit/ =~ str
51
+ exit
52
+ end
53
+ @line[@line_no += 1] = str
54
+ end
55
+
56
+ def close
57
+ if @thread
58
+ $defout = @old_out.dup
59
+ $stderr = @old_err.dup
60
+ $stdin = @old_in.dup
61
+ @output[1].close
62
+ @thread.join
63
+ end
64
+ end
65
+
66
+ def redir
67
+ @output = IO.pipe
68
+ @old_out = $defout.dup
69
+ @old_err = $stderr.dup
70
+ @old_in = $stdin.dup
71
+ $stdin = @dest.input[0]
72
+ $defout = $stderr = @output[1]
73
+ @output[1].fcntl(Fcntl::F_SETFL, File::NONBLOCK)
74
+ @thread = Thread.new {
75
+ while not @output[0].eof?
76
+ select([@output[0]])
77
+ @dest.write(@output[0].read)
78
+ end
79
+ @output[0].close
80
+ }
81
+ end
82
+ end
83
+
84
+ module Fox
85
+ class FXIrb < FXText
86
+ include Singleton
87
+ include Responder
88
+
89
+ attr_reader :input
90
+
91
+ def FXIrb.init(p, tgt, sel, opts)
92
+ unless @__instance__
93
+ Thread.critical = true
94
+ begin
95
+ @__instance__ ||= new(p, tgt, sel, opts)
96
+ ensure
97
+ Thread.critical = false
98
+ end
99
+ end
100
+ return @__instance__
101
+ end
102
+
103
+ def initialize(p, tgt, sel, opts)
104
+ FXMAPFUNC(SEL_KEYRELEASE, 0, "onKeyRelease")
105
+
106
+ super
107
+ setFont(FXFont.new(FXApp.instance, "-misc-fixed-medium-r-semicondensed-*-*-120-*-*-c-*-iso8859-1"))
108
+ end
109
+
110
+ def create
111
+ super
112
+ setFocus
113
+ # IRB initialization
114
+ @redir = Redirect.new(self)
115
+ @input = IO.pipe
116
+ @irb = Thread.new {
117
+ IRB.start_in_fxirb(@redir)
118
+ }
119
+ end
120
+
121
+ def onKeyRelease(sender, sel, event)
122
+ if [Fox::KEY_Return, Fox::KEY_KP_Enter].include?(event.code)
123
+ newLineEntered
124
+ end
125
+ return 1
126
+ end
127
+
128
+ def newLineEntered
129
+ if @running
130
+ start = prevLine(getLength)
131
+ @input[1].puts(extractText(start, getLength - start))
132
+ else
133
+ processCommandLine(extractText(@anchor, getLength-@anchor))
134
+ end
135
+ end
136
+
137
+ def processCommandLine(cmd)
138
+ @redir.redir
139
+ @running = true
140
+ @input[1].puts cmd
141
+ end
142
+
143
+ def sendCommand(cmd)
144
+ setCursorPos(getLength)
145
+ makePositionVisible(getLength) unless isPosVisible(getLength)
146
+ cmd += "\n"
147
+ appendText(cmd)
148
+ processCommandLine(cmd)
149
+ end
150
+
151
+ def write(obj)
152
+ str = obj.to_s
153
+ appendText(str)
154
+ setCursorPos(getLength)
155
+ makePositionVisible(getLength) unless isPosVisible(getLength)
156
+ return str.length
157
+ end
158
+
159
+ def gets(prompt)
160
+ @running = false
161
+ @anchor = getLength
162
+ return @input[0].gets
163
+ end
164
+ end
165
+ end
166
+
167
+ # Stand alone run
168
+ if __FILE__ == $0
169
+ include Fox
170
+ application = FXApp.new("FXIrb", "ruby")
171
+ Thread.abort_on_exception = true
172
+ application.init(ARGV)
173
+ window = FXMainWindow.new(application, "FXIrb", nil, nil, DECOR_ALL, 0, 0, 580, 600)
174
+ FXIrb.init(window, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y)
175
+ application.create
176
+ window.show(PLACEMENT_SCREEN)
177
+ application.run
178
+ end
@@ -0,0 +1,420 @@
1
+ module Fox
2
+
3
+ class FXComboBox
4
+
5
+ include Enumerable
6
+
7
+ #
8
+ # Override Enumerable#first with FXWindow#first for backwards compatibility.
9
+ #
10
+ def first
11
+ getFirst
12
+ end
13
+
14
+ #
15
+ # Calls block once for each item in the list, passing the item's text and
16
+ # user data as parameters.
17
+ #
18
+ def each # :yields: itemText, itemData
19
+ 0.upto(numItems - 1) do |i|
20
+ yield getItemText(i), getItemData(i)
21
+ end
22
+ self
23
+ end
24
+ end
25
+
26
+ class FXFoldingList
27
+
28
+ include Enumerable
29
+
30
+ #
31
+ # Calls block once for each root-level folding list item, passing a
32
+ # reference to that item as a parameter.
33
+ #
34
+ def each # :yields: aFoldingItem
35
+ current = firstItem
36
+ while current != nil
37
+ next_current = current.next
38
+ yield current
39
+ current = next_current
40
+ end
41
+ self
42
+ end
43
+ end
44
+
45
+ class FXFoldingItem
46
+
47
+ include Enumerable
48
+
49
+ #
50
+ # Calls block once for each child of this folding list item, passing a
51
+ # reference to that child item as a parameter.
52
+ #
53
+ def each # :yields: aFoldingItem
54
+ current = first
55
+ while current != nil
56
+ next_current = current.next
57
+ yield current
58
+ current = next_current
59
+ end
60
+ self
61
+ end
62
+ end
63
+
64
+ class FXHeader
65
+
66
+ include Enumerable
67
+
68
+ #
69
+ # Override Enumerable#first with FXWindow#first for backwards compatibility.
70
+ #
71
+ def first
72
+ getFirst
73
+ end
74
+
75
+ #
76
+ # Calls block once for each item in the list, passing a reference to that
77
+ # item as a parameter.
78
+ #
79
+ def each # :yields: aHeaderItem
80
+ 0.upto(numItems - 1) do |i|
81
+ yield getItem(i)
82
+ end
83
+ self
84
+ end
85
+ end
86
+
87
+ class FXIconList
88
+
89
+ include Enumerable
90
+
91
+ #
92
+ # Calls block once for each item in the list, passing a reference to that
93
+ # item as a parameter.
94
+ #
95
+ def each # :yields: anIconItem
96
+ 0.upto(numItems - 1) do |i|
97
+ yield getItem(i)
98
+ end
99
+ self
100
+ end
101
+ end
102
+
103
+ class FXList
104
+
105
+ include Enumerable
106
+
107
+ #
108
+ # Override Enumerable#first with FXWindow#first for backwards compatibility.
109
+ #
110
+ def first
111
+ getFirst
112
+ end
113
+
114
+ #
115
+ # Calls block once for each item in the list, passing a reference to that
116
+ # item as a parameter.
117
+ #
118
+ def each # :yields: aListItem
119
+ 0.upto(numItems - 1) do |i|
120
+ yield getItem(i)
121
+ end
122
+ self
123
+ end
124
+ end
125
+
126
+ class FXListBox
127
+
128
+ include Enumerable
129
+
130
+ #
131
+ # Override Enumerable#first with FXWindow#first for backwards compatibility.
132
+ #
133
+ def first
134
+ getFirst
135
+ end
136
+
137
+ #
138
+ # Calls block once for each item in the list, passing the item's text,
139
+ # icon and user data as parameters.
140
+ #
141
+ def each
142
+ 0.upto(numItems - 1) do |i|
143
+ yield getItemText(i), getItemIcon(i), getItemData(i)
144
+ end
145
+ self
146
+ end
147
+ end
148
+
149
+ class FXTable
150
+
151
+ include Enumerable
152
+
153
+ #
154
+ # Override Enumerable#first with FXWindow#first for backwards compatibility.
155
+ #
156
+ def first
157
+ getFirst
158
+ end
159
+
160
+ #
161
+ # Calls block once for each row in the table, passing an array of
162
+ # references (one element per column) as a parameter.
163
+ #
164
+ def each_row # :yields: itemArray
165
+ 0.upto(numRows - 1) do |i|
166
+ tableRow = []
167
+ 0.upto(numColumns - 1) do |j|
168
+ tableRow << getItem(i, j)
169
+ end
170
+ yield tableRow
171
+ end
172
+ self
173
+ end
174
+
175
+ #
176
+ # Calls block once for each column in the table, passing an array of
177
+ # references (one element per row) as a parameter.
178
+ #
179
+ def each_column # :yields: itemArray
180
+ 0.upto(numColumns - 1) do |j|
181
+ tableCol = []
182
+ 0.upto(numRows - 1) do |i|
183
+ tableCol << getItem(i, j)
184
+ end
185
+ yield tableCol
186
+ end
187
+ self
188
+ end
189
+
190
+ alias each each_row
191
+ end
192
+
193
+ class FXTreeItem
194
+
195
+ include Enumerable
196
+
197
+ #
198
+ # Calls block once for each child of this tree item, passing a
199
+ # reference to that child item as a parameter.
200
+ #
201
+ def each # :yields: aTreeItem
202
+ current = first
203
+ while current != nil
204
+ next_current = current.next
205
+ yield current
206
+ current = next_current
207
+ end
208
+ self
209
+ end
210
+ end
211
+
212
+ class FXTreeList
213
+
214
+ include Enumerable
215
+
216
+ #
217
+ # Override Enumerable#first with FXWindow#first for backwards compatibility.
218
+ #
219
+ def first
220
+ getFirst
221
+ end
222
+
223
+ #
224
+ # Calls block once for each root-level tree item, passing a
225
+ # reference to that item as a parameter.
226
+ #
227
+ def each # :yields: aTreeItem
228
+ current = firstItem
229
+ while current != nil
230
+ next_current = current.next
231
+ yield current
232
+ current = next_current
233
+ end
234
+ self
235
+ end
236
+ end
237
+
238
+ class FXTreeListBox
239
+
240
+ include Enumerable
241
+
242
+ #
243
+ # Override Enumerable#first with FXWindow#first for backwards compatibility.
244
+ #
245
+ def first
246
+ getFirst
247
+ end
248
+
249
+ #
250
+ # Calls block once for each root-level tree item, passing a
251
+ # reference to that item as a parameter.
252
+ #
253
+ def each # :yields: aTreeItem
254
+ current = firstItem
255
+ while current != nil
256
+ next_current = current.next
257
+ yield current
258
+ current = next_current
259
+ end
260
+ self
261
+ end
262
+ end
263
+
264
+ class FXStream
265
+ end
266
+
267
+ class FXFileStream
268
+ #
269
+ # Construct a new FXFileStream object with the specified data flow
270
+ # direction (<em>save_or_load</em>) and _container_ object.
271
+ # If an optional code block is given, it will be passed this file
272
+ # stream as an argument, and the file stream will automatically be
273
+ # closed when the block terminates.
274
+ # If no code block is provided, this method just returns the
275
+ # new file stream in an opened state.
276
+ #
277
+ # Raises FXStreamNoWriteError if <em>save_or_load</em> is +FXStreamSave+
278
+ # but the file cannot be opened for writing. Raises FXStreamNoReadError
279
+ # if <em>save_or_load</em> is +FXStreamLoad+ but the file cannot be opened
280
+ # for reading.
281
+ #
282
+
283
+ def FXFileStream.open(filename, save_or_load, size=8192, container=nil) # :yields: theFileStream
284
+ fstream = FXFileStream.new(container)
285
+ if fstream.open(filename, save_or_load, size)
286
+ if block_given?
287
+ begin
288
+ yield fstream
289
+ ensure
290
+ fstream.close
291
+ end
292
+ else
293
+ fstream
294
+ end
295
+ else
296
+ # FXFileStream#open returned false, so report error
297
+ raise FXStreamError.makeStreamError(fstream.status)
298
+ end
299
+ end
300
+ end
301
+
302
+ class FXMemoryStream
303
+ #
304
+ # Construct a new FXMemoryStream object with the specified data flow
305
+ # direction, data and container object.
306
+ # If an optional code block is given, it will be passed this memory
307
+ # stream as an argument, and the memory stream will automatically be
308
+ # closed when the block terminates.
309
+ # If no code block is provided, this method just returns the
310
+ # new memory stream in an opened state.
311
+ #
312
+ # Raises FXStreamAllocError if some kind of memory allocation failed
313
+ # while initializing the stream.
314
+ #
315
+ # ==== Parameters:
316
+ #
317
+ # +save_or_load+:: access mode, either +FXStreamSave+ or +FXStreamLoad+ [Integer]
318
+ # +data+:: memory buffer used for the stream, or +nil+ if the buffer is to be initially empty [String].
319
+ # +cont+:: the container object, or +nil+ if there is none [FXObject]
320
+ #
321
+ def FXMemoryStream.open(save_or_load, data, cont=nil) # :yields: theMemoryStream
322
+ stream = FXMemoryStream.new(cont)
323
+ if stream.open(save_or_load, data)
324
+ if block_given?
325
+ begin
326
+ yield stream
327
+ ensure
328
+ stream.close
329
+ end
330
+ else
331
+ stream
332
+ end
333
+ else
334
+ # FXFileStream#open returned false, so report error
335
+ raise FXStreamError.makeStreamError(stream.status)
336
+ end
337
+ end
338
+ end
339
+
340
+ class FXApp
341
+
342
+ alias beginWaitCursor0 beginWaitCursor # :nodoc:
343
+
344
+ #
345
+ # Changes the default application cursor to an hourglass shape,
346
+ # to provide a visual cue to the user that it's time to wait.
347
+ # To revert the default application cursor to its normal shape,
348
+ # call the #endWaitCursor method. For example,
349
+ #
350
+ # getApp().beginWaitCursor()
351
+ # ... time-consuming operation ...
352
+ # getApp().endWaitCursor()
353
+ #
354
+ # Invocations of #beginWaitCursor may be nested, and if so, the
355
+ # call to #endWaitCursor is matched with the most recent call to
356
+ # #beginWaitCursor.
357
+ #
358
+ # If an optional code block is provided, #endWaitCursor is
359
+ # automatically called after the block terminates, e.g.
360
+ #
361
+ # getApp().beginWaitCursor() {
362
+ # ... time-consuming operation ...
363
+ # ... endWaitCursor() is called automatically ...
364
+ # }
365
+ #
366
+ def beginWaitCursor
367
+ beginWaitCursor0
368
+ if block_given?
369
+ begin
370
+ yield
371
+ ensure
372
+ endWaitCursor
373
+ end
374
+ end
375
+ end
376
+ end
377
+
378
+ class FXDCPrint
379
+
380
+ alias beginPrint0 beginPrint # :nodoc:
381
+
382
+ #
383
+ # Begin print session described by _job_ (an FXPrinter instance).
384
+ # If an optional code block is provided, #endPrint is automatically
385
+ # called after the block terminates.
386
+ #
387
+ def beginPrint(job) # :yields: theDC
388
+ result = beginPrint0(job)
389
+ if block_given?
390
+ begin
391
+ yield self
392
+ ensure
393
+ endPrint
394
+ end
395
+ else
396
+ result
397
+ end
398
+ end
399
+
400
+ alias beginPage0 beginPage # :nodoc:
401
+
402
+ #
403
+ # Generate beginning of _page_ (the page number).
404
+ # If an optional code block is provided, #endPage is automatically
405
+ # called after the block terminates.
406
+ #
407
+ def beginPage(page=1) # :yields: theDC
408
+ result = beginPage0(page)
409
+ if block_given?
410
+ begin
411
+ yield self
412
+ ensure
413
+ endPage
414
+ end
415
+ else
416
+ result
417
+ end
418
+ end
419
+ end
420
+ end