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
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fox
|
2
|
+
#
|
3
|
+
# The Main Window is usually the central window of an application. Applications
|
4
|
+
# may have any number of main windows.
|
5
|
+
# When a MainWindow is closed, it sends a SEL_CLOSE message to its target; the target
|
6
|
+
# should return 0 if there is no objection against proceeding with the close, and
|
7
|
+
# return 1 otherwise.
|
8
|
+
# After the SEL_CLOSE message has been sent and no objection was raised, the main
|
9
|
+
# window will delete itself.
|
10
|
+
#
|
11
|
+
# === Events
|
12
|
+
#
|
13
|
+
# The following messages are sent by FXMainWindow to its target:
|
14
|
+
#
|
15
|
+
# +SEL_CLOSE+::
|
16
|
+
# sent when the user clicks the close button in the upper right-hand
|
17
|
+
# corner of the main window.
|
18
|
+
#
|
19
|
+
class FXMainWindow < FXTopWindow
|
20
|
+
#
|
21
|
+
# Construct a main window
|
22
|
+
#
|
23
|
+
def initialize(app, title, icon=nil, miniIcon=nil, opts=DECOR_ALL, x=0, y=0, width=0, height=0, padLeft=0, padRight=0, padTop=0, padBottom=0, hSpacing=4, vSpacing=4) # :yields: theMainWindow
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Fox
|
2
|
+
#
|
3
|
+
# The FXMatrix layout manager automatically arranges its child windows
|
4
|
+
# in rows and columns. If the matrix style is +MATRIX_BY_ROWS+, then
|
5
|
+
# the matrix will have the given number of rows and the number of columns
|
6
|
+
# grows as more child windows are added; if the matrix style is +MATRIX_BY_COLUMNS+,
|
7
|
+
# then the number of columns is fixed and the number of rows grows as more children
|
8
|
+
# are added.
|
9
|
+
# If all children in a row (column) have the +LAYOUT_FILL_ROW+ (+LAYOUT_FILL_COLUMN+)
|
10
|
+
# hint set, then the row (column) will be stretchable as the matrix layout manager
|
11
|
+
# itself is resized. If more than one row (column) is stretchable, the space is
|
12
|
+
# apportioned to each stretchable row (column) proportionally.
|
13
|
+
# Within each cell of the matrix, all other layout hints are observed.
|
14
|
+
# For example, a child having +LAYOUT_CENTER_Y+ and +LAYOUT_FILL_X+ hints will
|
15
|
+
# be centered in the Y-direction, while being stretched in the X-direction.
|
16
|
+
# Empty cells can be obtained by simply placing a borderless FXFrame widget
|
17
|
+
# as a space-holder.
|
18
|
+
#
|
19
|
+
# === Matrix packing options
|
20
|
+
#
|
21
|
+
# +MATRIX_BY_ROWS+:: Fixed number of rows, add columns as needed
|
22
|
+
# +MATRIX_BY_COLUMNS+:: Fixed number of columns, adding rows as needed
|
23
|
+
#
|
24
|
+
class FXMatrix < FXPacker
|
25
|
+
|
26
|
+
# Matrix style [Integer]
|
27
|
+
attr_accessor :matrixStyle
|
28
|
+
|
29
|
+
# Number of rows [Integer]
|
30
|
+
attr_accessor :numRows
|
31
|
+
|
32
|
+
# Number of columns [Integer]
|
33
|
+
attr_accessor :numColumns
|
34
|
+
|
35
|
+
#
|
36
|
+
# Construct a matrix layout manager with _n_ rows or columns
|
37
|
+
#
|
38
|
+
def initialize(parent, n=1, opts=MATRIX_BY_ROWS, x=0, y=0, width=0, height=0, padLeft=DEFAULT_SPACING, padRight=DEFAULT_SPACING, padTop=DEFAULT_SPACING, padBottom=DEFAULT_SPACING, hSpacing=DEFAULT_SPACING, vSpacing=DEFAULT_SPACING) # :yields: theMatrix
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# Obtain the child placed at a certain _row_ and _column_.
|
43
|
+
#
|
44
|
+
def childAtRowCol(row, column); end
|
45
|
+
|
46
|
+
#
|
47
|
+
# Return the row in which the given _child_ is placed.
|
48
|
+
#
|
49
|
+
def rowOfChild(child); end
|
50
|
+
|
51
|
+
#
|
52
|
+
# Return the column in which the given _child_ is placed.
|
53
|
+
#
|
54
|
+
def colOfChild(child); end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Fox
|
2
|
+
class FXMemoryBuffer
|
3
|
+
|
4
|
+
#
|
5
|
+
# Return a new FXMemoryBuffer instance, initialized with the
|
6
|
+
# provided array of FXColor values.
|
7
|
+
#
|
8
|
+
# ==== Parameters:
|
9
|
+
#
|
10
|
+
# +data+:: the initial array of FXColor values.
|
11
|
+
#
|
12
|
+
def initialize(data); end
|
13
|
+
|
14
|
+
# Return a copy of the pixel buffer, as an array of FXColor values [Array]
|
15
|
+
def data; end
|
16
|
+
alias to_a data
|
17
|
+
|
18
|
+
# Return the size of the pixel buffer
|
19
|
+
def size; end
|
20
|
+
|
21
|
+
# Return the specified element (an FXColor value)
|
22
|
+
def [](index); end
|
23
|
+
|
24
|
+
# Set the specified element to _clr_.
|
25
|
+
def []=(index, clr); end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Fox
|
2
|
+
#
|
3
|
+
# A FXMemoryStream is a stream that reads from (or writes to) a buffer of bytes in memory.
|
4
|
+
# That buffer may "owned" by either the application code or by the stream object itself.
|
5
|
+
# In the latter case, the stream object will dispose of the buffer contents when the stream
|
6
|
+
# is closed.
|
7
|
+
#
|
8
|
+
class FXMemoryStream < FXStream
|
9
|
+
|
10
|
+
attr_reader :position
|
11
|
+
|
12
|
+
#
|
13
|
+
# Construct a new memory stream with given container object.
|
14
|
+
# The container object is an object that will itself not be
|
15
|
+
# saved to or loaded from the stream, but which may be referenced
|
16
|
+
# by other objects. These references will be properly saved and restored.
|
17
|
+
#
|
18
|
+
# ==== Parameters:
|
19
|
+
#
|
20
|
+
# +cont+:: the container object, or +nil+ if there is none [FXObject].
|
21
|
+
#
|
22
|
+
def initialize(cont=nil) # :yields: theMemoryStream
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# Open memory stream for reading or writing.
|
27
|
+
# Returns +true+ if successful, +false+ otherwise.
|
28
|
+
#
|
29
|
+
# ==== Parameters:
|
30
|
+
#
|
31
|
+
# +save_or_load+:: access mode, either +FXStreamSave+ or +FXStreamLoad+ [Integer]
|
32
|
+
# +data+:: memory buffer to be used for the stream, or +nil+ if the stream object should allocate its own buffer [String]
|
33
|
+
#
|
34
|
+
def open(save_or_load, data); end
|
35
|
+
|
36
|
+
#
|
37
|
+
# Take buffer away from stream, thus transferring ownership of the buffer
|
38
|
+
# from the stream object to the caller.
|
39
|
+
# Returns a string containing the buffer contents.
|
40
|
+
#
|
41
|
+
def takeBuffer; end
|
42
|
+
|
43
|
+
#
|
44
|
+
# Give buffer (a string) to this stream, thus transferring ownership of
|
45
|
+
# the buffer from the caller to the stream object.
|
46
|
+
#
|
47
|
+
def giveBuffer(buffer); end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Fox
|
2
|
+
#
|
3
|
+
# Menu bar
|
4
|
+
#
|
5
|
+
class FXMenuBar < FXToolBar
|
6
|
+
#
|
7
|
+
# Construct a floatable menubar.
|
8
|
+
# Normally, the menubar is docked under window _p_.
|
9
|
+
# When floated, the menubar can be docked under window _q_, which is
|
10
|
+
# typically an FXToolBarShell window.
|
11
|
+
#
|
12
|
+
def initialize(p, q, opts=LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FILL_X, x=0, y=0, width=0, height=0, padLeft=3, padRight=3, padTop=2, padBottom=2, hSpacing=DEFAULT_SPACING, vSpacing=DEFAULT_SPACING) # :yields: theMenuBar
|
13
|
+
end
|
14
|
+
|
15
|
+
#
|
16
|
+
# Construct a non-floatable menubar.
|
17
|
+
# The menubar can not be undocked.
|
18
|
+
#
|
19
|
+
def initialize(p, opts, x=0, y=0, width=0, height=0, padLeft=3, padRight=3, padTop=2, padBottom=2, hSpacing=DEFAULT_SPACING, vSpacing=DEFAULT_SPACING) # :yields: theMenuBar
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module Fox
|
2
|
+
#
|
3
|
+
# An FXMenuButton posts a popup menu when clicked.
|
4
|
+
# There are many ways to control the placement where the popup will appear;
|
5
|
+
# first, the popup may be placed on either of the four sides relative to the
|
6
|
+
# menu button; this is controlled by the flags +MENUBUTTON_DOWN+, etc.
|
7
|
+
# Next, there are several attachment modes; the popup's left/bottom edge may
|
8
|
+
# attach to the menu button's left/top edge, or the popup's right/top edge may
|
9
|
+
# attach to the menu button's right/bottom edge, or both.
|
10
|
+
# Also, the popup may appear centered relative to the menu button.
|
11
|
+
# Finally, a small offset may be specified to displace the location of the
|
12
|
+
# popup by a few pixels so as to account for borders and so on.
|
13
|
+
# Normally, the menu button shows an arrow pointing to the direction where
|
14
|
+
# the popup is set to appear; this can be turned off by passing the option
|
15
|
+
# +MENUBUTTON_NOARROWS+.
|
16
|
+
#
|
17
|
+
# === Events
|
18
|
+
#
|
19
|
+
# The following messages are sent by FXMenuButton to its target:
|
20
|
+
#
|
21
|
+
# +SEL_KEYPRESS+:: sent when a key goes down; the message data is an FXEvent instance.
|
22
|
+
# +SEL_KEYRELEASE+:: sent when a key goes up; the message data is an FXEvent instance.
|
23
|
+
# +SEL_LEFTBUTTONPRESS+:: sent when the left mouse button goes down; the message data is an FXEvent instance.
|
24
|
+
# +SEL_LEFTBUTTONRELEASE+:: sent when the left mouse button goes up; the message data is an FXEvent instance.
|
25
|
+
#
|
26
|
+
# === Menu Button Style Flags
|
27
|
+
#
|
28
|
+
# Any combination of the following flags can be assigned as the menu
|
29
|
+
# button style flags.
|
30
|
+
#
|
31
|
+
# +MENUBUTTON_AUTOGRAY+:: Automatically gray out when no target
|
32
|
+
# +MENUBUTTON_AUTOHIDE+:: Automatically hide when no target
|
33
|
+
# +MENUBUTTON_TOOLBAR+:: Toolbar style
|
34
|
+
# +MENUBUTTON_NOARROWS+:: Do not show arrows
|
35
|
+
#
|
36
|
+
# === Menu Button Popup Style
|
37
|
+
#
|
38
|
+
# Any one of the following options can be assigned as the menu
|
39
|
+
# button's popup style.
|
40
|
+
#
|
41
|
+
# +MENUBUTTON_DOWN+:: Popup window appears below menu button
|
42
|
+
# +MENUBUTTON_UP+:: Popup window appears above menu button
|
43
|
+
# +MENUBUTTON_LEFT+:: Popup window to the left of the menu button
|
44
|
+
# +MENUBUTTON_RIGHT+:: Popup window to the right of the menu button
|
45
|
+
#
|
46
|
+
# === Menu Button Attachment
|
47
|
+
#
|
48
|
+
# Any combination of the following flags can be assigned as the menu
|
49
|
+
# button's attachment flags.
|
50
|
+
#
|
51
|
+
# +MENUBUTTON_ATTACH_LEFT+:: Popup attaches to the left side of the menu button
|
52
|
+
# +MENUBUTTON_ATTACH_TOP+:: Popup attaches to the top of the menu button
|
53
|
+
# +MENUBUTTON_ATTACH_RIGHT+:: Popup attaches to the right side of the menu button
|
54
|
+
# +MENUBUTTON_ATTACH_BOTTOM+:: Popup attaches to the bottom of the menu button
|
55
|
+
# +MENUBUTTON_ATTACH_CENTER+:: Popup attaches to the center of the menu button
|
56
|
+
# +MENUBUTTON_ATTACH_BOTH+:: Popup attaches to both sides of the menu button
|
57
|
+
#
|
58
|
+
class FXMenuButton < FXLabel
|
59
|
+
|
60
|
+
# The popup menu [FXPopup]
|
61
|
+
attr_accessor :menu
|
62
|
+
|
63
|
+
# X-offset where menu pops up relative to button [Integer]
|
64
|
+
attr_accessor :xOffset
|
65
|
+
|
66
|
+
# Y-offset where menu pops up relative to button [Integer]
|
67
|
+
attr_accessor :yOffset
|
68
|
+
|
69
|
+
# Menu button style [Integer]
|
70
|
+
attr_accessor :buttonStyle
|
71
|
+
|
72
|
+
# Popup style [Integer]
|
73
|
+
attr_accessor :popupStyle
|
74
|
+
|
75
|
+
# Attachment [Integer]
|
76
|
+
attr_accessor :attachment
|
77
|
+
|
78
|
+
#
|
79
|
+
# Constructor
|
80
|
+
#
|
81
|
+
def initialize(parent, text, icon=nil, popupMenu=nil, opts=JUSTIFY_NORMAL|ICON_BEFORE_TEXT|MENUBUTTON_DOWN, x=0, y=0, width=0, height=0, padLeft=DEFAULT_SPACING, padRight=DEFAULT_SPACING, padTop=DEFAULT_SPACING, padBottom=DEFAULT_SPACING) # :yields: theMenuButton
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Fox
|
2
|
+
#
|
3
|
+
# The menu caption is a widget which can be used as a caption
|
4
|
+
# above a number of menu commands in a menu.
|
5
|
+
#
|
6
|
+
# === Menu caption options
|
7
|
+
#
|
8
|
+
# +MENU_AUTOGRAY+:: Automatically gray out when not updated
|
9
|
+
# +MENU_AUTOHIDE+:: Automatically hide button when not updated
|
10
|
+
#
|
11
|
+
class FXMenuCaption < FXWindow
|
12
|
+
|
13
|
+
# The text for this menu [String]
|
14
|
+
attr_accessor :text
|
15
|
+
|
16
|
+
# The icon for this menu [FXIcon]
|
17
|
+
attr_accessor :icon
|
18
|
+
|
19
|
+
# The text font [FXFont]
|
20
|
+
attr_accessor :font
|
21
|
+
|
22
|
+
# Text color [FXColor]
|
23
|
+
attr_accessor :textColor
|
24
|
+
|
25
|
+
# Selection background color [FXColor]
|
26
|
+
attr_accessor :selBackColor
|
27
|
+
|
28
|
+
# Selection text color [FXColor]
|
29
|
+
attr_accessor :selTextColor
|
30
|
+
|
31
|
+
# Highlight color [FXColor]
|
32
|
+
attr_accessor :hiliteColor
|
33
|
+
|
34
|
+
# Shadow color [FXColor]
|
35
|
+
attr_accessor :shadowColor
|
36
|
+
|
37
|
+
# Status line help text for this menu [String]
|
38
|
+
attr_accessor :helpText
|
39
|
+
|
40
|
+
# Tool tip message for this menu [String]
|
41
|
+
attr_accessor :tipText
|
42
|
+
|
43
|
+
#
|
44
|
+
# Construct a new menu caption
|
45
|
+
#
|
46
|
+
def initialize(parent, text, icon=nil, opts=0) # :yields: theMenuCaption
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Fox
|
2
|
+
#
|
3
|
+
# The cascade menu widget is used to bring up a sub menu from a
|
4
|
+
# pull down menu.
|
5
|
+
#
|
6
|
+
class FXMenuCascade < FXMenuCaption
|
7
|
+
|
8
|
+
# The popup menu [FXPopup]
|
9
|
+
attr_accessor :menu
|
10
|
+
|
11
|
+
#
|
12
|
+
# Construct a menu cascade responsible for the given popup menu
|
13
|
+
#
|
14
|
+
def initialize(parent, text, icon=nil, popupMenu=nil, opts=0) # :yields: theMenuCascade
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Fox
|
2
|
+
#
|
3
|
+
# The FXMenuCheck widget is used to change a state in the application from a menu.
|
4
|
+
# Menu checks may reflect the state of the application by graying out, becoming
|
5
|
+
# hidden, or by a check mark.
|
6
|
+
# When activated, a menu check sends a +SEL_COMMAND+ message to its target;
|
7
|
+
# the message data contains the new state (one of +TRUE+, +FALSE+ or +MAYBE+).
|
8
|
+
#
|
9
|
+
# === Events
|
10
|
+
#
|
11
|
+
# The following messages are sent by FXMenuCheck to its target:
|
12
|
+
#
|
13
|
+
# +SEL_COMMAND+:: sent when the command is activated
|
14
|
+
#
|
15
|
+
class FXMenuCheck < FXMenuCommand
|
16
|
+
|
17
|
+
# Check state, one of +TRUE+, +FALSE+ or +MAYBE+
|
18
|
+
attr_accessor :check
|
19
|
+
|
20
|
+
# Box background color [FXColor]
|
21
|
+
attr_accessor :boxColor
|
22
|
+
|
23
|
+
#
|
24
|
+
# Construct a menu check
|
25
|
+
#
|
26
|
+
def initialize(p, text, target=nil, selector=0, opts=0) # :yields: theMenuCheck
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fox
|
2
|
+
#
|
3
|
+
# The FXMenuCommand widget is used to invoke a command in the
|
4
|
+
# application from a menu. Menu commands may reflect
|
5
|
+
# the state of the application by graying out or becoming hidden.
|
6
|
+
# When activated, a menu command sends a +SEL_COMMAND+ to its target.
|
7
|
+
#
|
8
|
+
# === Events
|
9
|
+
#
|
10
|
+
# The following messages are sent by FXMenuCommand to its target:
|
11
|
+
#
|
12
|
+
# +SEL_COMMAND+:: sent when the command is activated
|
13
|
+
#
|
14
|
+
class FXMenuCommand < FXMenuCaption
|
15
|
+
|
16
|
+
# Accelerator text [String]
|
17
|
+
attr_accessor :accelText
|
18
|
+
|
19
|
+
#
|
20
|
+
# Construct a menu command
|
21
|
+
#
|
22
|
+
def initialize(p, text, ic=nil, target=nil, selector=0, opts=0) # :yields: theMenuCommand
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Fox
|
2
|
+
#
|
3
|
+
# The FXMenuRadio widget is used to change a state in the application from a menu.
|
4
|
+
# Menu radio commands may reflect the state of the application by graying out, becoming
|
5
|
+
# hidden, or by displaying a bullet.
|
6
|
+
# When activated, a menu radio sends a +SEL_COMMAND+ to its target;
|
7
|
+
# the message data contains the new state.
|
8
|
+
# A collection of menu radio widgets which belong to each other
|
9
|
+
# is supposed to be updated by a common +SEL_UPDATE+ handler to
|
10
|
+
# properly maintain the state between them.
|
11
|
+
#
|
12
|
+
# === Events
|
13
|
+
#
|
14
|
+
# The following messages are sent by FXMenuRadio to its target:
|
15
|
+
#
|
16
|
+
# +SEL_COMMAND+:: sent when the command is activated
|
17
|
+
#
|
18
|
+
class FXMenuRadio < FXMenuCommand
|
19
|
+
|
20
|
+
# Radio button state, one of +TRUE+, +FALSE+ or +MAYBE+
|
21
|
+
attr_accessor :check
|
22
|
+
|
23
|
+
# Radio background color [FXColor]
|
24
|
+
attr_accessor :radioColor
|
25
|
+
|
26
|
+
#
|
27
|
+
# Construct a menu radio
|
28
|
+
#
|
29
|
+
def initialize(p, text, target=nil, selector=0, opts=0) # :yields: theMenuRadio
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|