For 15.5 onwards, support for button press events was introduced. For more information on this topic, please refer to the implementation article on Analytics available here: https://support.configura.com/hc/en-us/articles/24381012443159-Developing-for-Extension-Analytics
UI Levels in Catalog Table of Contents are updated to:
Find out more about it here: Catalogue Table of Contents with the New UI - Design System
To support filtering of MaterialLegend
s, ObjFilter
s are utilized to filter materials in the legend. As a result, the following interface was added.
Added: extend public void initFilters() {} Added: extend public ObjFilter activeFilter() {} Added: extend public void activateFilter(ObjFilter filter) {} Added: extend public void deactivateFilter() {} Added: extend public ObjFilter{} filters() {} Added: extend public ObjFilter[] filterSeq() {} Added: extend public void appendFilter(ObjFilter filter) {} Added: extend public void appendFilters(ObjFilter{} newFilters) {} Added: extend public void appendFilters(ObjFilter[] newFilters) {} Added: public void removeFilter(ObjFilter filter) {} Added: // initializes filters when MaterialLegendSnapper is dropped in Space public void dropped() { if (_filters.empty()) initFilters(); super(); }
To support filtering of MaterialLegend
s, ObjFilter
s are utilized to filter materials in the legend. As a result, the following interface was added.
Added: public constructor(ObjFilter filter, str header, symbol resPkg=#:package : caller eval) {} Added: extend public ObjFilter filter() {} Added: extend public void setFilter(ObjFilter filter) {} Added: extend public void removeFilter() {} Modified: extend public void appendItem(str key, LegendItem item) { if (filter and !filter.accepts(item)) return; // ADDED if (key !in items) items.put(key, item); }
// snapper3DMemortButtons.cm public constructor(Window parent, DsPData data, bool facelift, ...)
An override of the following parent functions in cm.abstract.material.comMaterialCard
were added.
// updates a specific MaterialTreeViewItem in the tree view Added: public void updateMaterial(Material mat) {} // returns the COMUndoOp for the COM and operation Added: public COMUndoOp comUndoOp(CustomerOwnMaterial com, comUndoOperation operation) {}
The following class has been added to support undo operations for CustomerOwnMaterial
s.
public class DsCOMUndoOp extends COMUndoOp {}
To support filtering of MaterialLegend
s, ObjFilter
s are utilized to filter materials in the legend. As a result, the LabeledClassFilter
was added.
It is a replica of the ClassFilter
in cm.util.objFilter
but extends LabeledObjFilter
.
Added: public class LabeledClassFilter extends LabeledObjFilter Added: public constructor(str label, Class c) {}
To support filtering of MaterialLegend
s, ObjFilter
s are utilized to filter materials in the legend. As a result, the following interface was added.
Added: public ObjFilter activeFilter() {} Added: public void activateFilter(ObjFilter filter) { Added: public void deactivateFilter() { Added: public ObjFilter{} filters() { Added: public ObjFilter[] filterSeq() { Added: public void appendFilter(ObjFilter filter) { Added: public void appendFilters(ObjFilter[] newFilters) { Added: public void removeFilter(ObjFilter filter) {
The following functions have been added to support categories for CustomerOwnMaterial
s as well as saving
and loading CustomerOwnMaterial
s.
// sets category on CustomerOwnMaterial data Added: extend public void setCategory(Control c) {} // saves CustomerOwnMaterial and its data to GMaterial (.gm) file Added: extend public void saveCOM(Control c) {} // Generates thumbnail for GMaterial3D with specific gmThumbnailType Added: final public MemoryImage genThumbnail(GMaterial3D gm, gmThumbnailType type) {} // default directory for saving COMs Added: public Url defaultComDir() : inline {} // user saved directory for saving COMs Added public Url comLibraryDir() {}
To support filtering of MaterialLegend
s, ObjFilter
s are utilized to filter materials in the legend. As a result, the LabeledComboORFilter
was added.
It is a replica of the ComboORFilter
in cm.util.objFilter
but extends LabeledObjFilter
.
Added: public class LabeledComboORFilter extends LabeledObjFilter Added: public constructor(str label) {} Added: public constructor(str label, ObjFilter[] filters) {} Added: public constructor(str label, ObjFilter f0) {} Added: public constructor(str label, rest: ObjFilter[] args) {} Added: final public LabeledComboORFilter operator<<(ObjFilter filter) : inline {}
The following overridden function has been added. It's intended to apply one CustomerOwnMaterial
to another
by copying it's properties and material data.
Added: public void apply(Material other, symbol context=#parts) {}
The COMUndoOp
class has been added to handle undo operations for CustomerOwnMaterial
s.
It contains interface for COM creation, deletion, and editing.
// enum of different operation types Added: public enum comUndoOperation : field access {} // undo operation for CustomerOwnMaterials Added: public class COMUndoOp extends UndoOp {} // COM creation undo/redo Added: extend public undoStatus createdUndoOperation(UndoChain chain) {} Added: extend public COMUndoOp inverseCreatedUndoOperation() {} // COM removal undo/redo Added: extend public undoStatus removedUndoOperation(UndoChain chain, bool redo) {} Added: extend public COMUndoOp inverseRemovedUndoOperation() {} // COM changed undo/redo Added: extend public undoStatus changedUndoOperation(UndoChain chain) {} Added: extend public COMUndoOp inverseChangedUndoOperation() {}
To support filtering of MaterialLegend
s, ObjFilter
s are utilized to filter materials in the legend. As a result, the following changes were made.
Added: public ObjFilter filter() {} Added: public void setFilter(ObjFilter filter) {} // the optional `bool filtered` parameter was added Old: public sorted str->MaterialLegendItem sortedList() {} New: public sorted str->MaterialLegendItem sortedList(bool filtered=true) {}
A debug tool is introduced to help keep track of some of the config changes made to MhConfigManager. It can be launched from the Debug Engine section, as shown in the screenshot below:
Clicking the button will open the tracker dialog. To use, keep the dialog open, and insert a racking system that uses the config manager. Then, perform an action that will modify the configs, like stretching a bay.
Above shows an example of the dialog after those actions are performed. It shows the new config ID a snapper has after the config manager has processed it. The trace section on the right shows the stack trace for when the snapper got invalidated (when it was put into the config manager). Clicking on a method in the trace section will show its position in emacs.
Note: As of this moment, this debugger tool only shows the process of the validatePending() method in MhConfigManager. It does not show every operation/ changes made to each config in the MhConfigManager.
Added a new behavior MhDeepStorageFrameConfigBehavior
to be added to deep storage frame snappers. This is used to avoid creating unique MhConfigRef
instances when applying a deep storage frame config to a group of frames using the MhDeepStorageFrameApplyAnimation
animation.
// Global. public mhLazyGlobal MhBehavior mhDeepStorageFrameConfigBehavior = MhDeepStorageFrameConfigBehavior(); /** * Deepstorage frame config behavior. */ public class MhDeepStorageFrameConfigBehavior extends MhFrameConfigBehavior { /** * Keep current config? */ public bool keepCurrentConfig(MhSnapper z) { if (animation in MhDeepStorageFrameApplyAnimation) return true; return super(..); } }
ConfiguraQAToolsVisibility
and vs_qaToolsInternal
for selectively showing or hiding test tools associated with QA Tools extension.InternalDeveloperVisibility
, use ConfiguraInternalVisibility
instead.To aid in adhering to the Toolbox Guidelines, several standard UIHint
s are provided for developers for use in defining their Libraries.
You can find these UIHint
s defined in cm/core/library/commonHints.cm
. Use of these standard hints are highly recommended whenever possible.
A new limb, MessageLimb
, has been added to allow the creation of message banners in toolboxes.
There are two provided constructors, with the primary difference being the ability to include your own customizations.
Utilizing the constructor with the msgType
parameter and by supplying the appropriate messageType
will ensure that the message banner
created matches the system status styles as defined in our Design Guidelines.
You may also find additional utility methods defined for updating message banners in cm.core.toolbox.messageWindow
.
Added: public constructor(LibraryLimb parent, symbol pkg, str key, Brush brush=ultraLightGrayBrush, FrameStyle frameStyle=lightGrayPenFrame, int margin=7, color textColor=black, color linkColor=blue, color linkHoverColor=blue, UIHint hint=null, LibraryLimbVisibility vs=null, Image image=null, Image toolTipImage=null, str label=null, function(Control button, str key):bool linkCallback=null, SrcRef src=#:src) Added: public constructor(LibraryLimb parent, symbol pkg, str key, messageType msgType, int margin=7, UIHint hint=null, LibraryLimbVisibility vs=null, str label=null, function(Control button, str key):bool linkCallback=null, SrcRef src=#:src)
The following overridden function has been added. It's intended to apply one Material
to another
by copying it's properties and material data.
Added: extend public void apply(Material other, symbol context=#parts) {}
The following functions have been added to support category data for Material
s.
Added: extend public str category() {} Added: extend public str category=(str v) {}
The following overridden function has been added. It's intended to apply one CachedMaterial
to another
by copying it's properties and material data.
Added: public void apply(Material other, symbol context=#parts) {}
A LabeledObjFilter
was added. It's an ObjFilter
that contains a str label
field.
Added: public str label; Added: public constructor(str label) {}
Links in FormattedTextArea
have been enhanced to now be able to run callbacks.
Previously, links were allowed only if it pointed to a valid location (such as a URL, or file path).
With this change, arbitrary functions can now be called by using this mtf
string:
<callbackLink=$label:$callbackKey>
Alternatively, the mtfCallbackLink
function is provided as a helper to generate the mtf
string for you.
When constructing the FormattedTextArea
supply a callback handler in the new linkCallback
parameter, which will recieve the specified callbackKey
as an argument.
Added ability to have a floating transparent scroll bar.
Old: public constructor(Window parent, pointI p=(0, 0), bool horizontal=false) { New: public constructor(Window parent, pointI p=(0, 0), bool horizontal=false, bool transparentBG=false) {}
Validation for statistic events. Validation currently checks for the following: