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
@@ -0,0 +1,186 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fox16'
|
4
|
+
require 'fox16/responder'
|
5
|
+
require 'fox16/colors'
|
6
|
+
|
7
|
+
include Fox
|
8
|
+
|
9
|
+
class ScribbleWindow < FXMainWindow
|
10
|
+
|
11
|
+
include Responder
|
12
|
+
|
13
|
+
def initialize(app)
|
14
|
+
# Call base class initializer first
|
15
|
+
super(app, "Scribble Application", nil, nil, DECOR_ALL,
|
16
|
+
0, 0, 800, 600)
|
17
|
+
|
18
|
+
# Message identifiers for this class
|
19
|
+
identifier :ID_CANVAS, :ID_CLEAR
|
20
|
+
|
21
|
+
# And here's the message map for this class
|
22
|
+
FXMAPFUNC(SEL_PAINT, ID_CANVAS, :onPaint)
|
23
|
+
FXMAPFUNC(SEL_LEFTBUTTONPRESS, ID_CANVAS, :onMouseDown)
|
24
|
+
FXMAPFUNC(SEL_LEFTBUTTONRELEASE, ID_CANVAS, :onMouseUp)
|
25
|
+
FXMAPFUNC(SEL_MOTION, ID_CANVAS, :onMouseMove)
|
26
|
+
FXMAPFUNC(SEL_COMMAND, ID_CLEAR, :onCmdClear)
|
27
|
+
FXMAPFUNC(SEL_UPDATE, ID_CLEAR, :onUpdClear)
|
28
|
+
|
29
|
+
# Construct a horizontal frame to hold the main window's contents
|
30
|
+
@contents = FXHorizontalFrame.new(self,
|
31
|
+
LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0)
|
32
|
+
|
33
|
+
# Left pane contains the canvas
|
34
|
+
@canvasFrame = FXVerticalFrame.new(@contents,
|
35
|
+
FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT,
|
36
|
+
0, 0, 0, 0, 10, 10, 10, 10)
|
37
|
+
|
38
|
+
# Place a label above the canvas
|
39
|
+
FXLabel.new(@canvasFrame, "Canvas Frame", nil,
|
40
|
+
JUSTIFY_CENTER_X|LAYOUT_FILL_X)
|
41
|
+
|
42
|
+
# Horizontal divider line
|
43
|
+
FXHorizontalSeparator.new(@canvasFrame, SEPARATOR_GROOVE|LAYOUT_FILL_X)
|
44
|
+
|
45
|
+
# Drawing canvas
|
46
|
+
@canvas = FXCanvas.new(@canvasFrame, self, ID_CANVAS,
|
47
|
+
LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT)
|
48
|
+
|
49
|
+
# Right pane for the buttons
|
50
|
+
@buttonFrame = FXVerticalFrame.new(@contents,
|
51
|
+
FRAME_SUNKEN|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT,
|
52
|
+
0, 0, 0, 0, 10, 10, 10, 10)
|
53
|
+
|
54
|
+
# Label above the buttons
|
55
|
+
FXLabel.new(@buttonFrame, "Button Frame", nil,
|
56
|
+
JUSTIFY_CENTER_X|LAYOUT_FILL_X)
|
57
|
+
|
58
|
+
# Horizontal divider line
|
59
|
+
FXHorizontalSeparator.new(@buttonFrame,
|
60
|
+
SEPARATOR_RIDGE|LAYOUT_FILL_X)
|
61
|
+
|
62
|
+
# Button to clear the canvas
|
63
|
+
FXButton.new(@buttonFrame, "&Clear", nil, self, ID_CLEAR,
|
64
|
+
FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT,
|
65
|
+
0, 0, 0, 0, 10, 10, 5, 5)
|
66
|
+
|
67
|
+
# Exit button
|
68
|
+
FXButton.new(@buttonFrame, "&Exit", nil, app, FXApp::ID_QUIT,
|
69
|
+
FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT,
|
70
|
+
0, 0, 0, 0, 10, 10, 5, 5)
|
71
|
+
|
72
|
+
# Initialize other member variables
|
73
|
+
@drawColor = FXColor::Red
|
74
|
+
@mouseDown = false
|
75
|
+
@dirty = false
|
76
|
+
end
|
77
|
+
|
78
|
+
# Create and show the main window
|
79
|
+
def create
|
80
|
+
super # Create the windows
|
81
|
+
show(PLACEMENT_SCREEN) # Make the main window appear
|
82
|
+
end
|
83
|
+
|
84
|
+
# Mouse button was pressed somewhere
|
85
|
+
def onMouseDown(sender, sel, ptr)
|
86
|
+
@canvas.grab
|
87
|
+
@mouseDown = true
|
88
|
+
return 1
|
89
|
+
end
|
90
|
+
|
91
|
+
# Mouse has moved, so draw a line
|
92
|
+
def onMouseMove(sender, sel, event)
|
93
|
+
if @mouseDown
|
94
|
+
# Get device context for the canvas
|
95
|
+
dc = FXDCWindow.new(@canvas)
|
96
|
+
|
97
|
+
# Set the foreground color for drawing
|
98
|
+
dc.setForeground(@drawColor)
|
99
|
+
|
100
|
+
# Draw a line from the previous mouse coordinates to the current ones
|
101
|
+
dc.drawLine(event.last_x, event.last_y, event.win_x, event.win_y)
|
102
|
+
|
103
|
+
# We have drawn something, so now the canvas is dirty
|
104
|
+
@dirty = true
|
105
|
+
|
106
|
+
# Release the DC immediately
|
107
|
+
dc.end
|
108
|
+
end
|
109
|
+
return 1
|
110
|
+
end
|
111
|
+
|
112
|
+
# Mouse button released
|
113
|
+
def onMouseUp(sender, sel, event)
|
114
|
+
@canvas.ungrab
|
115
|
+
if @mouseDown
|
116
|
+
# Get device context for the canvas
|
117
|
+
dc = FXDCWindow.new(@canvas)
|
118
|
+
|
119
|
+
# Set the foreground color for drawing
|
120
|
+
dc.setForeground(@drawColor)
|
121
|
+
|
122
|
+
# Draw a line from the previous mouse coordinates to the current ones
|
123
|
+
dc.drawLine(event.last_x, event.last_y, event.win_x, event.win_y)
|
124
|
+
|
125
|
+
# We have drawn something, so now the canvas is dirty
|
126
|
+
@dirty = true
|
127
|
+
|
128
|
+
# Mouse no longer down
|
129
|
+
@mouseDown = false
|
130
|
+
|
131
|
+
# Release the DC immediately
|
132
|
+
dc.end
|
133
|
+
end
|
134
|
+
return 1
|
135
|
+
end
|
136
|
+
|
137
|
+
# Paint the canvas
|
138
|
+
def onPaint(sender, sel, event)
|
139
|
+
dc = FXDCWindow.new(@canvas, event)
|
140
|
+
dc.setForeground(@canvas.backColor)
|
141
|
+
dc.fillRectangle(event.rect.x, event.rect.y, event.rect.w, event.rect.h)
|
142
|
+
dc.end
|
143
|
+
end
|
144
|
+
|
145
|
+
# Handle the clear message
|
146
|
+
def onCmdClear(sender, sel, ptr)
|
147
|
+
dc = FXDCWindow.new(@canvas)
|
148
|
+
dc.setForeground(@canvas.backColor)
|
149
|
+
dc.fillRectangle(0, 0, @canvas.width, @canvas.height)
|
150
|
+
@dirty = false
|
151
|
+
dc.end
|
152
|
+
return 1
|
153
|
+
end
|
154
|
+
|
155
|
+
# This function handles the update message sent by the Clear button
|
156
|
+
# to its target. Every widget in FOX receives a message (SEL_UPDATE)
|
157
|
+
# during idle processing, asking it to update itself. For example,
|
158
|
+
# buttons could be enabled or disabled as the state of the application
|
159
|
+
# changes.
|
160
|
+
#
|
161
|
+
# In this case, we'll disable the sender (the Clear button) when the
|
162
|
+
# canvas has already been cleared (i.e. it's "clean"), and enable it when
|
163
|
+
# it has been painted (i.e. it's "dirty").
|
164
|
+
#
|
165
|
+
def onUpdClear(sender, sel, ptr)
|
166
|
+
message = @dirty ? FXWindow::ID_ENABLE : FXWindow::ID_DISABLE
|
167
|
+
sender.handle(self, MKUINT(message, SEL_COMMAND), nil)
|
168
|
+
return 1
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def run
|
173
|
+
# Construct the application object
|
174
|
+
application = FXApp.new('Scribble', 'FoxTest')
|
175
|
+
|
176
|
+
# Construct the main window
|
177
|
+
scribble = ScribbleWindow.new(application)
|
178
|
+
|
179
|
+
# Create the application
|
180
|
+
application.create
|
181
|
+
|
182
|
+
# Run the application
|
183
|
+
application.run
|
184
|
+
end
|
185
|
+
|
186
|
+
run
|
@@ -0,0 +1,162 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fox16'
|
4
|
+
|
5
|
+
include Fox
|
6
|
+
|
7
|
+
class ScribbleWindow < FXMainWindow
|
8
|
+
|
9
|
+
def initialize(app)
|
10
|
+
# Call base class initializer first
|
11
|
+
super(app, "Scribble Application", :width => 800, :height => 600)
|
12
|
+
|
13
|
+
# Construct a horizontal frame to hold the main window's contents
|
14
|
+
@contents = FXHorizontalFrame.new(self,
|
15
|
+
LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y,
|
16
|
+
:padLeft => 0, :padRight => 0, :padTop => 0, :padBottom => 0)
|
17
|
+
|
18
|
+
# Left pane contains the canvas
|
19
|
+
@canvasFrame = FXVerticalFrame.new(@contents,
|
20
|
+
FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT,
|
21
|
+
:padLeft => 10, :padRight => 10, :padTop => 10, :padBottom => 10)
|
22
|
+
|
23
|
+
# Place a label above the canvas
|
24
|
+
FXLabel.new(@canvasFrame, "Canvas Frame", nil, JUSTIFY_CENTER_X|LAYOUT_FILL_X)
|
25
|
+
|
26
|
+
# Horizontal divider line
|
27
|
+
FXHorizontalSeparator.new(@canvasFrame, SEPARATOR_GROOVE|LAYOUT_FILL_X)
|
28
|
+
|
29
|
+
# Drawing canvas
|
30
|
+
@canvas = FXCanvas.new(@canvasFrame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT)
|
31
|
+
@canvas.connect(SEL_PAINT) do |sender, sel, event|
|
32
|
+
FXDCWindow.new(@canvas, event) do |dc|
|
33
|
+
dc.foreground = @canvas.backColor
|
34
|
+
dc.fillRectangle(event.rect.x, event.rect.y, event.rect.w, event.rect.h)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
@canvas.connect(SEL_LEFTBUTTONPRESS) do
|
38
|
+
@canvas.grab
|
39
|
+
@mouseDown = true
|
40
|
+
end
|
41
|
+
@canvas.connect(SEL_MOTION) do |sender, sel, event|
|
42
|
+
if @mouseDown
|
43
|
+
# Get device context for the canvas
|
44
|
+
dc = FXDCWindow.new(@canvas)
|
45
|
+
|
46
|
+
# Set the foreground color for drawing
|
47
|
+
dc.foreground = @drawColor
|
48
|
+
|
49
|
+
# Draw a line from the previous mouse coordinates to the current ones
|
50
|
+
if @mirrorMode.value
|
51
|
+
cW = @canvas.width
|
52
|
+
cH = @canvas.height
|
53
|
+
dc.drawLine(cW-event.last_x, event.last_y,
|
54
|
+
cW-event.win_x, event.win_y)
|
55
|
+
dc.drawLine(event.last_x, cH-event.last_y,
|
56
|
+
event.win_x, cH-event.win_y)
|
57
|
+
dc.drawLine(cW-event.last_x, cH-event.last_y,
|
58
|
+
cW-event.win_x, cH-event.win_y)
|
59
|
+
end
|
60
|
+
dc.drawLine(event.last_x, event.last_y, event.win_x, event.win_y)
|
61
|
+
|
62
|
+
# We have drawn something, so now the canvas is dirty
|
63
|
+
@dirty = true
|
64
|
+
|
65
|
+
# Release the DC immediately
|
66
|
+
dc.end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
@canvas.connect(SEL_LEFTBUTTONRELEASE) do |sender, sel, event|
|
70
|
+
@canvas.ungrab
|
71
|
+
if @mouseDown
|
72
|
+
# Get device context for the canvas
|
73
|
+
dc = FXDCWindow.new(@canvas)
|
74
|
+
|
75
|
+
# Set the foreground color for drawing
|
76
|
+
dc.foreground = @drawColor
|
77
|
+
|
78
|
+
# Draw a line from the previous mouse coordinates to the current ones
|
79
|
+
dc.drawLine(event.last_x, event.last_y, event.win_x, event.win_y)
|
80
|
+
|
81
|
+
# We have drawn something, so now the canvas is dirty
|
82
|
+
@dirty = true
|
83
|
+
|
84
|
+
# Mouse no longer down
|
85
|
+
@mouseDown = false
|
86
|
+
|
87
|
+
# Release this DC immediately
|
88
|
+
dc.end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# Right pane for the buttons
|
93
|
+
@buttonFrame = FXVerticalFrame.new(@contents,
|
94
|
+
FRAME_SUNKEN|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT,
|
95
|
+
:padLeft => 10, :padRight => 10, :padTop => 10, :padBottom => 10)
|
96
|
+
|
97
|
+
# Label above the buttons
|
98
|
+
FXLabel.new(@buttonFrame, "Button Frame", nil, JUSTIFY_CENTER_X|LAYOUT_FILL_X)
|
99
|
+
|
100
|
+
# Horizontal divider line
|
101
|
+
FXHorizontalSeparator.new(@buttonFrame, SEPARATOR_RIDGE|LAYOUT_FILL_X)
|
102
|
+
|
103
|
+
# Enable or disable mirror mode
|
104
|
+
@mirrorMode = FXDataTarget.new(false)
|
105
|
+
FXCheckButton.new(@buttonFrame, "Mirror", @mirrorMode, FXDataTarget::ID_VALUE, CHECKBUTTON_NORMAL|LAYOUT_FILL_X)
|
106
|
+
|
107
|
+
# Button to clear the canvas
|
108
|
+
clearButton = FXButton.new(@buttonFrame, "&Clear",
|
109
|
+
:opts => FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT,
|
110
|
+
:padLeft => 10, :padRight => 10, :padTop => 5, :padBottom => 5)
|
111
|
+
clearButton.connect(SEL_COMMAND) do
|
112
|
+
FXDCWindow.new(@canvas) do |dc|
|
113
|
+
dc.foreground = @canvas.backColor
|
114
|
+
dc.fillRectangle(0, 0, @canvas.width, @canvas.height)
|
115
|
+
@dirty = false
|
116
|
+
end
|
117
|
+
end
|
118
|
+
clearButton.connect(SEL_UPDATE) do |sender, sel, ptr|
|
119
|
+
# This procedure handles the update message sent by the Clear button
|
120
|
+
# to its target. Every widget in FOX receives a message (SEL_UPDATE)
|
121
|
+
# during idle processing, asking it to update itself. For example,
|
122
|
+
# buttons could be enabled or disabled as the state of the application
|
123
|
+
# changes.
|
124
|
+
#
|
125
|
+
# In this case, we'll disable the sender (the Clear button) when the
|
126
|
+
# canvas has already been cleared (i.e. it's "clean"), and enable it when
|
127
|
+
# it has been painted (i.e. it's "dirty").
|
128
|
+
message = @dirty ? FXWindow::ID_ENABLE : FXWindow::ID_DISABLE
|
129
|
+
sender.handle(self, MKUINT(message, SEL_COMMAND), nil)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Exit button
|
133
|
+
FXButton.new(@buttonFrame, "&Exit", nil, app, FXApp::ID_QUIT,
|
134
|
+
FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT,
|
135
|
+
:padLeft => 10, :padRight => 10, :padTop => 5, :padBottom => 5)
|
136
|
+
|
137
|
+
# Initialize other member variables
|
138
|
+
@drawColor = "red"
|
139
|
+
@mouseDown = false
|
140
|
+
@dirty = false
|
141
|
+
end
|
142
|
+
|
143
|
+
# Create and show the main window
|
144
|
+
def create
|
145
|
+
super # Create the windows
|
146
|
+
show(PLACEMENT_SCREEN) # Make the main window appear
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
if __FILE__ == $0
|
151
|
+
# Construct the application object
|
152
|
+
application = FXApp.new('Scribble', 'FoxTest')
|
153
|
+
|
154
|
+
# Construct the main window
|
155
|
+
scribble = ScribbleWindow.new(application)
|
156
|
+
|
157
|
+
# Create the application
|
158
|
+
application.create
|
159
|
+
|
160
|
+
# Run the application
|
161
|
+
application.run
|
162
|
+
end
|
data/examples/shutter.rb
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fox16'
|
4
|
+
|
5
|
+
include Fox
|
6
|
+
|
7
|
+
GORTS_BLURB = "Icons courtesy of Gort's Icons:\nhttp://www.forrestwalter.com/icons"
|
8
|
+
|
9
|
+
class ShutterItem < FXShutterItem
|
10
|
+
def initialize(p, text, icon=nil, opts=0)
|
11
|
+
super(p, text, icon, opts|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, :padding => 10, :hSpacing => 10, :vSpacing => 10)
|
12
|
+
button.padTop = 2
|
13
|
+
button.padBottom = 2
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class ShutterButton < FXButton
|
18
|
+
def initialize(p, txt, ic=nil)
|
19
|
+
super(p, txt, ic, :opts => BUTTON_TOOLBAR|TEXT_BELOW_ICON|FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT)
|
20
|
+
self.backColor = p.backColor
|
21
|
+
self.textColor = FXRGB(255, 255, 255)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class ShutterWindow < FXMainWindow
|
26
|
+
|
27
|
+
# This is just a helper function that loads an ICO file from disk
|
28
|
+
# and constructs and returns a ICO icon object.
|
29
|
+
|
30
|
+
def loadIcon(filename)
|
31
|
+
begin
|
32
|
+
filename = File.join("icons", filename)
|
33
|
+
icon = nil
|
34
|
+
File.open(filename, "rb") do |f|
|
35
|
+
icon = FXICOIcon.new(getApp(), f.read)
|
36
|
+
end
|
37
|
+
icon
|
38
|
+
rescue
|
39
|
+
raise RuntimeError, "Couldn't load icon: #{filename}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def initialize(app)
|
44
|
+
# Invoke base class initialize first
|
45
|
+
super(app, "Look Out!", :opts => DECOR_ALL, :width => 600, :height => 600)
|
46
|
+
|
47
|
+
# Menubar along the top
|
48
|
+
menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
|
49
|
+
|
50
|
+
# File menu
|
51
|
+
filemenu = FXMenuPane.new(self)
|
52
|
+
FXMenuCommand.new(filemenu, "Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT)
|
53
|
+
FXMenuTitle.new(menubar, "&File", nil, filemenu)
|
54
|
+
|
55
|
+
# Edit menu
|
56
|
+
editmenu = FXMenuPane.new(self)
|
57
|
+
FXMenuTitle.new(menubar, "&Edit", nil, editmenu)
|
58
|
+
|
59
|
+
# View menu
|
60
|
+
viewmenu = FXMenuPane.new(self)
|
61
|
+
FXMenuTitle.new(menubar, "&View", nil, viewmenu)
|
62
|
+
|
63
|
+
# Favorites menu
|
64
|
+
favmenu = FXMenuPane.new(self)
|
65
|
+
FXMenuTitle.new(menubar, "Fav&orites", nil, favmenu)
|
66
|
+
|
67
|
+
# Tools menu
|
68
|
+
toolsmenu = FXMenuPane.new(self)
|
69
|
+
FXMenuTitle.new(menubar, "&Tools", nil, toolsmenu)
|
70
|
+
|
71
|
+
# Actions menu
|
72
|
+
actionsmenu = FXMenuPane.new(self)
|
73
|
+
FXMenuTitle.new(menubar, "&Actions", nil, actionsmenu)
|
74
|
+
|
75
|
+
# Help menu
|
76
|
+
helpmenu = FXMenuPane.new(self)
|
77
|
+
FXMenuTitle.new(menubar, "&Help", nil, helpmenu)
|
78
|
+
|
79
|
+
# Status bar along the bottom
|
80
|
+
status = FXStatusBar.new(self,
|
81
|
+
LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER)
|
82
|
+
|
83
|
+
# Main contents area is split left-to-right
|
84
|
+
splitter = FXSplitter.new(self, (LAYOUT_SIDE_TOP|LAYOUT_FILL_X|
|
85
|
+
LAYOUT_FILL_Y|SPLITTER_TRACKING))
|
86
|
+
|
87
|
+
# Shutter area on the left
|
88
|
+
@shutter = FXShutter.new(splitter,
|
89
|
+
:opts => FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y,
|
90
|
+
:padding => 0, :hSpacing => 0, :vSpacing => 0)
|
91
|
+
|
92
|
+
fatBot = loadIcon("FatBot.ico")
|
93
|
+
angryGuy = loadIcon("AngryGuyInBunnySuit.ico")
|
94
|
+
sawBlade = loadIcon("SawBlade.ico")
|
95
|
+
redMacOS = loadIcon("RedMacOS.ico")
|
96
|
+
leGoon = loadIcon("LeGoon.ico")
|
97
|
+
flippedySwitch = loadIcon("FlippedySwitch.ico")
|
98
|
+
net = loadIcon("Net.ico")
|
99
|
+
|
100
|
+
shutterItem = ShutterItem.new(@shutter, "Lookout Shortcuts", nil, LAYOUT_FILL_Y)
|
101
|
+
ShutterButton.new(shutterItem.content, "Lookout Today", fatBot).connect(SEL_COMMAND) { @switcher.current = 0 }
|
102
|
+
ShutterButton.new(shutterItem.content, "Inbox", angryGuy).connect(SEL_COMMAND) { @switcher.current = 1 }
|
103
|
+
ShutterButton.new(shutterItem.content, "Calendar", sawBlade).connect(SEL_COMMAND) { @switcher.current = 2 }
|
104
|
+
ShutterButton.new(shutterItem.content, "Contacts", redMacOS).connect(SEL_COMMAND) { @switcher.current = 3 }
|
105
|
+
ShutterButton.new(shutterItem.content, "Tasks", leGoon).connect(SEL_COMMAND) { @switcher.current = 4 }
|
106
|
+
ShutterButton.new(shutterItem.content, "Notes", flippedySwitch).connect(SEL_COMMAND) { @switcher.current = 5 }
|
107
|
+
ShutterButton.new(shutterItem.content, "Deleted Items", net).connect(SEL_COMMAND) { @switcher.current = 6 }
|
108
|
+
|
109
|
+
shutterItem = ShutterItem.new(@shutter, "My Shortcuts")
|
110
|
+
ShutterButton.new(shutterItem.content, "Drafts", fatBot).connect(SEL_COMMAND) { @switcher.current = 7 }
|
111
|
+
ShutterButton.new(shutterItem.content, "Outbox", angryGuy).connect(SEL_COMMAND) { @switcher.current = 8 }
|
112
|
+
ShutterButton.new(shutterItem.content, "Sent Items", sawBlade).connect(SEL_COMMAND) { @switcher.current = 9 }
|
113
|
+
ShutterButton.new(shutterItem.content, "Journal", redMacOS).connect(SEL_COMMAND) { @switcher.current = 10 }
|
114
|
+
ShutterButton.new(shutterItem.content, "Lookout Update", flippedySwitch).connect(SEL_COMMAND) { @switcher.current = 11 }
|
115
|
+
|
116
|
+
shutterItem = ShutterItem.new(@shutter, "Other Shortcuts")
|
117
|
+
ShutterButton.new(shutterItem.content, "My Computer", angryGuy).connect(SEL_COMMAND) { @switcher.current = 12 }
|
118
|
+
ShutterButton.new(shutterItem.content, "My Documents", net).connect(SEL_COMMAND) { @switcher.current = 13 }
|
119
|
+
ShutterButton.new(shutterItem.content, "Favorites", leGoon).connect(SEL_COMMAND) { @switcher.current = 14 }
|
120
|
+
|
121
|
+
# Right pane is a switcher
|
122
|
+
# For a real application, each panel in the switcher would have real, working contents...
|
123
|
+
@switcher = FXSwitcher.new(splitter,
|
124
|
+
FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
125
|
+
|
126
|
+
FXLabel.new(@switcher,
|
127
|
+
"Lookout Today!\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
128
|
+
FXLabel.new(@switcher, "Inbox\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
129
|
+
FXLabel.new(@switcher, "Calendar\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
130
|
+
FXLabel.new(@switcher, "Contacts\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
131
|
+
FXLabel.new(@switcher, "Tasks\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
132
|
+
FXLabel.new(@switcher, "Notes\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
133
|
+
FXLabel.new(@switcher, "Deleted Items\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
134
|
+
|
135
|
+
FXLabel.new(@switcher, "Drafts\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
136
|
+
FXLabel.new(@switcher, "Outbox\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
137
|
+
FXLabel.new(@switcher, "Sent Items\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
138
|
+
FXLabel.new(@switcher, "Journal\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
139
|
+
FXLabel.new(@switcher, "Lookout Update\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
140
|
+
|
141
|
+
FXLabel.new(@switcher, "My Computer\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
142
|
+
FXLabel.new(@switcher, "My Documents\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
143
|
+
FXLabel.new(@switcher, "Favorites\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
144
|
+
end
|
145
|
+
|
146
|
+
def create
|
147
|
+
super
|
148
|
+
@shutter.width = 1.25*@shutter.width
|
149
|
+
show(PLACEMENT_SCREEN)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
if __FILE__ == $0
|
154
|
+
application = FXApp.new("Shutter", "FoxTest")
|
155
|
+
ShutterWindow.new(application)
|
156
|
+
application.create
|
157
|
+
application.run
|
158
|
+
end
|