Each widget "belongs" to a set, which is assigned to the current set when the widget is constructed.
The actual implementation is to change the pointers such as fltk::Widget::default_style for every widget class to point to a new copy, so when the constructors for each widget are run they assign the new copy. The previous copies are saved and restored if the older set name is used.
There are some problems. Many widgets are dynamically created (for instance pop-up menus) and may not inherit the expected theme unless you are careful. Also some global things such as the background color cannot be seperated into sets.
Make this set be current. All widgets created after this use this set, and calling fltk::Style::reload_theme() will change the styles belonging to tis set.