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.
- data/LICENSE +456 -0
- data/README +39 -0
- data/doc/apes02.html +21 -0
- data/doc/apes03.html +39 -0
- data/doc/book.html +3 -0
- data/doc/build.html +133 -0
- data/doc/ch03s02.html +23 -0
- data/doc/ch03s03.html +52 -0
- data/doc/ch03s04.html +36 -0
- data/doc/ch03s05.html +60 -0
- data/doc/ch04s02.html +71 -0
- data/doc/ch04s03.html +37 -0
- data/doc/ch04s04.html +72 -0
- data/doc/ch05s02.html +260 -0
- data/doc/ch05s03.html +127 -0
- data/doc/changes.html +685 -0
- data/doc/clipboardtut.html +67 -0
- data/doc/differences.html +190 -0
- data/doc/dragdroptut.html +263 -0
- data/doc/events.html +36 -0
- data/doc/examples.html +104 -0
- data/doc/gems.html +73 -0
- data/doc/goals.html +41 -0
- data/doc/images/babelfish.png +0 -0
- data/doc/images/browser.png +0 -0
- data/doc/images/button.png +0 -0
- data/doc/images/call-chain-example.png +0 -0
- data/doc/images/colordialog.png +0 -0
- data/doc/images/datatarget.png +0 -0
- data/doc/images/dialog.png +0 -0
- data/doc/images/dilbert.png +0 -0
- data/doc/images/dirlist.png +0 -0
- data/doc/images/dropsite-droprejected.png +0 -0
- data/doc/images/foursplit.png +0 -0
- data/doc/images/gltest.png +0 -0
- data/doc/images/glviewer.png +0 -0
- data/doc/images/groupbox.png +0 -0
- data/doc/images/header.png +0 -0
- data/doc/images/hello-with-button.png +0 -0
- data/doc/images/hello-with-icon-1.png +0 -0
- data/doc/images/hello-with-icon-2.png +0 -0
- data/doc/images/hello-with-icon-3.png +0 -0
- data/doc/images/hello-with-tooltip.png +0 -0
- data/doc/images/hello-without-button.png +0 -0
- data/doc/images/hello.png +0 -0
- data/doc/images/hello2.png +0 -0
- data/doc/images/iconlist-bigicons.png +0 -0
- data/doc/images/iconlist-details.png +0 -0
- data/doc/images/image.png +0 -0
- data/doc/images/imageviewer.png +0 -0
- data/doc/images/inheritance.png +0 -0
- data/doc/images/mditest.png +0 -0
- data/doc/images/raabrowser.png +0 -0
- data/doc/images/scribble.png +0 -0
- data/doc/images/shutter.png +0 -0
- data/doc/images/splitter.png +0 -0
- data/doc/images/tabbook.png +0 -0
- data/doc/images/table.png +0 -0
- data/doc/images/tutorial1.png +0 -0
- data/doc/implementation.html +16 -0
- data/doc/infosources.html +33 -0
- data/doc/library.html +30 -0
- data/doc/opengl.html +73 -0
- data/doc/pt01.html +3 -0
- data/doc/pt02.html +3 -0
- data/doc/scintilla.html +36 -0
- data/doc/style.css +247 -0
- data/doc/subversion.html +21 -0
- data/doc/tutorial1.html +90 -0
- data/doc/unicode.html +56 -0
- data/examples/RAA.rb +25 -0
- data/examples/README +53 -0
- data/examples/babelfish.rb +93 -0
- data/examples/bounce.rb +159 -0
- data/examples/browser.rb +191 -0
- data/examples/button.rb +168 -0
- data/examples/datatarget.rb +223 -0
- data/examples/dctest.rb +696 -0
- data/examples/dialog.rb +143 -0
- data/examples/dilbert.rb +67 -0
- data/examples/dirlist.rb +63 -0
- data/examples/dragdrop.rb +97 -0
- data/examples/dragsource.rb +80 -0
- data/examples/dropsite.rb +59 -0
- data/examples/foursplit.rb +97 -0
- data/examples/gltest.rb +330 -0
- data/examples/glviewer.rb +576 -0
- data/examples/groupbox.rb +392 -0
- data/examples/header.rb +149 -0
- data/examples/hello.rb +12 -0
- data/examples/hello2.rb +51 -0
- data/examples/iRAA.rb +153 -0
- data/examples/iconlist.rb +92 -0
- data/examples/icons/AngryGuyInBunnySuit.ico +0 -0
- data/examples/icons/FatBot.ico +0 -0
- data/examples/icons/FlippedySwitch.ico +0 -0
- data/examples/icons/LeGoon.ico +0 -0
- data/examples/icons/Net.ico +0 -0
- data/examples/icons/RedMacOS.ico +0 -0
- data/examples/icons/SawBlade.ico +0 -0
- data/examples/icons/backview.png +0 -0
- data/examples/icons/big.png +0 -0
- data/examples/icons/bigfolder.png +0 -0
- data/examples/icons/bigpenguin.png +0 -0
- data/examples/icons/bottomview.png +0 -0
- data/examples/icons/camera.png +0 -0
- data/examples/icons/capbutt.png +0 -0
- data/examples/icons/capnotlast.png +0 -0
- data/examples/icons/capproj.png +0 -0
- data/examples/icons/capround.png +0 -0
- data/examples/icons/colorpal.png +0 -0
- data/examples/icons/copy.png +0 -0
- data/examples/icons/cut.png +0 -0
- data/examples/icons/delimit.png +0 -0
- data/examples/icons/dippy.png +0 -0
- data/examples/icons/double_dash.png +0 -0
- data/examples/icons/filenew.png +0 -0
- data/examples/icons/fileopen.png +0 -0
- data/examples/icons/filesave.png +0 -0
- data/examples/icons/filesaveas.png +0 -0
- data/examples/icons/fonts.png +0 -0
- data/examples/icons/fox.png +0 -0
- data/examples/icons/foxicon.png +0 -0
- data/examples/icons/frontview.png +0 -0
- data/examples/icons/gem_big.png +0 -0
- data/examples/icons/gem_small.png +0 -0
- data/examples/icons/hello2.png +0 -0
- data/examples/icons/help.png +0 -0
- data/examples/icons/indent.png +0 -0
- data/examples/icons/jbevel.png +0 -0
- data/examples/icons/jmiter.png +0 -0
- data/examples/icons/jround.png +0 -0
- data/examples/icons/kill.png +0 -0
- data/examples/icons/leftview.png +0 -0
- data/examples/icons/light.png +0 -0
- data/examples/icons/minidoc.png +0 -0
- data/examples/icons/minifolder.png +0 -0
- data/examples/icons/minifolderopen.png +0 -0
- data/examples/icons/newfolder.png +0 -0
- data/examples/icons/nolight.png +0 -0
- data/examples/icons/onoff_dash.png +0 -0
- data/examples/icons/palette.png +0 -0
- data/examples/icons/parallel.png +0 -0
- data/examples/icons/paste.png +0 -0
- data/examples/icons/pattern.png +0 -0
- data/examples/icons/penguin.png +0 -0
- data/examples/icons/perspective.png +0 -0
- data/examples/icons/printicon.png +0 -0
- data/examples/icons/prop.png +0 -0
- data/examples/icons/redo.png +0 -0
- data/examples/icons/rightview.png +0 -0
- data/examples/icons/saveas.png +0 -0
- data/examples/icons/shutter1.png +0 -0
- data/examples/icons/shutter2.png +0 -0
- data/examples/icons/small.png +0 -0
- data/examples/icons/smoothlight.png +0 -0
- data/examples/icons/solid_line.png +0 -0
- data/examples/icons/tbuplevel.png +0 -0
- data/examples/icons/topview.png +0 -0
- data/examples/icons/undo.png +0 -0
- data/examples/icons/winapp.png +0 -0
- data/examples/icons/zoom.png +0 -0
- data/examples/image.rb +279 -0
- data/examples/imageviewer.rb +509 -0
- data/examples/inputs.rb +83 -0
- data/examples/mditest.rb +180 -0
- data/examples/pig.rb +77 -0
- data/examples/raabrowser.rb +122 -0
- data/examples/ratio.rb +80 -0
- data/examples/rulerview.rb +27 -0
- data/examples/scintilla-test.rb +81 -0
- data/examples/scribble-orig.rb +186 -0
- data/examples/scribble.rb +162 -0
- data/examples/shutter.rb +158 -0
- data/examples/splitter.rb +211 -0
- data/examples/styledtext.rb +82 -0
- data/examples/tabbook.rb +165 -0
- data/examples/table.rb +187 -0
- data/examples/textedit/commands.rb +114 -0
- data/examples/textedit/helpwindow.rb +299 -0
- data/examples/textedit/prefdialog.rb +239 -0
- data/examples/textedit/textedit.rb +1763 -0
- data/examples/unicode.rb +36 -0
- data/ext/fox16/fox16.so +0 -0
- data/index.html +14 -0
- data/lib/fox16/aliases.rb +5598 -0
- data/lib/fox16/calendar.rb +217 -0
- data/lib/fox16/chore.rb +105 -0
- data/lib/fox16/colors.rb +280 -0
- data/lib/fox16/core.rb +681 -0
- data/lib/fox16/dict.rb +35 -0
- data/lib/fox16/execute_nonmodal.rb +70 -0
- data/lib/fox16/glgroup.rb +166 -0
- data/lib/fox16/glshapes.rb +456 -0
- data/lib/fox16/input.rb +59 -0
- data/lib/fox16/irb.rb +178 -0
- data/lib/fox16/iterators.rb +371 -0
- data/lib/fox16/keys.rb +1374 -0
- data/lib/fox16/kwargs.rb +2725 -0
- data/lib/fox16/missingdep.rb +14 -0
- data/lib/fox16/pseudokeyboard.rb +40 -0
- data/lib/fox16/pseudomouse.rb +87 -0
- data/lib/fox16/responder.rb +70 -0
- data/lib/fox16/responder2.rb +131 -0
- data/lib/fox16/scintilla.rb +3641 -0
- data/lib/fox16/settings.rb +18 -0
- data/lib/fox16/signal.rb +71 -0
- data/lib/fox16/splashscreen.rb +82 -0
- data/lib/fox16/timeout.rb +136 -0
- data/lib/fox16/undolist.rb +455 -0
- data/lib/fox16/version.rb +9 -0
- data/rdoc-sources/FX4Splitter.rb +156 -0
- data/rdoc-sources/FX7Segment.rb +54 -0
- data/rdoc-sources/FXAccelTable.rb +102 -0
- data/rdoc-sources/FXApp.rb +545 -0
- data/rdoc-sources/FXArrowButton.rb +69 -0
- data/rdoc-sources/FXBMPIcon.rb +67 -0
- data/rdoc-sources/FXBMPImage.rb +30 -0
- data/rdoc-sources/FXBitmap.rb +115 -0
- data/rdoc-sources/FXBitmapFrame.rb +31 -0
- data/rdoc-sources/FXBitmapView.rb +44 -0
- data/rdoc-sources/FXButton.rb +59 -0
- data/rdoc-sources/FXCURCursor.rb +13 -0
- data/rdoc-sources/FXCanvas.rb +18 -0
- data/rdoc-sources/FXCheckButton.rb +58 -0
- data/rdoc-sources/FXChoiceBox.rb +49 -0
- data/rdoc-sources/FXColorBar.rb +48 -0
- data/rdoc-sources/FXColorDialog.rb +37 -0
- data/rdoc-sources/FXColorList.rb +55 -0
- data/rdoc-sources/FXColorRing.rb +49 -0
- data/rdoc-sources/FXColorSelector.rb +65 -0
- data/rdoc-sources/FXColorWell.rb +65 -0
- data/rdoc-sources/FXColorWheel.rb +57 -0
- data/rdoc-sources/FXComboBox.rb +211 -0
- data/rdoc-sources/FXComposite.rb +34 -0
- data/rdoc-sources/FXCursor.rb +67 -0
- data/rdoc-sources/FXDC.rb +720 -0
- data/rdoc-sources/FXDCPrint.rb +127 -0
- data/rdoc-sources/FXDCWindow.rb +33 -0
- data/rdoc-sources/FXDataTarget.rb +66 -0
- data/rdoc-sources/FXDebugTarget.rb +25 -0
- data/rdoc-sources/FXDelegator.rb +23 -0
- data/rdoc-sources/FXDial.rb +107 -0
- data/rdoc-sources/FXDialogBox.rb +32 -0
- data/rdoc-sources/FXDict.rb +79 -0
- data/rdoc-sources/FXDirBox.rb +55 -0
- data/rdoc-sources/FXDirDialog.rb +47 -0
- data/rdoc-sources/FXDirList.rb +149 -0
- data/rdoc-sources/FXDirSelector.rb +64 -0
- data/rdoc-sources/FXDockBar.rb +151 -0
- data/rdoc-sources/FXDockHandler.rb +26 -0
- data/rdoc-sources/FXDockSite.rb +104 -0
- data/rdoc-sources/FXDockTitle.rb +26 -0
- data/rdoc-sources/FXDocument.rb +29 -0
- data/rdoc-sources/FXDragCorner.rb +19 -0
- data/rdoc-sources/FXDrawable.rb +27 -0
- data/rdoc-sources/FXDriveBox.rb +46 -0
- data/rdoc-sources/FXExtentd.rb +85 -0
- data/rdoc-sources/FXExtentf.rb +85 -0
- data/rdoc-sources/FXFileDialog.rb +217 -0
- data/rdoc-sources/FXFileDict.rb +131 -0
- data/rdoc-sources/FXFileList.rb +208 -0
- data/rdoc-sources/FXFileSelector.rb +184 -0
- data/rdoc-sources/FXFileStream.rb +27 -0
- data/rdoc-sources/FXFoldingList.rb +504 -0
- data/rdoc-sources/FXFont.rb +361 -0
- data/rdoc-sources/FXFontDialog.rb +14 -0
- data/rdoc-sources/FXFontSelector.rb +37 -0
- data/rdoc-sources/FXFrame.rb +53 -0
- data/rdoc-sources/FXGIFCursor.rb +50 -0
- data/rdoc-sources/FXGIFIcon.rb +31 -0
- data/rdoc-sources/FXGIFImage.rb +29 -0
- data/rdoc-sources/FXGLCanvas.rb +45 -0
- data/rdoc-sources/FXGLContext.rb +40 -0
- data/rdoc-sources/FXGLObject.rb +75 -0
- data/rdoc-sources/FXGLShape.rb +69 -0
- data/rdoc-sources/FXGLViewer.rb +332 -0
- data/rdoc-sources/FXGLVisual.rb +94 -0
- data/rdoc-sources/FXGradientBar.rb +301 -0
- data/rdoc-sources/FXGroupBox.rb +33 -0
- data/rdoc-sources/FXHeader.rb +408 -0
- data/rdoc-sources/FXHorizontalFrame.rb +29 -0
- data/rdoc-sources/FXICOIcon.rb +65 -0
- data/rdoc-sources/FXICOImage.rb +31 -0
- data/rdoc-sources/FXIcon.rb +38 -0
- data/rdoc-sources/FXIconDict.rb +48 -0
- data/rdoc-sources/FXIconList.rb +447 -0
- data/rdoc-sources/FXIconSource.rb +100 -0
- data/rdoc-sources/FXId.rb +34 -0
- data/rdoc-sources/FXImage.rb +286 -0
- data/rdoc-sources/FXImageFrame.rb +36 -0
- data/rdoc-sources/FXImageView.rb +35 -0
- data/rdoc-sources/FXInputDialog.rb +77 -0
- data/rdoc-sources/FXJPGIcon.rb +70 -0
- data/rdoc-sources/FXJPGImage.rb +38 -0
- data/rdoc-sources/FXKnob.rb +76 -0
- data/rdoc-sources/FXLabel.rb +69 -0
- data/rdoc-sources/FXList.rb +440 -0
- data/rdoc-sources/FXListBox.rb +191 -0
- data/rdoc-sources/FXMDIButton.rb +67 -0
- data/rdoc-sources/FXMDIChild.rb +155 -0
- data/rdoc-sources/FXMDIClient.rb +65 -0
- data/rdoc-sources/FXMainWindow.rb +26 -0
- data/rdoc-sources/FXMatrix.rb +57 -0
- data/rdoc-sources/FXMemoryBuffer.rb +28 -0
- data/rdoc-sources/FXMemoryStream.rb +50 -0
- data/rdoc-sources/FXMenuBar.rb +23 -0
- data/rdoc-sources/FXMenuButton.rb +84 -0
- data/rdoc-sources/FXMenuCaption.rb +50 -0
- data/rdoc-sources/FXMenuCascade.rb +18 -0
- data/rdoc-sources/FXMenuCheck.rb +30 -0
- data/rdoc-sources/FXMenuCommand.rb +26 -0
- data/rdoc-sources/FXMenuPane.rb +13 -0
- data/rdoc-sources/FXMenuRadio.rb +33 -0
- data/rdoc-sources/FXMenuSeparator.rb +21 -0
- data/rdoc-sources/FXMenuTitle.rb +27 -0
- data/rdoc-sources/FXMessageBox.rb +72 -0
- data/rdoc-sources/FXObject.rb +28 -0
- data/rdoc-sources/FXOptionMenu.rb +83 -0
- data/rdoc-sources/FXPCXIcon.rb +63 -0
- data/rdoc-sources/FXPCXImage.rb +31 -0
- data/rdoc-sources/FXPNGIcon.rb +66 -0
- data/rdoc-sources/FXPNGImage.rb +34 -0
- data/rdoc-sources/FXPPMIcon.rb +36 -0
- data/rdoc-sources/FXPPMImage.rb +31 -0
- data/rdoc-sources/FXPacker.rb +63 -0
- data/rdoc-sources/FXPicker.rb +27 -0
- data/rdoc-sources/FXPopup.rb +53 -0
- data/rdoc-sources/FXPrintDialog.rb +36 -0
- data/rdoc-sources/FXProgressBar.rb +57 -0
- data/rdoc-sources/FXProgressDialog.rb +36 -0
- data/rdoc-sources/FXQuatd.rb +164 -0
- data/rdoc-sources/FXQuatf.rb +173 -0
- data/rdoc-sources/FXRGBIcon.rb +64 -0
- data/rdoc-sources/FXRGBImage.rb +31 -0
- data/rdoc-sources/FXRadioButton.rb +70 -0
- data/rdoc-sources/FXRanged.rb +100 -0
- data/rdoc-sources/FXRangef.rb +100 -0
- data/rdoc-sources/FXRealSlider.rb +101 -0
- data/rdoc-sources/FXRealSpinner.rb +140 -0
- data/rdoc-sources/FXRecentFiles.rb +77 -0
- data/rdoc-sources/FXRectangle.rb +149 -0
- data/rdoc-sources/FXRegion.rb +64 -0
- data/rdoc-sources/FXRegistry.rb +56 -0
- data/rdoc-sources/FXReplaceDialog.rb +56 -0
- data/rdoc-sources/FXRootWindow.rb +17 -0
- data/rdoc-sources/FXRuler.rb +130 -0
- data/rdoc-sources/FXRulerView.rb +225 -0
- data/rdoc-sources/FXScintilla.rb +121 -0
- data/rdoc-sources/FXScrollArea.rb +86 -0
- data/rdoc-sources/FXScrollBar.rb +107 -0
- data/rdoc-sources/FXScrollPane.rb +28 -0
- data/rdoc-sources/FXScrollWindow.rb +38 -0
- data/rdoc-sources/FXSearchDialog.rb +24 -0
- data/rdoc-sources/FXSeparator.rb +74 -0
- data/rdoc-sources/FXSettings.rb +248 -0
- data/rdoc-sources/FXShell.rb +8 -0
- data/rdoc-sources/FXShutter.rb +102 -0
- data/rdoc-sources/FXSize.rb +95 -0
- data/rdoc-sources/FXSlider.rb +98 -0
- data/rdoc-sources/FXSphered.rb +80 -0
- data/rdoc-sources/FXSpheref.rb +80 -0
- data/rdoc-sources/FXSpinner.rb +136 -0
- data/rdoc-sources/FXSplashWindow.rb +27 -0
- data/rdoc-sources/FXSplitter.rb +89 -0
- data/rdoc-sources/FXSpring.rb +61 -0
- data/rdoc-sources/FXStatusBar.rb +42 -0
- data/rdoc-sources/FXStatusLine.rb +60 -0
- data/rdoc-sources/FXStream.rb +142 -0
- data/rdoc-sources/FXStringDict.rb +38 -0
- data/rdoc-sources/FXSwitcher.rb +78 -0
- data/rdoc-sources/FXTGAIcon.rb +63 -0
- data/rdoc-sources/FXTGAImage.rb +31 -0
- data/rdoc-sources/FXTIFIcon.rb +70 -0
- data/rdoc-sources/FXTIFImage.rb +37 -0
- data/rdoc-sources/FXTabBar.rb +80 -0
- data/rdoc-sources/FXTabBook.rb +41 -0
- data/rdoc-sources/FXTabItem.rb +58 -0
- data/rdoc-sources/FXTable.rb +967 -0
- data/rdoc-sources/FXText.rb +578 -0
- data/rdoc-sources/FXTextField.rb +151 -0
- data/rdoc-sources/FXToggleButton.rb +69 -0
- data/rdoc-sources/FXToolBar.rb +61 -0
- data/rdoc-sources/FXToolBarGrip.rb +50 -0
- data/rdoc-sources/FXToolBarShell.rb +44 -0
- data/rdoc-sources/FXToolBarTab.rb +74 -0
- data/rdoc-sources/FXToolTip.rb +36 -0
- data/rdoc-sources/FXTopWindow.rb +163 -0
- data/rdoc-sources/FXTranslator.rb +32 -0
- data/rdoc-sources/FXTreeList.rb +514 -0
- data/rdoc-sources/FXTreeListBox.rb +219 -0
- data/rdoc-sources/FXTriStateButton.rb +49 -0
- data/rdoc-sources/FXVec2d.rb +96 -0
- data/rdoc-sources/FXVec2f.rb +96 -0
- data/rdoc-sources/FXVec3d.rb +113 -0
- data/rdoc-sources/FXVec3f.rb +113 -0
- data/rdoc-sources/FXVec4d.rb +129 -0
- data/rdoc-sources/FXVec4f.rb +129 -0
- data/rdoc-sources/FXVerticalFrame.rb +29 -0
- data/rdoc-sources/FXVisual.rb +79 -0
- data/rdoc-sources/FXWindow.rb +725 -0
- data/rdoc-sources/FXWizard.rb +59 -0
- data/rdoc-sources/FXXBMIcon.rb +37 -0
- data/rdoc-sources/FXXBMImage.rb +32 -0
- data/rdoc-sources/FXXPMIcon.rb +65 -0
- data/rdoc-sources/FXXPMImage.rb +31 -0
- data/rdoc-sources/README.rdoc +53 -0
- data/rdoc-sources/fxdefs.rb +90 -0
- data/tests/README +19 -0
- data/tests/TC_FXAccelTable.rb +43 -0
- data/tests/TC_FXApp.rb +15 -0
- data/tests/TC_FXArc.rb +26 -0
- data/tests/TC_FXBMPIcon.rb +15 -0
- data/tests/TC_FXBMPImage.rb +15 -0
- data/tests/TC_FXButton.rb +72 -0
- data/tests/TC_FXCheckButton.rb +57 -0
- data/tests/TC_FXComboBox.rb +52 -0
- data/tests/TC_FXDC.rb +372 -0
- data/tests/TC_FXDCPrint.rb +102 -0
- data/tests/TC_FXDCWindow.rb +23 -0
- data/tests/TC_FXDataTarget.rb +24 -0
- data/tests/TC_FXDirList.rb +30 -0
- data/tests/TC_FXFileAssoc.rb +62 -0
- data/tests/TC_FXFileStream.rb +90 -0
- data/tests/TC_FXFoldingList.rb +32 -0
- data/tests/TC_FXFont.rb +69 -0
- data/tests/TC_FXFontDesc.rb +58 -0
- data/tests/TC_FXGLGroup.rb +32 -0
- data/tests/TC_FXGLShape.rb +28 -0
- data/tests/TC_FXGLViewer.rb +20 -0
- data/tests/TC_FXGradientBar.rb +89 -0
- data/tests/TC_FXHeader.rb +82 -0
- data/tests/TC_FXIconDict.rb +52 -0
- data/tests/TC_FXIconList.rb +192 -0
- data/tests/TC_FXId.rb +19 -0
- data/tests/TC_FXImage.rb +155 -0
- data/tests/TC_FXLight.rb +33 -0
- data/tests/TC_FXList.rb +116 -0
- data/tests/TC_FXListBox.rb +49 -0
- data/tests/TC_FXMat4f.rb +228 -0
- data/tests/TC_FXMaterial.rb +89 -0
- data/tests/TC_FXMemoryStream.rb +97 -0
- data/tests/TC_FXMenuCheck.rb +57 -0
- data/tests/TC_FXMenuCommand.rb +12 -0
- data/tests/TC_FXMenuRadio.rb +57 -0
- data/tests/TC_FXPoint.rb +57 -0
- data/tests/TC_FXQuatf.rb +77 -0
- data/tests/TC_FXRadioButton.rb +57 -0
- data/tests/TC_FXRangef.rb +48 -0
- data/tests/TC_FXRectangle.rb +88 -0
- data/tests/TC_FXRegion.rb +54 -0
- data/tests/TC_FXRegistry.rb +27 -0
- data/tests/TC_FXScrollArea.rb +28 -0
- data/tests/TC_FXScrollWindow.rb +28 -0
- data/tests/TC_FXSegment.rb +22 -0
- data/tests/TC_FXSettings.rb +34 -0
- data/tests/TC_FXShell.rb +26 -0
- data/tests/TC_FXSize.rb +54 -0
- data/tests/TC_FXStream.rb +11 -0
- data/tests/TC_FXTable.rb +368 -0
- data/tests/TC_FXTableItem.rb +48 -0
- data/tests/TC_FXText.rb +96 -0
- data/tests/TC_FXTopWindow.rb +32 -0
- data/tests/TC_FXTreeList.rb +100 -0
- data/tests/TC_FXTreeListBox.rb +41 -0
- data/tests/TC_FXUndoList.rb +43 -0
- data/tests/TC_FXVec2d.rb +142 -0
- data/tests/TC_FXVec2f.rb +137 -0
- data/tests/TC_FXVec3d.rb +150 -0
- data/tests/TC_FXVec3f.rb +150 -0
- data/tests/TC_FXVec4f.rb +158 -0
- data/tests/TC_FXViewport.rb +30 -0
- data/tests/TC_FXXBMIcon.rb +15 -0
- data/tests/TC_FXXBMImage.rb +15 -0
- data/tests/TC_FXXPMIcon.rb +15 -0
- data/tests/TC_FXXPMImage.rb +15 -0
- data/tests/TC_Misc.rb +157 -0
- data/tests/TC_downcast.rb +15 -0
- data/tests/TS_All.rb +25 -0
- data/tests/blankpage.ps +166 -0
- data/tests/howdypage.ps +181 -0
- data/tests/stress1.rb +94 -0
- data/tests/stress2.rb +51 -0
- data/tests/stress3.rb +117 -0
- data/tests/testcase.rb +37 -0
- data/web/art/fxrubylogo.png +0 -0
- data/web/art/fxrubylogo_small.png +0 -0
- data/web/art/line.gif +0 -0
- data/web/art/oul_grey.gif +0 -0
- data/web/art/our.gif +0 -0
- data/web/downloads.html +93 -0
- data/web/home.html +113 -0
- data/web/menu.html +50 -0
- data/web/styles.css +167 -0
- data/web/top.html +15 -0
- metadata +548 -0
data/examples/RAA.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'soap/rpc/driver'
|
2
|
+
require 'iRAA'
|
3
|
+
|
4
|
+
module RAA
|
5
|
+
extend SOAP
|
6
|
+
|
7
|
+
class Driver
|
8
|
+
def initialize(server = 'http://raa.ruby-lang.org/soap/1.0/', proxy = nil)
|
9
|
+
@drv = SOAP::RPC::Driver.new(server, RAA::InterfaceNS)
|
10
|
+
@drv.httpproxy = proxy if proxy
|
11
|
+
@drv.mapping_registry = RAA::MappingRegistry
|
12
|
+
RAA::Methods.each do |name, *params|
|
13
|
+
@drv.add_method(name, params)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def setLogDev(logdev)
|
18
|
+
# ignored.
|
19
|
+
end
|
20
|
+
|
21
|
+
def method_missing(msg_id, *a, &b)
|
22
|
+
@drv.__send__(msg_id, *a, &b)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/examples/README
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
This directory contains several example programs for FXRuby, and supporting
|
2
|
+
files for the same. Here is a partial list of the files you'll find here:
|
3
|
+
|
4
|
+
button.rb
|
5
|
+
Demonstrates the various layout and appearance options for the
|
6
|
+
FXButton widget.
|
7
|
+
|
8
|
+
dialog.rb
|
9
|
+
Simple example demonstrating how to create both modal and non-modal
|
10
|
+
dialogs.
|
11
|
+
|
12
|
+
dirlist.rb
|
13
|
+
Demonstrates the directory list (FXDirList) widget.
|
14
|
+
|
15
|
+
foursplit.rb
|
16
|
+
Demonstrates the 4-way splitter widget.
|
17
|
+
|
18
|
+
gltest.rb
|
19
|
+
Demonstrates the OpenGL canvas widget, and how to use both timers
|
20
|
+
and chores in FOX applications. This one also requires the OpenGL
|
21
|
+
extensions for Ruby; check the Ruby Application Archive for the
|
22
|
+
current release.
|
23
|
+
|
24
|
+
groupbox.rb
|
25
|
+
This is a kind of periodic table of widgets for FOX; it displays
|
26
|
+
a wide variety of the core widgets with different options.
|
27
|
+
|
28
|
+
header.rb
|
29
|
+
Demonstrates the header widget.
|
30
|
+
|
31
|
+
hello.rb
|
32
|
+
Minimalist FXRuby: the classic "Hello, World!" program
|
33
|
+
|
34
|
+
hello2.rb
|
35
|
+
The souped-up version of "Hello, World!", complete with a PNG icon
|
36
|
+
and tooltips.
|
37
|
+
|
38
|
+
imageviewer.rb
|
39
|
+
This is primarily a demonstration of the image view (FXImageView)
|
40
|
+
widget but it also provides a model for what could be a full-blown
|
41
|
+
FXRuby application. This example has a menu bar and toolbar (both
|
42
|
+
"floatable") and demonstrates how to use FOX's registry mechanism
|
43
|
+
for persistent application settings.
|
44
|
+
and tooltips.
|
45
|
+
|
46
|
+
scribble.rb
|
47
|
+
This is the Ruby version of the scribble program described in the
|
48
|
+
standard FOX documentation. It demonstrates the basics of drawing
|
49
|
+
into a 2-D canvas as well as FOX's GUI updating features.
|
50
|
+
|
51
|
+
shutter.rb
|
52
|
+
Demonstrates the shutter widget, similar to that found in a popular
|
53
|
+
office application.
|
@@ -0,0 +1,93 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fox16'
|
4
|
+
require 'soap/rpc/driver'
|
5
|
+
|
6
|
+
include Fox
|
7
|
+
|
8
|
+
TRANSLATIONS = {
|
9
|
+
"English to French" => "en_fr",
|
10
|
+
"English to German" => "en_de",
|
11
|
+
"English to Italian" => "en_it",
|
12
|
+
"English to Japanese" => "en_jp",
|
13
|
+
"English to Korean" => "en_kr",
|
14
|
+
"English to Portugese" => "en_pt",
|
15
|
+
"English to Spanish" => "en_es",
|
16
|
+
"French to English" => "fr_en",
|
17
|
+
"German to English" => "de_en",
|
18
|
+
"Italian to English" => "it_en",
|
19
|
+
"Japanese to English" => "jp_en",
|
20
|
+
"Korean to English" => "kr_en",
|
21
|
+
"Portugese to English" => "pt_en",
|
22
|
+
"Spanish to English" => "es_en",
|
23
|
+
"Russian to English" => "ru_en",
|
24
|
+
"German to French" => "de_fr",
|
25
|
+
"French to German" => "fr_de"
|
26
|
+
}
|
27
|
+
|
28
|
+
class Babelfish < FXMainWindow
|
29
|
+
|
30
|
+
def initialize(app)
|
31
|
+
# Invoke base class initialize first
|
32
|
+
super(app, "Babelfish", nil, nil, DECOR_ALL,
|
33
|
+
0, 0, 600, 400, 0, 0)
|
34
|
+
|
35
|
+
# Initialize the SOAP driver
|
36
|
+
@drv = SOAP::RPC::Driver.new('http://services.xmethods.net/perl/soaplite.cgi', 'urn:xmethodsBabelFish')
|
37
|
+
@drv.add_rpc_method_with_soapaction('BabelFish',
|
38
|
+
'urn:xmethodsBabelFish#BabelFish', 'translationmode', 'sourcedata')
|
39
|
+
|
40
|
+
# Controls area along the bottom
|
41
|
+
controlsFrame = FXHorizontalFrame.new(self,
|
42
|
+
LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X)
|
43
|
+
FXLabel.new(controlsFrame, "Translate from:")
|
44
|
+
@transModeCombo = FXComboBox.new(controlsFrame, 15, :opts => COMBOBOX_STATIC|FRAME_SUNKEN|FRAME_THICK)
|
45
|
+
@transModeCombo.numVisible = 6
|
46
|
+
TRANSLATIONS.keys.each do |key|
|
47
|
+
@transModeCombo.appendItem(key, TRANSLATIONS[key])
|
48
|
+
end
|
49
|
+
btn = FXButton.new(controlsFrame, "Translate", :opts => BUTTON_NORMAL|LAYOUT_SIDE_RIGHT)
|
50
|
+
btn.connect(SEL_COMMAND) do
|
51
|
+
transMode = @transModeCombo.getItemData(@transModeCombo.currentItem)
|
52
|
+
getApp().beginWaitCursor() do
|
53
|
+
@translatedText.text = @drv.BabelFish(transMode, @sourceText.text)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
mainFrame = FXVerticalFrame.new(self,
|
58
|
+
LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y|PACK_UNIFORM_HEIGHT)
|
59
|
+
|
60
|
+
# Source text area in a sunken frame
|
61
|
+
topFrame = FXVerticalFrame.new(mainFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
62
|
+
FXLabel.new(topFrame, "Source Text:", :opts => LAYOUT_FILL_X)
|
63
|
+
sunkenFrame = FXHorizontalFrame.new(topFrame,
|
64
|
+
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
65
|
+
@sourceText = FXText.new(sunkenFrame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
66
|
+
|
67
|
+
# Translated text output
|
68
|
+
bottomFrame = FXVerticalFrame.new(mainFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
69
|
+
FXLabel.new(bottomFrame, "Translated text:", nil, LAYOUT_FILL_X)
|
70
|
+
sunkenFrame = FXHorizontalFrame.new(bottomFrame,
|
71
|
+
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
72
|
+
@translatedText = FXText.new(sunkenFrame, :opts => TEXT_READONLY|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
73
|
+
end
|
74
|
+
|
75
|
+
def create
|
76
|
+
super
|
77
|
+
show(PLACEMENT_SCREEN)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
if __FILE__ == $0
|
82
|
+
# Make application
|
83
|
+
application = FXApp.new("Babelfish", "FoxTest")
|
84
|
+
|
85
|
+
# Make window
|
86
|
+
window = Babelfish.new(application)
|
87
|
+
|
88
|
+
# Create it
|
89
|
+
application.create
|
90
|
+
|
91
|
+
# Run
|
92
|
+
application.run
|
93
|
+
end
|
data/examples/bounce.rb
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
require 'fox16'
|
2
|
+
|
3
|
+
include Fox
|
4
|
+
|
5
|
+
# How long to pause between updates (in milliseconds)
|
6
|
+
ANIMATION_TIME = 20
|
7
|
+
|
8
|
+
class Ball
|
9
|
+
|
10
|
+
attr_reader :color
|
11
|
+
attr_reader :center
|
12
|
+
attr_reader :radius
|
13
|
+
attr_reader :dir
|
14
|
+
attr_reader :x, :y
|
15
|
+
attr_reader :w, :h
|
16
|
+
attr_accessor :worldWidth
|
17
|
+
attr_accessor :worldHeight
|
18
|
+
|
19
|
+
# Returns an initialized ball
|
20
|
+
def initialize(r)
|
21
|
+
@radius = r
|
22
|
+
@w = 2*@radius
|
23
|
+
@h = 2*@radius
|
24
|
+
@center = FXPoint.new(50, 50)
|
25
|
+
@x = @center.x - @radius
|
26
|
+
@y = @center.y - @radius
|
27
|
+
@color = FXRGB(255, 0, 0) # red
|
28
|
+
@dir = FXPoint.new(-1, 0)
|
29
|
+
setWorldSize(1000, 1000)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Draw the ball into this device context
|
33
|
+
def draw(dc)
|
34
|
+
dc.setForeground(color)
|
35
|
+
dc.fillArc(x, y, w, h, 0, 64*90)
|
36
|
+
dc.fillArc(x, y, w, h, 64*90, 64*180)
|
37
|
+
dc.fillArc(x, y, w, h, 64*180, 64*270)
|
38
|
+
dc.fillArc(x, y, w, h, 64*270, 64*360)
|
39
|
+
end
|
40
|
+
|
41
|
+
def bounce
|
42
|
+
@dir = -@dir
|
43
|
+
end
|
44
|
+
|
45
|
+
def collision?
|
46
|
+
(x < 0) || (x+w > worldWidth) || (y < 0) || (y+h > worldHeight)
|
47
|
+
end
|
48
|
+
|
49
|
+
def setWorldSize(ww, wh)
|
50
|
+
@worldWidth = ww
|
51
|
+
@worldHeight = wh
|
52
|
+
end
|
53
|
+
|
54
|
+
def move(units)
|
55
|
+
dx = dir.x*units
|
56
|
+
dy = dir.y*units
|
57
|
+
center.x += dx
|
58
|
+
center.y += dy
|
59
|
+
@x += dx
|
60
|
+
@y += dy
|
61
|
+
if collision?
|
62
|
+
bounce
|
63
|
+
move(units)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
class BounceWindow < FXMainWindow
|
69
|
+
|
70
|
+
include Responder
|
71
|
+
|
72
|
+
def initialize(app)
|
73
|
+
# Initialize base class first
|
74
|
+
super(app, "Bounce", :opts => DECOR_ALL, :width => 400, :height => 300)
|
75
|
+
|
76
|
+
# Set up the canvas
|
77
|
+
@canvas = FXCanvas.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
78
|
+
|
79
|
+
# Set up the back buffer
|
80
|
+
@backBuffer = FXImage.new(app, nil, IMAGE_KEEP)
|
81
|
+
|
82
|
+
# Handle expose events (by blitting the image to the canvas)
|
83
|
+
@canvas.connect(SEL_PAINT) { |sender, sel, evt|
|
84
|
+
FXDCWindow.new(sender, evt) { |dc|
|
85
|
+
dc.drawImage(@backBuffer, 0, 0)
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
# Handle resize events
|
90
|
+
@canvas.connect(SEL_CONFIGURE) { |sender, sel, evt|
|
91
|
+
@backBuffer.create unless @backBuffer.created?
|
92
|
+
@backBuffer.resize(sender.width, sender.height)
|
93
|
+
@ball.setWorldSize(sender.width, sender.height)
|
94
|
+
drawScene(@backBuffer)
|
95
|
+
}
|
96
|
+
|
97
|
+
@ball = Ball.new(20)
|
98
|
+
end
|
99
|
+
|
100
|
+
#
|
101
|
+
# Draws the scene into the back buffer
|
102
|
+
#
|
103
|
+
def drawScene(drawable)
|
104
|
+
FXDCWindow.new(drawable) { |dc|
|
105
|
+
dc.setForeground(FXRGB(255, 255, 255))
|
106
|
+
dc.fillRectangle(0, 0, drawable.width, drawable.height)
|
107
|
+
@ball.draw(dc)
|
108
|
+
}
|
109
|
+
end
|
110
|
+
|
111
|
+
def updateCanvas
|
112
|
+
@ball.move(10)
|
113
|
+
drawScene(@backBuffer)
|
114
|
+
@canvas.update
|
115
|
+
end
|
116
|
+
|
117
|
+
#
|
118
|
+
# Handle timeout events
|
119
|
+
#
|
120
|
+
def onTimeout(sender, sel, ptr)
|
121
|
+
# Move the ball and re-draw the scene
|
122
|
+
updateCanvas
|
123
|
+
|
124
|
+
# Re-register the timeout
|
125
|
+
getApp().addTimeout(ANIMATION_TIME, method(:onTimeout))
|
126
|
+
|
127
|
+
# Done
|
128
|
+
return 1
|
129
|
+
end
|
130
|
+
|
131
|
+
#
|
132
|
+
# Create server-side resources
|
133
|
+
#
|
134
|
+
def create
|
135
|
+
# Create base class
|
136
|
+
super
|
137
|
+
|
138
|
+
# Create the image used as the back-buffer
|
139
|
+
@backBuffer.create
|
140
|
+
|
141
|
+
# Draw the initial scene into the back-buffer
|
142
|
+
drawScene(@backBuffer)
|
143
|
+
|
144
|
+
# Register the timer used for animation
|
145
|
+
getApp().addTimeout(ANIMATION_TIME, method(:onTimeout))
|
146
|
+
|
147
|
+
# Show the main window
|
148
|
+
show(PLACEMENT_SCREEN)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
if __FILE__ == $0
|
153
|
+
FXApp.new("Bounce", "FXRuby") do |theApp|
|
154
|
+
BounceWindow.new(theApp)
|
155
|
+
theApp.create
|
156
|
+
theApp.run
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
data/examples/browser.rb
ADDED
@@ -0,0 +1,191 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fox16'
|
4
|
+
|
5
|
+
include Fox
|
6
|
+
|
7
|
+
# Node in the class hierarchy tree
|
8
|
+
class ClassTreeNode
|
9
|
+
def initialize(className, parentClassName)
|
10
|
+
@className = className
|
11
|
+
@parentClassName = parentClassName
|
12
|
+
@children = []
|
13
|
+
end
|
14
|
+
|
15
|
+
def addChild(child)
|
16
|
+
@children.push(child)
|
17
|
+
end
|
18
|
+
|
19
|
+
def className
|
20
|
+
@className
|
21
|
+
end
|
22
|
+
|
23
|
+
def parentClassName
|
24
|
+
@parentClassName
|
25
|
+
end
|
26
|
+
|
27
|
+
def <=>(other)
|
28
|
+
className <=> other.className
|
29
|
+
end
|
30
|
+
|
31
|
+
def children
|
32
|
+
@children.sort
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# The class hierarchy tree
|
37
|
+
class ClassTree
|
38
|
+
def initialize
|
39
|
+
# Find the Fox module
|
40
|
+
@mFox = Fox
|
41
|
+
|
42
|
+
# Get an hash containing class names for Fox
|
43
|
+
classes = {}
|
44
|
+
@mFox.constants.each do |name|
|
45
|
+
c = @mFox.const_get(name)
|
46
|
+
if c.kind_of? Class
|
47
|
+
parentclass = c.superclass.name.sub("Fox::", "")
|
48
|
+
classNode = ClassTreeNode.new(name, parentclass)
|
49
|
+
classes[name] = classNode
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Go back and do this
|
54
|
+
roots = []
|
55
|
+
classes.each_value do |aValue|
|
56
|
+
parentNode = classes[aValue.parentClassName]
|
57
|
+
if parentNode
|
58
|
+
parentNode.addChild(aValue)
|
59
|
+
else
|
60
|
+
parentNode = ClassTreeNode.new(aValue.parentClassName, nil)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# FXObject is the root
|
65
|
+
@root = classes["FXObject"]
|
66
|
+
end
|
67
|
+
|
68
|
+
def root
|
69
|
+
return @root
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class BrowserWindow < FXMainWindow
|
74
|
+
|
75
|
+
def initialize(app)
|
76
|
+
# Call base class initializer first
|
77
|
+
super(app, "Browse", nil, nil, DECOR_ALL, 0, 0, 600, 400)
|
78
|
+
|
79
|
+
# Contents
|
80
|
+
contents = FXHorizontalFrame.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
81
|
+
|
82
|
+
# Horizontal splitter
|
83
|
+
splitter = FXSplitter.new(contents, (LAYOUT_SIDE_TOP|LAYOUT_FILL_X|
|
84
|
+
LAYOUT_FILL_Y|SPLITTER_TRACKING|SPLITTER_HORIZONTAL))
|
85
|
+
|
86
|
+
# Create a sunken frame to hold the tree list
|
87
|
+
groupbox = FXGroupBox.new(splitter, "Classes",
|
88
|
+
LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
|
89
|
+
frame = FXHorizontalFrame.new(groupbox,
|
90
|
+
LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK)
|
91
|
+
|
92
|
+
# Create the empty tree list
|
93
|
+
@treeList = FXTreeList.new(frame, nil, 0,
|
94
|
+
(TREELIST_BROWSESELECT|TREELIST_SHOWS_LINES|TREELIST_SHOWS_BOXES|
|
95
|
+
TREELIST_ROOT_BOXES|LAYOUT_FILL_X|LAYOUT_FILL_Y))
|
96
|
+
@treeList.connect(SEL_COMMAND) do |sender, sel, item|
|
97
|
+
getApp().beginWaitCursor do
|
98
|
+
s = getInstanceMethods(item.to_s).join("\n")
|
99
|
+
@methodsText.text = s
|
100
|
+
s = getConstants(item.to_s).join("\n")
|
101
|
+
@constantsText.text = s
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# Fill it up based on the tree contents
|
106
|
+
populateTree(@treeList, nil, ClassTree.new.root)
|
107
|
+
|
108
|
+
# Tabbed notebook on the right
|
109
|
+
tabBook = FXTabBook.new(splitter, nil, 0,
|
110
|
+
LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
|
111
|
+
|
112
|
+
tab1 = FXTabItem.new(tabBook, "Methods")
|
113
|
+
page1 = FXHorizontalFrame.new(tabBook, FRAME_THICK|FRAME_RAISED)
|
114
|
+
frame1 = FXHorizontalFrame.new(page1,
|
115
|
+
FRAME_THICK|FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
116
|
+
@methodsText = FXText.new(frame1, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
117
|
+
@methodsText.text = "List of methods goes here"
|
118
|
+
@methodsText.editable = false
|
119
|
+
|
120
|
+
tab2 = FXTabItem.new(tabBook, "Constants")
|
121
|
+
page2 = FXHorizontalFrame.new(tabBook, FRAME_THICK|FRAME_RAISED)
|
122
|
+
frame2 = FXHorizontalFrame.new(page2,
|
123
|
+
FRAME_THICK|FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
124
|
+
@constantsText = FXText.new(frame2, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
125
|
+
@constantsText.text = "List of constants goes here"
|
126
|
+
@constantsText.editable = false
|
127
|
+
|
128
|
+
# Cache of classname -> method and classname -> constants lists
|
129
|
+
@instanceMethods = {}
|
130
|
+
@classConstants = {}
|
131
|
+
end
|
132
|
+
|
133
|
+
# Recursively fill up the tree list
|
134
|
+
def populateTree(treeList, rootItem, rootNode)
|
135
|
+
rootNode.children.each do |childNode|
|
136
|
+
childItem = treeList.appendItem(rootItem, childNode.className)
|
137
|
+
populateTree(treeList, childItem, childNode)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
# Create and show the main window
|
142
|
+
def create
|
143
|
+
super
|
144
|
+
@treeList.parent.parent.setWidth(@treeList.font.getTextWidth('MMMMMMMMMMMMMMMM'))
|
145
|
+
show(PLACEMENT_SCREEN)
|
146
|
+
end
|
147
|
+
|
148
|
+
# Returns an array of instance methods for the named class
|
149
|
+
def getInstanceMethods(className)
|
150
|
+
methods = @instanceMethods[className]
|
151
|
+
if methods.nil?
|
152
|
+
theClass = Fox.const_get(className)
|
153
|
+
methods = theClass.instance_methods.sort
|
154
|
+
@instanceMethods[className] = methods
|
155
|
+
end
|
156
|
+
methods
|
157
|
+
end
|
158
|
+
|
159
|
+
# Returns an array of constants for the named class
|
160
|
+
def getConstants(className)
|
161
|
+
constants = @classConstants[className]
|
162
|
+
if constants.nil?
|
163
|
+
klass = Fox.const_get(className)
|
164
|
+
constants = klass.constants
|
165
|
+
superklass = Fox.const_get(className)
|
166
|
+
if superklass
|
167
|
+
constants -= superklass.superclass.constants
|
168
|
+
else
|
169
|
+
constants -= klass.superclass.constants
|
170
|
+
end
|
171
|
+
constants.sort!
|
172
|
+
@classConstants[className] = constants
|
173
|
+
end
|
174
|
+
constants
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
if __FILE__ == $0
|
179
|
+
# Create a new application
|
180
|
+
application = FXApp.new("Browser", "FoxTest")
|
181
|
+
|
182
|
+
# Construct the main window
|
183
|
+
BrowserWindow.new(application)
|
184
|
+
|
185
|
+
# Create the windows
|
186
|
+
application.create
|
187
|
+
|
188
|
+
# Start event loop
|
189
|
+
application.run
|
190
|
+
end
|
191
|
+
|