Custom images for checkbox and radio buttons

The individual tool icons created by toolboxlayoutmanager.C are nothing more than customized radio buttons. Existing radio buttons have all the needed functionality to implement the individual toolbox tools: choosing a new icon automatically deselects the previous icon. This is stock radio button functionality: selecting one radio button deselects the previous one.

x::w::radio_config config;
config.images={icon_set[0], icon_set[1]};

config.visible_focusoff_border();
auto b=f->create_radio(rg,
                       [](const auto &f) {},
                       config);

A factory's create_radio() method takes an optional x::w::radio_config parameter that specifies a custom configuration for the new radio button (create_checkbox() has an optional x::w::checkbox_config parameter). The images member is a vector of custom images for the radio button: typically two filenames, the normal and the selected radio button image.

All toolbox icon images should have the same width and height, for best results using the toolbox layout manager. Image files can be png, gif, and jpg images; in addition to the LibCXXW-specific SXG format. png, gif, and jpg images have a fixed size. SXG images are scalable. toolboxlayoutmanager.C loads a set of SXG images from LibCXXW's default theme, whose size gets automatically scaled in sync with the current display theme.

Custom application image filenames should include a path component. Use ./filename to load an image file from the current directory. This is because filenames without a path components are also searched in LibCXXW's theme directory.