The following classes and functions have been removed:
cm.core.technologyPartners
:
Removed: public void showTechnologyPartners(Window parent, str key=null);
cm.core.legacy.oldAboutDialog
:
Removed: public class OldAboutDialog; Removed: public OldAboutDialog showOldAboutDialog(Window parent);
cm.core.ui.aboutDialog
:
Removed: public class AboutDialog; Removed: public void showAboutDialog(Window parent, str key=null);
cm.core.ui.cetAboutDialog
:
Removed: public class CetAboutDialog; Removed: public CetAboutDialog showCetAboutDialog(Window parent);
cm.win.technologyPartnersDialog
:
Removed: public class TechnologyPartnersDialog; Removed: public TechnologyPartnersDialog showTechnologyPartnersDialog(Window parent);
The following classes have their parent class changed:
cm.abstract.consumer.ConsumerAboutDialog: AboutDialog -> DialogWindow cm.abstract.consumerG2.ConsumerAboutDialog: AboutDialog -> DialogWindow
To show the new About CET dialog, call cm.core.ui.showAboutCet(Window parent)
// cm/core/graph/gAdvImage.cm, Class: GAdvImage Old: final public mrgn combinedClipRgn(Canvas gd, mrgn oldRgn) New: final public mrgn combinedClipRgn(ToPixelCanvas gd, mrgn oldRgn) // cm/core/windowView.cm, Class: WindowView Old: public Canvas canvas New: public ToPixelCanvas canvas // cm/draw/canvas.cm, Class Canvas Old: public constructor(PixelDevice c) New: public constructor() Removed: public PixelDevice dc // cm/draw/canvas.cm, new global function to make things compile easily rather than casting the Canvas to ToPixelCanvas New: public PixelDevice getCanvasDC(Canvas c) // cm/draw/gdiCanvas.cm Old: public class GdiCanvas extends Canvas New: public class GdiCanvas extends ToPixelCanvas // cm/std/print/photoLayoutSnapshot.cm, Class PhotoLayoutSnapshot Old: extend public void draw(Canvas canvas, rectI targetRect) : abstract New: extend public void draw(ToPixelCanvas canvas, rectI targetRect) : abstract // cm/std/print/photoLayoutSnapshot.cm, Class PhotoLayoutREDSnapshot Old: public void draw(Canvas canvas, rectI targetRect) New: public void draw(ToPixelCanvas canvas, rectI targetRect)
CollAccountType
and all related classes are undeprecated to be used for holding subscription tier information.
# collAccountTypes.cm Old: public class CollAccountTypes : deprecated New: public class CollAccountTypes Old: public class CollAccountType : deprecated, abstract New: public class CollAccountType : abstract Old: public class CollAccountTypeFree extends CollAccountType : deprecated New: public class CollAccountTypeFree extends CollAccountType Old: public class CollAccountTypeCorporate extends CollAccountType : deprecated New: public class CollAccountTypeCorporate extends CollAccountType Old: public class CollAccountTypeAdvanced extends CollAccountType : deprecated New: public class CollAccountTypeAdvanced extends CollAccountType # collProjectController.cm Old: public str accountTypeKey : deprecated New: public str accountTypeKey
The following accessors/mutators related to CollFileG3
are removed in favour of using a static type key to access files.
# collCollection.cm Removed: extend public CollFileG3{} serverFiles(CollFileType type) Removed: extend public symbol{} serverFileIds(CollFileType type) Removed: extend public CollFileG3{} editFiles(CollFileType type) Removed: extend public symbol{} loadedFileIds(CollFileType type) Removed: extend public CollFileG3{} loadedFiles(CollFileType type) # collFile.cm Removed: extend public CollFileG3{} files(CollFileType t) Removed: extend public symbol{} ids(CollFileType t) Removed: extend public void changeType(CollFileType t) # collFileSubModel.cm Old: extend public CollFileG3{} loadedFiles(CollFileType type) New: extend public CollFileG3{} loadedFiles(str typeKey) # collFileType.cm Old: final public str packageName() New: final public symbol packageName() Old: final public str packageVersion() New: final public version packageVersion()
CollFileG3
and CollUFOFileType
constructors are modified to take in a CollFileTypeId
parameter.
# collFile.cm Old: public constructor(CollFileType type, str name, int v, symbol id) New: package constructor(CollFileTypeId typeId, str name, int v, symbol id) # collUFOFileType.cm Removed: public constructor() Old: public constructor(str id, str description) New: public constructor(CollFileTypeId srcTypeId)
The following file type classes are removed.
Removed: public class CollPdfFileType extends CollDocFileType Removed: public class CollDwgFileType extends CollDocFileType
The signatures of the following utility functions are modified:
# collFileNamer.cm Old: public str getUniqueCopiedName(CollCollectionG3 this, str fileName, CollFileType fileType, collCopyMode mode=collCopyMode.normal) New: public str getUniqueCopiedName(CollCollectionG3 this, str fileName, str fileTypeKey=null, collCopyMode mode=collCopyMode.normal) Old: public str getUniqueNewName(CollCollectionG3 this, str rootName, CollFileType fileType) New: public str getUniqueNewName(CollCollectionG3 this, str rootName, str fileTypeKey) Old: public bool isUniqueFileName(CollCollectionG3 this, str name, CollFileType fileType=null) New: public bool isUniqueFileName(CollCollectionG3 this, str name, str fileTypeKey=null) Old: public bool isUniqueServerFileName(CollCollectionG3 this, str name, CollFileType fileType=null) New: public bool isUniqueServerFileName(CollCollectionG3 this, str name, str fileTypeKey=null) Old: public bool isUniqueLocalFileName(CollCollectionG3 this, str name, CollFileType fileType=null) New: public bool isUniqueLocalFileName(CollCollectionG3 this, str name, str fileTypeKey=null) # collFileType.cm Old: public void unregister(CollFileType type) New: public void unregisterCollFileType(str key) Old: public CollFileType collFileType(str id) New: public CollFileType resolveCollFileType(CollFileTypeId typeId, collReleaseStage stage) # collUFOFileType.cm Old: public CollFileType collUFOFileType() New: public CollFileType collUFOFileType(CollFileTypeId typeId)
In 13.5, the if-as statement and if-as expression were quite "magical", able to apply a wide variety of conversions including function calls and constructors. This can create confusing and error-prone situations.
In 14.0, the if-as statement is limited to membership testing and unboxing conversions (see below). The if-as expression is now exactly equivalent in behaviour to the if-as statement.
public void foo(Object o) { // These two are equivalent if (o as Str) {pln(o.v);} if (o as str) {pln(o);} // These two are equivalent if (o as Int) {pln(o.v);} if (o as int) {pln(o);} // new in 14.0 // These two are equivalent in 14.0 if (o as int) {pln(o);} else {pln("not an int");} pln(o as int ? o : "not an int"); }
public class A { public constructor() {pln(this, " is created");} } public class B { public constructor(A a) {pln(this, " is created from A");} } public class C extends A { public constructor() {} public constructor(A a) {pln(this, " is created from A");} } public void foo(A a) { pln("a=", a); if (a as B) {pln("a as B=", a);} // forbidden in 14.0 if (a as C) {pln("a as C=", a);} } { foo(A()); pln(); foo(C()); }
Since B
does not inherit from A
, if (a as B)
is not valid in 14.0. It only works in 13.5 because there is a constructor which "converts" A
into a new instance of B
.
This happened in practice with DialogWindow
and Button
, respectively, since Button
has a constructor with one required argument of type Window
(and DialogWindow
is a Window
).
Output in 13.5
A(175) is created
a=A(175)
B(165) is created from A
a as B=B(165)
C(171) is created
a=C(171)
B(161) is created from A
a as B=B(161)
a as C=C(171)
Output in 14.0
A(36) is created
a=A(36)
C(79) is created
a=C(79)
a as C=C(79)
The compileFun
CM function has been replaced with a native
implementation, which is faster and cleaner. The remove
optional
argument has been removed as the new version avoids writing the code
to disk in any case.
Old: public Function compileFun(str def, bool output=false, bool remove=true) New: public Function compileFun(str def, bool output=false) Old: public Function compileFun(StrBuf def, bool output=false, bool remove=true) New: public Function compileFun(StrBuf def, bool output=false)
A similar function which returns all compiled functions in the file, rather than just the first one, has been added.
Added: public Function[] compileFuns(str def, bool output=false) Added: public Function[] compileFuns(StrBuf def, bool output=false)
The internal code responsible for finding the appropriate conversion path between types (if any) has been significantly improved. There is a small risk of surprising behaviour since the new algorithm performs an exhaustive search and selects the "best" path, rather than using flawed pruning heuristics.
In some circumstances, the type conversion search may recurse forever; the old version would treat this as a failure to find an appropriate conversion, the new version will treat this as an error.
Old: public bool cm.io.easySave(Object obj, Url url, bool pkgVersions=true, bool fast=false); New: public bool cm.io.easySave(Object obj, Url url, bool pkgVersions=true, bool fast=false, bool verifyCRC=false); Old: public bool cm.io.object.safeReplaceUrl(Url this, Url target, bool xtrace=false) New: public bool cm.io.object.safeReplaceUrl(Url this, Url target, bool verifyCRC=false, bool xtrace=false)
public void foo(FooClass this) { pln(field); // equivalent to this.field } public void foo(fooValue& this) { pln(field); // equivalent to this.field } public void foo(fooValue this) { pln(field); // equivalent to this.field in 14.0 }
The garbage collector (GC) has two different pause-states; "frozen"
and "parked". The former prevents almost all GC activity, the latter
forces the GC to finish any pending work and prevents all GC
activity. The GC interface now exposes gcUnPark
so that CM code can
enter and leave the "parked" state.
Added: gcUnPark();
14.0 makes many changes to the CM-DLL interface, you must rebuild all DLLs.
The CM-DLL interface now uses a secondary version check, allowing breaking API changes without necessarily changing the size of the DllStartInfo struct.
Due to internal refactoring, funFunLinkOffset
has been removed; use
getFunLink(Fun*)
instead.
Removed: int funFunLinkOffset;
We have enabled MSVC errors for comparisons between signed and unsigned values. If you encounter code which you cannot migrate for this (e.g. third-party libraries), add the following lines to your DLL's Makefile to disable the errors.
CFLAGS := $(filter-out /w34287,$(CFLAGS))
CFLAGS := $(filter-out /w34388,$(CFLAGS))
Deprecated: cm.core.ui.HighlightSnapper
The HighlightSnapper
class used for InvalidListDialog
have been deprecated and replaced with the more modern implementation of HighlightVessels
, to resolve some issues with using Snapper for temporary graphics. Consider replacing any relevant usage with highlightInvalidObject()
, or related methods in cm/core/highlightVessel.cm
.
As a consequence, these fields and references to them have also been removed:
Removed: InvalidListDialog::HighlightSnapper{} hlSnappers Removed: DsIncompleteOptionDialog::HighlightSnapper{} hlSnappers Removed: DsCatalogVersionDialog::HighlightSnapper{} hlSnappers
Removed the entire Constraints Toolbox for the following reasons:
Top Down
and All
is now deprecated.Removed: public DcDBBuilderShrinkWindow toolboxWindow; Removed: public Display appleStyleDisplay; Removed: public DsRadioButton applyStyleAllRadioButton; Removed: public DsRadioButton applyStyleTopDownRadioButton; Removed: public StateControlGroup applyStyleControlGroup; Removed: public Display constraintTypeDisplay; Removed: public DsRadioButton validConstraintTypeRadioButton; Removed: public DsRadioButton invalidConstraintTypeRadioButton; Removed: public StateControlGroup constraintTypeControlGroup;
New argument to determine the constraint's expression type.
Old: extend public bool validExpression(str exp, StrBuf error) New: extend public bool validExpression(dsiConstraintExpressionType constraintExpType, str exp, StrBuf error)
Column label does not need to be updated dynamically anymore.
Removed: public str labelText()
dcConstraintsUndoOp.cm
is removed as dsiConstraintsApplyStyle
and dsiConstraintType
enumerations are not used anymore.
Removed: public class DcConstraintTypeUndoOp extends DcUndoOp
The following method signatures are changed to accommodate the addition of the constraint expression type.
// DsiExprValidationEnv (dsiExprValidationEnv.cm) Old: public constructor(VxRuntime rt, str expr, DataCatalog cat) New: public constructor(VxRuntime rt, dsiConstraintExpressionType exprType, str expr, DataCatalog cat) Old: extend public void doesNothign(VxExpr e, StrBuf error) New: extend public void doesNothing(VxExpr e, StrBuf error) // dsiVariants.cm Old: public VConstraint dsiCreateConstraint(DataCatalog catalog, str expression) New: public VConstraint dsiCreateConstraint(dsiConstraintExpressionType expressionType, str expression) Old: public bool dsiValidateConstraintExpr(DataCatalog cat, str exp, StrBuf error=null) New: public bool dsiValidateConstraintExpr(DataCatalog cat, dsiConstraintExpressionType exprType, str expr, StrBuf error=null) Old: public str->SFeature dsiVariantsFeatures(DsiPData data, str featureCode) New: public str->SFeature dsiVariantsFeatures(DsiPData data, str featurePath) Old: public str->Object dsiVariantsTableSelectedValues(DsiPData data, str featCode) New: public str->Object dsiVariantsTableSelectedValues(DsiPData data, str featurePath) Removed: public void dsiClearVariantsTableCache()
All interfaces of constraintsApplyStyle
and constraintType
in OFDAHeaderData
are now deprecated.
// OFDAHeaderData Deprecated: private dsiConstraintsApplyStyle _constraintsApplyStyle : deprecated; Deprecated: extend public dsiConstraintsApplyStyle constraintsApplyStyle() : deprecated Deprecated: extend public dsiConstraintsApplyStyle constraintsApplyStyle=(dsiConstraintsApplyStyle constraintsApplyStyle) : deprecated Deprecated: extend public dsiConstraintType constraintType() : deprecated Deprecated: extend public dsiConstraintType constraintType=(dsiConstraintType constraintType) : deprecated
Commit ae48deba Removed the acceptAccessory() method in favor of the acceptLocation() method on AccessoryEnv.
The visibility of DsControlPanelPage is no longer affected by whether the Catalog Browser is turned on or not. It will be always visible in control panel. The "Package required" and "Extensions" under Portfolio Info in "Catalogue Details" dialog will now show the target extensions of the portfolio if any.
A few methods that responsible to check for "Catalog Details" visibility has been removed in 14.0.
// class DsControlPanelPage Removed: final public bool isCtlgBrowserTurnedOn() Removed: extend public void setCatDetailsVisibility(bool visible) Removed: public void dsEnableCatDetails(bool enable)
Embedded extension's 'getCatEmbeddedExtensions' method has been renamed to license for clarity.
// class DsCatInfoView Old: extend public str getCatEmbeddedExtensions(str[] embedded) New: extend public str getCatRequiredLicenses(DsCatCatalogue cat) // class DsCatInfoView Old: extend public str getCatEmbeddedExtensionNames(str[] pkgs) New: extend public str getCatEmbeddedExtensionNames(DsCatCatalogue cat)
Introduced a new class DsToolboxCreatorDragAnimation
that responsible dragged item removal. With this new added class, all item's drag animation inheritance has been updated accordingly.
New: public class DsToolboxCreatorDragAnimation extends DsDragAnimation New: public class DsToolboxCreatorThumbnailViewMoveDragAnimation extends DsThumbnailViewMoveDragAnimation Old: public class DsToolboxCreatorFillerInsertDragAnimation extends DsThumbnailViewMoveDragAnimation New: public class DsToolboxCreatorFillerInsertDragAnimation extends DsToolboxCreatorThumbnailViewMoveDragAnimation Old: public class DsToolboxCreatorSchemeButtonInsertDragAnimation extends DsDragAnimation New: public class DsToolboxCreatorSchemeButtonInsertDragAnimation extends DsToolboxCreatorDragAnimation Old: public class DsToolboxCreatorGroupInsertDragAnimation extends DsDragAnimation New: public class DsToolboxCreatorGroupInsertDragAnimation extends DsToolboxCreatorDragAnimation Old: public class DsToolboxCreatorImageSectionInsertDragAnimation extends DsDragAnimation New: public class DsToolboxCreatorImageSectionInsertDragAnimation extends DsToolboxCreatorDragAnimation
The following Excel-related classes in cm.abstact.interop.excelObj.cm are now deprecated, as there are identical classes in cm.core.msOffice.excel with more functionalities.
// cm.abstract.interop.excelObj.cm Deprecated: public class ExcelObj extends NetObj : deprecated Deprecated: public class ExcelWorkbook extends NetObj : deprecated Deprecated: public class ExcelSheet extends NetObj : deprecated Deprecated: public class ExcelRange extends NetObj : deprecated
Data catalogue behaviors (K2XpToDataControllerBehavior) will now use the 'Code' field from Smart Objects (XpSnapperSpawner) as part no. The Part No field on XpDataBehavior is no longer used, but remains to make the transition easier.
Removed: K2Assortment::public K2StyleStore styleStore
Old: extend public K2PropDef propDef(XpPropDef def) { New: extend public K2PropDef propDef(XpPropDef def, XpShape shape) {
Old: public constructor(XpPropDef xpPropDef) { New: public constructor(XpPropDef xpPropDef, XpShape shape) {
Removed: public class K2StyleStore
Old: public Class{} allNonAbstractSubclasses(Class definition) { New: private Class{} allNonAbstractSubclasses(Class definition) { Removed: public Class[] runtimeGetAllXpDefinitions() { Removed: public void checkXpDefinitions() { }
Old: public class K2SnapperSpawner extends SnapperSpawner : inherit constructors { New: public class K2SnapperSpawner extends SnapperSpawner : abstract, inherit constructors {
Removed: public K2PropDef toK2PropDef(XpPropDef xpPropDef, K2Assortment assortment=null) { Old: public PropDef toK2(XpPropDef xpPropDef, K2Assortment assortment=null) { New: public PropDef toK2(XpPropDef xpPropDef, XpShape shape, K2Assortment assortment=null) { Old: public PropInputSetting toK2(XpPropInputSetting xpPropInputSetting, XpPropDef xpPropDef, str label=null) { New: public PropInputSetting toK2(XpPropInputSetting xpPropInputSetting, XpPropDef xpPropDef, XpShape shape, str label=null) { Removed: public Object k2Default(XpPropDef xpPropDef) {
Old: extend public K2Behavior process(K2Behavior unstreamed, K2Assortment assortment) { New: extend public K2Behavior[] process(K2Behavior unstreamed, K2Assortment assortment) {
Old: public class K2ShapeInvalidationEnv extends K2InvalidationEnv { New: package class K2ShapeInvalidationEnv extends K2InvalidationEnv {
Old: public K2PropDef propDef(XpPropDef def) { New: public K2PropDef propDef(XpPropDef def, XpShape shape) {
Old: public XpShape[] findAlternatives(K2AlternativeEngine this, Line mouseLine=null, Point2D p=null, Space space=null) { New: public XpShape[] findAlternatives(K2AlternativeEngine this, Snapper existing, Line mouseLine=null, Point2D p=null, Space space=null) {
Removed: XpFaceIntersectFilter::public bool excludeEdges
Old: K2ExcludeNotInCornerToCornerFaceOp::public LayerExpr corner0 New: K2ExcludeNotInCornerToCornerFaceOp::public LayerExpr corner0LayerExpr Old: K2ExcludeNotInCornerToCornerFaceOp::public LayerExpr corner1 New: K2ExcludeNotInCornerToCornerFaceOp::public LayerExpr corner1LayerExpr Old: K2ExcludeNotInCornerToCornerFaceOp::constructor(LayerExpr corner0=null, LayerExpr corner1=null) New: K2ExcludeNotInCornerToCornerFaceOp::constructor(LayerExpr corner0LayerExpr, LayerExpr corner1LayerExpr)
Removed: K2Library::extend public str splitStr(str s, int length) { Old: public constructor(LayerExpr expr=null, str sortKey=null, function() viewModeHook=function k2SetDefaultViewModes) { New: public constructor(LayerExpr expr=null, str sortKey=null, function() viewModeHook=function k2SetDefaultViewModes, int maxVisibleSpawners=20) {
Removed: K2GeneralLibrary::extend public void addProjectInfoLimb(LibraryLimb parent) {
Removed: K2InsertNodeChooser::public K2InsertNodeFinder finder
Removed: public class K2InsertNodeFinder
Old: public XpFace[] worktopCandidateFacesToShapeAlternativeFaces(XpFace[] candidates, LayerExpr faceFilter, WindowView view) { New: public XpFace[] buildWorktopCandidateFaces(XpFace[] faces, LayerExpr candidateTag, WindowView view) { Old: public void bridgeWorktopCandidateFaces(XpFace[] candidates) { New: private void bridgeWorktopFaces(XpFace[] candidates) { Old: public void adaptAdaptableWorktopFaces(XpFace[] faces) { New: private void adaptAdaptableWorktopFaces(XpFace[] faces) {
Old: public XpFace[] soffitCandidateFacesToShapeAlternativeFaces(XpFace[] candidates, LayerExpr faceFilter, WindowView view) { New: package XpFace[] buildSoffitCandidateFaces(XpFace[] faces, LayerExpr faceFilter, WindowView view) {
Old: public XpWorktopShape k2DefaultWorktopShapeAlternative(XpFace[] candidateFaces, XpFace[] joints, Line mouseLine=null, Point2D p=null, double z=0, LayerExpr layer=null) { New: package XpWorktopShape defaultWorktopAlternative(WorktopAlternativeEnv env) { Old: public XpWorktopShape k2ExtendBackWorktopShapeAlternative(XpFace[] candidateFaces, XpFace[] joints, Line mouseLine=null, Point2D p=null, double z=0, LayerExpr layer=null) { New: package XpWorktopShape extendBackWorktopAlternative(WorktopAlternativeEnv env) { Old: public XpWorktopShape k2ExtendOverlappingBackWorktopShapeAlternative(XpFace[] candidateFaces, XpFace[] joints, Line mouseLine=null, Point2D p=null, double z=0, LayerExpr layer=null) { New: package XpWorktopShape extendOverlappingBackWorktopAlternative(WorktopAlternativeEnv env) { Old: public XpWorktopShape k2MergedAndJoinedWorktopShapeAlternative(XpFace[] candidateFaces, XpFace[] joints, Line mouseLine=null, Point2D p=null, double z=0, LayerExpr layer=null) { New: package XpWorktopShape mergedAndJoinedWorktopAlternative(WorktopAlternativeEnv env) { Old: public XpWorktopShape k2ExtendSideWorktopShapeAlternative(XpFace[] candidateFaces, XpFace[] joints, Line mouseLine=null, Point2D p=null, double z=0, LayerExpr layer=null) { New: package XpWorktopShape extendSideWorktopAlternative(WorktopAlternativeEnv env) { Old: public XpWorktopShape createWorktopShapeAlternativeWithJoints(XpFace[] faces, Line mouseLine=null, Point2D p=null, double z=0, XpFace[] joints=null) { New: public XpWorktopShape createWorktopShapeAlternativeWithJoints(WorktopAlternativeEnv env, XpFace[] faces) {
Removed: extend public double frontOverhang() { Removed: extend public double sideOverhang() { Replaced with K2WorktopOverhangModifier (behavior).
Old: extend public void modifyFaces(K2Snapper owner, XpFace[] faces) { New: extend public void modifyFaces(K2Snapper owner, XpFace[] faces, WindowView view) {
Old: public XpFace[] k2GenericSnapperShapeWorktopFaces(K2Snapper snapper, symbol engineTag, double z, double h, double overhang) { New: package XpFace[] k2GenericSnapperShapeWorktopFaces(K2Snapper snapper, symbol engineTag, double z, double h) { Old: public XpFace[] k2AdaptableFrontGapWorktopFaces(K2Snapper snapper, symbol engineTag, double z, double h, double overhang) { New: package XpFace[] k2AdaptableFrontGapWorktopFaces(K2Snapper snapper, symbol engineTag, double z, double h) { Old: public XpFace[] k2AdaptableFrontAndSideWorktopFaces(K2Snapper snapper, symbol engineTag, double z, double h, double overhang) { New: package XpFace[] k2AdaptableFrontAndSideWorktopFaces(K2Snapper snapper, symbol engineTag, double z, double h) {
Old: public class K2GenericInvalidateFun extends K2EngineInvalidateFun { New: private class K2GenericInvalidateFun extends K2EngineInvalidateFun { Old: public class K2AppendArchitecturalCutoutsFun extends K2EngineFun { New: private class K2AppendArchitecturalCutoutsFun extends K2EngineFun {
Old: public Object default() { New: public Object default(XpShape shape) { Old: public XpDomain domain() { New: public XpDomain domain(XpShape shape) {
Old: public Object default() { New: public Object default(XpShape shape) { Old: public XpDomain domain() { New: public XpDomain domain(XpShape shape) {
Old: extend public SubSet subset() { New: extend public SubSet subset(XpShape shape) { Old: public SubSet subset() { New: public SubSet subset(XpShape shape) {
Old: public Object default() { New: public Object default(XpShape shape) { Old: public XpDomain domain() { New: public XpDomain domain(XpShape shape) {
Old: public Object default() { New: public Object default(XpShape shape) {
Old: public Object default() { New: public Object default(XpShape shape) {
XpFace now now supports bent faces, i.e a face is described by an arc rather than a line. The bend of the face is controlled by the relativeBendTangentAngle member.
Most things should work the same way for straight faces (whether a face is straight can be checked with isStraight()), but you must be mindful that a face now describes an arc when you use it. For example, a point between p0 and p1 might not be on the face, if it isn't straight.
Because of this, some of its methods has changed name and/or behavior.
Old: final public point center() // midPoint describes the center between p0 and p1, i.e the old center() if you ignore the bend of the face. // The midPoint isn't necessarily located on the face. New: final public point midPoint() // bendZenith describes the center of the arc of the face. // For straight faces, this is the same as midPoint(). New: final public point2D bendZenith()
Old: final public double length() // The actual length of the worktop, considering the bend. // Always greater than or equal to the old length(). // Equals the old length() for straight faces. New: final public double length() // The length of the straight line from p0 to p1 // Same as the old implementation of length(). // Equals the new length() as well as the old for straight faces. New: final public double backLength()
Old: final public bool contains(point2D& p, double precision=1e-6) // The new implementation ignores the bend of the line. It works exactly the same as before. // Might not be what you want. New: final public bool straightContains(point2D& p, double precision=1e-6) // Returns the distance between a point and the face, including bend. New: final public double distance(point2D p)
Old: final public rect bound() New: final public box bound(double thickness=0) New: final public rect bound2D(double thickness=0)
Old: public constructor(XpFace face) { New: public constructor(XpFace face, XpMeasureBasePropDef def) {
Old: public Object inputAttributes() { New: public Object inputAttributes(XpShape shape) {
Old: public Object default() { New: public Object default(XpShape shape) {
Old: public Object default() { New: public Object default(XpShape shape) { Old: public XpDomain domain() { New: public XpDomain domain(XpShape shape) {
Old: public Object inputAttributes() { New: public Object inputAttributes(XpShape shape) { Old: public Object default() { New: public Object default(XpShape shape) { Old: public XpDomain domain() { New: public XpDomain domain(XpShape shape) {
Old: extend public Object default() { New: extend public Object default(XpShape shape) { Old: extend public SubSet subset() { New: extend public SubSet subset(XpShape shape) { Old: public Object default() { New: public Object default(XpShape shape) { Old: public SubSet subset() { New: public SubSet subset(XpShape shape) { Old: public constructor() { New: public constructor(XpMeasureBasePropDef def) {
Old: public str->Object inputArgs() { New: public str->Object inputArgs(XpShape shape) { Old: public Object default() { New: public Object default(XpShape shape) { Old: public SubSet domain() { New: public SubSet domain(XpShape shape) { Old: public class XpMeasurePropDef extends XpPropDef { New: public class XpMeasurePropDef extends XpMeasureBasePropDef {
Old: public XpPropInputSetting propInputSetting(str key) { New: public XpPropInputSetting propInputSetting(str key, XpShape shape) {
Old: extend public Object inputAttributes() { New: extendpublic Object inputAttributes(XpShape shape) { Old: extend public str->Object inputArgs() { New: extend public str->Object inputArgs(XpShape shape) { Old: extend public Object default() { New: extend public Object default(XpShape shape) { Old: extend public XpDomain domain() { New: extend public XpDomain domain(XpShape shape) { Old: extend public SubSet subset() { New: extend public SubSet subset(XpShape shape) {
Old: extend public str->Object args(XpPropDef def) : abstract { } New: extend public str->Object args(XpPropDef def, XpShape shape) : abstract { } Old: public str->Object args(XpPropDef def) { New: public str->Object args(XpPropDef def, XpShape shape) {
Removed: public class XpParentRsStr
Old: extend public XpPropInputSetting propInputSetting(str key) { New: extend public XpPropInputSetting propInputSetting(str key, XpShape shape) {
Old: public Object default() { New: public Object default(XpShape shape) { Old: public SubSet domain() { New: public SubSet domain(XpShape shape) {
Old: public XpPropInputSetting propInputSetting(str key) { New: public XpPropInputSetting propInputSetting(str key, XpShape shape) {
Old: public Object default() { New: public Object default(XpShape shape) { Old: public SubSet domain() { New: public SubSet domain(XpShape shape) {
Old: public Object default() { New: public Object default(XpShape shape) {
Old: public Object default() { New: public Object default(XpShape shape) { Old: public SubSet domain() { New: public SubSet domain(XpShape shape) {
Removed: XpWorktopLayout::public double frontOverhang Removed: XpWorktopLayout::public double sideOverhang
MhAfterEngineInitialExportBehavior
interface changes:
Old : extend public void afterInitialExport(MhSnapper parent, MhSnapper owner) {} New : extend public void afterInitialExport(MhSystemCollection system, MhSnapper parent, MhSnapper owner) {}
MhAfterEngineInitialExportBehavior::void afterInitialExport(MhSystemCollection system)
now has a default implementation, moved from MhRowAfterEngineInitialExportBehavior
.
extend public void afterInitialExport(MhSystemCollection system) { Snapper[] sortedSnappers = sortedSystemSnappers(system); for (MhSnapper snapper in sortedSnappers) { if (!system.exportedFromEngine(snapper)) continue; ?MhSnapper parent = snapper.parent; forAllBehaviors (b in snapper) { if (b as MhAfterEngineInitialExportBehavior) { b.afterInitialExport(system, parent, snapper); } } snapper.validateBehaviors(sAfterInitialExport); } }
MhCheckValidFrameChildBehavior
now extends from MhAfterEngineInitialExportBehavior
.
Old : public class MhCheckValidFrameChildBehavior extends MhBehavior New : public class MhCheckValidFrameChildBehavior extends MhAfterEngineInitialExportBehavior
MhCheckValidFrameChildBehavior
interface changes:
Old : extend public bool isInvalidFrameChild(MhSnapper parent, MhSnapper child) { New : extend public bool isInvalidFrameChild(MhSnapper parent, MhSnapper child, MhEngine engine=null) { Old : extend public void removeInvalidChild(MhSnapper parent, MhSnapper child) { New : extend public void removeInvalidChild(MhSnapper parent, MhSnapper child, MhEngine engine=null) {
MhCheckValidFrameChildBehavior
's execution logic has been moved:
Old : public void validate(Object owner, symbol k, MhSnapperChangedEnv env=null) { New : public void afterInitialExport(MhSystemCollection system, MhSnapper parent, MhSnapper owner) {
MhRunEngineEnv
interface changes:
Old : public constructor(bool cleanup=true, bool blockImport=false, bool blockExport=false, bool blockFinalize=true, bool showProgressBar=false) { set*(this: cleanup, blockImport, blockExport, blockFinalize, showProgressBar); } New : public constructor(bool cleanup=true, bool blockImport=false, bool blockExport=false, bool blockFinalize=true, bool removeFailedEntry=true, bool showProgressBar=false) { set*(this: cleanup, blockImport, blockExport, blockFinalize, removeFailedEntry, showProgressBar); }
MhEngineRun
interface changes:
Old : extend public Snapper{} export(MhEngine engine, MhSystemEngineEnvironment env, MhEngineEntry[] entries, Space space=null) { New : extend public Snapper{} export(MhEngine engine, MhSystemEngineEnvironment env, MhEngineEntry[] entries, Space space=null, MhRunEngineEnv runEnv=null) {
The MhRowPopulator
and MhStorageRowPopulator
classes have swapped positions in the parent-child class hierarchy. For classes that extend from MhRowPopulator
, they now need to extend from MhStorageRowPopulator
.
Old : public class MhStorageRowPopulator extends MhPopulator New : public class MhRowPopulator extends MhPopulator Old : public class MhRowPopulator extends MhStorageRowPopulator New : public class MhStorageRowPopulator extends MhRowPopulator
Interface changes in MhRowLayout
:
Old : public MhRowLayout::MhStorageRowPopulator populator; New : public MhRowLayout::MhRowPopulator populator; Old : extend public MhRowLayout::MhStorageRowPopulator rowPopulator(MhStorageConfiguration config, rect systemRect, bool isAisle, bool first, bool lastRow) { New : extend public MhRowLayout::MhRowPopulator rowPopulator(MhStorageConfiguration config, rect systemRect, bool isAisle, bool first, bool lastRow) {
MhClearanceBehavior
constructor interface change. Now able to set a different purposeKey for clearance behaviors.
Old : public constructor() { super("Clearance"); } New : public constructor(str key="Clearance") { super(key); }
Introduced a new engine function MhAnimRowConstructionalFunction
. In 13.5, MhSystemAnimationExportFunction
also handled constructing row entries but in 14.0, we have now moved out that functionality into the new class MhAnimRowConstructionalFunction
.
The class MhSystemAnimationLevelPopulateExportFunction
has also been replaced by MhAnimRowLevelConstructionalFunction
.
Old : res << MhSystemAnimationLevelPopulateExportFunction("animationExport"); New : res << MhAnimRowLevelConstructionalFunction("animRowConstruction"); New : res << MhSystemAnimationExportFunction("animationExport"); Old : public class MhSystemAnimationLevelPopulateExportFunction extends MhSystemAnimationExportFunction { New : public class MhAnimRowLevelConstructionalFunction extends MhAnimRowConstructionalFunction {
Important to note is that "animRowConstruction" is executed before "animationExport".
public class MhRowAnimationEngineBehavior extends MhEngineBehavior { public void putEngineRunFunctions(MhSnapper snapper, symbol event="", Object env=null) { ... if (event == sSnapperInserted) { bool addFloorLevel = mhStorageConfiguration(snapper).?addFloorLevel(); mhPutEngineRunFunction(engine, "animRowConstruction", snapper=snapper, info=info, holeZDomain=holeZDomain, addFloorLevel=addFloorLevel, additionalPrim=additionalPrim); mhPutEngineRunFunction(engine, "animationExport", snapper=snapper, space=space, tryConnectToOtherRow=info.tryConnectToOtherRow, populateOffset=info.unitLoadPopulateOffset(snapper)); } ... }
Check any classes that extend from MhSystemAnimationExportFunction
to see if they should be executed before "animationExport". If this is the case, then they should instead extend from MhAnimRowConstructionalFunction
.
One example of this is MhAnimCantileverConstructionalFunction
which used to extend from MhSystemAnimationExportFunction
but now extends from MhAnimRowConstructionalFunction
.
With these changes, several fields have also been removed from MhSystemAnimationExportFunction
.
The fields below have been moved from MhSystemAnimationExportFunction
to MhAnimRowConstructionalFunction
.
public SubSet holeZDomain; public Bool addFloorLevel; public CollisionPrimitive additionalPrim; public MhRowAnimationInfo info;
The fields below have been removed from MhSystemAnimationExportFunction
without replacement. MhAnimRowConstructionalFunction
now retrieves these values directly from the MhRowAnimationInfo
field.
// removed public Point pos; public Angle rot; // MhRowAnimationInfo extend public MhEngineConstructionEntry createRowEntry(MhEngineEntryBlock block, MhEngineConstructionEntry e) { ... point pos = info.p0; orientation rot = info.a; ... }
New functions mhUnrollCollisionPrim()
which are used to remove roll angles from collision primitives.
/** * Unroll primitive transform. * Collision resolver does not support rolled primitive. */ public CollisionPrimitive mhUnrollCollisionPrim(CollisionPrimitive prim) { CollisionPrimitiveSet set(null, null); CollisionPrimitive[] prims(); mhUnrollCollisionPrim(prim, prims); for (p in prims) set.subPrims << p; return set; } /** * Unroll collision primitive. * @list : result will be appended to the list. */ public void mhUnrollCollisionPrim(CollisionPrimitive prim, CollisionPrimitive[] list) : inline { if (!list) init list(); prim.?explode(list); for (p in list) if (p.t.rot.roll != 0deg) p.t -= Transform(orientation(0deg, 0deg, p.t.rot.roll)); }
Deprecated MhEngineSnapperEntry::zeroTransformSnapperEntry()
method, calls to this method should be replaced with mhUnrollCollisionPrim()
.
Removed MhLevelPopulateFunction::orientedCollisionEntry()
method, calls to this method should be replaced with mhUnrollCollisionPrim()
.
Two additional parameters have been added to this function.
loadWithinLimit
: Set this parameter to true
to ensure that the calculated bay height includes all unit loads within the bay bound.filter
: You can now pass in a SnapperFilter
different from mhBayChildrenFilter
.Old : public <double, int, double> mhCalculatedBayHeight(MhSystemConfigurationItem this, MhSnapper bay, int stepCount, double maxBayHeight=maxDouble, bool xtrace=false) { New : public <double, int, double> mhCalculatedBayHeight(MhSystemConfigurationItem this, MhSnapper bay, int stepCount, bool loadWithinLimit=false, SnapperFilter filter=mhBayChildrenFilter, double maxBayHeight=maxDouble, bool xtrace=false) {
This function has been updated to support top levels (top level will be processed last by populator). It also better supports non-selective racks (e.g. levels with a roll angle).
There has been various changes to rename "row width" to "row cross aisle" and "row length" to "row down aisle".
The following classes have been renamed:
Old : MhRowWidthInsertAnimation New : MhRowCrossAisleInsertAnimation Old : MhRowLengthInsertAnimation New : MhRowDownAisleInsertAnimation
MhRowAnimationInfo
interface changes:
// Fields Old : /** * Length. X-axis. */ public double length = 1m; New : /** * Down aisle dimension. X-axis. */ public double downAisleDist = 1m; Old : /** * Width. Y-axis. */ public double width = 1.5m; New : /** * Cross aisle dimension. Y-axis. */ public double crossAisleDist = 1.5m; Old : public props : cached=false { ... "length"; "width"; ... } New : public props : cached=false { ... "downAisleDist"; "crossAisleDist"; ... } // Methods Old : extend public double minRowLength() { New : extend public double minRowDownAisleDist() { Old : extend public double minRowWidth() { New : extend public double minRowCrossAisleDist() {
MhRowInsertAnimation
interface changes:
Old : extend public MhRowLengthInsertAnimation lengthAnimation() { New : extend public MhRowDownAisleInsertAnimation lengthAnimation() {
MhRowDownAisleInsertAnimation
interface changes:
Old : extend public MhRowWidthInsertAnimation widthAnimation() { New : extend public MhRowCrossAisleInsertAnimation widthAnimation() {
MhRowLayout
interface changes:
Old : public double aisleW; New : public double aisleWidth : stream=null;
// public class MhSnapperRemoverVessel // Consolidated into MhSpreadToolEnv Removed field: public MhSnapperSpreadPattern spreadPattern; New: extend public MhSnapperSpreadPattern spreadPattern() New: extend public MhSnapperSpreadPattern spreadPattern=(MhSnapperSpreadPattern p) Removed field: public SpreadPatternGroup currentSpreadGroup; New: extend public SpreadPatternGroup currentSpreadGroup() New: extend public SpreadPatternGroup currentSpreadGroup=(SpreadPatternGroup g) // public class MhSnapperSpreadVessel // Consolidated to MhSpreadToolEnv Removed field: public MhSnapperSpreadPattern spreadPattern; Removed field: public SpreadPatternGroup currentSpreadGroup; Old: extend public CoreObject[] getCandidates() New: extend public CoreObject{} getCandidates() // cachedSpreadSnappers globals and public functions - moved into MhSnapperSpreadVessel Removed function: public void clearCachedSpread() Removed function: public (CoreObject{}) cachedSpreadSnappers(str key) Removed function: public void putToCachedSpreadSnappers(str key, CoreObject{} ss) Removed function: public void updateCachedSpreadAfterExplode(Snapper parent, box[] markedInfoBounds, MhSnapper[] explodedChildren, str cacheKey) New: extend public void updateSpreadGroupAfterExplode(Snapper parent, box[] markedInfoBounds, MhSnapper[] explodedChildren, str cacheKey) // cached spreadgroups globals and public functions - consolidated into MhSpreadToolEnv Removed function: public void clearSpreadGroups() Removed function: public SpreadPatternGroup spreadGroup(CoreObject[] snappers) Removed function: public SpreadPatternGroup addSpreadGroup(str cacheKey, CoreObject[] snappers) // public class SpreadPatternGroup Removed: public str cacheKey; Old: public constructor(str cacheKey, CoreObject[] snappers) New: public constructor(str key, CoreObject{} candidates) Old: public CoreObject[] snappers(); New: public CoreObject{} candidates(); Old: extend public bool sameGroup(CoreObject[] incomings) New: xtend public bool sameGroup(CoreObject{} incomings) // public class MhSnapperSpreadPattern Old: extend public str cacheKey(MhTrySnapAlternative mainAlt, CoreObject{} candidates) New: extend public void appendCacheKey(StrBuf buf, SnapAlternative mainAlt, CoreObject{} candidates) Removed: extend public MhSnapperInsertEntry[] getCachedEntries(MhTrySnapAlternative mainAlt, CoreObject{} candidates) Removed: extend public void cacheEntries(MhTrySnapAlternative mainAlt, CoreObject{} candidates, MhSnapperInsertEntry[] entries)
// globals Removed: public mhLazyGlobal MhBehavior mhStdSpreadCacheKeyBehavior = MhSpreadCacheKeyBehavior(); // public class MhSpreadPatternBehavior extends MhBehavior New: extend public MhSnapperSpreadPattern spreadPattern(MhSnapperSpreadPattern current, MhSnapper candidate) New: extend public void appendCacheKey(StrBuf buf, MhSnapper main, SnapAlternative alternative, MhSnapperSpreadPattern pattern)
// public class MhStorageSystemSpreadPattern Removed field: public str->MhSnapperInsertEntry[] cache(); // Moved to SpreadPatternGroup // Various SpreadPattern subclasses that existed solely to customize cacheKey Removed: public class MhUnitLoadNoSpreadPattern extends MhNoSpreadPattern Removed: public class MhUnitLoadBaySpreadPattern extends MhStorageBaySpreadPattern Removed: public class MhUnitLoadLevelSpreadPattern extends MhStorageLevelSpreadPattern Removed: public class MhUnitLoadRowLevelSpreadPattern extends MhStorageRowLevelSpreadPattern Removed: public class MhUnitLoadRowSpreadPattern extends MhStorageRowSpreadPattern Removed: public class MhUnitLoadDoubleDeepColumnLevelSpreadPattern extends MhDoubleDeepColumnLevelSpreadPattern Removed: public class MhUnitLoadColumnLevelSpreadPattern extends MhStorageColumnLevelSpreadPattern Removed: public class MhUnitLoadColumnSpreadPattern extends MhStorageColumnSpreadPattern Removed: public class MhUnitLoadSystemSpreadPattern extends MhStorageSystemSpreadPattern
Removed: public class MhNamePlateColumnSpreadPattern
Removed: public class MhFlankProtectorSpreadCacheKeyBehavior // globals Removed: public mhLazyGlobal MhBehavior mhFlankProtectorSpreadCacheKeyBehavior
In UnitLoad
, the public field name
has been replaced by a private field _name
together with public getter and setter methods.
Old : public str name; New : private str _name; New : extend public str name() { New : extend public str name=(str newName) {
By default, the setter method for _name
will trigger mtbhCache()
to be rehashed if the unit load is in the cache. This is because unit load name is used in the hash function of mtbhCache()
and therefore the hash needs to be updated when name is changed.
extend public str name=(str newName) { bool rehashCache = this in mtbhCache(); str res = _name = newName; if (rehashCache) mhRehashUnitLoadCache(); return res; }
The class NetObj2DArray in cm.core.msOffice.excel is now deprecated as there is already an identical class in cm.abstract.interop with the exact same functionality.
// cm.core.msOffice.excel.excelObj.cm Deprecated: public class NetObj2DArray extends NetObj {
Interface classes for creating render jobs have changed, using int64
instead of int
where needed to support large render specs.
// cm.core.red3d.redRenderJobEnv.cm, Class: REDRenderEnv Old: extend public void packageAdded(int total) New: extend public void packageAdded(int64 total) Old: extend public void packageProgress(int current) New: extend public void packageProgress(int64 current) Old: extend public void packageFinished(int total) New: extend public void packageFinished(int64 total)
Interface classes for creating render jobs have changed, using Stream64
instead of Stream
to support larger files.
And also using int64
instead of int
where needed for sizes of large streams/files.
// redRenderFrame.cm, Class: REDRenderFrame Old: final public void serialize(Stream stream) New: final public void serialize(Stream64 stream) // redRenderJob.cm, Class: REDRenderJob Old: final public void packageProgress(bool first, bool last, int incrProgress, int totalProgress) New: final public void packageProgress(bool first, bool last, int incrProgress, int64 totalProgress) // redRenderPackageFactory.cm, Class: REDRenderPackageFactory Old: public int bytesPacked = 0; New: public int64 bytesPacked = 0; Old: final public int totalSize(); New: final public int64 totalSize(); // redRenderSpec.cm, Class: REDRenderSpec Old: final public bool serialize(Stream stream) New: final public bool serialize(Stream64 stream) // renderChore.cm, Class: RenderChore Old: final public void serialize(Stream stream) New: final public void serialize(Stream64 stream) // tile.cm, Class: Tile Old: extend public void serialize(Stream stream) Mew: extend public void serialize(Stream64 stream) // tile.cm, Class: InputTile Old: extend public void serialize(Stream stream) New: extend public void serialize(Stream64 stream)
In cm/std/photo/photoSnapper.cm
an argument has been added to the createNewPhoto
method.
Old: final public void createNewPhoto() New: final public void createNewPhoto(bool loadPhoto=true)
Old: public function initAllProbes() New: public function initProbes() Old: public function destroyAllProbes() New: public function destroyProbes() old: public function probeManager() new: public function probes()
There are two parameters that are affecting this search function in constructor of DropDownTreeView
which are searchable
and searchThreshold
.
searchable
, the search function will only be enabled if true
is passed in, won't be enabled otherwise.searchThreshold
, the search function will only be enabled if the count of TreeViewItem
in this drop down is larger than the threshold, won't be enabled otherwise.public class DropDownTreeView extends BasicTreeView { public constructor(Window parent, ... bool searchable=false, // Added flag to control the search. int searchThreshold=10, // Threshold when to start the search. ...
Added method enableSearch()
in 14.0 to DropDownTreeViewPopup
, which can be used to toggle search window.
/** * Enable search field. */ extend public void enableSearch(bool searchable=true, int searchThreshold=10) { this.searchable = searchable; if (searchable) { this.searchThreshold = searchThreshold; searchField = defaultSearchField(); } }
MemoryStream
.There was previously no way to load DIB images from a stream, which forced the developer to first write the image to file and then loading with the URL. Now that shouldn't be a problem anymore with this new function.
/** * Load the stream of a jpg or png image to DibImage. * * stream - The sequence of bytes that holds the image, it * should be formatted as a jpg or png file. * inlineStream - Write the URL to the image object? * props - The properties on how to read the image. * The stream can be formatted in many ways, this * object tells the reader how to interpret the data. * use - Is the image going to be used after the current thread * has run its course? Then you should set this to true. */ public DibImage dibImage(Stream stream, bool inlineStream=false, ReadImageProps props=dibImageProps, bool use=false) { if (!stream) return null; if (!props.dibPadding) props = props + ReadImageProps(dibPadding=true); ReadImageResult readResult; try { lastLoadImageErrorCode = 0; readResult = imageMagick.read(stream.array, byteCount=stream.count(), pixels=true, blob=false, props=props); } catch (OutOfMemory e) { lastLoadImageErrorCode = 3; return null; } catch (Exception e) { lastLoadImageErrorCode = 4; return null; } if (!readResult) return null; // Not including this test as we still need to read the stream to know the pixel count, // so we've already paid the price to performance if we have a gigantic image //if (imageAreaLimit > 0 and fileReadable and url.imageSize.area() > imageAreaLimit) throw ImageTooBigException(); Dib dib(); if (createDibImageFromDibBytes(readResult.pixels.array, readResult.size.w, readResult.size.h, readResult.channels, dib)) { DibImage image(alpha=props.alpha); image.dib = dib; if (!inlineStream) image.file = stream.path; image.setSize(image.dib.size); image.bitDepth = image.dib.bitDepth(); if (use) image.use(); return image; } return null; }
Some of the files are moved to abstract package to remove dependency to the catalog browser. This means downloaded catalog toolboxed will be visible without having to turned on "Catalog Browser"'s extension.
custom/catalogBrowser/schemes.cm
file has been moved to abstract package cm/abstract/dataSymbol/scheme/layout/
.custom/catalogBrowser/toolboxes.cm
file has been moved to abstract package cm/abstract/dataSymbol/toolbox/
.In custom/dataCatalog/builder/publish/dcPortfolioDetailsSub.cm
, embedDD
field has been rename to license for clarity.
Old : public DsDropDownTreeView embedDD; New : public DsDropDownTreeView licenseDD;
custom.dataCatalog.builder.publish
packageRemoved dependency from custom.dataCatalog.builder.geometry
in custom.dataCatalog.builder.publish
In custom/dataCatalog/builder/publish/dcDeleteConfirmationDialog.cm
, added new class DcConfirmationDialog
and made DcPublishConfirmationDialog
as a subclass of the new class. Also changed the modifier from public
to package
.
We've changed almost everything of the flooring extension by refactoring. Flooring was never intended to be inherited. But we have opened it up a bit to allow reading of flooring information.
// REDRenderGIEnv Old: public void packageAdded(int total) New: public void packageAdded(int64 total) Old: public void packageFinished(int total) New: public void packageFinished(int64 total) // REDRenderJobEnv Old: public void packageAdded(int total) New: public void packageAdded(int64 total) Old: public void packageProgress(int current) New: public void packageProgress(int64 current)