GLMotif -- OpenGL 3D Widget Library

The GLMotif library contains classes to implement 3D graphical user interfaces using a collection of widgets similar in look and behavior to typical 2D widgets, but represented as 3D objects. The GLMotif widget set is especially useful to develop user interfaces for virtual reality applications. GLMotif uses the CallbackData/CallbackList mechanism provided by the Misc library to connect widget events to application functions.

Header Files

Types.h
Types.h contains several typedefs defining fundamental data types used by the GLMotif library, such as the scalar type, point and vector types, color types, etc.
GlyphGadget.h
GlyphGadget is a helper class to render common types of 2.5D glyphs used by widgets.
Alignment.h
Alignment is a helper structure to define the horizontal and vertical alignment of smaller objects inside larger frames.
Event.h
Event is a class describing events in a 3D user interface. An event is either a button press event, a button release event, or a pointer motion event. Pointer positions inside events can either be defined as absolute positions in 3D space, or as rays that are intersected with interested widgets to calculate 3D positions on-the-fly.
TextEvent.h
TextEvent is a class describing text entry events, and stores a single character or multi-character strings.
TextControlEvent.h
TextControlEvent is a class describing text entry control events, such as cursor movement, delete / backspace, or cut & paste.
StyleSheet.h
StyleSheet is a helper class defining layout parameters for widgets to achieve a consistent look&feel between GUI elements.
Draggable.h
Draggable is a mix-in class to denote widgets that can be used to change their root widget's widget transformations.
Widget.h
Widget is the base class for all 3D user interface components.
WidgetManager.h
WidgetManager is a class managing separate 3D user interface elements as a hierarchy of top-level widgets, and responsible for mapping 2 1/2D widgets into 3D application space.
Container.h
Container is the base class for all widgets that contain other widgets, forming the basis for the widget hierarchy of all user interface elements.
SingleChildContainer.h
SingleChildContainer is a base class for widgets that contain exactly one child window, and contains default implementations of the relevant methods from Container to reduce the complexity of creating simple container widget classes.
Margin.h
Margin is a class for margins around single child widgets, to inset the child widget by a fixed amount, and/or to pad the child widget into boxes larger than its natural size, with selectable alignments.
Popup.h
Popup is a class for simple top-level widgets that contain an optional title and a single child widget.
Blind.h
Blind is a simple widget class for widgets without graphical elements, mostly used to provide empty space in layout containers.
Glyph.h
Glyph is a simple widget class for widgets containing only a 2.5D glyph.
Separator.h
Separator is a widget class to visually separate adjacent components in a widget layout.
Image.h
Image is a class for widgets displaying color images.
Label.h
Label is a class for widgets containing a single line of text.
TextField.h
TextField is a class for widgets displaying a single line of text as a value. TextField is very similar to Label, but with the semantic difference that Label displays static text, whereas TextField displays variable (and potentially editable) text.
Button.h
Button is a class for widgets that can be selected to cause an action. Button is derived from Label and displays a single line of text.
NewButton.h
NewButton is a replacement for the Button widget class. Instead of being derived from Label, it is a container with a single child widget that it can pop in or out. This allows to use arbitrary widgets as button interiors, including blinds, labels, and icons (if they ever get implemented).
DecoratedButton.h
DecoratedButton is a subclass of Button that adds a 3D decoration, such as a toggle indicator or a cascade arrow.
ToggleButton.h
ToggleButton is a subclass of DecoratedButton that contains a toggle indicator. The toggle indicator can be either a square (to represent a stand-alone toggle) or a diamond (to represent a radio button).
CascadeButton.h
CascadeButton is a subclass of DecoratedButton that adds a cascade arrow, and pops up a child widget when the button is activated.
DragWidget.h
DragWidget is a mix-in class denoting widgets that support dragging operations in their area, such as sliders.
Slider.h
Slider is a subclass of DragWidget to change a floating-point value linearly between two extremes by dragging with the pointing device.
TextFieldSlider.h
TextFieldSlider is a compound widget class consisting of a slider and a text field displaying the slider's current value.
HSVColorSelector.h
HSVColorSelector is a compound widget class consisting of a color hexagon and a slider to select an RGB color using an interface based on the HSV color model.
MaterialEditor.h
MaterialEditor is a compound widget class consisting of several HSV color selectors and a slider to select OpenGL material properties.
ScrollBar.h>
ScrollBar is a class for horizontal or vertical scroll bars, used to move a "sliding window" through a larger space. Scroll bars are similar to sliders in function, but are used for a different purpose.
ListBox.h
ListBox is a class to display a variable list of text items in a fixed-size widget. Supports selection of items and dynamic insertion/removal; typically used in conjunction with a (set of) scroll bar(s) to change the subset of visible items.
ScrolledListBox.h
ScrolledListBox is a compound widget class consisting of a list box and a vertical and optional horizontal scroll bar linked to the list box.
RowColumn.h
RowColumn is a subclass of Container that automatically lays out its children in a gridded fashion.
RadioBox.h
RadioBox is a subclass of RowColumn that can only contain ToggleButton widgets, and enforces radio box behavior between all its children, i.e., at most one child can be toggled at any time.
DropdownBox.h
DropdownBox is a subclass of label that allows a user to choose one from a fixed list of items, and displays the currently selected item as its label.
Menu.h
Menu is a subclass of RowColumn containing only widgets derived from Button.
SubMenu.h
SubMenu is a subclass of RowColumn containing only widgets derived from Button, and acting as a sub-menu of another popup menu.
PopupMenu.h
PopupMenu is a subclass of Popup and implements menus that require only a single button press/pointer move/button release sequence to pop up a menu and select one of its choices.
Pager.h
Pager is a subclass of Container that lays out its children as pages in a flipbook, with a row of buttons to select the currently-displayed page.
TitleBar.h
TitleBar is a helper class representing the title bars of popup windows, such that dragging a TitleBar changes the position of its parent window in application space.
PopupWindow.h
PopupWindow is a class representing permanent windows such as dialog boxes or panels. Popup windows can be moved by dragging their title bars, and, if enabled, can be resized by dragging their borders.
FileSelectionDialog.h
FileSelectionDialog is a compound widget class providing applications with a standard user interface to select (existing) files from the file system. Its design follows the Gnome file selection dialog, and it features settable lists of file types for filtering.
FileSelectionHelper.h
FileSelectionHelper is a helper class to simplify handling file selection dialogs and their association with menu / dialog buttons.
WidgetStateHelper.h
WidgetStateHelper.h contains namespace-global functions to read/write widget state from/to configuration files.
WidgetAlgorithms.h
WidgetAlgorithms.h contains a namespace-global function that traverses an entire tree of widgets and applies a given functor to each widget in turn.