Autosave Resources

If you have a subclass of FormatterResource, be sure to implement the following method. It should give a unique string for your resource. Failure to provide a unique key will make newer, different resources overwrite older, existing resources.

New: extend public str uniqueKey() : abstract

Invalid Filename

Old:
public bool isValidPath(str path)
public bool isValidPath(StrBuf buf)

New:
public bool isValidPath(str path) : deprecated
public bool isValidPath(StrBuf buf) : deprecated

Variants Constraints

cm.abstract.dataSymInterface

Constructor argument and class field name for DsiVariantsFeatureProxySubSet were renamed from featurePath to featureCode

// DsiVariantsFeatureProxySubSet (cm/abstract/dataSymInterface/dsiVariants.cm)
Old: public constructor(str featurePath, str[] seq=null)
New: public constructor(str featureCode, str[] seq=null)

Old: public str featurePath
New: public str featureCode

Removed some interfaces related to variants/constraints during optimization, visit dsiVariants.cm for updated implementation. Main reasons for changes are:

  1. Optional Select Features are to be constrained by it's specific option rather than the combinational state of the features. Instead of previously needing to specify FeatureA.codes in {"Option1", "Option2"}, now you would specify conditions on each of the options: FeatureA.Option1.checked = true or FeatureB.Option2.checked = true.
  2. Optional Select Features are now referenced by "feature paths" that describes the specific option of the feature instead of just the feature. Hence the paradigm of having a str->SFeature feature path to Feature map to contain the feature paths is no longer applicable.
  3. Selection state of the data instance (DsPData) is now cached within the instance using constrainedSelPathEnv.
  4. Some constraints interfaces now have a DsiConstraintEnv argument to reuse a preprocessed state for performance reasons.
// DsiVariantsCache (cm/abstract/dataSymInterface/dsiVariants.cm)
Removed: public str->SFeature features
Removed: public str->Object selectedValues
Removed: public VConstraint[] constraints

// DsiVariantsFeatureProxy (cm/abstract/dataSymInterface/dsiVariants.cm)
Removed: public str{} codes
Added: public bool checked

// cm/abstract/dataSymInterface/DsiPData.cm
Old: extend public bool constrainedOption(str featurePath, str option, double value)
New: extend public bool constrainedOption(str featurePath, str option, double value, DsiConstraintEnv constraintEnv=null) 

Old: extend public str[] constrainedOptions(str featurePath)
New: extend public str[] constrainedOptions(str featurePath, DsiConstraintEnv constraintEnv=null) 

Old: extend public Option findFirstUnconstrainedOption(str featurePath)
New: extend public Option findFirstUnconstrainedOption(str featurePath, DsiConstraintEnv constraintEnv=null)

Old: extend public Double findFirstUnconstrainedNumericOptionV(str featurePath)
New: extend public Double findFirstUnconstrainedNumericOptionV(str featurePath, DsiConstraintEnv constraintEnv=null)

Removed: extend public bool constrainedOptionalValue(str featurePath, str option, bool check)
Removed: extend public bool constrainedOptionalCheck(str featurePath, str{} newSelected=null)
Added:  extend public bool constrainedOptionalValue(str featurePath, bool checked, DsiConstraintEnv constraintEnv=null)

// cm/abstract/dataSymInterface/dsiVariants.cm
Old: public str[] dsiVariantsConstraintIds(str s)
New: public str[] dsiVariantsConstraintFeaturePaths(str s)

Removed: public str->SFeature dsiVariantsFeatures(DsiPData data)
Removed: public str->SFeature dsiVariantsFeatures(DsiPData data, str featurePath)
Removed: public str->Object dsiVariantsSelectedValues(DsiPData data)
Removed: public VConstraint[] dsiVariantsConstraints(DsiPData data, str featurePath, str->SFeature features)
Removed: public VariantsSpan dsiVariantsSpan(DsiPData data, str->SFeature features, VConstraint[] constraints)
Removed: public Object[] dsiVariantsSpanValues(DsiPData data, str featurePath, str option, double value, str->SFeature features, str->Object selectedValues, VariantsSpan variantsSpan)
Removed: public Object[] dsiVariantsSpanValues(DsiPData data, str->SFeature features, str->Object selectedValues, VariantsSpan variantsSpan)
Removed: public Object[] dsiVariantsReplaceSpanValue(Object[] spanValues, str featurePath, str option, double value, VariantsSpan variantsSpan) 

Debug flags for catalog constraints have been removed. Constraints now should be enabled via Catalog Creator for each catalog ("Enable constraints (BETA)").

// cm/abstract/dataSymInterface/header.cm
Removed: public bool dsiEnableConstraints
Removed: public bool dsiEnableVariants
Removed: public void enableDsiConstraints(bool v)
Removed: public bool getDsiConstraintsEnabled()
Removed: public void enableDsiVariantsTables(bool v)
Removed: public bool getDsiVariantsTablesEnabled()

cm.abstract.dataSymbol

Some public interfaces from DsPData are moved to DsiPData

// DsPData (cm/abstract/dataSymbol/dsPData.cm)
Old : public str{} unresolvedConstrainedFP: copy=null, stream=null;
Moved to:  DsiPData (cm/abstract/dataSymInterface\dsiPData.cm)

Old: extend public bool applyConstraintRules()
New: public bool applyConstraintRules()
Method declaration moved to DsiPData (cm/abstract/dataSymInterface\dsiPData.cm)

Old: extend public bool isUnresolvedConstrainedFeaturePath(str featurePath)
Moved to DsiPData (cm/abstract/dataSymInterface\dsiPData.cm)

custom.dataCatalog.builder

Some public interfaces were changed to package/private.

// custom/dataCatalog/builder/variantsTables/dcVariantsTableCard.cm
Old: extend public void recordUndoOp(DcUndoOp op)
New: final package void recordUndoOp(DcUndoOp op)

// custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsGridWindow.cm
Old: extend public bool acceptAll(DcGridWindowColumn column, DsRuleType rule)
New: final private bool acceptAll(DcGridWindowColumn column, DsRuleType rule)

Old: extend public bool acceptAny(DcGridWindowColumn column, DsRuleType rule)
New: final private bool acceptAny(DcGridWindowColumn column, DsRuleType rule)

// custom/dataCatalog/builder/dataImport/excel/dcExcelImportDialog.cm
Old: extend public void setSelectionView(DcExcelSelectionView view)
New: extend public void setSelectionView(DcExcelSelectionView view)

Old: extend public bool handleEvent(str key|, str msg=null, Object value=null)
New: final package bool handleEvent(str key|, str msg=null, Object value=null)

Old: extend public bool importBtnEvent(str msg=null, Object value=null)
New: final package bool importBtnEvent(str msg=null, Object value=null)

Old: extend public bool cancelBtnEvent(str msg=null, Object value=null)
New: final package bool cancelBtnEvent(str msg=null, Object value=null)

// custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsShrink.cm
Old: extend public void setOutput(str error)
New: extend package void setOutputError(str error)

DcExcelImportEnvG1 now uses a list of tuples for storing the imported tables.

// custom/dataCatalog/builder/dataImport/excel/dcExcelImportEnv.cm
Old: public DsTableType[] tables
New: public <str, str, DsTableType>[] tables

DcDBBuilderSpreadsheet append column method now accepts repaint argument.

// DcDBBuilderSpreadsheet (custom/dataCatalog/builder/ui/spreadsheet/spreadsheet.cm)
Old: extend public void appendColumn(DcSpreadsheetColumn col)
New: extend public void appendColumn(DcSpreadsheetColumn col, bool repaint=true)

All classes that extends from the below classes requires refactoring as well.

Spreadsheet

custom.dataCatalog.builder.ui.spreadsheet

Change class field and method name and method arguments for : DcDBBuilderSpreadsheet

//DcDBBuilderSpreadsheet
(custom/dataCatalog/builder/ui/spreadsheet/spreadsheet.cm)

Old: public <str, bool>[] allProducts();
New: public <str, bool>[] allData();

Old: extend public str[] productKeys(bool visibleOnly=false)
New: extend public str[] dataKeys(bool visibleOnly=false)

Old: extend public DsBaseExternalRefType rowData(int row) : abstract
New: extend public DsBaseCodeType rowData(int row) : abstract

Old: extend public DsBaseExternalRefType getProduct(str pCode) : abstract
New: extend public DsBaseCodeType getData(str dataCode) : abstract

Old: extend public void productCodeChange(str from, str to)
New: extend public void dataCodeChange(str from, str to)

Old: extend public void productCodeChanged(str from, str to)
New: extend public void dataCodeChanged(str from, str to)

Old: extend public void productCodeChanged(str from, str to, PointI pos=null)
New: extend public void dataCodeChanged(str from, str to, PointI pos=null)

Old: extend public void pasteProductCodeChanged(str from, str to)
New: extend public void pasteDataCodeChanged(str from, str to)

Old: extend public void createProduct(str code, str cloneFrom=null, bool update=true)
New: extend public void createData(str code, str cloneFrom=null, bool update=true)

Old: extend public void removeProduct(str code)
New: extend public void removeData(str code)

Old: extend public DcUndoOp changeProductCodeUndoOp(str oldCode, str newCode)
New: extend public DcUndoOp changeDataCodeUndoOp(str oldCode, str newCode)

Old: extend public void changeProductCode(str oldCode, str newCode)
New: extend public void changeDataCode(str oldCode, str newCode)

Old: extend public DcDBBuilderUpdateEnv productCodeChangeEnv(str oldCode, str newCode)
New: extend public DcDBBuilderUpdateEnv dataCodeChangeEnv(str oldCode, str newCode)

Old: extend public void showProduct(str code, bool allowRemoveFilters=true)
New: extend public void showData(str code, bool allowRemoveFilters=true)

Old: extend public DsBaseExternalRefType createNewProduct(str code, str cloneFrom) : abstract
New: extend public DsBaseCodeType createNewData(str code, str cloneFrom) : abstract

Old: extend public void putInCatalog(DsBaseExternalRefType prod, bool update=true) : abstract
New: extend public void putInCatalog(DsBaseCodeType data, bool update=true) : abstract

Old: extend public void removeFromCatalog(DsBaseExternalRefType prod, bool update=true) : abstract
New: extend public void removeFromCatalog(DsBaseCodeType data, bool update=true) : abstract

Old: extend public Int indexInCatalog(DsBaseExternalRefType prod) : abstract
New: extend public Int indexInCatalog(DsBaseCodeType data) : abstract

Old: extend public void resetProductVisibility()
New: extend public void resetDataVisibility()

Old: extend public str tmpProductCode(str productCode)
New: extend public str tmpDataCode(str dataCode)

Old: extend public str productCode(str productCode)
New: extend public str dataCode(str dataCode)

Old: extend public <DsBaseExternalRefType, int> dropDownOwnerLoc(int x, int y)
New: extend public <DsBaseCodeType, int> dropDownOwnerLoc(int x, int y)

Old: extend public void recordMoveDuplicatedProductRowOperation(str code, int fromR, int toR)
New: extend public void recordMoveDuplicatedDataRowOperation(str code, int fromR, int toR)

Old: extend public void moveDuplicatedProductRowPostcondition(int fromR, int toR)
New: extend public void moveDuplicatedDataRowPostcondition(int fromR, int toR)

custom.dataCatalog.builder.utility

Change method and argument names for : DcAnonymousFilesGridWindow

//DcAnonymousFilesGridWindow
(custom/dataCatalog/builder/utility/dcAnonymousFilesGridWindow.cm)

Old: public DsBaseExternalRefType getProduct(str pCode)
New: public DsBaseExternalRefType getData(str pCode)

Old: public DsBaseExternalRefType createNewProduct(str code, str cloneFrom)
New: public DsBaseExternalRefType createNewData(str code, str cloneFrom)

Old: public void putInCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void putInCatalog(DsBaseCodeType prod, bool update=true)

Old: public void removeFromCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void removeFromCatalog(DsBaseCodeType prod, bool update=true)

Old: public Int indexInCatalog(DsBaseExternalRefType prod)
New: public Int indexInCatalog(DsBaseCodeType prod)

custom.dataCatalog.builder.productType

Change method name and arguments for : DcDBBuilderProductSS

//DcDBBuilderProductSS
(custom/dataCatalog/builder/productType/dcDBBuilderProductSS.cm)

Old: public DsProductType getProduct(str pCode)
New: public DsProductType getData(str pCode)

Old: public DsBaseExternalRefType createNewProduct(str code, str cloneFrom)
New: public DsBaseExternalRefType createNewData(str code, str cloneFrom)

Old: public void removeProduct(str code)
New: public void removeData(str code)

Old: public void putInCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void putInCatalog(DsBaseCodeType prod, bool update=true)

Old: public void removeFromCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void removeFromCatalog(DsBaseCodeType prod, bool update=true)

Old: public Int indexInCatalog(DsBaseExternalRefType prod)
New: public Int indexInCatalog(DsBaseCodeType prod)

Old: public void changeProductCode(str from, str to)
New: public void changeDataCode(str from, str to)

Old: public void recordMoveDuplicatedProductRowOperation(str code, int fromR, int toR)
New: public void recordMoveDuplicatedDataRowOperation(str code, int fromR, int toR)

custom.dataCatalog.builder.productCatalog

Change method name and arguments for : DcDBBuilderTOCSpreadsheet

//DcDBBuilderTOCSpreadsheet
(custom/dataCatalog/builder/productCatalog/dcTOCSpreadsheet.cm)

Old: public DsBaseExternalRefType getProduct(str code)
New: public DsBaseExternalRefType getData(str code)

Old: public DsBaseExternalRefType createNewProduct(str code, str cloneFrom)
New: public DsBaseExternalRefType createNewData(str code, str cloneFrom)

Old: public void putInCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void putInCatalog(DsBaseCodeType prod, bool update=true)

Old: public void removeFromCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void removeFromCatalog(DsBaseCodeType prod, bool update=true)

Old: public Int indexInCatalog(DsBaseExternalRefType prod)
New: public Int indexInCatalog(DsBaseCodeType prod)

custom.dataCatalog.builder.layouts

Change method names and arguments for : DcLayoutsGridWindow

//DcLayoutsGridWindow
(custom/dataCatalog/builder/layouts/layoutCard.cm)

Old: public DsBaseExternalRefType getProduct(str pCode)
New: public DsBaseExternalRefType getData(str pCode)

Old: public DsBaseExternalRefType createNewProduct(str code, str cloneFrom)
New: public DsBaseExternalRefType createNewData(str code, str cloneFrom)

Old: public void putInCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void putInCatalog(DsBaseCodeType prod, bool update=true)

Old: public void removeFromCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void removeFromCatalog(DsBaseCodeType prod, bool update=true)

Old: public Int indexInCatalog(DsBaseExternalRefType prod)
New: public Int indexInCatalog(DsBaseCodeType prod)

custom.dataCatalog.builder.materials

Change method names and arguments for : DcDBBuilderMaterialsSS

//DcDBBuilderMaterialsSS
(custom/dataCatalog/builder/materials/dcDBBuilderMaterialsGridWindow.cm)

Old: public DsBaseExternalRefType getProduct(str mCode)
New: public DsBaseExternalRefType getData(str mCode)

Old: public DsBaseExternalRefType createNewProduct(str code, str cloneFrom)
New: public DsBaseExternalRefType createNewData(str code, str cloneFrom)

Old: public void putInCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void putInCatalog(DsBaseCodeType prod, bool update=true)

Old: public void removeFromCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void removeFromCatalog(DsBaseCodeType prod, bool update=true)

Old: public Int indexInCatalog(DsBaseExternalRefType prod)
New: public Int indexInCatalog(DsBaseCodeType prod)

Old: public void changeProductCode(str from, str to)
New: public void changeDataCode(str from, str to)

Old: public void recordMoveDuplicatedProductRowOperation(str code, int fromR, int toR)
New: public void recordMoveDuplicatedDataRowOperation(str code, int fromR, int toR)

custom.dataCatalog.builder.features

Change method names and arguments for : DcFeaturesGridWindow

//DcFeaturesGridWindow
(custom/dataCatalog/builder/features/dcFeaturesGridWindow.cm)

Old: public DsProductType getProduct(str fKey)
New: public DsProductType getData(str fKey)

Old: public DsBaseExternalRefType createNewProduct(str code, str cloneFrom)
New: public DsBaseExternalRefType createNewData(str code, str cloneFrom)

Old: public void createProduct(str fKey, str cloneFrom=null, bool update=true)
New: public void createData(str fKey, str cloneFrom=null, bool update=true)

Old: public void putInCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void putInCatalog(DsBaseCodeType prod, bool update=true)

Old: public void removeFromCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void removeFromCatalog(DsBaseCodeType prod, bool update=true)

Old: public Int indexInCatalog(DsBaseExternalRefType prod)
New: public Int indexInCatalog(DsBaseCodeType prod)

Old: public void changeProductCode(str from, str to)
New: public void changeDataCode(str from, str to)

Old: public void moveDuplicatedProductRowPostcondition(int fromR, int toR)
New: public void moveDuplicatedDataRowPostcondition(int fromR, int toR)

Change method names and arguments for : DcOptionsGridWindow

//DcOptionsGridWindow
(custom/dataCatalog/builder/features/dcOptionsGridWindow.cm)

Old: public DsProductType getProduct(str optKey)
New: public DsProductType getData(str optKey)

Old: public void productCodeChange(str from, str to)
New: public void dataCodeChange(str from, str to)

Old: public void productCodeChanged(str from, str to)
New: public void dataCodeChanged(str from, str to)

Old: public DcDBBuilderUpdateEnv productCodeChangeEnv(str oldCode, str newCode)
New: public DcDBBuilderUpdateEnv dataCodeChangeEnv(str oldCode, str newCode)

Old: public DsBaseExternalRefType createNewProduct(str code, str cloneFrom)
New: public DsBaseExternalRefType createNewData(str code, str cloneFrom)

Old: public void putInCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void putInCatalog(DsBaseCodeType prod, bool update=true)

Old: public void pasteProductCodeChanged(str from, str to)
New: public void pasteDataCodeChanged(str from, str to)

Old: public void createProduct(str code, str cloneFrom=null, bool update=true)
New: public void createData(str code, str cloneFrom=null, bool update=true)

Old: public void removeProduct(str code)
New: public void removeData(str code)

Old: public void removeFromCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void removeFromCatalog(DsBaseCodeType prod, bool update=true)

Old: public DcUndoOp changeProductCodeUndoOp(str oldCode, str newCode)
New: public DcUndoOp changeDataCodeUndoOp(str oldCode, str newCode)

Old: public void changeProductCode(str oldCode, str newCode)
New: public void changeDataCode(str oldCode, str newCode)

Old: public void moveDuplicatedProductRowPostcondition(int fromR, int toR)
New: public void moveDuplicatedDataRowPostcondition(int fromR, int toR)

custom.dataCatalog.builder.constraints

Change method names and arguments for : DcDBBuilderConstraintsSpreadsheet. Some methods were also removed in favour of using the parent spreadsheet's interfaces to perform the same behaviours.

Removed: extend public DsRuleType[] data()

Removed: extend public DsRuleType[] data=(DsRuleType[] data)

Old: public DsBaseExternalRefType createNewProduct(str code, str cloneFrom)
New: public DsRuleType createNewData(str code, str cloneFrom)

Old: public void putInCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void putInCatalog(DsBaseCodeType rule, bool update=true)

Old: public void removeFromCatalog(DsBaseExternalRefType prod, bool update=true)
New: public void removeFromCatalog(DsBaseCodeType rule, bool update=true)

Old: public Int indexInCatalog(DsBaseExternalRefType prod)
New: public Int indexInCatalog(DsBaseCodeType rule)

Old: public DsBaseExternalRefType getProduct(str pCode)
New: public DsRuleType getData(str dataCode)

Removed: public void productCodeChanged(str from, str to, PointI pos=null)

Removed: public bool resolveDuplicateCode(str& newCode, str oldCode)

Removed: extend public void completeSortList()

Removed: public void sortColumn(int i, bool reverseSort=false)

Removed: extend public int remSortList(str code)

Removed: extend public void build()

Removed: public void rebuild()

Removed: extend public void updateColumns()

Removed: extend public void buildColumns()

Removed: public void appendFillerRows()

Removed: public void appendBlankRowOfCells()

Removed: public void recordFilterUndoOp(int col, DcGridWindowFilter[] oldFilters, DcGridWindowFilter[] newFilters, bool[] oldFilterList, bool[] newFilterList, bool endRecord=true)

Removed: public void filter(bool repaint=true)

Removed: extend public DsRuleType[] filter(DsRuleType[] rules)

Removed: public int dataCount()

Removed: public int filteredDataCount()

Removed: public void createRowFromData(int row)

Removed: public DcGridWindowColumn getColumn(int columnIndex)

Removed: extend public void deleteCell(int col, int row)

Removed: public void release(pointI p)

Removed: public void showColumnDropDown(int col, pointI p=(0, 0))

Removed: public bool removeFiltersBtnClicked(pointI p)

Cells

custom.dataCatalog.builder.ui.spreadsheet

Change constructor arguments, class field data types and names for : DcDBBuilderSpreadsheetCell

//DcDBBuilderSpreadsheetCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public DsBaseExternalRefType product;
New: public DsBaseCodeType data;

Old: public constructor(DsBaseExternalRefType product)
New: public constructor(DsBaseCodeType data)

Old: public constructor(DsBaseExternalRefType product, bool spaceHighlight)
New: public constructor(DsBaseCodeType data, bool spaceHighlight)

Removed: public constructor(DsBaseCodeType codeType=null)

Old: extend public bool setCellData(DcDBBuilderSpreadsheet gridWindow, DcGridCell cell, str data)
New: extend public bool setCellData(DcDBBuilderSpreadsheet gridWindow, DcGridCell cell, str newData)

Change constructor arguments and method argument names for : PrdCodeCell

//PrdCodeCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public constructor(DsBaseExternalRefType p)
New: public constructor(DsBaseCodeType p)

Old: public constructor(DsBaseExternalRefType p, bool spaceHighlight=false)
New: public constructor(DsBaseCodeType p, bool spaceHighlight=false)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method argument names for : PrdDescCell

//PrdDescCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public constructor(DsBaseExternalRefType p, str l)
New: public constructor(DsBaseCodeType p, str l)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method argument names for : DcProductRootParentCell

//DcProductRootParentCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method argument names for : PrdVendorCell

//PrdVendorCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method argument names for : PrdPriceCell

//PrdPriceCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public constructor(DsBaseExternalRefType p, str id)
New: public constructor(DsBaseCodeType p, str id)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments for : PrdExtRefCell

//PrdExtRefCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public constructor(DsBaseExternalRefType p, UsageType ut)
New: public constructor(DsBaseCodeType p, UsageType ut)

Change method argument names for : PrdFeatureCell

//PrdFeatureCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method argument names for : DcPrdVariantsTablesCell

//DcPrdVariantsTablesCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method argument names for : DcPrdConstraintTablesCell

//DcPrdConstraintTablesCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method argument names for : DcPrdConstraintCell

//DcPrdConstraintCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method argument names for : DcDefaultOptionRefCell

//DcDefaultOptionRefCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method argument names for : DcMirrorProductRefCell

//DcMirrorProductRefCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Old: extend public bool clearOldMirrorProductRefs(DcMirrorProductRefCell cell, str data, DcDBBuilderSpreadsheet ss)
New: extend public bool clearOldMirrorProductRefs(DcMirrorProductRefCell cell, str string, DcDBBuilderSpreadsheet ss)

Old: extend public bool updateReciprocalMirrorProductRefs(DcMirrorProductRefCell cell, str data, DcDBBuilderSpreadsheet ss)
New: extend public bool updateReciprocalMirrorProductRefs(DcMirrorProductRefCell cell, str s, DcDBBuilderSpreadsheet ss)

Change constructor arguments and method argument names for : DcMirrorAngleOfSymmetryCell

//DcMirrorAngleOfSymmetryCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public constructor(DsBaseExternalRefType p) 
New: public constructor(DsBaseCodeType p)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments for : MaterialPreviewCell

//MaterialPreviewCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public constructor(DsBaseExternalRefType p) 
New: public constructor(DsBaseCodeType p)

Change method argument names for : DcExpandCollapseCell

//DcExpandCollapseCell
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

custom.dataCatalog.builder.utility

Change method argument names for : DcAddBooleanCell

//DcAddBooleanCell
(custom/dataCatalog/builder/utility/dcUtilityCells.cm)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

custom.dataCatalog.builder.productType

Change constructor arguments and method arguments for : PrdPriceCell

//PrdPriceCell
(custom/dataCatalog/builder/productType/dcProductCells.cm)

Old: public constructor(DsBaseExternalRefType prod, str priceListRef, str optionPriceCode)
New: public constructor(DsBaseCodeType prod, str priceListRef, str optionPriceCode)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method arguments for : PrdPkgCountCell, PrdOmitCell, PrdOmitPNCell, PrdDisableStyleNrLookupCell, PrdIndTagCell, PrdIndTagCategoryCell, PrdLeadtimeProgramRefCell, PrdCategoryCell, PrdModelsCell, PrdMtrlAppCell, PrdConnectorsCell, PrdPropertyVisibilityCell, PrdTagPlacementCell

(custom/dataCatalog/builder/productType/dcProductCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method arguments for : PrdMeasurementCell

//PrdMeasurementCell
(custom/dataCatalog/builder/productType/dcProductCells.cm)

Old: public constructor(DsBaseExternalRefType prod, dsMeasurementType mType, str unit, str system)
New: public constructor(DsBaseCodeType prod, dsMeasurementType mType, str unit, str system)

Old: public constructor(DsBaseExternalRefType prod, str mTypeS, str unit, str system)
New: public constructor(DsBaseCodeType prod, str mTypeS, str unit, str system)

Old: public bool validateData(str data) 
New: public bool validateData(str newData)

Old: extend public str cleanData(str data)
New: extend public str cleanData(str dataStr)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method arguments for : DcPrdAddProductCell

//DcPrdAddProductCell
(custom/dataCatalog/builder/productType/dcProductCells.cm)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Old: extend public DsiAddProductRefType[] getAddProducts(str data)
New: extend public DsiAddProductRefType[] getAddProducts(str addData)

Change constructor arguments and method arguments for : PrdPreviewUrlCell

//PrdPreviewUrlCell
(custom/dataCatalog/builder/productType/dcProductCells.cm)

Old: public constructor(DsBaseExternalRefType p)
New: public constructor(DsBaseCodeType p)

Old: public bool validateData(str data)
New: public bool validateData(str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method arguments for : PrdSIFClassCell

//PrdSIFClassCell
(custom/dataCatalog/builder/productType/dcProductCells.cm)

Old: public constructor(DsBaseExternalRefType p, str tag)
New: public constructor(DsBaseCodeType p, str tag)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

custom.dataCatalog.builder.productCatalog

Change method argument names for : DcProductCatalogCell

//DcProductCatalogCell
(custom/dataCatalog/builder/productCatalog/dcProductCatalogCells.cm)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Old: public void drawText(PixelDevice dc, GridWindow gw, rectI r, rectI clip, int x, int y, str data)
New: public void drawText(PixelDevice dc, GridWindow gw, rectI r, rectI clip, int x, int y, str txt)

Change method argument names for : DcProductLevelCodeCell, DcProductLevelUILevelCell, DcMultiplierCell, DcCurrencyRoundingCell

(custom/dataCatalog/builder/productCatalog/dcProductCatalogCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method arguments for : DcProductCatalogUnitCell

//DcProductCatalogUnitCell
(custom/dataCatalog/builder/productCatalog/dcProductCatalogCells.cm)

Old: public constructor(DsBaseExternalRefType product, SubSet subset=null, double stepLength=1, bool useStepButton=true)
New: public constructor(DsBaseCodeType product, SubSet subset=null, double stepLength=1, bool useStepButton=true)

Change method argument names for : DcProductLevelDescCell

//DcProductLevelDescCell
(custom/dataCatalog/builder/productCatalog/dcProductCatalogCells.cm)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

custom.dataCatalog.builder.layouts

Change method argument names for : DcLayoutGrpKeyCell, DcLayoutTagsCell

(custom/dataCatalog/builder/layouts/layoutCard.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

custom.dataCatalog.builder.materials

Change constructor arguments and method arguments for : MaterialPreviewUrlCell

//MaterialPreviewUrlCell
(custom/dataCatalog/builder/materials/dcMaterialColumns.cm)

Old: public constructor(DsBaseExternalRefType p)
New: public constructor(DsBaseCodeType p)

Old: public bool validateData(str data)
New: public bool validateData(str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method arguments for : MaterialExtRefCell

//MaterialExtRefCell
(custom/dataCatalog/builder/materials/dcMaterialColumns.cm)

Old: public constructor(DsBaseExternalRefType p, UsageType ut, bool showRes)
New: public constructor(DsBaseCodeType p, UsageType ut, bool showRes)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

custom.dataCatalog.builder.features

Change method argument names for : DcShowOptionsCell

//DcShowOptionsCell
(custom/dataCatalog/builder/features/dcFeaturesGridWindow.cm)

Old: public bool draw(PixelDevice dc, GridWindow gw, rectI r, int x, int y, str data)
New: public bool draw(PixelDevice dc, GridWindow gw, rectI r, int x, int y, str txt)

Change method argument names for : FeatDescCell, FeatGroupCodeCell, FeatFunctionalCell, FeatSkuCell, FeatOmitOnOrderCell, FeatNumericCell, FeatLayersCell, FeatVendorCell, FeatDecimalCell, FeatPropertyVisibilityCell, FeatSyncOptionDirCell

(custom/dataCatalog/builder/features/dcFeatureCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method arguments for : FeatBooleanCell

//FeatBooleanCell
(custom/dataCatalog/builder/features/dcFeatureCells.cm)

Old: public constructor(DsBaseExternalRefType p, function(DcFeaturesGridWindow, FeatBooleanCell, int, int) callback=null)
New: public constructor(DsBaseCodeType p, function(DcFeaturesGridWindow, FeatBooleanCell, int, int) callback=null)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method arguments for : FeatDefaultOptionCell, FeatSyncGroupIdCell, FeatInvOptsVisibilityCell

//FeatDefaultOptionCell
(custom/dataCatalog/builder/features/dcFeatureCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Old: public bool draw(PixelDevice dc, GridWindow gw, rectI r, int x, int y, str data)
New: public bool draw(PixelDevice dc, GridWindow gw, rectI r, int x, int y, str txt)

Change constructor and method arguments for : FeatDelimiterCell

//FeatDelimiterCell
(custom/dataCatalog/builder/features/dcFeatureCells.cm)

Removed: public constructor(DsBaseExternalRefType p)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method arguments for : FeatMultiSelectionCell, FeatOptionalSelectionCell

(custom/dataCatalog/builder/features/dcFeatureCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Change method arguments for : OptCodeCell, OptOptionalNoCodeCell, OptDescCell, OptPriceCell, OptSkuCell, OptUndefinedCell, OptFeatureCell, OptionRangeEnumCell, OptNumericSkuCell

(custom/dataCatalog/builder/features/dcOptionCells.cm)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method arguments for : OptPriceCodeCell

//OptPriceCodeCell
(custom/dataCatalog/builder/features/dcOptionCells.cm)

Old: public constructor(DsBaseExternalRefType prod, str priceListRef)
New: public constructor(DsBaseCodeType prod, str priceListRef)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change method arguments for : OptLeadtimeCell, DcOptAddProductCell

(custom/dataCatalog/builder/features/dcOptionCells.cm)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Change method arguments for : OptionextRefKeyCell

(custom/dataCatalog/builder/features/dcOptionCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method arguments for : OptionRangeCell

//OptionRangeCell
(custom/dataCatalog/builder/features/dcOptionCells.cm)

Old: public constructor(DsBaseExternalRefType product)
New: public constructor(DsBaseCodeType p)

Old: public bool setCellData(DcDBBuilderSpreadsheet gridWindow, DcGridCell cell, str data)
New: public bool setCellData(DcDBBuilderSpreadsheet gridWindow, DcGridCell cell, str newData)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Old: extend public bool addRange(Option product, DcOptionRangeCellEnv env, int x, int y, Double data)
New: extend public bool addRange(Option opt, DcOptionRangeCellEnv env, int x, int y, Double newData)

Change constructor arguments and method arguments for : OptionMtrlAppCell

//OptionMtrlAppCell
(custom/dataCatalog/builder/features/dcOptionCells.cm)

Old: public constructor(DsBaseExternalRefType p, SFeature parentFeature)
New: public constructor(DsBaseCodeType p, SFeature parentFeature)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method arguments for : OptDelimiterCell

//OptDelimiterCell 
(custom/dataCatalog/builder/features/dcOptionCells.cm)

Old: public constructor(DsBaseExternalRefType p)
New: public constructor(DsBaseCodeType p)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change constructor arguments and method arguments for : OptMirrorRefCell

//OptMirrorRefCell
(custom/dataCatalog/builder/features/dcOptionCells.cm)

Old: public constructor(DsBaseExternalRefType p)
New: public constructor(DsBaseCodeType p)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Old: extend public bool clearOldMirrorOptionRefs(OptMirrorRefCell cell, str data, DcDBBuilderSpreadsheet ss)
New: extend public bool clearOldMirrorOptionRefs(OptMirrorRefCell cell, str string, DcDBBuilderSpreadsheet ss)

Old: extend public bool updateReciprocalMirrorOptionRefs(OptMirrorRefCell cell, str data, DcDBBuilderSpreadsheet ss)
New: extend public bool updateReciprocalMirrorOptionRefs(OptMirrorRefCell cell, str string, DcDBBuilderSpreadsheet ss)

custom.dataCatalog.builder.constraints

Moved column classes into a new file custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsColumns.cm and set their scopes to package.

(custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsCells.cm)

Removed: public class DcConstraintSSColumn extends DcSpreadsheetColumn

Removed: public class DcSpreadsheetConstraintColumnLabel extends DcSpreadsheetColumnLabel

Removed: public class DcConstraintExpSSColumn extends DcConstraintSSColumn

Removed: public class DcConstraintCodeSSColumn extends DcConstraintSSColumn

Removed: public class DcConstraintVendorSSColumn extends DcConstraintSSColumn

Removed: public class DcConstraintExpTypeSSColumn extends DcConstraintSSColumn

Changed scope of classes to package

(custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsCells.cm)

Old: public class DcConstraintSSGridCell extends DcDBBuilderSpreadsheetCell
New: package class DcConstraintSSGridCell extends DcDBBuilderSpreadsheetCell

Old: public class DcConstraintExpSSGridCell extends DcConstraintSSGridCell
New: package class DcConstraintExpSSGridCell extends DcConstraintSSGridCell

Old: public class DcConstraintCodeSSGridCell extends DcConstraintSSGridCell
New: package class DcConstraintCodeSSGridCell extends DcConstraintSSGridCell

Old: public class DcConstraintVendorSSGridCell extends DcConstraintSSGridCell
New: package class DcConstraintVendorSSGridCell extends DcConstraintSSGridCell

Old: public class DcConstraintExpTypeSSGridCell extends DcConstraintSSGridCell
New: package class DcConstraintExpTypeSSGridCell extends DcConstraintSSGridCell

Change methods for : DcConstraintSSGridCell

//DcConstraintSSGridCell
(custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsCells.cm)

Removed: extend public DsRuleType rule=(DsRuleType r)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Removed: extend public bool synchronizeRule(int row)

Removed: public bool close(GridWindow gw, bool canceled)

Removed: extend public void recordNewRule(DsRuleType rule, int col=0)

Change methods for : DcConstraintExpSSGridCell

//DcConstraintExpSSGridCell
(custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change methods for : DcEditConstraintCell

//DcEditConstraintCell
(custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsCells.cm)

Old: public bool draw(PixelDevice dc, GridWindow gw, rectI r, int x, int y, str data)
New: public bool draw(PixelDevice dc, GridWindow gw, rectI r, int x, int y, str newData)

Change constructor and methods for : DcConstraintCodeSSGridCell

//DcConstraintCodeSSGridCell
(custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsCells.cm)

Removed: extend public str makeValidCode(str code)

Removed: extend public void recordCodeChange(DsRuleType rule, str oldCode)

Change methods for : DcConstraintVendorSSGridCell

//DcConstraintVendorSSGridCell
(custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Change methods for : DcConstraintExpTypeSSGridCell

//DcConstraintExpTypeSSGridCell
(custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsCells.cm)

Old: public bool setData(int x, int y, str data)
New: public bool setData(int x, int y, str newData)

Old: public bool undoableSetData(DcGridWindow gw, int x, int y, str data)
New: public bool undoableSetData(DcGridWindow gw, int x, int y, str newData)

Columns

custom.dataCatalog.builder.ui.spreadsheet

Change method arguments and argument names for : DcSpreadsheetColumn

//DcSpreadsheetColumn
(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetColumns.cm)

Old: extend public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: extend public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

Old: extend public void sort(<str, bool>[] allProducts, DcSSSortArgs args)
New: extend public void sort(<str, bool>[] allData, DcSSSortArgs args)

Change method arguments for : DcPrdVendorColumn, DcPrdDescColumn, DcPrdDescColumn, DcPrdPriceColumn, DcPrdFeatureColumn, DcPrdVariantsTablesColumn, DcPrdConstraintTablesColumn, DcPrdConstraintColumn, DcDefaultOptionRefColumn, DcProductRootParentColumn, DcMaterialCodeColumn, DcMaterialPreviewColumn, DcMaterialDescriptionColumn, DcMirrorProductRefColumn, DcMirrorAngleOfSymmetryColumn,

(custom/dataCatalog/builder/ui/spreadsheet/dcSpreadsheetColumns.cm)

Old: public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

custom.dataCatalog.builder.utility

Change method arguments for : DcAddColumn

//DcAddColumn
(custom/dataCatalog/builder/utility/dcUtilityColumns.cm)

Old: public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

Change method argument type for : DcAnonymousFile

//DcAnonymousFile
(custom/dataCatalog/builder/utility/dcUtilityColumns.cm)

Old: public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

custom.dataCatalog.builder.productType

Change method arguments for : DcPrdPkgCountColumn, DcPrdOmitColumn, DcPrdOmitPNColumn, DcPrdDisableStyleNrLookupColumn, DcPrdIndTagColumn, DcPrdIndTagCategoryColumn, DcPrdLeadtimeProgColumn, DcPrdCategoryColumn, DcPrdPriceCodeColumn, DcPrdMeasurementColumn, DcPrdModelsColumn, DcPrdAddProductsColumn, DcPrdPreviewUrlColumn, DcPrdSIFClassColumn, DcPrdMtrlAppColumn, DcPrdConnectorsColumn, DcPrdPropertyVisibilityColumn, DcPrdTagPlacementColumn

(custom/dataCatalog/builder/productType/dcProductColumns.cm)

Old: public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

custom.dataCatalog.builder.productCatalog

Change method arguments for : DcPrdLvlCodeColumn, DcMultiplierColumn, DcUILevelColumn, DcCurrencyRoundingColumn, DcProductLevelDescColumn

(custom/dataCatalog/builder/productCatalog/dcProductCatalogColumns.cm)

Old: public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

custom.dataCatalog.builder.layouts

Change method arguments for : DcLayoutCodeColumn, DcLayoutKeyColumn, DcLayoutGrpKeyColumn, DcLayoutPrdCodeColumn, DcLayoutTagsColumn

(custom/dataCatalog/builder/layouts/layoutCard.cm)

Old: public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

custom.dataCatalog.builder.materials

Change method arguments for : DcMaterialExtRefColumn, DcMaterialPreviewUrlColumn

(custom/dataCatalog/builder/materials/dcMaterialColumns.cm)

Old: public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

custom.dataCatalog.builder.features

Change method arguments for : DcShowOptionsColumn

//DcShowOptionsColumn
(custom/dataCatalog/builder/features/dcFeaturesGridWindow.cm)

Old: public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

Change method arguments for : DcFeatCodeColumn, DcFeatDefaultOptionColumn, DcFeatSimilarColumn, DcFeatGroupCodeColumn, DcFeatFunctionalColumn, DcFeatSkuColumn, DcFeatMultiSelectionColumn, DcFeatOptionalSelectionColumn, DcFeatOmitOnOrderColumn, DcFeatNumericColumn, DcFeatLayersColumn, DcFeatDescColumn, DcFeatVendorColumn, DcFeatDecimalColumn, DcFeatDelimiterColumn, DcFeatInvOptsVisibilityColumn, DcFeatPropertyVisibilityColumn, DcFeatSyncGroupIdColumn, DcFeatSyncOptionDirColumn

(custom/dataCatalog/builder/features/dcFeatureColumns.cm)

Old: public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

Change method arguments for : DcOptCodeColumn, DcOptOptionalNoCodeColumn, DcOptLeadtimeColumn, DcOptPriceColumn, DcOptPriceCodeColumn, DcOptSkuColumn, DcOptUndefinedColumn, DcOptDescColumn, DcOptFeatureColumn, DcOptDelimiterColumn, DcOptNumericSkuColumn, DcOptExtRefKeyColumn, DcOptMtrlAppColumn, DcOptModelsColumn, DcOptAddProductsColumn, DcOptRangeMinColumn, DcOptRangeMaxColumn, DcOptRangeStepColumn, DcOptDiscreteNumsColumn, DcOptRangeExpandColumn, DcOptMirrorRefColumn

(custom/dataCatalog/builder/features/dcOptionColumns.cm)

Old: public DcDBBuilderSpreadsheetCell makeCell(DsBaseExternalRefType p)
New: public DcDBBuilderSpreadsheetCell makeCell(DsBaseCodeType p)

Undo Operations

custom.dataCatalog.builder.undo

Change class field type, constructor arguments type for : DcSpreadsheetAddUndoOp

//DcSpreadsheetAddUndoOp
(custom/dataCatalog/builder/undo/dcCodeChangeUndoOps.cm)

Old: public DsBaseExternalRefType product;
New: public DsBaseCodeType product;

Old: public constructor(DialogWindow dialog, DsBaseExternalRefType product, DcDBBuilderSpreadsheet ss, int index, int sortValue)
New: public constructor(DialogWindow dialog, DsBaseCodeType product, DcDBBuilderSpreadsheet ss, int index, int sortValue)

Constraints

custom.dataCatalog.builder.constraints

Change methods for : DcDBBuilderConstraintsCard

//DcDBBuilderConstraintsCard
(custom/dataCatalog/builder/constraints/dcDBBuilderConstraintsCard.cm)

Old: extend public void startEdit(DsRuleType selectedConstraint, bool ignoreUndo=false)
New: extend public void startEdit(str constraintCode, bool ignoreUndo=false)

Removed: extend public void recordNewRule(DsRuleType rule)

Remove undo operation classes

(custom/dataCatalog/builder/constraints/dcDBuilderConstraintsUndoOps.cm)

Removed: public class DcCodeChangeConstraintUndoOp extends DcConstraintUndoOp

Removed: public class DcTypeChangeConstraintUndoOp extends DcConstraintUndoOp

Removed: public class DcExpChangeConstraintUndoOp extends DcConstraintUndoOp

Removed: public class DcConstraintFilterUndoOp extends DcFilterUndoOp

Removed: public class DcConstraintSortUndoOp extends DcConstraintUndoOp

cm.abstract

General Accessory System

Added new helper functions for getting values from accessories like the AccEnv that made it, the Location key, and whether it's an auto accessory. See bottom of accessoryEnv.cm

Deprecated the following classes. SelectAccessoryVessel, AccessoryLocationSelectionVessel

AccessoryGenerationBehavior

AccessoryGenerationBehavior no longer has a owner field. This was changed to be more memory efficient by allowing the behavior to act as a singleton. All methods that referenced this field were changed to take in the owner parameter instead. New methods were added to get the owner from an accessory as well.

AccessoryGenerationBehavior now extends PropObj instead of CoreObject.

generateAutoAccessories() now will remove unneeded accessories before it gathers neighbor accessories to prevent the system from removing accessories from the owner.

removeAutoAccessories() has been moved to AccessoryEnv class.

AccessoryLocation

AccessoryLocation now extends SnapAlternative instead of CoreObject. By extending SnapAlternative we can better support child snappers and a more traditional snapper insert process. This also gives some basis for generating locations from existing connectors.

Replace AccessoryLocation references with SnapAlternative.

AccessoryLocation now has an owner field to get reference to the Object that made the location.

Renamed the following fields '''cm Old : public str{} acceptedTypes; New : public str{} filter;

Old : public int priority; New : public int sortPriority; '''

AccessoryEnv

AccessoryEnv now extends PropObj instead of CoreObject.

Added an abstract method for getting an accessory's owner. '''cm public CoreObject getAccOwner(CoreObject acc). '''

Added an abstract method for updating an accessory. '''cm public bool updateAccessory(CoreObject owner, AccGenBehavior behavior, CoreObject acc, SnapAlternative loc) '''

Moved the removeAllAccessories() to the AccessoryGenerationBehavior.

Removed the accessoryKey() method. This logic should be handled in an implementation of updateAccessory().

isManagedAccessory() now also checks whether the accessory's owner matches the current owner we are working with.

handleLocation() now only calls checkForConflicts() if the accessory is successfully updated (returns true from updateAccessory()).

Renamed prop keys '''cm Old public const str cAccEnvKey = "accEnv"; public const str cAccLocKey = "accLoc"; public const str cAccAutoKey = "accAuto"; public const str cAccTypeKey = "accType";

New public const str cAccEnvPK = "accEnv"; public const str cAccLocPK = "accLoc"; public const str cAccAutoPK = "accAuto"; public const str cAccInsertPK = "accInsert"; public const str cAccTypePK = "accType"; '''

AccessoryPriorityEnv

Added priority() and defaultPriority() methods called by AccessoryGenerationBehavior to provide an easier way for AccEnvs to dictate their priorities.

AddAccessoryVessel

This is no longer abstract and now extends AccToolVessel. Much of it's behavior has been moved to be handled by the AccToolAnimation and AccToolVessel.

RemoveAccessoryVessel

This now extends AccToolVessel. Much of it's behavior has been moved to be handled by the AccToolAnimation and AccToolVessel.

cm.abstract.dataSymInterface

cm.abstract.dataSymInterface.communication

# dsCatCatalog.cm

Removed: public void setting(str key, Object value) : deprecated;

Field requestId removed from dsiDownloadInfo in 14.5.

# dsiDownloadInfo.cm

Removed: public int requestId;

Old: public constructor(int cid, int64 fileSize, int requestId|, str src, str tar, str tmp=null, str grp=null, bool trace=false)
New: public constructor(int cid, int64 fileSize|, str src, str tar, str tmp=null, str grp=null, bool trace=false)

Old: public constructor(int cid, int64 fileSize, int requestId, str src, str tar, str tmp=null, str grp=null, bool trace=false|, bool onDemand=true, str sha=null, str cmSyncCycleKey=null, str portfolioName=null)
New: public constructor(int cid, int64 fileSize, str src, str tar, str tmp=null, str grp=null, bool trace=false|, bool onDemand=true, str sha=null, str cmSyncCycleKey=null, str portfolioName=null)

cm.abstract.dataSymbol

Removal of DsPDataGCPropDef2

DsPDataGCPropDef2 was initially designed for Catalogue Scheme to push options to DsPData, primarily for features with group code. However, the limitation for DsPDataGCPropDef2 is also quite significant. While this approach worked as expected with group code, it did not work well with other feature types. For example, optional, multiple-select, numeric features. In addition to this, the existence of DsPDataGCPropDef2 often brings confusion to developers who were debugging DsPData, as the class naming is very similar to another DsPropDef - DsPDataGCPropDef, another PropDef type in DsPData.

For these reasons, DsPDataGCPropDef2 will be removed in 14.5:

// cm.abstract.dataSymbol.propDefs.dsPropDef.cm
Removed: public class DsPDataGCPropDef2 extends PropDef {

// cm.abstract.dataSymbol.dsPData.cm
DsPData class:
Removed: extend public DsPDataGCPropDef2 gcPropDef2(str k) {

DsPData COM Cache Changes

We made the following modifications to the cm.abstract.dataSymbol.dsPData.cm file:

We updated the _comMtrlsCache field as follows:

Old: private str->Material _comMtrlsCache : copy=shallow;
New: private str->Material _comMtrlsCache : copy=shallow, stream=null;

We added a new field, _appliedComMtrls to keep record of the COMs that are actually applied:

New: private str-><str, Material> _appliedComMtrls : copy=shallow;

cm.abstract.industry

Material changes

The following industry material classes now extend from classes in cm.abstract.material:

// industryMaterial.cm
Old: public class IndustryMaterial extends CachedMaterial;
New: public class IndustryMaterial extends AbsMaterial;

// industryMaterialCardTreeViewItem.cm
Old: public class IndustryMaterialCardTreeViewItem extends TreeViewItem : unstreamable;
New: public class IndustryMaterialCardTreeViewItem extends AbsMaterialCardTreeViewItem : unstreamable;

COM changes

The following industry COM classes / functions have been replaced by their counterparts from cm.abstract.material:

// cm.abstract.industry -> cm.abstract.material

// comProxyMaterial.cm
Old: public class IndCOMProxyMaterial extends Material;
New: public class COMProxyMaterial extends Material;

// customerOwnMaterials.cm
Old: public class IndCustomerOwnMaterials;
New: public class CustomerOwnMaterials;

Old: public IndCustomerOwnMaterials indCustomerOwnMaterials(World world=null);
New: public CustomerOwnMaterials customerOwnMaterials(World world=null);

The following industry COM classes now extend from classes in cm.abstract.material:

// customerOwnMaterials.cm
Old: public class IndCustomerOwnMaterial extends IndustryMaterial;
New: public class IndCustomerOwnMaterial extends CustomerOwnMaterial;

// comMaterialCard.cm
Old: public class IndCOMaterialCard extends IndMaterialCardWindow;
New: public class IndCOMaterialCard extends COMaterialCard;

Legend changes

The following industry legend classes / functions have been replaced by their counterparts from cm.abstract:

// cm.abstract.industry -> cm.abstract

// industryLegendItem.cm
Old: public class IndustryLegendItem;
New: public class LegendItem;

// industryLegendItem.cm
Old: public class SimpleIndustryLegendItem extends IndustryLegendItem;
New: public class SimpleLegendItem extends LegendItem;

// industryLegend.cm
Old: public class IndustryLegend;
New: public class Legend;

Old: public class IndustryLegendPropInterface : abstract; 
New: public class LegendPropInterface : abstract;

Old: public void updateIndustryLegendSnapper(IndustryLegendSnapper s, Space space, str headerKey,
                                             str[] types);
New: public void updateLegendSnapper(LegendSnapper s, Space space, str headerKey, 
                                     str[] types);

// basicIndustryLegendSnapper.cm
Old: public class BasicIndustryLegendSnapper extends GraphSnapper;
New: public class BasicLegendSnapper extends GraphSnapper 

The following legend classes now extend from classes in cm.abstract:

// industryLegend.cm
Old: public class IndustryLegendSnapper extends BasicIndustryLegendSnapper;
New: public class IndustryLegendSnapper extends LegendSnapper;

// linealFilingInchesLegend.cm
Old: public class LinealFilingInchesLegend extends BasicIndustryLegendSnapper;
New: public class LinealFilingInchesLegend extends BasicLegendSnapper;

Material legend changes

The following industry material legend classes / functions have been replaced by their counterparts from cm.abstract.material:

// cm.abstract.industry -> cm.abstract.material

// indMaterialLegend.cm
Old: public class IndMaterialLegendItem;
New: public class MaterialLegendItem;

Old: public class IndMaterialLegendItemCreator : abstract; 
New: public class MaterialLegendItemCreator : abstract;

Old: public class IndMaterialLegend extends IndustryLegend; 
New: public class MaterialLegend extends Legend;

Old: public IndMaterialLegend industryMaterialLegend(World world);
New: public MaterialLegend absMaterialLegend(World world);

Old: public void updateIndustryMaterialLegend(Material->IndMaterialLegendItemCreator mc, World world=null);
New: public void updateAbsMaterialLegend(Material->MaterialLegendItemCreator mc,
                                         World world=null);

// indMaterialLegendSnapper.cm
Old: public class LegendPart extends Part; 
New: public class LegacyLegendPart extends Part;

Old: public void updateIndustryIndMaterialLegend(World world);
New: public void updateAbsMaterialLegend(Material->MaterialLegendItemCreator mc,
                                         World world=null);

// industryPart.cm
Old: public void setTempLegendIndMaterialsToNull();
New: public void clearTempLegendMaterials();

Old: package Material->IndMaterialLegendItemCreator getTempLegendIndMaterials();
New: public Material->MaterialLegendItemCreator getTempLegendMaterials();

The following industry material legend classes now extend from classes in cm.abstract:

// indMaterialLegendSnapper.cm
Old: public class IndMaterialLegendSnapper extends BasicIndustryLegendSnapper;
New: public class IndMaterialLegendSnapper extends MaterialLegendSnapper;

cm.abstract.interop

The following Excel-related classes in cm.abstact.interop.excelObj.cm are now removed in 14.5. Please use cm.core.msOffice.excel to access Excel-related APIs.

// cm.abstract.interop.excelObj.cm
Removed: public class ExcelObj extends NetObj : deprecated
Removed: public class ExcelWorkbook extends NetObj : deprecated
Removed: public class ExcelSheet extends NetObj : deprecated
Removed: public class ExcelRange extends NetObj : deprecated

With this change, dependency to cm.abstact.interop can now be removed from extension.xml, if it was only added to access Excel APIs. As for cm.core.msOffice.excel, it is shipped under cet.designer, hence if the extension.xml already has dependency to cet.designer, it is not required to add dependency to cm.core.msOffice.excel.

cm.abstract.k2

class K2AlternativeValidateFun

Removed: findNearbyOwners(Snapper{} ownerCandidates, Snapper->Snapper{} existing)

Consider using e.g. nearbySnappersWithAutoAdopt(K2Snapper this, LayerExpr tag) instead, to get owners near a certain snappers. If you want all nearby owner candidates, use K2AlternativeValidateFun.findOwnerCandidates(Snapper snapper, Snapper->Snapper{} existing) instead.

class K2WorktopEdgeBendAnimation

Various terms used in properties, variable names, and methods were renamed to be more descriptive. Few public interfaces were affected:

Old: bendAngle property
New: arcTangentAngle property
Old: bendDistance property
New: arcHeight property
Old: bendRadius property
New: arcRadius property

Xp classes made abstract

The following xp classes have been made abstract since they are not intended to be instantiated.

Old: public class XpBool
New: public class XpBool : abstract
Old: public class XpMaterialAccess
New: public class XpMaterialAccess : abstract
Old: public class XpMeasure
New: public class XpMeasure : abstract
Old: public class XpMoldingHeight
New: public class XpMoldingHeight : abstract
Old: public class XpNode
New: public class XpNode : abstract
Old: public class XpNodePositioning
New: public class XpNodePositioning : abstract
Old: public class XpNodeSizing
New: public class XpNodeSizing : abstract
Old: public class XpRsStr
New: public class XpRsStr : abstract
Old: public class XpSnapAnimationBehavior extends XpAnimationBehavior
New: public class XpSnapAnimationBehavior extends XpAnimationBehavior : abstract
Old: public class XpStr
New: public class XpStr : abstract

Straight corner cabinet changes

The following classes have been made abstract:

Old: public class K2CabinetGfxBehavior extends K2Behavior
New: public class K2CabinetGfxBehavior extends K2Behavior : abstract

The following classes have been deprecated:

Old: public class XpStraightCornerShape2 extends XpShape
New: public class XpStraightCornerShape2 extends XpShape : deprecated
Old: public class XpStraightCornerShapeDef2 extends XpShapeDef
New: public class XpStraightCornerShapeDef2 extends XpShapeDef : deprecated
Old: public class XpStraightCornerGfxBehavior2 extends XpCabinetGfxBehavior
New: public class XpStraightCornerGfxBehavior2 extends XpCabinetGfxBehavior : deprecated

Instead, the following classes should be used. The new shape have separate measure properties for covers and fillers. It's recommended to create a new straight corner cabinet snapper in K2Creator using the new classes. That way saved drawings will not change upon being loaded.

New: public class K2StraightCornerGfxBehavior3 extends K2CabinetGfxBehavior
New: public class XpStraightCornerShape3 extends XpShape
New: public class XpStraightCornerShapeDef3 extends XpShapeDef

class K2DataSymFileGfxBehavior

Old: public void applyXpLayout(XpLayout layout, XpShape parentShape, SymNode root)
New: public void applyXpLayout(XpLayout layout, XpShape parentShape, SymNode root, XpShapeTree shapeTree=null)

Use toShapeTree() to get the shapeTree for the snapper you're applying the layout to.

class K2InsertNodeChooser

Old: public str lastStructureKey
New: public str lastPreviewCacheKey

The package-visible k2StructureKey was removed, and a previewCacheKey was added to K2Snapper. This field also had its name changed to reflect this.

class XpLayout (and child classes)

Old: XpNodeRes[] eval(XpShape parentShape, XpLayoutNode node, str->XpShape[] existing)
New: XpNodeRes[] eval(XpShape parentShape, XpLayoutNode node, str->XpShape[] existing, XpShapeTree shapeTree=null)

Old: XpNodeRes[] allPossible(XpShape parentShape, XpShape shape)
New: allPossible(XpShape parentShape, XpShape shape, XpShapeTree shapeTree=null)

Old: public XpNodeRes eval(XpShape parentShape, XpNodeRes res)
New: public XpNodeRes eval(XpShape parentShape, XpNodeRes res, XpShapeTree shapeTree=null)

Use toShapeTree() to get the shapeTree for the snapper you're evalutating the layout on. null is an acceptable value if no such snapper exists.

class XpLayoutAccess (and child classes)

Old: public XpNodeRes[] eval(XpShape parentShape, XpLayoutNode node, str->XpShape[] existing)
New: public XpNodeRes[] eval(XpShape parentShape, XpLayoutNode node, str->XpShape[] existing, XpShapeTree shapeTree=null)

See section on class XpLayout for context.

class XpListItem

Old: str partNo
New: XpStr returnValueWhenTrue

XpListItem previously had a field typed as str named partNo. It is now typed as XpStr and called returnValueWhenTrue for more a descriptive name, and to support non-fixed strings. If you were using the partNo field, please used the returnValueWhenTrue instead, with an XpFixedString containing the value previously in partNo.

class XpShape

Old: public str[] dataForValueHash()
Old: public str valueHash()
New: public str previewCacheKey(double distancePrecision, angle anglePrecision)

Removed: public XpShape copyWithMeasuresOnly()

previewCacheKey(distancePrecision=0, anglePrecision=0deg) is a good replacement for valueHash(). Both provide a representation of the shapes value. The former is different though, containing more data which defines the shapes structure.

copyWithMeasuresOnly was no longer needed, and was therefore removed.

cm/abstract/k2/k2InsertNodePreviewSnapperSpawner.cm

Old: public constructor(K2SnapperSpawner parentSpawner, K2InsertNodeRef childNodeRef)
New: public constructor(K2SnapperSpawner parentSpawner, K2Snapper parent, K2InsertNodeRef childNodeRef)

cm/abstract/k2/k2Property.cm

Removed: public void k2PropagatePropChanged(Snapper snapper, str key, Object value, Object env)

cm/abstract/k2/animation/k2FaceAnimation.cm

Old: public class XpFaceAnimation extends ToolAnimationG2
New: public class XpFaceAnimation extends ToolAnimationG2 : abstract
Old: extend public XpFace[] getAlternativeFaces()
New: extend public XpFace[] alternativeFaces() : abstract
Removed: public XpFace[] alternativeFaces;
Removed: extend public void updateAlternativeFaces(Snapper snapper)
Removed: extend public XpFace[] findAlternativeFaces(Snapper{} snappers=null)
Removed: extend public LayerSet faceAlternativeFilter()
Removed: public void candidateChanged(Snapper old)

cm/abstract/k2/worktop/k2WorktopJointAnimation.cm

Old: public class K2WorktopJointAnimation extends XpFaceAnimation
New: public class K2WorktopJointAnimation extends XpFaceAnimation : abstract
Old: final public XpFace[] getWorktopFaces()
New: final public XpFace[] worktopFaces()
Old: final public XpFace[] getJointFaces()
New: final public XpFace[] jointFaces()
Removed: public XpFace[] worktopFaces;
Removed: extend public XpFace[] jointAlternatives(XpFace[] worktopFaces)

cm/abstract/k2/engine/k2AlternativeValidateFunction.cm

Removed: extend public Snapper{} findNearbyOwners(Snapper{} ownerCandidates, Snapper->Snapper{} existing)

cm/abstract/k2/behavior/k2AutoLightEngineBehavior.cm

Old: public class K2AutoLightAppendExisitingFun extends K2EngineAppendExistingFun
New: public class K2AutoLightAppendExistingFun extends K2EngineAppendExistingFun

cm/abstract/k2/engine/k2EngineFun.cm

Old: extend public bool shouldHideExisting(Snapper exisiting)
New: extend public bool shouldHideExisting(Snapper existing)

cm/abstract/k2/face/xpFaceToFaceFilter.cm

Removed: public bool excludeEdges;
Old: public constructor(bool excludeEdges=false)
New: public constructor()

cm/abstract/k2/library/k2Library.cm

Removed: public str->int visibleSpawnerStartIndex;
Removed: public str->int visibleSpawnerMaxIndex;
Removed: private void updateSpawnersPage(Control c, bool nextPage=true)
Removed: private void showNextSpawnersCB(Control c)
Removed: private void showPreviousSpawnersCB(Control c)
Old: extend public LibraryLimb addSearchLimb(LibraryLimb parent)
New: extend public void addSearchLimb(LibraryLimb parent)

cm/abstract/k2/library/k2PageLimb.cm

Removed: public class K2PageLimb extends LibraryLimb

cm/abstract/k2/node/k2InsertNodeRef.cm

Removed: public constructor(K2SnapperSpawner spawner, XpNodeRes res, K2LayoutBehavior layout, K2SnapperSpawner parentSpawner=null)

cm/abstract/k2/node/k2LayoutHandleInsertAnimationBehavior.cm

Removed: extend public void putHandle(K2Snapper handle, K2LayoutHandleInsertAlternative alt)
Removed: extend public Snapper{} getTargetsWithoutAlternatives(AnimationMouseInfo mi, K2Snapper handle)
Removed: extend public void putHandleToTargets(Snapper{} targets, K2Snapper handle)
Removed: package bool anyIntersect(symbol{} set1, symbol{} set2)

cm/abstract/k2/panel/k2Panel.cm

Removed: extend public K2Cabinet nearestCabinet(K2Panel{} visited=null)

cm/abstract/k2/worktop/k2Worktop.cm

Removed: extend public str groupKey()
Removed: extend public void edgePropertyChanged(K2WorktopEdge edge, str key, Object value, Object oldValue)
Removed: extend public str->K2WorktopEdge{} edgeGroups()

cm/abstract/k2/xp/xpFace.cm

Removed: final public rect bound()

cm/abstract/k2/worktop/k2WorktopBuiltInPosFun.cm

Old: public class K2WorktopBuiltInPosAppendExisitingFun extends K2EngineAppendExistingFun
New: public class K2WorktopBuiltInPosAppendExistingFun extends K2EngineAppendExistingFun

cm/abstract/k2/worktop/k2WorktopEdge.cm

Removed: extend public K2WorktopEdgeStyleBehavior style()
Removed: extend public GMaterial3D material()
Removed: extend public str groupKey()

cm/abstract/k2/worktop/k2WorktopEdgeStyleBehavior.cm

Removed: public class K2WorktopEdgeStyleBehavior extends K2Behavior

cm/abstract/k2/worktop/K2WorktopEdgeOperationsMenuBehavior.cm

Removed: final private void updateVesselsVisibility(Space space)

cm.abstract.material

MaterialLegend

The following fields, methods and functions have changed:

// materialLegend.cm
MaterialLegend
    Old: public Material[] used;
    New: final public Material{} usedMaterials();

// legacyMaterialLegends.cm
Old: public void legacyPreFetchPartsHook(Space space);
New: public void clearLegacyTempLegendsHook(Space space);

cm.abstract.materialHandling

public class MhSnapperInsertToolVessel extends Vessel {
- Removed:  public Snapper- Old: >str cachedGraphicsKeys() : deprecated;

public class MhSnapperSpawner extends SnapperSpawner {
- Old:     extend public CollisionPrimitive engineConstructionCollision(MhSnapperShape shape) {
New:     extend public CollisionPrimitive engineConstructionCollision(MhSnapperShape shape, MhEngineConstructionEntry entry) {

public class MhFrameGfxBehavior extends MhGenericGfxBehavior {
- Old:     extend public double uprighTh(MhSnapper snapper) {
New:     extend public double uprightTh(MhSnapper snapper) {

- Old:  public class MhBraceInfoDouble extends MhBraceInfo {
New:  public class MhSideElementBracingInfo extends MhBraceInfo {

- Old:  public class MhFrameEditBracingInsertAnimation extends MhSnapperInsertToolAnimation {
New:  public class MhFrameEditElementsInsertAnimation extends MhSnapperInsertToolAnimation {
New:  public class MhFrameEditBracingInsertAnimation extends MhFrameEditElementsInsertAnimation {

public class MhFrameEditorShape extends MhSnapperShape {
- Old:     extend public Snapper{} children(line[] lines) {
New:     extend public Snapper{} children(MhBracingBehavior behavior, MhBraceInfo[] infos, line[] lines) {

cm/abstract/materialHandling/mhSnapperInsertToolVessel.cm
- Removed: [Global Variable] public const double arrowMargin = 5cm;
New: [MhArrowBehavior method] extend public double arrowMargin(MhSnapper snapper, Animation a)
Note: Replace all `arrowMargin` references to use the new margin values from an `MhArrowBehavior`.

public class MhConfigManager : unstreamable {
- Old:    extend public void setNewName(MhConfigRef config) {
- New:    extend public bool setNewName(MhConfigRef config) {

CollisionPrimitive interface cleanups

Some of the key methods relating to collection of CollisionPrimitives in the abstract has been reworked, utilizing a MhCollisionFetchEnv to pass arguments to simplify the methods, and allow for better control of CollisionPrimitive generation through a new reason argument that accepts a symbol.

For clearance related collisions, MhClearanceCollisionPrimEnv has also been reworked and merged into MhCollisionFetchEnv, MhClearanceCollisionFetchEnv and MhStorageClearanceCollisionFetchEnv for similar reasons.

Most of the compile errors could be resolved by using the new methods, wrapping arguments like Transform t into a MhCollisionFetchEnv, or using a null value.

New: public class MhCollisionFetchEnv

- Old: public class MhClearanceCollisionPrimEnv
New: public class MhClearanceCollisionFetchEnv extends MhCollisionFetchEnv

- Old: public class MhStorageClearanceCollisionPrimEnv extends MhClearanceCollisionPrimEnv
New: public class MhStorageClearanceCollisionFetchEnv extends MhClearanceCollisionFetchEnv


cm/abstract/materialHandling/functions.cm
- Deprecated: public CollisionPrimitive localCollisionPrimitive(MhSnapper this)
New: public CollisionPrimitive localCollisionPrimitive(MhSnapper this, MhCollisionFetchEnv env)

MhSnapper
- Deprecated: extend public CollisionPrimitive collisionPrimitive(Transform t, bool includeChildren, Object env=null)
New: extend public CollisionPrimitive collisionPrimitive(MhCollisionFetchEnv env)

MhSnapperGeometry
- Old: extend public CollisionPrimitive collisionPrimitive(Transform t)
- New: extend public CollisionPrimitive collisionPrimitive(MhCollisionFetchEnv env)

MhSnapperShape
- Old: extend public CollisionPrimitive collisionPrimitive(Transform t=null)
New: extend public CollisionPrimitive collisionPrimitive(MhCollisionFetchEnv env)

- Old: extend public void appendBehaviorCollisionPrimitives(CollisionPrimitiveSet res, Transform t=null, MhSnapper parent=null)
New: extend public void appendBehaviorCollisionPrimitives(MhCollisionFetchEnv env, CollisionPrimitiveSet res, MhSnapper parent=null)

MhSnapperSpawner
- Old: extend public CollisionPrimitive engineConstructionCollision(MhSnapperShape shape)
New: extend public CollisionPrimitive engineConstructionCollision(MhSnapperShape shape, MhEngineConstructionEntry entry)

MhSnapperInfo
- Deprecated: extend public CollisionPrimitive collisionPrimitive(Transform t, MhSnapper p)
New: extend public CollisionPrimitive collisionPrimitive(MhCollisionFetchEnv env, MhSnapper p)

MhClearanceSpec
- Removed: extend public CollisionPrimitive[] collisionPrimitives(MhSnapperShape shape, Transform t, double elevation)
- Removed: extend public CollisionPrimitive[] collisionPrimitives(MhSnapperShape shape, Transform t, double elevation, LayerSet classification)
New: extend public CollisionPrimitive[] collisionPrimitives(MhSnapperShape shape, MhCollisionFetchEnv env)

- Old: extend public CollisionPrimitive[] levelClearanceCollisionPrimitives(MhSnapperShape shape, Transform t, double elevation, LayerSet classification)
New: extend public CollisionPrimitive[] levelClearanceCollision(MhSnapperShape shape, MhCollisionFetchEnv env)

MhClearanceBehavior
- Old: extend public void appendCollisionPrimitives(MhSnapperShape shape, Transform t, CollisionPrimitive{} geos, MhClearanceCollisionPrimEnv clearanceEnv, Object env=null)
New: extend public void appendCollisionPrimitives(MhSnapperShape shape, MhCollisionFetchEnv env, CollisionPrimitive{} res)

MhClearanceSpecBehavior
- Old: extend public void appendClearanceSpecCollisionPrimitives(MhSnapperShape shape, Transform t, MhClearanceCollisionPrimEnv clearanceEnv, MhClearanceSpec clearanceSpec,Object env=null) {
New: extend public void appendSpecCollision(MhSnapperShape shape, CollisionPrimitive{} res, MhClearanceSpec spec, MhCollisionFetchEnv env)

- Old: extend public MhClearanceSpec clearanceSpec(MhClearanceCollisionPrimEnv clEnv, MhSnapperShape shape, Object env=null) {
New: extend public MhClearanceSpec clearanceSpec(MhCollisionFetchEnv env, MhSnapperShape shape) {

MhLevelInsertHeightBehavior interface changes

Removed: extend public void updateDomains(Snapper owner, Snapper toSnapper, Object env=null) : deprecated {

Old: extend public bool updateHeightDomains(Snapper owner, Snapper toSnapper, Object env=null) {
New: extend public bool updateHeightDomains(MhSnapper owner, MhSnapper toSnapper, Object env=null) {

Old: extend public SubSet restrictedHeightDomain(Snapper owner, Snapper toSnapper, Object env) {
New: extend public SubSet restrictedHeightDomain(MhSnapper firstAbove, MhSnapper firstBelow, MhSnapper owner, MhSnapper toSnapper, Object env) {

Old: extend public bool isConflicting(Snapper owner, double z, MhCollisionAlternative alt, CollisionPrimitiveSet ownerPrims) {
New: extend public bool isConflicting(MhSnapper owner, double z, MhCollisionAlternative alt, CollisionPrimitiveSet ownerPrims) {

Old: extend public void updateHeightProperties(Snapper owner, Snapper toSnapper, Object env=null) {
New: extend public void updateHeightProperties(MhSnapper owner, MhSnapper toSnapper, Object env=null) {

Old: extend public <Double, Double> calculateFreeSpaceAboveAndBelow(Snapper owner, Snapper toSnapper, double insertH, Snapper specificAboveSnapper=null, Snapper specificBelowSnapper=null) {
New: extend public <Double, Double> calculateFreeSpaceAboveAndBelow(MhSnapper owner, MhSnapper toSnapper, double insertH, Snapper specificAboveSnapper=null, Snapper specificBelowSnapper=null) {

Old: extend public <Snapper, Snapper> getFirstAboveAndBelowSnappers(Snapper owner, Snapper toSnapper, double insertH) {
New: extend public <MhSnapper, MhSnapper> getFirstAboveAndBelowSnappers(MhSnapper owner, MhSnapper toSnapper, double insertH) {

Old: extend public void showHeightProperties() {
New: extend public void showHeightProperties(MhSnapper owner, MhSnapper toSnapper) {
Removed: public bool isShelfBackPanel(Object o) { return evalClassification(o, sBackPanel); }

MhSpreadPatternBehavior interface changes

Removed: extend public SubSet spreadPatternDomain(MhSnapper snapper, MhSnapper parent, str event) : deprecated {

MhDeepstorageUnitLoadPopulateFunction interface changes

Old: extend public point nextPopulatorPos(MhEngineEntry edit, point startPos, double bedWidth) {
New: extend public point nextPopulatorPos(MhEngineEntry edit, point startPos, double bedWidth, MhSystemEngineEnvironment env) {

MhBackFenceShape interface changes

Removed: public double bracketD;

MhBackstopShape interface changes

Removed: public double beamOffset;
Removed: public double bracketD;

MhRowDownAisleInsertAnimation interface changes

Removed: public Graph->MhPolylineColor[] map;

MhSnapperApplyAnimation interface changes

Removed: extend public void relinkNeighbors(MhSnapper oldSnapper, MhSnapper newSnapper) : deprecated {

MhSnapperMultiApplyAnimation interface changes

Renamed field selection to pickedUpSelection to avoid confusion with MhSnapperSpreadToolAnimation.selection().

Old: public SnapperSelection selection;
New: public SnapperSelection pickedUpSelection;

Old: public constructor(MhSnapper snapper, SnapperSelection selection, SnapperFilter f, bool includeChildren, bool showPickup=true) {
New: public constructor(MhSnapper snapper, SnapperSelection pickedUpSelection, SnapperFilter f, bool includeChildren, bool showPickup=true) {

MhRowEndSnapperFilter interface changes

Removed: public Snapper leftSnapper;
Removed: public Snapper rightSnapper;
Removed: extend public void setLeftAndRightSnapper(MhSnapper row, Snapper{} ss) : deprecated {

MhBraceInfo changes

Undeprecated a method in MhBraceInfo.

Old: extend public line2D braceLine(double frame_depth, double brace_offset) : deprecated {
New: extend public line2D braceLine(double frame_depth, double brace_offset) {

Frame editor snapper changes

Removed deprecated fields in MhFrameEditContentSnapper and MhFrameEditorShape.

MhFrameEditContentSnapper
Removed: public MhSnapper baySnapper : copy=null,  deprecated;

MhFrameEditorShape
Removed: public MhSnapper frameSnapper : copy=null, deprecated;

Removed backstop constants

Removed some constants in cm/abstract/materialHandling/storage/behavior/mhBackstopSnappingBehavior.cm .

Removed: public const double cBackstopDepthMargin = 10cm;
Removed: public const double cBackstopHeightMargin = 20cm;

Removed deprecated frame editor function

Replace any calls to mhDrawingFrameEditConfigurations(Space space) with mhDrawingFrameEditConfigurations(Space space, symbol configPkg).

Removed: public MhFrameEditConfiguration[] mhDrawingFrameEditConfigurations(Space space) : deprecated {

Remove deprecated multi-span frames function

Removed a deprecated function in cm/abstract/materialHandling/storage/racking/mhFlankProtectorFixedPointCollisionAlternative.cm.

Removed: public MhSnapper[] getMultiSpanFrames(MhSnapper frame) : deprecated {

cm.abstract.materialHandling.storage.racking.cantilever

MhCantileverArmGfxBehavior interface changes

Old: extend public Primitive3D bracket3D(MhSnapper owner, double w, double startD, double endD, double startH, double h, double th) {
New: extend public Primitive3D bracket3D(MhSnapper owner, double w, double startD, double endD, double h, double th) {

cm.abstract.materialHandling.storage.racking.deepstorage

MhDeepstorageNoOfSingleFramesFunction Class

A new parameter is added to the sortedFramesByPriority method, making the previous method without that parameter deprecated.

Old: extend public MhEngineEntry[] sortedFramesByPriority(MhEngineEntry[] sortedFrames) : deprecated {
New: extend public MhEngineEntry[] sortedFramesByPriority(bool rotated, MhEngineEntry[] sortedFrames) {

The new parameter rotated is required for the sorting of frames, because when the frames are rotated in the drawing, the order of sortation should be reversed. When this is not accounted for, the removal of frames will not be consistent since it is not reversed.

There will not be any compile time error despite the changes, since the deprecated method will simply call the new method with rotated=false, which was assumed previously.

Old: 
extend public MhEngineEntry[] sortedFramesByPriority(MhEngineEntry[] sortedFrames) : deprecated {
    return sortedFramesByPriority(false, sortedFrames);
}

cm.abstract.materialHandling.storage.shelving

Removed function for checking classification in Abstract Shelving

isShelfBackPanel() has been removed from Abstract Shelving. Use isBackPanel() instead.

cm.abstract.office

Support Changes

Updated AO specific classes relating to Accessory system changes. Removed the updateSupport() method from Worksurface in favor of the new updateAccessory() method on AccessoryEnv.

Removed the includeNeighbors parameter from getAllSupports(). This method should only give supports that this surface owns or manages. Neighbor supports are gathered in a seperate call by the AccessoryGenBehavior via those surfaces getAllSupports() calls.

The following classes have been deprecated. AOWksfSelectSupportVessel, AOWksfSuppPosSelectVessel, AOWksfSelectSupportForRemovalVessel

New SIF abstract

We have moved all of the SIF code and rs over to cm.abstract.sif which is shipped by cm.abstract extension.

The following classes / functions have a new name:

Old: public class AOSifExport extends TextExporter;
New: public class ASifExport extends TextExporter; 

Old: public str aoSifExportEOL();
New: public str aSifExportEOL();

public Image aoIcon(str image);
public Image absSifIcon(str image);

The following SIF clases have been moved to cm.abstract.sif with a different class hierarchy:

Old: public class CustomSIFExport extends AOSifExport : inherit constructors;
New: public class CustomSIFExport extends ASifExport : inherit constructors;

Old: public class GenSifExport extends AOSifExport;
New: public class GenSifExport extends ASifExport;

The following SIF clases / functions have been moved to cm.abstract.sif:

// functions.cm
public <str, str>[] getDefaultSIF();
public void initDefaultSIFSettings();
public void initDefaultSIFSettings();
public str removeUnits(Object value, str original);
public <str, str>[] getColumnToIDs();
public bool checkForValidCodes(<str, str>[] columnToID);
public bool checkAndAppendSIF(ArticleGridWindow gw, DropDownMenu temp, PartColumn column);

// customSifExport.cm
public TextExporter customSifExport();

// exportEditSubWindow.cm
public class ExportEditSubWindow extends SubWindow;

// sifContants.cm
public const str sifUserSettingKey;
public const str sifLocalSettings;
public const str partNumberLabel;
public const str optionCodeLabel;
public const str optionUpchargeLabel;
public const str articleCodeLabel;
public const str optionKeyLabel;
public const str descriptionColumnLabel;
public const str optionDescriptionLabel;
public const str optionDescription2Label;
public const str optionListPriceLabel;

// sifControlRow.cm
public class SIFControlRow extends ControlRow;

// sifSettingsDialog.cm
public str[] dexImportFilter();
public str->str colKeyToSIFCode();
public SIFSettingsDialog getSIFSettingsDialog();
public void makeSIFSettingsDialog(Window win);
public class SIFSettingsDialog extends DialogWindow;

// singleCodeDialog.cm
public SingleCodeDialog getSingleCodeDialog();
public void makeSingleCodeDialog(Window parent, str column, pointI origin=(-1, -1), str label="Dialog");
public class SingleCodeDialog extends DialogWindow;

cm.abstract.palette

paletteApply.cm

PaletteApplyEnv '''cm Old: public constructor(Palette pal, schemeFilterType filter) New: public constructor(Palette pal, schemeFilterType filter, Space space=null) '''

paletteDialog.cm

Old: extend public PaletteApplyEnv applyEnv(schemeFilterType filter)
New: extend public PaletteApplyEnv applyEnv(schemeFilterType filter, Palette pal=null)

cm.abstract.tools.elevationG2

The following methods have been removed from ElevTreeViewItemG2:

Removed: extend public str formattedLabel(PixelDevice pixelDevice, rectI r)

cm.abstract.walls.tools.elevations

The following methods have been removed from ElevTreeViewItem:

Removed: extend public str formattedLabel(PixelDevice pixelDevice, rectI r)

cm.core

cm.core

The following methods have been moved to functions:

cm.core

// world.cm methods moved to functions
Old: extend public void disconnectNonUfosFromUfos(Snapper{} input);
New: public void disconnectNonUfosFromUfos(Snapper{} input);

Old: extend public Snapper{} replaceUfosWithProxySnappers(Snapper{} input, Object->UFOProxySnapper ufoReconnectMap=null);
New: public (Snapper{}) replaceUfosWithProxySnappers(Snapper{} input, 
                                                     UfoData ufoData=null,
                                                     Object->UFOProxySnapper ufoReconnectMap=null);

The following function / arguments have been changed:

cm.core

// coreGlobals.cm
Old: public (function(World world): bool) {} containsUfoDataHooks() : keep;
New: public (function(str->Object):bool) {} containsAuxUfoDataHooks() : keep;

Old: public function(World world) {} clearUfoDataHooks() : keep;
New: public function(str->Object) {} clearAuxUfoDataHooks() : keep;

// worldUfo.cm
Old: public void putContainsUfoDataHooks(function(World world):bool hook);
New: public void putContainsAuxUfoDataHooks(function(str->Object):bool hook);

Old: public void removeContainsUfoDataHooks(function(World world):bool hook);
New: public void removeContainsAuxUfoDataHooks(function(str->Object):bool hook);

Old: public void putClearUfoDataHooks(function(World world) hook);
New: public void putClearAuxUfoDataHooks(function(str->Object) hook);

Old: public void removeClearUfoDataHooks(function(World world) hook);
New: public void removeClearAuxUfoDataHooks(function(str->Object) hook);

cm.core.part

// partDividersInSpace.cm
Old: public PartDivider[] getPartDividers(Space space, bool sort=true);
New: public PartDivider[] defaultPartDividers(bool category=false);

// parts.cm
Old: public PartGroup fetchPartsTree(Space space=mainSpace(),
                                     //bool merge=true,
                                     //bool finalize=true,
                                     bool merge=false,
                                     bool finalize=false,
                                     bool filter=true,
                                     function():bool interrupt=null,
                                     bool progress=false,
                                     ExportFilterSettings exportFilter=null,
                                     PartSeqSorter sorter=null,
                                     PartFetchEnv mergeEnv=null);
New: public PartGroup fetchPartsTree(PartDivider[] dividers,
                                     Space space=mainSpace(),
                                     //bool merge=true,
                                     //bool finalize=true,
                                     bool merge=false,
                                     bool finalize=false,
                                     bool filter=true,
                                     function():bool interrupt=null,
                                     bool progress=false,
                                     ExportFilterSettings exportFilter=null,
                                     PartSeqSorter sorter=null,
                                     PartFetchEnv mergeEnv=null);

Here is an example code snippet that used getPartDividers(..) and fetchPartsTree(..):

Old:
// In extension init / main
World world = session.mainWorld;
if (world) {
	Space space = world.mainSpace;
   
	if (space) {
	    PartDivider[] seq = space.getPartDividers(sort=true);
	    if (seq) for (p in seq) { if (p as CategoryPartDivider) p.enable(true); }
	    //if (seq) for (p in seq) { if (p as CategoryPartDivi    er) p.on = true; }
	}
}

// In chapter creation / print
PartGroup partTree = fetchPartsTree(space=space);

New: 
PartGroup partTree = fetchPartsTree(defaultPartDividers(category=true), space=space);

cm.core.partTag

// partTagsInSpace.cm
Old: public void repairTagsInSpace(Space space);
// partTagsInWorld.cm
New: public void repairTagsInWorld(World world); 

cm.core.ui

// exportFilterDialogV2.cm
Old: public void showFilterSettingsDialogV2(ExportFilterBar exportBar, bool useAutoTags=false, str label=null, bool showViewModes=false);
New: public void showFilterSettingsDialogV2(ExportFilterBar exportBar, str label=null, bool showViewModes=false);

Old: ExportFilterDialogV2(Window parent, bool useAutoTags=false, str label=null, bool showViewModes=false);
New: ExportFilterDialogV2(Window parent, str label=null, bool showViewModes=false);

Old: ExportFilterSubWindowV2(Window parent, 
                             bool useAutoTags=false, 
                             str label=null, bool showViewModes=false, 
                             function(ExportFilterSubWindowV2 exportSub) callback=null);
New: ExportFilterSubWindowV2(Window parent, str label=null, bool showViewModes=false);

Old: public OrderExportDialog orderExportDialog(Window parent, World world,
                                                bool initVisible=true,
                                                Part[] selectedParts=null,
                                                CalculationView view=null) : deprecated;
New: public OrderExportDialog orderExportDialog(Window parent, World world,
                                                bool initVisible=true,
                                                bool show=true,
                                                Part[] selectedParts=null,
                                                CalculationView view=null);

The following fields, methods, classes and functions have been removed:

cm.core.calc

// articleViewTool.cm
Removed: public class ExpandArticleViewTool extends ArticleViewTool : deprecated;
Removed: public class DetailsArticleViewTool extends ArticleViewTool;
Removed: public class FilterArticleViewTool extends ArticleViewTool;
Removed: public class GroupingArticleViewTool extends ArticleViewTool : deprecated;
Removed: public class OrderExportArticleViewTool extends ArticleViewTool : deprecated;
Removed: public class AutoCreateArticleViewTool extends ArticleViewTool;
Removed: public class MergePolicyArticleViewTool extends ArticleViewTool;
Removed: public class PrintArticleViewTool extends ArticleViewTool;
Removed: public class PrintPreviewArticleViewTool extends ArticleViewTool;

// filterArticleViewDialog.cm
Removed: public class FilterArticleViewDialog extends ModalDialog;
Removed: public class HideFilteredArticleViewTool extends ArticleViewTool;
Removed: public class RemoveExplicitArticleViewTool extends ArticleViewTool;
Removed: public void giveSettingsToSpace(ArticleView this, Space space=null);
Removed: public ExportFilterSettings getFilter(ArticleView this) : deprecated;

// partMergeDialog.cm
Removed: public void showPartMergeDialog(Window parent, Space space) : deprecated;
Removed: public class ColumnPartFetchEnv2 extends ExtendedPartMergeEnv : deprecated;

cm.core.part

// partDividerDialog.cm
Removed: public void showPartDividerDialog(Window parent, Space space=null) : deprecated;
Removed: public void updatePartDividerDialog() : deprecated;
Removed: public void closePartDividerDialog() : deprecated;
Removed: public class PartDividerDialog extends DialogWindow : deprecated;

// partDividersInSpace.cm
Removed: public void putPartDivider(Space space, PartDivider divider);
Removed: public PartDivider[] autoUpdatePartDividers(Space space, PartDivider[] dividers, bool turnOnNew=false);
Removed: public void putPartDividers(Space space, PartDivider[] dividers);
Removed: public void removeTagCategoryPartDivider(Space space, PartTagCategory category);
Removed: public PartDivider[] repairPartDividers(Space space, PartDivider[] dividers);

cm.core.settings

// exportFilterBar.cm
Removed: public class AutoTagsPartExportFilterBar extends ExportFilterBar : deprecated;

ExportFilterBar
    Removed: public bool horizontal;
    Removed: public CheckBox filter;
    Removed: final public void minimalSizeTweak(int h, int w=-1);

// Use `masterEnabled()` instead of `filter.isChecked()` instead:
Old: if (filter as ExportFilterBar) if (!filter.filter.?isChecked()) return;
New: if (filter as ExportFilterBar) if (!filter.masterEnabled()) return;

cm.core.ui

// exportFilterDialog.cm
Removed: public void showFilterSettingsDialog(ExportFilterBar exportBar, bool useAutoTags=false, str label=null);
Removed: public class ExportFilterDialog extends DialogWindow;
Removed: public class ExportFilterSubWindow extends SubWindow;

// exportFilterDialogV2.cm
ExportFilterSubWindowV2
    Removed: public CheckBox all : deprecated;
    Removed: public CheckBox unCategorized : deprecated;
    Removed: public PDItem treeViewItem : copy=null, stream=null, ignore modify notice, deprecated;
    Removed: public PartDivider[] partDividers : deprecated;
    Removed: final public sorted str->symbol alpabeticallySortedAvailableCategories() : deprecated;
    Removed: final public void rebuildItems() : deprecated;
    Removed: final public void updateTags(TreeViewItem item, bool include) : deprecated;
    Removed: extend public void enableDegreeOfTriGroup(TreeViewItem item) : deprecated;
    Removed: final public void turnOnFilters(bool v=true) : deprecated;
    Removed: final public void turnOnExplicitMode(bool v=true) : deprecated;

// orderExportDialog.cm
OrderExportDialog
    Removed: public ExportFilterBar exportFilter;

cm.core.elevateAnimation

Merge request

# elevateAnimation.cm

New: public void elevateAnimation() {..}

New: public class ElevateAnimation extends AlignAnimationG2 {..}
New: public class ElevateAnimationStart extends ElevateAnimation {..}
New: public class ElevateAnimationEnd extends ElevateAnimation {..}
New: public class ElevateAnimationVessel extends CoreAlignHelperVessel {..}
New: package class ElevateAnimationSnapperFilter extends SnapperFilter {..}

cm.core.msOffice.excel

Moving NetObj2DArray to new package

The class NetObj2DArray in cm.core.msOffice.excel is now moved to cm.import.interop.netObj.cm.

// cm.core.msOffice.excel.excelObj.cm
Removed: public class NetObj2DArray extends NetObj : deprecated {

// cm.import.interop.netObj.cm
Added: public class NetObj2DArray extends NetObj {

Minor changes to Core's Excel API

Before 14.5, ExcelObj.openWorkbook method is slightly different between cm.core.msOffice.ExcelObj and cm.abstract.interop.ExcelObj. In cm.core.msOffice.excel, ExcelObj.openWorkbook opens Excel Workbook as Read-only by default. To open Excel Workbook as writable, the only way was to use ExcelObj.openWritableWorkbook method. Meanwhile, ExcelObj.openWorkbook in cm.abstract.interop opens Excel Workbook as writable by default, and there were no options to open a workbook as Read-only.

Since cm.abstract.interop is more commonly used, some changes were made to Excel APIs in cm.core.msOffice.excel to standardise the behavior moving forward.

The following method in ExcelObj class has now been removed in 14.5.

// cm.core.msOffice.excel.ExcelObj
Removed: extend public ExcelWorkbook openWritableWorkbook(Url filePath) {

In addition, new readonly flag has now been added to ExcelObj.openWorkbook in 14.5 to support opening workbook in Read-only/Writable state. By default, workbook is opened as writable, to retain the same behavior as in cm.abstract.interop.

// cm.core.msOffice.excel.ExcelObj
Modified: extend public ExcelWorkbook openWorkbook(Url filePath, bool readonly=false) {

Migration is required if:

  • Workbook was intended to be opened as Read-only before 14.5
  • ExcelObj.openWritableWorkbook was used to open workbook as writable before 14.5.

cm.core.photo

photoLabDialog.cm

Added: public SelectButton lockViewButton;
Added: private SpaceSelection cachedSelection;

cm.std.photo.filteredLabView2D.cm

New filtered view allows selection to filter which objects can be selected and not.

Added: public class FilteredLabView2D extends REDView2D {}

cm.core.view2D.cm

Added: public bool selectionFilterActive;

cm.core.propsScheme

The following function in cm.core.propsScheme has been deprecated:

Deprecated: public str psShortenLabel(Font font, str oriLabel, int allowedW)

// use this function instead
New: cm.win.shortenText(str text, Font font, int width)

cm.core.red3D.distributed

redRenderJob.cm

The following fields have been added to the RedRenderJob class in order to calculate render job transfer progress:

Added: public bool jobTransferred;
Added: public int64 jobTransferProgress;
Added: public int64 jobTransferSize;

cm.core.red3D.redRenderJobDialog.cm

In order to allow resizing of the render progress dialog, it now extends AppWindow instead of DialogWindow.

Old: public class REDRenderJobDialog extends DialogWindow {...}
New: public class REDRenderJobDialog extends AppWindow {...}

Thus, the constructor has also been changed.

Old:
public constructor(Window parent) {
	super(parent, brush=labBoxBg, label=$RenderJobDialogCaption,
	      size=(100, 100), initVisible=false);
	build();
	autoPosition();
}
New:
public constructor(Window parent) {
	super(brush=labBoxBg, label=$RenderJobDialogCaption,
	      size=(100, 100), initVisible=false, appWinAsDialogParent=parent,
	      noMinimize=true, noMaximize=true);
	build();
	minSize = size;
	maxSize = (size.w * 2, (size.h.double * 1.5).int);
}

Finally, two fields have been added to constrain the window size.

Added: public sizeI mazSize;
Added: public sizeI minSize;

cm.core.red3D.redRenderJobItem.cm

Due to changes in UI a new constructor has been added to RedRenderJobItem.

Added:
    public constructor(str key, str label, color textColor, REDRenderJob job, sizeI barSize, SrcRef src=#:src) {
	super(key, label, textColor, src=src);
	this.job = job;
	total = 1;
	colorKey = "green";
	this.barSize = barSize;
	updateProgress(job.progress());
    }

REDRenderFrame do now support asking for more than depthMap. It's now possible to ask for other renderlayers now.

// redRenderFrame.cm, Class: REDRenderFrame
Old: public bool generateDepthMap;
New: private renderLayerType{} generateLayers();
New: extend public bool generateDepthMap();
New: extend public bool generateDiffuseMap();
New: extend public bool generateNormalMap();

OutputTile now uses LayerImagesData to store render result rather than ImageWithDepthData.

//tile.cm, Class: OutputTile
Old: public ImageWithDepthData image;
New: public LayerImagesData image;

RenderImageCache now uses LayerImagesData to store render result rather than ImageWithDepthData.

// renderImageCache.cm, Class: RenderImageCache
Old: final public ImageWithDepthData get(Url url)
New: final public LayerImagesData get(Url url)

Old: final public void put(Url url, ImageWithDepthData image)
New: final public void put(Url url, LayerImagesData image)

// renderImageCache.cm, Class: RenderImageCacheEntry
Old: public ImageWithDepthData image;
New: public LayerImagesData image;

cm.core.red3D.filterPipeline

Denoise functionality in postprocessing steps now support additinal layers for improved denoising.

// redFilterPipeline3D.cm, Class: REDFilterPipeline3D
Old: final public void setSourceAndDepth(REDImage2D newSource, REDImage2D newDepth)
New: setSourceAndDepth(REDImage2D newSource=null, REDImage2D newDepth=null, REDImage2D newDiffuseMap=null, REDImage2D newNormalMap=null)


// redPostProcessor.cm, Class: REDPostProcessor
Old: extend public void updateParams(REDImage2D src, REDImage2D depth, REDFilterPipeline3D filterPipeline, bool forceSourceChange=false)
New: extend public void updateParams(REDImage2D src, REDImage2D depth, REDImage2D diffuse, REDImage2D normal, REDFilterPipeline3D filterPipeline, bool forceSourceChange=false)

Old: extend public void updateParams(REDImage2D src, REDImage2D depth, LuminanceEnv env, bool forceSourceChange=false)
New: extend public void updateParams(REDImage2D src, REDImage2D depth, REDImage2D diffuse, REDImage2D normal, LuminanceEnv env, bool forceSourceChange=false) {

Old: final private REDImage2D initialize(REDImage2D source, REDImage2D depthMap)
New: final private REDImage2D initialize(REDImage2D source, REDImage2D depthMap, REDImage2D diffuseMap, REDImage2D normalMap)

Old: final private void updateSource(REDImage2D newSource, REDImage2D newDepth)
New: final private void updateSource(REDImage2D newSource, REDImage2D newDepth, REDImage2D newDiffuse, REDImage2D newNormal)

cm.core.red3D.redView2D

Old: final public REDViewCaptureEnv beforeCapture()
New: final public REDViewCaptureEnv beforeCapture(bool capturingBackupThumbnail=false)

cm.core.settings

The following functions have been changed:

// cm/core/settings/coreSettings.cm
Removed: public void putLastBrowseDir(Url);
Removed: public void putLastCADBrowseDir(Url);

// cm/core/settings/coreSettingsAdvancedPage.cm
Removed: public Url pdfSaveLocation(bool trace=true);
Removed: public Url cadSaveLocation(bool trace=true);
Added: public Url pdfSaveLocation(bool xtrace=true);
Added: public Url exportSaveLocation(bool xtrace=true);

The following globals have been removed:

Removed: public bool useDefaultSaveLocation;
Removed: public bool useDefaultCADSaveLocation;

The following methods on CoreSettingsAdvancedPage has been changed:

Removed: extend public Window makeSaveField(SubWindow);
Removed: extend public initSaveField();
Removed: extend public makePDFField(SubWindow, Display);
Removed: extend public void initPDFField();
Removed: extend public void makeCADField(SubWindow, Display);
Removed: extend public void initCADField();
Removed: extend public void saveDefaultPathValue(SaveDefaultUrlField, bool, bool);

Removed: extend public void updateCoreSettings(SaveDefaultUrlField w, bool reset);
Added: extend public void updateCoreSettings(SaveDefaultUrlField w);

cm.core.ui

cm.core.ui

Removed: public class WorldPasswordDialog extends ChangePasswordDialog {}

cm.core.ui.removeBackupDialog

Removed: public UrlField dirField;
Removed: public CheckBox removeRecursive;
Removed: public Url url;

cm.core3D.pbrMatProp

cm.core3D.pbrMatProp.cm

Removed: public Int wantedRealtimeResolution = null;
Added: private Int _wantedRealtimeResolution = null;

cm.core3D.pbrMatProp.cm Texture

Added: private bool allowDownsample = true;
Added: private int downsampleSize = 512;

cm.core3D.gMaterialProperty3D.cm

Added: private bool allowDownsample = true;
Added: private int downsampleSize = 512;

cm.core3D.gMaterial3D.cm

Added: private bool allowDownsampleOnSave = true;

cm.downloader

cm.downloader

Fields message and data removed from commData in 14.5.

# commData.cm

Removed: public str message : deprecated;
Removed: public str data : deprecated;
# deprecated.cm

Removed: public void download_file(DownloadInfo info, f(OutBoundMessage, str) cb=null) : deprecated;
Removed: public void download_file(str src, str tar, str grp=null, f(OutBoundMessage, str) cb=null) : deprecated;
Removed: public void download_files(DownloadInfo[] infos, int limit=32, f(OutBoundMessage, str) cb=null) : deprecated;

cm.std.architectural

The following method has been removed in FloorViewItem:

Removed: extend public str fitText(Font font, str text, int maxWidth)

cm.std.photo

labRenderQualityBox.cm

The following fields have been removed from LabRenderQualityBox and instead added to new class AdvancedRenderSettingsBox.

Removed: private UnitField[] fields;
Removed: private UnitField->Object lastRecordedValues();
Removed: private SliderAndNumber masterQualitySlider;
Removed: private Button resetQualitySliderBtn;

Added: private DropDownTreeView masterQualityDropDown;
Added: package AdvancedRenderSettingsBox;

Additionally, the high-quality warning button was changed into a display.

Old: private Button infoB;
New: private Display infoD;

The following methods were removed due to the refactoring.

Removed: final private void qualitySliderChanged() {}
Removed: public void controlChanged(Control c) {}
Removed: public void controlRecievedEnterKey(Control c) {}
Removed: public void controlLostFocus() {}
Removed: final private void buildCustomRealiticRenderControls() {}

As mentioned, much of this functionallity was moved to AdvancedRenderSettingsBox.

Added: public class AdvancedRenderSettingsBox extends LabBox {}

cm.std.photo.labQuickContainer.cm

In photolab simple mode, the quality slider was removed and replaced by a dropdown menu.

Removed: private SliderAndNumber masterQualitySlider;
Added: private DropDownTreeView masterQualityDropDown;

cm.std.photo.labBox

cm.std.photo.labBox.cm

Old: final public CheckBox makeToggle(str key, str label, Object value) {}
New: final public CheckBox makeToggle(str key, str label, Object value, str toolTip) {}

cm.std.wall

Added new argument for WallOpeningConnector

New pos argument for WallOpeningSnap to allow having different positions for WallOpeningSnap other than the predefined values in the pos() method.

// cm.std.wall.wallOpeningConnector.cm
Modified: public constructor(Snapper snapper, wallOpeningSnapType snapType, Point pos=null)

cm.win

New parameters have been added to the constructor of BrushHoverDropDownMenuButton:

public constructor(Window parent,
                   Brush stdBrush,
                   Brush hoverBrush,
                   Brush mouseDownBrush,
                   // inherited key arguments
                   Font font=controlFont,
                   FrameStyle frameStyle=noFrame,
                   frame3DState frameState=frameStateUp,
                   pointI pos=(0, 0),
                   sizeI size=sizeI(-1, -1),
                   pointI margins=(6, 4),
                   alignment align=middle,
                   str key=null,
                   str label="",
                   color labelColor=color(0, 0, 0),
                   color pressedLabelColor=color(colorType.none),
                   alignment textSide=undefinedAlignment,
                   Image image=null,
                   Image disabledImage=null,
                   color color=nocolor,
                   function(Control button) callback=null,
                   // extended
                   Image secondImage=null,
                   int secondImageMargin=6,
                   bool marginFromText=true, // new
                   imageAlign secondImageAlign=imageAlign.right, // new
                   SrcRef src=#:src) {}

marginFromText allows changing the calculated margin to be calculated from the text sides, instead of the sides of the button edges.

secondImageAlign lets you choose between placing the second image on the right or bottom of the button.

DiskImage can now store diffuseMap and normalMap aswell.

// diskImage.cm, Class: DiskImage
Old: public constructor(Url targetUrl, sizeI size, imageFormat format,
			   fix byte[] pixels, int pixelsCount,
			   fix byte[] depth=null, int depthCount=0,
			   float avgLum=0, float logAvgLum=0,
			   float minLum=0, float maxLum=0, int sampleCnt=0) : unsafe
New: public constructor(Url targetUrl, sizeI size, imageFormat format,
			   fix byte[] pixels, int pixelsCount,
			   fix byte[] depth=null, int depthCount=0,
			   fix byte[] diffuse=null, int diffuseCount=0,
			   fix byte[] normal=null, int normalCount=0,
			   float avgLum=0, float logAvgLum=0,
			   float minLum=0, float maxLum=0, int sampleCnt=0) : unsafe

Old: final public bool saveToFile(Url targetUrl, fix byte[] pixels, int pixelsByteCount,
				 fix byte[] depth=null, int depthCount=0) : unsafe
New: final public bool saveToFile(Url targetUrl, fix byte[] pixels, int pixelsByteCount,
				 fix byte[] depth=null, int depthCount=0,
				 fix byte[] diffuse=null, int diffuseCount=0,
				 fix byte[] normal=null, int normalCount=0) : unsafe

custom.dataCatalog.builder.features

The following methods have been removed from OptionRangeCell:

Removed: extend public str truncateDisplay(str value, int cellWidth)

custom.flooring

FlgCatalogSetup class changes

// custom.flooring.flgCatalogSetup.cm
Added: extend public DataCatalog dataCatalog() { return _dataCatalog; }

There should be no need to request download minimum files.
Deprecated: extend public void downloadMinimumFiles() : deprecated {}

New cell arg to register cell to receive update after product download.
Old: extend public void requestDownload(guid lid, bool full=false) {
New: extend public void requestDownload(guid lid, FlgCatalogProductCell cell=null, bool full=false) {

Is flooring catalog update task running.
Added: package bool flgCatalogUpdateTaskRunning() {

The catalogues treeview has been removed from FlgControlPanelPage

// custom/flooring/flgControlPanelPage.cm
Should never have been public and is no longer used.
Removed: extend public void createAndAppendTreeView(str key, str text, str desc, bool checked) {
Removed: public void update() {

New - Download request data carrier - SQLite database download.

// custom/flooring/flgDownloadDataCarriers.cm
Added: public class FlgDatabaseDownloadDataCarrier extends FlgCatalogDownloadDataCarrier {

Most lifecycle ID functions extended with str->Object auxData argument.

// custom/flooring/flgLifecycleId.cm
Old: public void flgAppendLifecycleIdMfgPrdKeyFun(guid k, function(FlgProduct):str fn) {
New: public void flgAppendLifecycleIdMfgPrdKeyFun(guid k, function(str, str->Object):str fn) {
Old: public str flgDefaultLifecycleIdMfgPrdKey(FlgProduct prd) {
New: public str flgDefaultLifecycleIdMfgPrdKey(str code, str->Object aux) {
Old: public guid flgLifecycleId(FlgProduct prd, guid mfgKey, function(FlgProduct):str mfgPrdKeyFn=function flgDefaultLifecycleIdMfgPrdKey) {
New: public guid flgLifecycleId(flgProductType prdType, TemplateShape tempShape, str code, str->Object aux, guid mfgKey, function(str, str->Object):str mfgPrdKeyFn=function flgDefaultLifecycleIdMfgPrdKey) {
Added: public guid flgLifecycleId(FlgProduct prd, guid mfgKey, function(str, str->Object):str mfgPrdKeyFn=function flgDefaultLifecycleIdMfgPrdKey) {
Old: public str flgLifecycleIdS(FlgProduct prd, guid mfgKey, function(FlgProduct):str mfgPrdKeyFn=function flgDefaultLifecycleIdMfgPrdKey) {
New: public str flgLifecycleIdS(flgProductType prdType, TemplateShape tempShape, str code, str->Object aux, guid mfgKey, function(str, str->Object):str mfgPrdKeyFn=function flgDefaultLifecycleIdMfgPrdKey) {
Added: public str flgLifecycleIdS(flgProductType prdType, TemplateShape tempShape, str code, str->Object aux, guid mfgKey, function(str, str->Object):str mfgPrdKeyFn=function flgDefaultLifecycleIdMfgPrdKey) {
Old: public str flgLifecycleIdS(FlgProduct prd, guid mfgKey, guid fnKey) {
New: public str flgLifecycleIdS(FlgProduct prd, guid mfgKey, guid fnKey) {
// custom/flooring/flgPalette.cm
Moved: public void flgBuildToolboxCardWindow(Window w) {
Moved to custom/flooring/flgToolboxCardWindow.cm

Old: public str flgPaletteCardLabel() {
New: private str flgPaletteCardLabel() {
Old: public void flgUpdatePaletteCardLabel(Card card) {
New: package void flgUpdatePaletteCardLabel(Card card) {

All Window creation functions moved from custom.flooring.import.functions.cm

// custom.flooring.functions.cm
Added: public Window flgAppendUrlField(
Added: public Window flgAppendButton(
Added: public Window flgAppendCheckBox(
Added: public Window flgAppendTextField(
Added: public Window flgAppendRadioButtonSeq(
Added: public Window flgAppendLabel(
Added: public Window flgAppendDropDown(

custom.flooring.import

Catalog Excel import moved to Catalogue Creator

The custom.flooring.import extension has changed parent from custom.flooring => custom.dataCatalog

Deprecated 'FlgExcelImport0' and 'FlgExcelImporter1' flooring catalog excel importers.

// custom.flooring.import.flgExcelImport0.cm
Deprecated: public class FlgExcelImport0 extends FlgImporter {

// custom.flooring.import.flgExcelImporter1.cm
Deprecated: public class FlgExcelImporter1 extends FlgImporter {

Added generated lifecycle IDs

New set used to guard against duplicate lifecycle IDs during product generation.

// custom.flooring.import.flgProductGenerator4.cm
Added: extend public str{} generatedLids() 
Added: extend public void appendLid(guid v)

Corrected spelling

Old: extend public void appendAuxillaryDataList(FlgProduct p, XmlTag t) {
New: extend public void appendAuxiliaryDataList(FlgProduct p, XmlTag t) {

Table of contents support added

// custom.flooring.import.flgXmlWriter.cm
New: public class FlgTableOfContents : unstreamable {

// custom.flooring.import.functions.cm
Removed: public Window flgAppendUrlField(
Removed: public Window flgAppendCheckBox(
Removed: public Window flgAppendTextField(
Removed: public Window flgAppendRadioButtonSeq(
Removed: public Window flgAppendLabel(
Removed: public Window flgAppendDropDown(
All Window creation functions moved to `custom.flooring.functions.cm`

New: public void flgWriteReport(Url url, str[] reports)

dll.sqlite

With the FTS5 extension it's now possible to create an FTS5 virtual table that will provide full-text search functionality to the database. No changes are needed unless you want to use this new functionality. For more info see: sqlite.org/fts5.html