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.


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 =, 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.


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.