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/lib/fox16/core.rb
ADDED
@@ -0,0 +1,681 @@
|
|
1
|
+
module Fox
|
2
|
+
|
3
|
+
class FXIconItem
|
4
|
+
def <=>(otherItem)
|
5
|
+
text <=> otherItem.text
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class FXListItem
|
10
|
+
def <=>(otherItem)
|
11
|
+
text <=> otherItem.text
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class FXTreeItem
|
16
|
+
def <=>(otherItem)
|
17
|
+
text <=> otherItem.text
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class FXTreeList
|
22
|
+
def addItemFirst(*args) # :nodoc:
|
23
|
+
warn "addItemFirst() is deprecated; use prependItem() instead"
|
24
|
+
prependItem(*args)
|
25
|
+
end
|
26
|
+
|
27
|
+
def addItemLast(*args) # :nodoc:
|
28
|
+
warn "addItemLast() is deprecated; use appendItem() instead"
|
29
|
+
appendItem(*args)
|
30
|
+
end
|
31
|
+
|
32
|
+
def addItemAfter(other, *args) # :nodoc:
|
33
|
+
warn "addItemAfter() is deprecated; use insertItem() instead"
|
34
|
+
insertItem(other.next, other.parent, *args)
|
35
|
+
end
|
36
|
+
|
37
|
+
def addItemBefore(other, *args) # :nodoc:
|
38
|
+
warn "addItemBefore() is deprecated; use insertItem() instead"
|
39
|
+
insertItem(other, other.parent, *args)
|
40
|
+
end
|
41
|
+
|
42
|
+
def reparentItem(item, father) # :nodoc:
|
43
|
+
warn "reparentItem() is deprecated; use moveItem() instead"
|
44
|
+
moveItem(nil, father, item)
|
45
|
+
end
|
46
|
+
|
47
|
+
def moveItemBefore(other, item) # :nodoc:
|
48
|
+
warn "moveItemBefore() is deprecated; use moveItem() instead"
|
49
|
+
moveItem(other, other.parent, item)
|
50
|
+
end
|
51
|
+
|
52
|
+
def moveItemAfter(other, item) # :nodoc:
|
53
|
+
warn "moveItemAfter() is deprecated; use moveItem() instead"
|
54
|
+
moveItem(other.next, other.parent, item)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class FXTreeListBox
|
59
|
+
def addItemFirst(*args) # :nodoc:
|
60
|
+
warn "addItemFirst() is deprecated; use prependItem() instead"
|
61
|
+
prependItem(*args)
|
62
|
+
end
|
63
|
+
def addItemLast(*args) # :nodoc:
|
64
|
+
warn "addItemLast() is deprecated; use appendItem() instead"
|
65
|
+
appendItem(*args)
|
66
|
+
end
|
67
|
+
def addItemAfter(other, *args) # :nodoc:
|
68
|
+
warn "addItemAfter() is deprecated; use insertItem() instead"
|
69
|
+
insertItem(other.next, other.parent, *args)
|
70
|
+
end
|
71
|
+
def addItemBefore(other, *args) # :nodoc:
|
72
|
+
warn "addItemBefore() is deprecated; use insertItem() instead"
|
73
|
+
insertItem(other, other.parent, *args)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
class FXDataTarget
|
78
|
+
#
|
79
|
+
# Returns the stringified representation of this
|
80
|
+
# data target's value.
|
81
|
+
#
|
82
|
+
def to_s
|
83
|
+
value.to_s
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
class FXDockBar
|
88
|
+
# Allow docking on the specified side, where _side_ is one of the +ALLOW+
|
89
|
+
# constants listed above.
|
90
|
+
def allowSide(side)
|
91
|
+
self.allowedSides = self.allowedSides | side
|
92
|
+
end
|
93
|
+
|
94
|
+
# Disallow docking on the specified side, where _side_ is one of the
|
95
|
+
# +ALLOW+ constants listed above.
|
96
|
+
def disallowSide(side)
|
97
|
+
self.allowedSides = self.allowedSides & ~side
|
98
|
+
end
|
99
|
+
|
100
|
+
# Return +true+ if docking is allowed on the specified side, where _side_
|
101
|
+
# is one of the +ALLOW+ constants listed above.
|
102
|
+
#
|
103
|
+
def allowedSide?(side)
|
104
|
+
(allowedSides & side) != 0
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
class FXFileDialog
|
109
|
+
# Allow navigation for this file dialog
|
110
|
+
def allowNavigation
|
111
|
+
self.navigationAllowed = true
|
112
|
+
end
|
113
|
+
|
114
|
+
# Disallow navigation for this file dialog
|
115
|
+
def disallowNavigation
|
116
|
+
self.navigationAllowed = false
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
class FXFileList
|
121
|
+
#
|
122
|
+
# Show parent directories.
|
123
|
+
#
|
124
|
+
def showParentDirs
|
125
|
+
self.parentDirsShown = true
|
126
|
+
end
|
127
|
+
|
128
|
+
#
|
129
|
+
# Hide parent directories
|
130
|
+
#
|
131
|
+
def hideParentDirs
|
132
|
+
self.parentDirsShown = false
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
class FXFileSelector
|
137
|
+
# Allow navigation for this file selector
|
138
|
+
def allowNavigation
|
139
|
+
self.navigationAllowed = true
|
140
|
+
end
|
141
|
+
|
142
|
+
# Disallow navigation for this file selector
|
143
|
+
def disallowNavigation
|
144
|
+
self.navigationAllowed = false
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
class FXHeader
|
149
|
+
#
|
150
|
+
# Returns true if the specified header item's arrow points
|
151
|
+
# up. Raises IndexError if _index_ is out of bounds.
|
152
|
+
#
|
153
|
+
def arrowUp?(index)
|
154
|
+
if index < 0 || index >= numItems
|
155
|
+
raise IndexError, "header item index out of bounds"
|
156
|
+
else
|
157
|
+
getArrowDir(index) == Fox::TRUE
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
#
|
162
|
+
# Returns true if the specified header item's arrow points
|
163
|
+
# down. Raises IndexError if _index_ is out of bounds.
|
164
|
+
#
|
165
|
+
def arrowDown?(index)
|
166
|
+
if index < 0 || index >= numItems
|
167
|
+
raise IndexError, "header item index out of bounds"
|
168
|
+
else
|
169
|
+
getArrowDir(index) == Fox::FALSE
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
#
|
174
|
+
# Returns true if the specified header item does not display
|
175
|
+
# any arrow. Raises IndexError if _index_ is out of bounds.
|
176
|
+
#
|
177
|
+
def arrowMaybe?(index)
|
178
|
+
if index < 0 || index >= numItems
|
179
|
+
raise IndexError, "header item index out of bounds"
|
180
|
+
else
|
181
|
+
getArrowDir(index) == Fox::MAYBE
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
class FXHiliteStyle
|
187
|
+
#
|
188
|
+
# Construct a new FXHiliteStyle instance, with fields initialized from
|
189
|
+
# an FXText instance.
|
190
|
+
#
|
191
|
+
def FXHiliteStyle.from_text(textw)
|
192
|
+
hs = new
|
193
|
+
hs.activeBackColor = textw.activeBackColor
|
194
|
+
hs.hiliteBackColor = textw.hiliteBackColor
|
195
|
+
hs.hiliteForeColor = textw.hiliteTextColor
|
196
|
+
hs.normalBackColor = textw.backColor
|
197
|
+
hs.normalForeColor = textw.textColor
|
198
|
+
hs.selectBackColor = textw.selBackColor
|
199
|
+
hs.selectForeColor = textw.selTextColor
|
200
|
+
hs.style = 0
|
201
|
+
hs
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
class FXScrollArea
|
206
|
+
# Returns a reference to the scroll corner (an FXScrollCorner instance) for this window.
|
207
|
+
def scrollCorner
|
208
|
+
verticalScrollBar.next
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
class FXSettings
|
213
|
+
#
|
214
|
+
# Read a boolean registry entry from the specified _section_ and _key_.
|
215
|
+
# If no value is found, the _default_ value is returned.
|
216
|
+
#
|
217
|
+
def readBoolEntry(section, key, default=false)
|
218
|
+
default = default ? 1 : 0
|
219
|
+
readIntEntry(section, key, default) != 0
|
220
|
+
end
|
221
|
+
|
222
|
+
#
|
223
|
+
# Write a boolean registry _value_ to the specified _section_ and _key_.
|
224
|
+
#
|
225
|
+
def writeBoolEntry(section, key, value)
|
226
|
+
writeIntEntry(section, key, value ? 1 : 0)
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
class FXVec2d
|
231
|
+
# Convert to array
|
232
|
+
def to_a
|
233
|
+
[x, y]
|
234
|
+
end
|
235
|
+
|
236
|
+
# Convert to string
|
237
|
+
def to_s
|
238
|
+
to_a.to_s
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
class FXVec2f
|
243
|
+
# Convert to array
|
244
|
+
def to_a; [x, y]; end
|
245
|
+
|
246
|
+
# Convert to string
|
247
|
+
def to_s; to_a.to_s; end
|
248
|
+
end
|
249
|
+
|
250
|
+
class FXVec3d
|
251
|
+
# Convert to array
|
252
|
+
def to_a; [x, y, z]; end
|
253
|
+
|
254
|
+
# Convert to string
|
255
|
+
def to_s; to_a.to_s; end
|
256
|
+
end
|
257
|
+
|
258
|
+
class FXVec3f
|
259
|
+
# Convert to array
|
260
|
+
def to_a; [x, y, z]; end
|
261
|
+
|
262
|
+
# Convert to string
|
263
|
+
def to_s; to_a.to_s; end
|
264
|
+
end
|
265
|
+
|
266
|
+
class FXVec4d
|
267
|
+
# Convert to array
|
268
|
+
def to_a; [x, y, z, w]; end
|
269
|
+
|
270
|
+
# Convert to string
|
271
|
+
def to_s; to_a.to_s; end
|
272
|
+
end
|
273
|
+
|
274
|
+
class FXVec4f
|
275
|
+
# Convert to array
|
276
|
+
def to_a; [x, y, z, w]; end
|
277
|
+
|
278
|
+
# Convert to string
|
279
|
+
def to_s; to_a.to_s; end
|
280
|
+
end
|
281
|
+
|
282
|
+
class FXWindow
|
283
|
+
#
|
284
|
+
# Iterate over the child windows for this window.
|
285
|
+
# Note that this only reaches the direct child windows for this window
|
286
|
+
# and no deeper descendants. To traverse the entire widget tree,
|
287
|
+
# use #each_child_recursive.
|
288
|
+
#
|
289
|
+
def each_child # :yields: child
|
290
|
+
child = self.first
|
291
|
+
while child
|
292
|
+
next_child = child.next
|
293
|
+
yield child
|
294
|
+
child = next_child
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
#
|
299
|
+
# Traverse the widget tree starting from this window
|
300
|
+
# using depth-first traversal.
|
301
|
+
#
|
302
|
+
def each_child_recursive # :yields: child
|
303
|
+
each_child do |child|
|
304
|
+
yield child
|
305
|
+
child.each_child_recursive do |subchild|
|
306
|
+
yield subchild
|
307
|
+
end
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
311
|
+
|
312
|
+
# Returns an array containing all child windows of this window
|
313
|
+
def children
|
314
|
+
kids = []
|
315
|
+
each_child { |kid| kids << kid }
|
316
|
+
kids
|
317
|
+
end
|
318
|
+
|
319
|
+
# Return +true+ if this window (self) comes before sibling window _other_.
|
320
|
+
def before?(other)
|
321
|
+
FXWindow.before?(other)
|
322
|
+
end
|
323
|
+
|
324
|
+
# Return +true+ if this window (_self_) comes after sibling window _other_,
|
325
|
+
def after?(other)
|
326
|
+
FXWindow.after?(other)
|
327
|
+
end
|
328
|
+
|
329
|
+
# Relink this window before sibling window _other_, in the parent's window list.
|
330
|
+
def linkBefore(other)
|
331
|
+
reparent(self.parent, other)
|
332
|
+
end
|
333
|
+
|
334
|
+
# Relink this window after sibling window _other_, in the parent's window list.
|
335
|
+
def linkAfter(other)
|
336
|
+
reparent(self.parent, other.next)
|
337
|
+
end
|
338
|
+
|
339
|
+
# Setting visible to +true+ calls #show, setting it to +false+ calls #hide.
|
340
|
+
def visible=(vis)
|
341
|
+
if vis
|
342
|
+
show
|
343
|
+
else
|
344
|
+
hide
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
#
|
350
|
+
# The drag-and-drop data used for colors is a sequence of unsigned short
|
351
|
+
# integers, in native byte ordering. Here, we use the 'S' directive for
|
352
|
+
# String#unpack (which treats two successive characters as an unsigned short
|
353
|
+
# in native byte order) to decode the R, G, B and A values.
|
354
|
+
#
|
355
|
+
def Fox.fxdecodeColorData(data)
|
356
|
+
clr = data.unpack('S4')
|
357
|
+
Fox.FXRGBA((clr[0]+128)/257, (clr[1]+128)/257, (clr[2]+128)/257, (clr[3]+128)/257)
|
358
|
+
end
|
359
|
+
|
360
|
+
#
|
361
|
+
# The drag-and-drop data used for colors is a sequence of unsigned short
|
362
|
+
# integers, in native byte ordering. Here, we use the 'S' directive for
|
363
|
+
# Array#pack (which treats two successive characters as an unsigned short
|
364
|
+
# in native byte order) to encode the R, G, B and A values.
|
365
|
+
#
|
366
|
+
def Fox.fxencodeColorData(rgba)
|
367
|
+
clr = [ 257*Fox.FXREDVAL(rgba), 257*Fox.FXGREENVAL(rgba), 257*Fox.FXBLUEVAL(rgba), 257*Fox.FXALPHAVAL(rgba) ]
|
368
|
+
clr.pack('S4')
|
369
|
+
end
|
370
|
+
|
371
|
+
#
|
372
|
+
# The drag-and-drop data used for clipboard strings (i.e. when the
|
373
|
+
# drag type is FXWindow.stringType) is either a null-terminated
|
374
|
+
# string (for Microsoft Windows) or a non-null terminated string
|
375
|
+
# (for X11). Use this method to convert string data from the
|
376
|
+
# clipboard back into a Ruby string.
|
377
|
+
#
|
378
|
+
def Fox.fxdecodeStringData(data)
|
379
|
+
if /mswin/ =~ PLATFORM
|
380
|
+
data.chop
|
381
|
+
else
|
382
|
+
data
|
383
|
+
end
|
384
|
+
end
|
385
|
+
|
386
|
+
#
|
387
|
+
# The drag-and-drop data used for clipboard strings (i.e. when the
|
388
|
+
# drag type is FXWindow.stringType) is either a null-terminated
|
389
|
+
# string (for Microsoft Windows) or a non-null terminated string
|
390
|
+
# (for X11). Use this method to convert Ruby strings into a format
|
391
|
+
# appropriate for the current platform.
|
392
|
+
#
|
393
|
+
def Fox.fxencodeStringData(str)
|
394
|
+
if /mswin/ =~ PLATFORM
|
395
|
+
str + "\0"
|
396
|
+
else
|
397
|
+
str
|
398
|
+
end
|
399
|
+
end
|
400
|
+
|
401
|
+
#
|
402
|
+
# FXStreamError is the base class for exceptions which can occur when
|
403
|
+
# working with FXStream and its subclasses.
|
404
|
+
#
|
405
|
+
class FXStreamError < StandardError
|
406
|
+
#
|
407
|
+
# This is a factory method that takes an FXStreamStatus code
|
408
|
+
# as its input and returns the appropriate exception class.
|
409
|
+
#
|
410
|
+
def FXStreamError.makeStreamError(status)
|
411
|
+
case status
|
412
|
+
when FXStreamEnd
|
413
|
+
FXStreamEndError
|
414
|
+
when FXStreamFull
|
415
|
+
FXStreamFullError
|
416
|
+
when FXStreamNoWrite
|
417
|
+
FXStreamNoWriteError
|
418
|
+
when FXStreamNoRead
|
419
|
+
FXStreamNoReadError
|
420
|
+
when FXStreamFormat
|
421
|
+
FXStreamFormatError
|
422
|
+
when FXStreamUnknown
|
423
|
+
FXStreamUnknownError
|
424
|
+
when FXStreamAlloc
|
425
|
+
FXStreamAllocError
|
426
|
+
when FXStreamFailure
|
427
|
+
FXStreamFailureError
|
428
|
+
else
|
429
|
+
FXStreamError
|
430
|
+
end
|
431
|
+
end
|
432
|
+
end
|
433
|
+
|
434
|
+
# Tried to read past the end of a stream
|
435
|
+
class FXStreamEndError < FXStreamError ; end
|
436
|
+
|
437
|
+
# Filled up a stream's internal buffer, or the disk is full
|
438
|
+
class FXStreamFullError < FXStreamError ; end
|
439
|
+
|
440
|
+
# Unable to open for write
|
441
|
+
class FXStreamNoWriteError < FXStreamError ; end
|
442
|
+
|
443
|
+
# Unable to open for read
|
444
|
+
class FXStreamNoReadError < FXStreamError ; end
|
445
|
+
|
446
|
+
# Stream format error
|
447
|
+
class FXStreamFormatError < FXStreamError ; end
|
448
|
+
|
449
|
+
# Trying to read unknown class
|
450
|
+
class FXStreamUnknownError < FXStreamError ; end
|
451
|
+
|
452
|
+
# Alloc failed
|
453
|
+
class FXStreamAllocError < FXStreamError ; end
|
454
|
+
|
455
|
+
# General failure
|
456
|
+
class FXStreamFailureError < FXStreamError ; end
|
457
|
+
|
458
|
+
class FXCheckButton
|
459
|
+
# Return +true+ if this check button is in the checked state.
|
460
|
+
def checked?
|
461
|
+
self.checkState == TRUE
|
462
|
+
end
|
463
|
+
|
464
|
+
# Return +true+ if this check button is in the unchecked state.
|
465
|
+
def unchecked?
|
466
|
+
self.checkState == FALSE
|
467
|
+
end
|
468
|
+
|
469
|
+
# Return +true+ if this check button is in the indeterminate, or "maybe", state.
|
470
|
+
def maybe?
|
471
|
+
self.checkState == MAYBE
|
472
|
+
end
|
473
|
+
end
|
474
|
+
|
475
|
+
class FXComboTableItem < FXTableItem
|
476
|
+
#
|
477
|
+
# Construct new combobox table item
|
478
|
+
#
|
479
|
+
def initialize(text, ic=nil, ptr=nil)
|
480
|
+
super(nil, ic, ptr)
|
481
|
+
self.selections = text
|
482
|
+
end
|
483
|
+
|
484
|
+
# Create input control for editing this item
|
485
|
+
def getControlFor(table)
|
486
|
+
combo = FXComboBox.new(table, 1, :opts => COMBOBOX_STATIC, :padLeft => table.marginLeft, :padRight => table.marginRight, :padTop => table.marginTop, :padBottom => table.marginBottom)
|
487
|
+
combo.create
|
488
|
+
justify = 0
|
489
|
+
justify |= JUSTIFY_LEFT if (self.justify & FXTableItem::LEFT) != 0
|
490
|
+
justify |= JUSTIFY_RIGHT if (self.justify & FXTableItem::RIGHT) != 0
|
491
|
+
justify |= JUSTIFY_TOP if (self.justify & FXTableItem::TOP) != 0
|
492
|
+
justify |= JUSTIFY_BOTTOM if (self.justify & FXTableItem::BOTTOM) != 0
|
493
|
+
combo.justify = justify
|
494
|
+
combo.font = table.font
|
495
|
+
combo.backColor = table.backColor
|
496
|
+
combo.textColor = table.textColor
|
497
|
+
combo.selBackColor = table.selBackColor
|
498
|
+
combo.selTextColor = table.selTextColor
|
499
|
+
combo.fillItems(selections)
|
500
|
+
combo.text = text
|
501
|
+
combo.numVisible = [20, combo.numItems].min
|
502
|
+
combo
|
503
|
+
end
|
504
|
+
|
505
|
+
# Set value from input control
|
506
|
+
def setFromControl(comboBox)
|
507
|
+
self.text = comboBox.text
|
508
|
+
end
|
509
|
+
|
510
|
+
# Set selections as an array of strings
|
511
|
+
def selections=(strings)
|
512
|
+
@selections = strings
|
513
|
+
if @selections.empty?
|
514
|
+
self.text = nil
|
515
|
+
else
|
516
|
+
self.text = @selections[0]
|
517
|
+
end
|
518
|
+
end
|
519
|
+
|
520
|
+
# Return selections
|
521
|
+
def selections
|
522
|
+
@selections
|
523
|
+
end
|
524
|
+
end
|
525
|
+
|
526
|
+
class FXMenuCheck
|
527
|
+
# Return +true+ if this menu check button is in the checked state.
|
528
|
+
def checked?
|
529
|
+
self.checkState == TRUE
|
530
|
+
end
|
531
|
+
|
532
|
+
# Return +true+ if this menu check button is in the unchecked state.
|
533
|
+
def unchecked?
|
534
|
+
self.checkState == FALSE
|
535
|
+
end
|
536
|
+
|
537
|
+
# Return +true+ if this menu check button is in the indeterminate, or "maybe", state.
|
538
|
+
def maybe?
|
539
|
+
self.checkState == MAYBE
|
540
|
+
end
|
541
|
+
end
|
542
|
+
|
543
|
+
class FXRadioButton
|
544
|
+
# Return +true+ if this radio button is in the checked state.
|
545
|
+
def checked?
|
546
|
+
self.checkState == TRUE
|
547
|
+
end
|
548
|
+
|
549
|
+
# Return +true+ if this radio button is in the unchecked state.
|
550
|
+
def unchecked?
|
551
|
+
self.checkState == FALSE
|
552
|
+
end
|
553
|
+
|
554
|
+
# Return +true+ if this radio button is in the indeterminate, or "maybe", state.
|
555
|
+
def maybe?
|
556
|
+
self.checkState == MAYBE
|
557
|
+
end
|
558
|
+
end
|
559
|
+
|
560
|
+
class FXMenuRadio
|
561
|
+
# Return +true+ if this menu radio button is in the checked state.
|
562
|
+
def checked?
|
563
|
+
self.checkState == TRUE
|
564
|
+
end
|
565
|
+
|
566
|
+
# Return +true+ if this menu radio button is in the unchecked state.
|
567
|
+
def unchecked?
|
568
|
+
self.checkState == FALSE
|
569
|
+
end
|
570
|
+
|
571
|
+
# Return +true+ if this menu radio button is in the indeterminate, or "maybe", state.
|
572
|
+
def maybe?
|
573
|
+
self.checkState == MAYBE
|
574
|
+
end
|
575
|
+
end
|
576
|
+
|
577
|
+
class FXDC
|
578
|
+
#
|
579
|
+
# Draw a circle centered at (_x_, _y_), with specified radius.
|
580
|
+
#
|
581
|
+
# === Parameters:
|
582
|
+
#
|
583
|
+
# +x+:: x-coordinate of the circle's center [Integer]
|
584
|
+
# +y+:: y-coordinate of the circle's center [Integer]
|
585
|
+
# +r+:: radius of the circle, in pixels [Integer]
|
586
|
+
#
|
587
|
+
# See also #fillCircle.
|
588
|
+
#
|
589
|
+
def drawCircle(x, y, r)
|
590
|
+
drawArc(x-r, y-r, 2*r, 2*r, 0, 360*64)
|
591
|
+
end
|
592
|
+
|
593
|
+
#
|
594
|
+
# Draw a filled circle centered at (_x_, _y_), with specified radius.
|
595
|
+
#
|
596
|
+
# === Parameters:
|
597
|
+
#
|
598
|
+
# +x+:: x-coordinate of the circle's center [Integer]
|
599
|
+
# +y+:: y-coordinate of the circle's center [Integer]
|
600
|
+
# +r+:: radius of the circle, in pixels [Integer]
|
601
|
+
#
|
602
|
+
# See also #drawCircle.
|
603
|
+
#
|
604
|
+
def fillCircle(x, y, r)
|
605
|
+
fillArc(x-r, y-r, 2*r, 2*r, 0, 360*64)
|
606
|
+
end
|
607
|
+
end
|
608
|
+
|
609
|
+
class FXHVec
|
610
|
+
def normalize!
|
611
|
+
normalized = self.normalize
|
612
|
+
0.upto(3) { |idx| self[idx] = normalized[idx] }
|
613
|
+
self
|
614
|
+
end
|
615
|
+
end
|
616
|
+
|
617
|
+
class FXTable
|
618
|
+
#
|
619
|
+
# Append _numColumns_ columns to the right of the table..
|
620
|
+
# If _notify_ is +true+, a <tt>SEL_INSERTED</tt> message is sent to the
|
621
|
+
# table�s message target for each cell that is inserted.
|
622
|
+
#
|
623
|
+
def appendColumns(numColumns=1, notify=false)
|
624
|
+
insertColumns(self.numColumns, numColumns, notify)
|
625
|
+
end
|
626
|
+
|
627
|
+
#
|
628
|
+
# Append _numRows_ rows to the bottom of the table..
|
629
|
+
# If _notify_ is +true+, a <tt>SEL_INSERTED</tt> message is sent to the
|
630
|
+
# table�s message target for each cell that is inserted.
|
631
|
+
#
|
632
|
+
def appendRows(numRows=1, notify=false)
|
633
|
+
insertRows(self.numRows, numRows, notify)
|
634
|
+
end
|
635
|
+
|
636
|
+
# Select cell at (_row_, _col_).
|
637
|
+
# If _notify_ is +true+, a +SEL_SELECTED+ message is sent to the table's message target
|
638
|
+
# after the item is selected.
|
639
|
+
# Raises IndexError if either _row_ or _col_ is out of bounds.
|
640
|
+
#
|
641
|
+
def selectItem(row, col, notify=false)
|
642
|
+
selectRange(row, row, col, col, notify)
|
643
|
+
end
|
644
|
+
|
645
|
+
=begin
|
646
|
+
|
647
|
+
# Deselect cell at (_row_, _col_).
|
648
|
+
# If _notify_ is +true+, a +SEL_DESELECTED+ message is sent to the table's message target
|
649
|
+
# after the item is deselected.
|
650
|
+
# Raises IndexError if either _row_ or _col_ is out of bounds.
|
651
|
+
#
|
652
|
+
def deselectItem(row, col, notify=false)
|
653
|
+
raise IndexError, "row index out of bounds" if row < 0 || row >= numRows
|
654
|
+
raise IndexError, "column index out of bounds" if col < 0 || col >= numColumns
|
655
|
+
deselectRange(row, row, col, col, notify)
|
656
|
+
end
|
657
|
+
|
658
|
+
# Deselect range.
|
659
|
+
# If _notify_ is +true+, a +SEL_DESELECTED+ message is sent to the table's message
|
660
|
+
# target for each previously selected cell that becomes deselected as a result of
|
661
|
+
# this operation.
|
662
|
+
# Raises IndexError if _startRow_, _endRow_, _startColumn_ or _endColumn_ is out of bounds.
|
663
|
+
def deselectRange(startRow, endRow, startColumn, endColumn, notify=false)
|
664
|
+
raise IndexError, "starting row index out of bounds" if startRow < 0 || startRow >= numRows
|
665
|
+
raise IndexError, "ending row index out of bounds" if endRow < 0 || endRow >= numRows
|
666
|
+
raise IndexError, "starting column index out of bounds" if startColumn < 0 || startColumn >= numColumns
|
667
|
+
raise IndexError, "ending column index out of bounds" if endColumn < 0 || endColumn >= numColumns
|
668
|
+
changes = false
|
669
|
+
for row in startRow..endRow
|
670
|
+
for col in startColumn..endColumn
|
671
|
+
changes |= deselectItem(row, col, notify)
|
672
|
+
end
|
673
|
+
end
|
674
|
+
changes
|
675
|
+
end
|
676
|
+
|
677
|
+
=end
|
678
|
+
|
679
|
+
end
|
680
|
+
end
|
681
|
+
|