Appendix D. The FXRuby Standard Library
Prev | Part II. Appendices | Next

## Appendix D. The FXRuby Standard Library

While the majority of FXRuby is in fact implemented by an extension module, some parts are provided instead by "pure Ruby" code. This section describes the classes and modules available in the FXRuby standard library.

## Undoable Commands

The `fox16/undolist.rb` file provides the `FXCommand` and `FXUndoList` classes. These serve the same purpose as the `FXCommand` and `FXUndoList` classes from the standard FOX distribution, but they're implemented entirely in Ruby.

For a complete description of these classes and how to use them, see the RD documentation in `fox16/undolist.rb`.

## Aliases

The `fox16/aliases.rb` implements most of the accessor-style aliases for methods. This file is loaded automatically when you

    require 'fox16'

and so you should never need to load it directly.

## Color Names

The `fox16/colors.rb` file, contributed by Jeff Heard, provides a bunch of predefined color values (based on the standard X11 color names). You can use these color constants anywhere that FOX expects an RGB color value, e.g.

    dc = FXDCWindow.new(drawable, ev)
    dc.foreground = FXColor::MistyRose      # instead of FXRGB(255, 228, 225)
    dc.background = FXColor::MidnightBlue   # instead of FXRGB( 25,  25, 112)

## OpenGL Shapes

The `fox16/glshapes.rb` library provides Ruby implementations of a number of basic 3-D shapes (all derived from the built-in `FXGLShape` class) that can be used with the `FXGLViewer`. Several of these shapes are used in the `glviewer.rb` example program. These shapes were originally implemented in C++ and wrapped using SWIG, but they are straightforward enough to implement in Ruby so they were moved out to this library instead.

## Iterators

The `fox16/iterators.rb` library just adds an `each` instance method for the `FXComboBox`, `FXGLGroup`, `FXHeader`, `FXIconList`, `FXList`, `FXListBox`, `FXTable`, `FXTreeItem`, `FXTreeList` and `FXTreeListBox` classes, so that you can iterate over their members in a Ruby-friendly way. It also mixes the `Enumerable` module into each of these classes.

## Key Codes

The `fox16/keys.rb` library file defines all of the key codes (e.g. `KEY_space`) that might show up in the code field of an `FXEvent` instance. This file is loaded automatically when you

    require 'fox16'

and so you should never need to load it directly.

## Calendar Widget

The `fox16/calendar.rb` library file provides the `FXCalendar` widget, contributed by David Naseby.

Prev | Up | Next
Appendix C. Differences between FOX and FXRuby | Home | Appendix E. Implementation