Compile Time Changes

The following changes were made to support development efforts of the new UI.

The Library and CompanyLibrary constructors have been modified as follows:

// Library
Removed: public constructor(LibraryLimb tree, symbol pkg, bool rebuildOnUserLevelChange=false, function() viewModeHook=null) {}
Added: public constructor(LibraryLimb tree,
                          symbol pkg,
                          bool rebuildOnUserLevelChange=false,
                          bool facelift=false, // ADDED
                          LibraryHeaderBuilder headerBuilder=null, // ADDED
                          function() viewModeHook=null) {}

// CompanyLibrary
Removed: public constructor(LibraryLimb tree,
                            symbol pkg,
                            bool rebuildOnUserLevelChange=false,
                            str companyKey=null,
                            version version=version(0, 0, 0),
                            function() viewModeHook=null) {}
Added: public constructor(LibraryLimb tree,
                          symbol pkg,
                          bool rebuildOnUserLevelChange=false,
                          bool facelift=false, // ADDED
                          LibraryHeaderBuilder headerBuilder=null, // ADDED
                          str companyKey=null,
                          version version=version(0, 0, 0),
                          function() viewModeHook=null) {}

The constructor for LibraryLimb has been changed, and LibraryLimb now stores a UIHint in a field, so UIHint fields in subclasses have been removed:

// LibraryLimb
Removed: public constructor(symbol pkg,
                            str key,
                            Image image=null,
                            bool frame=true,
                            str label=null,
                            str toolTipText=null,
                            Image toolTipImage=null,
                            SectionButton[] buttons=null,
                            SrcRef src=null) {}
Added: public constructor(symbol pkg,
                          str key,
                          Image image=null,
                          bool frame=true,
                          str label=null,
                          str toolTipText=null,
                          Image toolTipImage=null,
                          SectionButton[] buttons=null, // ADDED
                          UIHint hint=null, // ADDED
                          SrcRef src=null) {}

// AutoGroupLimb
Removed: public UIHint hint;

// ComponentLimb
Removed: public UIHint hint;

// SettingLimb
Removed: public UIHint hint;

// VoidCallbackLimb
Removed: public UIHint hint;

The UIHint class and its child classes have changed in the following ways:

// UIHInt
Removed: public constructor(bool showLabel=false,
                            bool prefer3D=false,
                            sizeI preferSize=(-1, -1)) {}
Added: public constructor(bool showLabel=false,
                          bool prefer3D=false,
                          sizeI preferSize=(-1, -1),
                          int columns=0, // ADDED
                          alignment align=middle, // ADDED
                          pointI margins=(-1, -1) // ADDED
                          ) {}

Deprecated: public class UIMarginsHint extends UIHint {}

// UIFrameHint
Removed: public pointI margins;

// UITextSideHint
Removed: public constructor(alignment textSide,
                            bool showLabel=false,
                            bool prefer3D=false,
                            sizeI preferSize=(24, 24)) {}

Added: public constructor(alignment textSide,
                          bool showLabel=false,
                          bool prefer3D=false,
                          sizeI preferSize=(24, 24),
                          alignment align=middle // ADDED
                          ) {}

// UIImageHint
Removed: public pointI margins;

Removed: public constructor(bool showLabel=false,
                            Image image=null,
                            alignment textSide=alignment.down,
                            FrameStyle frameStyle=null,
                            pointI margins=(-1, -1),
                            sizeI preferSize=(-1, -1)) {}

Added: public constructor(bool showLabel=false,
                          Image image=null,
                          alignment textSide=alignment.down,
                          FrameStyle frameStyle=null,
                          pointI margins=(-1, -1),
                          sizeI preferSize=(-1, -1),
                          int columns=0, // ADDED
                          alignment align=middle // ADDED
                          ) {}

// UIBrushHoverHint
Removed: public pointI margins;

UIBuilder has had the following changes to its fields:

Removed: public int mg;

UIGroupBuilder has had the following changes to its methods:

Removed: extend public Window build(UIBuilder uiBuilder, LibraryLimb limb, Window window) {}
Added: extend public Window build(UIBuilder uiBuilder,
                                  LibraryLimb limb,
                                  Window window,
                                  bool subsection=false /** ADDED **/) {}

UIGroupOrganizerEnv has had the following changes:

Removed: public int mg;
Added: public Margins margins;

Removed: final public int mg() {}
Added: final public Margins mg() {}

OldSchoolGroupOrganizer has been completely removed.

Runtime/Behavior Changes

The following changes were made to support development efforts of the new UI.

A new automatic caching system has been added for extension libraries, so any custom caching should be removed in order to not conflict with it.

UIHints now apply to children of the LibraryLimb as well. This allows applying the same hint to all child limbs without explicitly passing it in to each one. You can still override the hint by applying a different hint to the limb.