fxruby 1.6.14-universal-darwin-9
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 +132 -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 +697 -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/custom_table_item.rb +170 -0
- data/examples/datatarget.rb +223 -0
- data/examples/dctest.rb +696 -0
- data/examples/dialog.rb +143 -0
- data/examples/dilbert.rb +66 -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 +182 -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.bundle +0 -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 +2736 -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 +292 -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 +70 -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/output.ps +166 -0
- data/tests/stress1.rb +92 -0
- data/tests/stress2.rb +51 -0
- data/tests/stress3.rb +117 -0
- data/tests/testcase.rb +37 -0
- data/web/community.html +94 -0
- data/web/documentation.html +100 -0
- data/web/downloads.html +114 -0
- data/web/index.html +96 -0
- metadata +550 -0
data/examples/dialog.rb
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fox16'
|
4
|
+
|
5
|
+
include Fox
|
6
|
+
|
7
|
+
# A little dialog box to use in our tests
|
8
|
+
class FXTestDialog < FXDialogBox
|
9
|
+
|
10
|
+
def initialize(owner)
|
11
|
+
# Invoke base class initialize function first
|
12
|
+
super(owner, "Test of Dialog Box", DECOR_TITLE|DECOR_BORDER)
|
13
|
+
|
14
|
+
# Bottom buttons
|
15
|
+
buttons = FXHorizontalFrame.new(self,
|
16
|
+
LAYOUT_SIDE_BOTTOM|FRAME_NONE|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH,
|
17
|
+
:padLeft => 40, :padRight => 40, :padTop => 20, :padBottom => 20)
|
18
|
+
|
19
|
+
# Separator
|
20
|
+
FXHorizontalSeparator.new(self,
|
21
|
+
LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|SEPARATOR_GROOVE)
|
22
|
+
|
23
|
+
# Contents
|
24
|
+
contents = FXHorizontalFrame.new(self,
|
25
|
+
LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y|PACK_UNIFORM_WIDTH)
|
26
|
+
|
27
|
+
submenu = FXMenuPane.new(self)
|
28
|
+
FXMenuCommand.new(submenu, "One")
|
29
|
+
FXMenuCommand.new(submenu, "Two")
|
30
|
+
FXMenuCommand.new(submenu, "Three")
|
31
|
+
|
32
|
+
# Menu
|
33
|
+
menu = FXMenuPane.new(self)
|
34
|
+
FXMenuCommand.new(menu, "&Accept", nil, self, ID_ACCEPT)
|
35
|
+
FXMenuCommand.new(menu, "&Cancel", nil, self, ID_CANCEL)
|
36
|
+
FXMenuCascade.new(menu, "Submenu", nil, submenu)
|
37
|
+
FXMenuCommand.new(menu, "&Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT)
|
38
|
+
|
39
|
+
# Popup menu
|
40
|
+
pane = FXPopup.new(self)
|
41
|
+
%w{One Two Three Four Five Six Seven Eight Nine Ten}.each do |s|
|
42
|
+
FXOption.new(pane, s, :opts => JUSTIFY_HZ_APART|ICON_AFTER_TEXT)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Option menu
|
46
|
+
FXOptionMenu.new(contents, pane, (FRAME_RAISED|FRAME_THICK|
|
47
|
+
JUSTIFY_HZ_APART|ICON_AFTER_TEXT|LAYOUT_CENTER_X|LAYOUT_CENTER_Y))
|
48
|
+
|
49
|
+
# Button to pop menu
|
50
|
+
FXMenuButton.new(contents, "&Menu", nil, menu, (MENUBUTTON_DOWN|
|
51
|
+
JUSTIFY_LEFT|LAYOUT_TOP|FRAME_RAISED|FRAME_THICK|ICON_AFTER_TEXT|
|
52
|
+
LAYOUT_CENTER_X|LAYOUT_CENTER_Y))
|
53
|
+
|
54
|
+
# Accept
|
55
|
+
accept = FXButton.new(buttons, "&Accept", nil, self, ID_ACCEPT,
|
56
|
+
FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
|
57
|
+
|
58
|
+
# Cancel
|
59
|
+
FXButton.new(buttons, "&Cancel", nil, self, ID_CANCEL,
|
60
|
+
FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
|
61
|
+
|
62
|
+
accept.setDefault
|
63
|
+
accept.setFocus
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
# Subclassed main window
|
69
|
+
class DialogTester < FXMainWindow
|
70
|
+
|
71
|
+
def initialize(app)
|
72
|
+
# Invoke base class initialize first
|
73
|
+
super(app, "Dialog Test", :opts => DECOR_ALL, :width => 400, :height => 200)
|
74
|
+
|
75
|
+
# Tooltip
|
76
|
+
FXToolTip.new(getApp())
|
77
|
+
|
78
|
+
# Menubar
|
79
|
+
menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
|
80
|
+
|
81
|
+
# Separator
|
82
|
+
FXHorizontalSeparator.new(self,
|
83
|
+
LAYOUT_SIDE_TOP|LAYOUT_FILL_X|SEPARATOR_GROOVE)
|
84
|
+
|
85
|
+
# File Menu
|
86
|
+
filemenu = FXMenuPane.new(self)
|
87
|
+
FXMenuCommand.new(filemenu, "&Quit", nil, getApp(), FXApp::ID_QUIT, 0)
|
88
|
+
FXMenuTitle.new(menubar, "&File", nil, filemenu)
|
89
|
+
|
90
|
+
# Contents
|
91
|
+
contents = FXHorizontalFrame.new(self,
|
92
|
+
LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y|PACK_UNIFORM_WIDTH)
|
93
|
+
|
94
|
+
# Button to pop normal dialog
|
95
|
+
nonModalButton = FXButton.new(contents,
|
96
|
+
"&Non-Modal Dialog...\tDisplay normal dialog",
|
97
|
+
:opts => FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_X|LAYOUT_CENTER_Y)
|
98
|
+
nonModalButton.connect(SEL_COMMAND, method(:onCmdShowDialog))
|
99
|
+
|
100
|
+
# Button to pop modal dialog
|
101
|
+
modalButton = FXButton.new(contents,
|
102
|
+
"&Modal Dialog...\tDisplay modal dialog",
|
103
|
+
:opts => FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_X|LAYOUT_CENTER_Y)
|
104
|
+
modalButton.connect(SEL_COMMAND, method(:onCmdShowDialogModal))
|
105
|
+
|
106
|
+
# Build a dialog box
|
107
|
+
@dialog = FXTestDialog.new(self)
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
# Show the non-modal dialog
|
112
|
+
def onCmdShowDialog(sender, sel, ptr)
|
113
|
+
@dialog.show
|
114
|
+
end
|
115
|
+
|
116
|
+
# Show a modal dialog
|
117
|
+
def onCmdShowDialogModal(sender, sel, ptr)
|
118
|
+
FXTestDialog.new(self).execute
|
119
|
+
return 1
|
120
|
+
end
|
121
|
+
|
122
|
+
# Start
|
123
|
+
def create
|
124
|
+
super
|
125
|
+
show(PLACEMENT_SCREEN)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def run
|
130
|
+
# Make an application
|
131
|
+
application = FXApp.new("Dialog", "FoxTest")
|
132
|
+
|
133
|
+
# Construct the application's main window
|
134
|
+
DialogTester.new(application)
|
135
|
+
|
136
|
+
# Create the application
|
137
|
+
application.create
|
138
|
+
|
139
|
+
# Run the application
|
140
|
+
application.run
|
141
|
+
end
|
142
|
+
|
143
|
+
run
|
data/examples/dilbert.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fox16'
|
4
|
+
require 'open-uri'
|
5
|
+
begin
|
6
|
+
require 'hpricot'
|
7
|
+
rescue LoadError
|
8
|
+
require 'fox16/missingdep'
|
9
|
+
MSG = <<EOM
|
10
|
+
Sorry, this example depends on the Hpricot extension. Please
|
11
|
+
see http://code.whytheluckystiff.net/hpricot/ for instructions
|
12
|
+
on how to install Hpricot.
|
13
|
+
EOM
|
14
|
+
missingDependency(MSG)
|
15
|
+
end
|
16
|
+
|
17
|
+
include Fox
|
18
|
+
|
19
|
+
class DailyDilbert < FXMainWindow
|
20
|
+
|
21
|
+
include Responder
|
22
|
+
|
23
|
+
def initialize(app)
|
24
|
+
# Invoke base class initialize first
|
25
|
+
super(app, "Daily Dilbert Viewer", :opts => DECOR_ALL, :width => 850, :height => 600, :padLeft => 0, :padRight => 0)
|
26
|
+
|
27
|
+
# Sunken border for image widget
|
28
|
+
imagebox = FXHorizontalFrame.new(self,
|
29
|
+
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
30
|
+
|
31
|
+
# Make image widget
|
32
|
+
@imageview = FXImageView.new(imagebox,
|
33
|
+
:opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|HSCROLLER_NEVER|VSCROLLER_NEVER)
|
34
|
+
|
35
|
+
# Construct a GIF image and store it in the image viewer
|
36
|
+
@imageview.image = FXGIFImage.new(getApp(), image_data)
|
37
|
+
|
38
|
+
# Resize main window client area to fit image size
|
39
|
+
resize(@imageview.contentWidth, @imageview.contentHeight)
|
40
|
+
end
|
41
|
+
|
42
|
+
def image_data
|
43
|
+
doc = Hpricot(open("http://www.dilbert.com/"))
|
44
|
+
url = doc.search("img").find { |e| e['alt'] =~ /Today's Comic/ }
|
45
|
+
open("http://www.dilbert.com" + url['src'], "rb").read
|
46
|
+
end
|
47
|
+
|
48
|
+
def create
|
49
|
+
super
|
50
|
+
show(PLACEMENT_SCREEN)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
if __FILE__ == $0
|
55
|
+
# Make application
|
56
|
+
application = FXApp.new("DailyDilbert", "FoxTest")
|
57
|
+
|
58
|
+
# Make window
|
59
|
+
window = DailyDilbert.new(application)
|
60
|
+
|
61
|
+
# Create it
|
62
|
+
application.create
|
63
|
+
|
64
|
+
# Run
|
65
|
+
application.run
|
66
|
+
end
|
data/examples/dirlist.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fox16'
|
4
|
+
|
5
|
+
include Fox
|
6
|
+
|
7
|
+
class DirListWindow < FXMainWindow
|
8
|
+
|
9
|
+
def initialize(app)
|
10
|
+
# Invoke the base class initialize first
|
11
|
+
super(app, "Directory List", :opts => DECOR_ALL, :width => 800, :height => 600)
|
12
|
+
|
13
|
+
# Make menu bar
|
14
|
+
menubar = FXMenuBar.new(self, LAYOUT_FILL_X)
|
15
|
+
filemenu = FXMenuPane.new(self)
|
16
|
+
FXMenuCommand.new(filemenu, "&Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT)
|
17
|
+
FXMenuTitle.new(menubar, "&File", nil, filemenu)
|
18
|
+
helpmenu = FXMenuPane.new(self)
|
19
|
+
FXMenuCommand.new(helpmenu, "&About FOX...").connect(SEL_COMMAND) {
|
20
|
+
FXMessageBox.information(self, MBOX_OK, "About FOX",
|
21
|
+
"FOX is a really, really cool C++ library...\n" +
|
22
|
+
"and FXRuby is an even cooler GUI for Ruby!")
|
23
|
+
}
|
24
|
+
FXMenuTitle.new(menubar, "&Help", nil, helpmenu, LAYOUT_RIGHT)
|
25
|
+
|
26
|
+
# Text field at bottom
|
27
|
+
text = FXTextField.new(self, 10,
|
28
|
+
:opts => LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK)
|
29
|
+
|
30
|
+
# Make contents
|
31
|
+
dirlist = FXDirList.new(self, :opts => (HSCROLLING_OFF|
|
32
|
+
TREELIST_SHOWS_LINES|TREELIST_SHOWS_BOXES|FRAME_SUNKEN|FRAME_THICK|
|
33
|
+
LAYOUT_FILL_X|LAYOUT_FILL_Y))
|
34
|
+
|
35
|
+
# Now make the directory list widget (dirlist) the message target
|
36
|
+
# for the text field. If you type a new directory name in the text
|
37
|
+
# field the directory list should navigate to that directory.
|
38
|
+
text.target = dirlist
|
39
|
+
text.selector = FXWindow::ID_SETVALUE
|
40
|
+
end
|
41
|
+
|
42
|
+
# Create and show the main window
|
43
|
+
def create
|
44
|
+
super
|
45
|
+
show(PLACEMENT_SCREEN)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def run
|
50
|
+
# Make application
|
51
|
+
application = FXApp.new("DirList", "FoxTest")
|
52
|
+
|
53
|
+
# Make window
|
54
|
+
DirListWindow.new(application)
|
55
|
+
|
56
|
+
# Create app
|
57
|
+
application.create
|
58
|
+
|
59
|
+
# Run
|
60
|
+
application.run
|
61
|
+
end
|
62
|
+
|
63
|
+
run
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'fox16'
|
2
|
+
|
3
|
+
include Fox
|
4
|
+
|
5
|
+
class DragDropWindow < FXMainWindow
|
6
|
+
|
7
|
+
def initialize(anApp)
|
8
|
+
# Initialize base class
|
9
|
+
super(anApp, "Drag and Drop", :opts => DECOR_ALL, :width => 400, :height => 300)
|
10
|
+
|
11
|
+
# Fill main window with canvas
|
12
|
+
@canvas = FXCanvas.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
13
|
+
@canvas.backColor = "red"
|
14
|
+
|
15
|
+
# Enable canvas for drag-and-drop messages
|
16
|
+
@canvas.dropEnable
|
17
|
+
|
18
|
+
# Handle expose events on the canvas
|
19
|
+
@canvas.connect(SEL_PAINT) do |sender, sel, event|
|
20
|
+
FXDCWindow.new(@canvas, event) do |dc|
|
21
|
+
dc.foreground = @canvas.backColor
|
22
|
+
dc.fillRectangle(event.rect.x, event.rect.y, event.rect.w, event.rect.h)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Handle left button press
|
27
|
+
@canvas.connect(SEL_LEFTBUTTONPRESS) do
|
28
|
+
#
|
29
|
+
# Capture (grab) the mouse when the button goes down, so that all future
|
30
|
+
# mouse events will be reported to this widget, even if those events occur
|
31
|
+
# outside of this widget.
|
32
|
+
#
|
33
|
+
@canvas.grab
|
34
|
+
|
35
|
+
# Advertise which drag types we can offer
|
36
|
+
dragTypes = [FXWindow.colorType]
|
37
|
+
@canvas.beginDrag(dragTypes)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Handle mouse motion events
|
41
|
+
@canvas.connect(SEL_MOTION) do |sender, sel, event|
|
42
|
+
if @canvas.dragging?
|
43
|
+
@canvas.handleDrag(event.root_x, event.root_y)
|
44
|
+
unless @canvas.didAccept == DRAG_REJECT
|
45
|
+
@canvas.dragCursor = getApp().getDefaultCursor(DEF_SWATCH_CURSOR)
|
46
|
+
else
|
47
|
+
@canvas.dragCursor = getApp().getDefaultCursor(DEF_DNDSTOP_CURSOR)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Handle SEL_DND_MOTION messages from the canvas
|
53
|
+
@canvas.connect(SEL_DND_MOTION) do
|
54
|
+
@canvas.acceptDrop if @canvas.offeredDNDType?(FROM_DRAGNDROP, FXWindow.colorType)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Handle left button release
|
58
|
+
@canvas.connect(SEL_LEFTBUTTONRELEASE) do
|
59
|
+
@canvas.ungrab
|
60
|
+
@canvas.endDrag
|
61
|
+
end
|
62
|
+
|
63
|
+
# Handle SEL_DND_DROP message from the canvas
|
64
|
+
@canvas.connect(SEL_DND_DROP) do
|
65
|
+
# Try to obtain the data as color values first
|
66
|
+
data = @canvas.getDNDData(FROM_DRAGNDROP, FXWindow.colorType)
|
67
|
+
|
68
|
+
# Update canvas background color
|
69
|
+
@canvas.backColor = Fox.fxdecodeColorData(data) unless data.nil?
|
70
|
+
end
|
71
|
+
|
72
|
+
# Handle request for DND data
|
73
|
+
@canvas.connect(SEL_DND_REQUEST) do |sender, sel, event|
|
74
|
+
@canvas.setDNDData(FROM_DRAGNDROP, FXWindow.colorType, Fox.fxencodeColorData(@canvas.backColor)) if event.target == FXWindow.colorType
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def create
|
79
|
+
# Create the main window and canvas
|
80
|
+
super
|
81
|
+
|
82
|
+
# Register the drag type for colors
|
83
|
+
FXWindow.colorType = getApp().registerDragType(FXWindow.colorTypeName)
|
84
|
+
|
85
|
+
# Show the main window
|
86
|
+
show(PLACEMENT_SCREEN)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
if __FILE__ == $0
|
91
|
+
FXApp.new("DragDrop", "FXRuby") do |theApp|
|
92
|
+
DragDropWindow.new(theApp)
|
93
|
+
theApp.create
|
94
|
+
theApp.run
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'fox16'
|
2
|
+
|
3
|
+
include Fox
|
4
|
+
|
5
|
+
class DragSource < FXMainWindow
|
6
|
+
|
7
|
+
def initialize(anApp)
|
8
|
+
# Initialize base class
|
9
|
+
super(anApp, "Drag Source", :opts => DECOR_ALL, :width => 400, :height => 300)
|
10
|
+
|
11
|
+
# Fill main window with canvas
|
12
|
+
@canvas = FXCanvas.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
13
|
+
@canvas.backColor = "red"
|
14
|
+
|
15
|
+
# Handle expose events on the canvas
|
16
|
+
@canvas.connect(SEL_PAINT) do |sender, sel, event|
|
17
|
+
FXDCWindow.new(@canvas, event) do |dc|
|
18
|
+
dc.foreground = @canvas.backColor
|
19
|
+
dc.fillRectangle(event.rect.x, event.rect.y, event.rect.w, event.rect.h)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Handle left button press
|
24
|
+
@canvas.connect(SEL_LEFTBUTTONPRESS) do
|
25
|
+
#
|
26
|
+
# Capture (grab) the mouse when the button goes down, so that all future
|
27
|
+
# mouse events will be reported to this widget, even if those events occur
|
28
|
+
# outside of this widget.
|
29
|
+
#
|
30
|
+
@canvas.grab
|
31
|
+
|
32
|
+
# Advertise which drag types we can offer
|
33
|
+
dragTypes = [FXWindow.colorType]
|
34
|
+
@canvas.beginDrag(dragTypes)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Handle mouse motion events
|
38
|
+
@canvas.connect(SEL_MOTION) do |sender, sel, event|
|
39
|
+
if @canvas.dragging?
|
40
|
+
@canvas.handleDrag(event.root_x, event.root_y)
|
41
|
+
unless @canvas.didAccept == DRAG_REJECT
|
42
|
+
@canvas.dragCursor = getApp().getDefaultCursor(DEF_SWATCH_CURSOR)
|
43
|
+
else
|
44
|
+
@canvas.dragCursor = getApp().getDefaultCursor(DEF_DNDSTOP_CURSOR)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# Handle left button release
|
50
|
+
@canvas.connect(SEL_LEFTBUTTONRELEASE) do
|
51
|
+
@canvas.ungrab
|
52
|
+
@canvas.endDrag
|
53
|
+
end
|
54
|
+
|
55
|
+
# Handle request for DND data
|
56
|
+
@canvas.connect(SEL_DND_REQUEST) do |sender, sel, event|
|
57
|
+
@canvas.setDNDData(FROM_DRAGNDROP, FXWindow.colorType, Fox.fxencodeColorData(@canvas.backColor)) if event.target == FXWindow.colorType
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def create
|
62
|
+
# Create the main window and canvas
|
63
|
+
super
|
64
|
+
|
65
|
+
# Register the drag type for colors
|
66
|
+
FXWindow.colorType = getApp().registerDragType(FXWindow.colorTypeName)
|
67
|
+
|
68
|
+
# Show the main window
|
69
|
+
show(PLACEMENT_SCREEN)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
if __FILE__ == $0
|
74
|
+
FXApp.new("DragSource", "FXRuby") do |theApp|
|
75
|
+
DragSource.new(theApp)
|
76
|
+
theApp.create
|
77
|
+
theApp.run
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'fox16'
|
2
|
+
|
3
|
+
include Fox
|
4
|
+
|
5
|
+
class DropSite < FXMainWindow
|
6
|
+
|
7
|
+
def initialize(anApp)
|
8
|
+
# Initialize base class
|
9
|
+
super(anApp, "Drop Site", :opts => DECOR_ALL, :width => 400, :height => 300)
|
10
|
+
|
11
|
+
# Fill main window with canvas
|
12
|
+
@canvas = FXCanvas.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
13
|
+
|
14
|
+
# Handle expose events on the canvas
|
15
|
+
@canvas.connect(SEL_PAINT) do |sender, sel, event|
|
16
|
+
FXDCWindow.new(@canvas, event) do |dc|
|
17
|
+
dc.foreground = @canvas.backColor
|
18
|
+
dc.fillRectangle(event.rect.x, event.rect.y, event.rect.w, event.rect.h)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Enable canvas for drag-and-drop messages
|
23
|
+
@canvas.dropEnable
|
24
|
+
|
25
|
+
# Handle SEL_DND_MOTION messages from the canvas
|
26
|
+
@canvas.connect(SEL_DND_MOTION) do
|
27
|
+
@canvas.acceptDrop if @canvas.offeredDNDType?(FROM_DRAGNDROP, FXWindow.colorType)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Handle SEL_DND_DROP message from the canvas
|
31
|
+
@canvas.connect(SEL_DND_DROP) do
|
32
|
+
# Try to obtain the data as color values first
|
33
|
+
data = @canvas.getDNDData(FROM_DRAGNDROP, FXWindow.colorType)
|
34
|
+
|
35
|
+
# Update canvas background color
|
36
|
+
@canvas.backColor = Fox.fxdecodeColorData(data) unless data.nil?
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def create
|
41
|
+
# Create the main window and canvas
|
42
|
+
super
|
43
|
+
|
44
|
+
# Register the drag type for colors
|
45
|
+
FXWindow.colorType = getApp().registerDragType(FXWindow.colorTypeName)
|
46
|
+
|
47
|
+
# Show the main window
|
48
|
+
show(PLACEMENT_SCREEN)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
if __FILE__ == $0
|
53
|
+
FXApp.new("DropSite", "FXRuby") do |theApp|
|
54
|
+
DropSite.new(theApp)
|
55
|
+
theApp.create
|
56
|
+
theApp.run
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
@@ -0,0 +1,97 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fox16'
|
4
|
+
|
5
|
+
include Fox
|
6
|
+
|
7
|
+
class FourSplitWindow < FXMainWindow
|
8
|
+
def initialize(app)
|
9
|
+
# Call the base class initialize() first
|
10
|
+
super(app, "4-Way Splitter Test", :opts => DECOR_ALL, :width => 800, :height => 600)
|
11
|
+
|
12
|
+
# Menu bar, along the top
|
13
|
+
menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
|
14
|
+
|
15
|
+
# Status bar, along the bottom
|
16
|
+
FXStatusBar.new(self,
|
17
|
+
LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER)
|
18
|
+
|
19
|
+
# The top-level splitter takes up the rest of the space
|
20
|
+
splitter = FX4Splitter.new(self,
|
21
|
+
LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y|FOURSPLITTER_TRACKING)
|
22
|
+
|
23
|
+
# File menu
|
24
|
+
filemenu = FXMenuPane.new(self)
|
25
|
+
FXMenuCommand.new(filemenu, "&Quit\tCtl-Q\tQuit the application.", nil,
|
26
|
+
getApp(), FXApp::ID_QUIT)
|
27
|
+
FXMenuTitle.new(menubar, "&File", nil, filemenu)
|
28
|
+
|
29
|
+
# Expand menu
|
30
|
+
expandmenu = FXMenuPane.new(self)
|
31
|
+
FXMenuCommand.new(expandmenu, "All four", nil,
|
32
|
+
splitter, FX4Splitter::ID_EXPAND_ALL)
|
33
|
+
FXMenuCommand.new(expandmenu, "Top/left", nil,
|
34
|
+
splitter, FX4Splitter::ID_EXPAND_TOPLEFT)
|
35
|
+
FXMenuCommand.new(expandmenu, "Top/right", nil,
|
36
|
+
splitter, FX4Splitter::ID_EXPAND_TOPRIGHT)
|
37
|
+
FXMenuCommand.new(expandmenu, "Bottom/left", nil,
|
38
|
+
splitter, FX4Splitter::ID_EXPAND_BOTTOMLEFT)
|
39
|
+
FXMenuCommand.new(expandmenu, "Bottom/right", nil,
|
40
|
+
splitter, FX4Splitter::ID_EXPAND_BOTTOMRIGHT)
|
41
|
+
FXMenuTitle.new(menubar, "&Expand", nil, expandmenu)
|
42
|
+
|
43
|
+
# The 4-splitter accepts exactly four child widgets, and the
|
44
|
+
# order in which they are added matters (top left, top right,
|
45
|
+
# bottom left and bottom right, in that order). For our case,
|
46
|
+
# the first three child widgets are just regular pushbuttons,
|
47
|
+
# but the fourth is itself another 4-splitter. There is no
|
48
|
+
# restriction on nesting these kinds of widgets.
|
49
|
+
|
50
|
+
FXButton.new(splitter, "Top &Left\tThis splitter tracks", :opts => FRAME_RAISED|FRAME_THICK)
|
51
|
+
|
52
|
+
FXButton.new(splitter, "Top &Right\tThis splitter tracks", :opts => FRAME_RAISED|FRAME_THICK)
|
53
|
+
|
54
|
+
FXButton.new(splitter, "&Bottom Left\tThis splitter tracks", :opts => FRAME_SUNKEN|FRAME_THICK)
|
55
|
+
|
56
|
+
subsplitter = FX4Splitter.new(splitter, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
57
|
+
|
58
|
+
# Create the four children of the sub-splitter...
|
59
|
+
FXButton.new(subsplitter, "&Of course\tThis splitter does NOT track") do |theButton|
|
60
|
+
theButton.frameStyle = FRAME_SUNKEN|FRAME_THICK
|
61
|
+
theButton.backColor = FXRGB(0, 128, 0)
|
62
|
+
theButton.textColor = FXRGB(255, 255, 255)
|
63
|
+
end
|
64
|
+
|
65
|
+
button = FXButton.new(subsplitter,
|
66
|
+
"the&y CAN\tThis splitter does NOT track", :opts => FRAME_SUNKEN|FRAME_THICK)
|
67
|
+
button.backColor = FXRGB(128, 0, 0)
|
68
|
+
button.textColor = FXRGB(255, 255, 255)
|
69
|
+
|
70
|
+
button = FXButton.new(subsplitter,
|
71
|
+
"be &NESTED\tThis splitter does NOT track", :opts => FRAME_SUNKEN|FRAME_THICK)
|
72
|
+
button.backColor = FXRGB(0, 0, 200)
|
73
|
+
button.textColor = FXRGB(255, 255, 255)
|
74
|
+
|
75
|
+
button = FXButton.new(subsplitter,
|
76
|
+
"&arbitrarily!\tThis splitter does NOT track", :opts => FRAME_SUNKEN|FRAME_THICK)
|
77
|
+
button.backColor = FXRGB(128, 128, 0)
|
78
|
+
button.textColor = FXRGB(255, 255, 255)
|
79
|
+
|
80
|
+
# Finally, create the tool tip object
|
81
|
+
FXToolTip.new(getApp())
|
82
|
+
end
|
83
|
+
|
84
|
+
def create
|
85
|
+
super
|
86
|
+
show(PLACEMENT_SCREEN)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def runme
|
91
|
+
application = FXApp.new("FourSplit", "FoxTest")
|
92
|
+
FourSplitWindow.new(application)
|
93
|
+
application.create
|
94
|
+
application.run
|
95
|
+
end
|
96
|
+
|
97
|
+
runme
|