PropertyLinks: refactor property link API

* Create new class PropertyLinkBase as the common parent class for all
  type of links. See the class document for details of its API.

* Added new link scope 'Hidden' that is ignored during normal object
  dependency calculation, but still keep tracks of object remove,
  relabel, etc.

* There is a new concept called 'Shadow subname' introduced in this
  patch, which will only be meaningful in future topological naming
  feature. See [here](https://git.io/fjXKR) for more details.

* DocumentObject added a new API adjustRelativeLink() and a helper
  resolveRelativeLink() function.
This commit is contained in:
Zheng, Lei
2019-06-29 17:24:14 +08:00
committed by wmayer
parent de4651bc99
commit 29bc24a5cf
8 changed files with 4712 additions and 242 deletions

View File

@@ -1577,18 +1577,28 @@ void Application::initTypes(void)
App ::PropertyUUID ::init();
App ::PropertyFont ::init();
App ::PropertyStringList ::init();
App ::PropertyLinkBase ::init();
App ::PropertyLinkListBase ::init();
App ::PropertyLink ::init();
App ::PropertyLinkChild ::init();
App ::PropertyLinkGlobal ::init();
App ::PropertyLinkHidden ::init();
App ::PropertyLinkSub ::init();
App ::PropertyLinkSubChild ::init();
App ::PropertyLinkSubGlobal ::init();
App ::PropertyLinkSubHidden ::init();
App ::PropertyLinkList ::init();
App ::PropertyLinkListChild ::init();
App ::PropertyLinkListGlobal ::init();
App ::PropertyLinkListHidden ::init();
App ::PropertyLinkSubList ::init();
App ::PropertyLinkSubListChild ::init();
App ::PropertyLinkSubListGlobal ::init();
App ::PropertyLinkSubListHidden ::init();
App ::PropertyXLink ::init();
App ::PropertyXLinkSub ::init();
App ::PropertyXLinkSubList ::init();
App ::PropertyXLinkContainer ::init();
App ::PropertyMatrix ::init();
App ::PropertyVector ::init();
App ::PropertyVectorDistance ::init();
@@ -1608,6 +1618,7 @@ void Application::initTypes(void)
App ::PropertyFile ::init();
App ::PropertyFileIncluded ::init();
App ::PropertyPythonObject ::init();
App ::PropertyExpressionContainer ::init();
App ::PropertyExpressionEngine ::init();
// Extension classes