Changesets: FreeCAD

staging 06294304

2019-06-29 09:36:37

Zheng, Lei

Details Diff
Spreadsheet: convert PropertySheet to link type property

PropertySheet is changed to derive from PropertyExpressionContainer,
which makes it a link type property that is capable of external linking.
It now relies on the unified link property API to manage object
depenency, and tracking of object life time, relabeling, etc.

This patch also includes various fix and improvement of Spreadsheet,
such as improved recompute efficiency, correct handling of document
label change, etc.
Attach Issues:
mod - src/Mod/Spreadsheet/App/Cell.cpp Diff File
mod - src/Mod/Spreadsheet/App/Cell.h Diff File
mod - src/Mod/Spreadsheet/App/PropertySheet.cpp Diff File
mod - src/Mod/Spreadsheet/App/PropertySheet.h Diff File
mod - src/Mod/Spreadsheet/App/Sheet.cpp Diff File
mod - src/Mod/Spreadsheet/App/Sheet.h Diff File

staging 8026ff13

2019-06-29 09:36:37

Zheng, Lei

Details Diff
Spreadsheet: convert PropertySheet to link type property

PropertySheet is changed to derive from PropertyExpressionContainer,
which makes it a link type property that is capable of external linking.
It now relies on the unified link property API to manage object
depenency, and tracking of object life time, relabeling, etc.

This patch also includes various fix and improvement of Spreadsheet,
such as improved recompute efficiency, correct handling of document
label change, etc.
Attach Issues:
mod - src/Mod/Spreadsheet/App/Cell.cpp Diff File
mod - src/Mod/Spreadsheet/App/Cell.h Diff File
mod - src/Mod/Spreadsheet/App/PropertySheet.cpp Diff File
mod - src/Mod/Spreadsheet/App/PropertySheet.h Diff File
mod - src/Mod/Spreadsheet/App/Sheet.cpp Diff File
mod - src/Mod/Spreadsheet/App/Sheet.h Diff File

master 34ed8a8e

2019-06-29 09:36:37

Zheng, Lei


Committer: wmayer Details Diff
Spreadsheet: convert PropertySheet to link type property

PropertySheet is changed to derive from PropertyExpressionContainer,
which makes it a link type property that is capable of external linking.
It now relies on the unified link property API to manage object
depenency, and tracking of object life time, relabeling, etc.

This patch also includes various fix and improvement of Spreadsheet,
such as improved recompute efficiency, correct handling of document
label change, etc.
Attach Issues:
mod - src/Mod/Spreadsheet/App/Cell.cpp Diff File
mod - src/Mod/Spreadsheet/App/Cell.h Diff File
mod - src/Mod/Spreadsheet/App/PropertySheet.cpp Diff File
mod - src/Mod/Spreadsheet/App/PropertySheet.h Diff File
mod - src/Mod/Spreadsheet/App/Sheet.cpp Diff File
mod - src/Mod/Spreadsheet/App/Sheet.h Diff File

staging 0b11871c

2019-06-29 09:30:51

Zheng, Lei

Details Diff
PropertyExpressionEngine: convert to link type property

PropertyExpressionEngine is changed to derived from a new class
PropertyExpressionContainer, which is in turn derives from
PropertyXLinkContainer. This makes PropertyExpressionEngine a link type
property that is capable of external linking. It now uses the unified
link property APIs for dependency management and tracking of object
life time, re-labeling, etc.

ObjectIdentifier is modified to support sub-object reference, but is
not exposed to end-user, because expression syntax is kept mostly
unchanged, which will be submitted in future PR. There is, however,
one small change in expression syntax (ExpressionParser.y) to introduce
local property reference to avoid ambiguity mentioned in
FreeCAD/FreeCAD#1619

Modified Expression/ExpressionModifier interface to support various link
property API for link modification.
Attach Issues:
mod - src/App/Application.cpp Diff File
mod - src/App/Document.cpp Diff File
mod - src/App/DocumentObject.cpp Diff File
mod - src/App/DocumentObject.h Diff File
mod - src/App/DocumentObjectPy.xml Diff File
mod - src/App/DocumentObjectPyImp.cpp Diff File
mod - src/App/Expression.cpp Diff File
mod - src/App/Expression.h Diff File
mod - src/App/ExpressionParser.tab.c Diff File
mod - src/App/ExpressionParser.y Diff File
mod - src/App/ExpressionVisitors.h Diff File
mod - src/App/ObjectIdentifier.cpp Diff File
mod - src/App/ObjectIdentifier.h Diff File
mod - src/App/Property.h Diff File
mod - src/App/PropertyExpressionEngine.cpp Diff File
mod - src/App/PropertyExpressionEngine.h Diff File
mod - src/App/PropertyGeo.cpp Diff File
mod - src/App/PropertyGeo.h Diff File
mod - src/App/PropertyUnits.cpp Diff File
mod - src/App/Range.cpp Diff File
mod - src/App/Range.h Diff File
mod - src/Mod/Sketcher/App/PropertyConstraintList.cpp Diff File
mod - src/Mod/Sketcher/App/PropertyConstraintList.h Diff File
mod - src/Mod/Sketcher/App/SketchObject.cpp Diff File
mod - src/Mod/Sketcher/App/SketchObject.h Diff File

staging 9dd5392f

2019-06-29 09:30:51

Zheng, Lei

Details Diff
PropertyExpressionEngine: convert to link type property

PropertyExpressionEngine is changed to derived from a new class
PropertyExpressionContainer, which is in turn derives from
PropertyXLinkContainer. This makes PropertyExpressionEngine a link type
property that is capable of external linking. It now uses the unified
link property APIs for dependency management and tracking of object
life time, re-labeling, etc.

ObjectIdentifier is modified to support sub-object reference, but is
not exposed to end-user, because expression syntax is kept mostly
unchanged, which will be submitted in future PR. There is, however,
one small change in expression syntax (ExpressionParser.y) to introduce
local property reference to avoid ambiguity mentioned in
FreeCAD/FreeCAD#1619

Modified Expression/ExpressionModifier interface to support various link
property API for link modification.
Attach Issues:
mod - src/App/Application.cpp Diff File
mod - src/App/Document.cpp Diff File
mod - src/App/DocumentObject.cpp Diff File
mod - src/App/DocumentObject.h Diff File
mod - src/App/DocumentObjectPy.xml Diff File
mod - src/App/DocumentObjectPyImp.cpp Diff File
mod - src/App/Expression.cpp Diff File
mod - src/App/Expression.h Diff File
mod - src/App/ExpressionParser.tab.c Diff File
mod - src/App/ExpressionParser.y Diff File
mod - src/App/ExpressionVisitors.h Diff File
mod - src/App/ObjectIdentifier.cpp Diff File
mod - src/App/ObjectIdentifier.h Diff File
mod - src/App/Property.h Diff File
mod - src/App/PropertyExpressionEngine.cpp Diff File
mod - src/App/PropertyExpressionEngine.h Diff File
mod - src/App/PropertyGeo.cpp Diff File
mod - src/App/PropertyGeo.h Diff File
mod - src/App/PropertyUnits.cpp Diff File
mod - src/App/Range.cpp Diff File
mod - src/App/Range.h Diff File
mod - src/Mod/Sketcher/App/PropertyConstraintList.cpp Diff File
mod - src/Mod/Sketcher/App/PropertyConstraintList.h Diff File
mod - src/Mod/Sketcher/App/SketchObject.cpp Diff File
mod - src/Mod/Sketcher/App/SketchObject.h Diff File

master 93e60caa

2019-06-29 09:30:51

Zheng, Lei


Committer: wmayer Details Diff
PropertyExpressionEngine: convert to link type property

PropertyExpressionEngine is changed to derived from a new class
PropertyExpressionContainer, which is in turn derives from
PropertyXLinkContainer. This makes PropertyExpressionEngine a link type
property that is capable of external linking. It now uses the unified
link property APIs for dependency management and tracking of object
life time, re-labeling, etc.

ObjectIdentifier is modified to support sub-object reference, but is
not exposed to end-user, because expression syntax is kept mostly
unchanged, which will be submitted in future PR. There is, however,
one small change in expression syntax (ExpressionParser.y) to introduce
local property reference to avoid ambiguity mentioned in
FreeCAD/FreeCAD#1619

Modified Expression/ExpressionModifier interface to support various link
property API for link modification.
Affected Issues
0003271
mod - src/App/Application.cpp Diff File
mod - src/App/Document.cpp Diff File
mod - src/App/DocumentObject.cpp Diff File
mod - src/App/DocumentObject.h Diff File
mod - src/App/DocumentObjectPy.xml Diff File
mod - src/App/DocumentObjectPyImp.cpp Diff File
mod - src/App/Expression.cpp Diff File
mod - src/App/Expression.h Diff File
mod - src/App/ExpressionParser.tab.c Diff File
mod - src/App/ExpressionParser.y Diff File
mod - src/App/ExpressionVisitors.h Diff File
mod - src/App/ObjectIdentifier.cpp Diff File
mod - src/App/ObjectIdentifier.h Diff File
mod - src/App/Property.h Diff File
mod - src/App/PropertyExpressionEngine.cpp Diff File
mod - src/App/PropertyExpressionEngine.h Diff File
mod - src/App/PropertyGeo.cpp Diff File
mod - src/App/PropertyGeo.h Diff File
mod - src/App/PropertyUnits.cpp Diff File
mod - src/App/Range.cpp Diff File
mod - src/App/Range.h Diff File
mod - src/Mod/Sketcher/App/PropertyConstraintList.cpp Diff File
mod - src/Mod/Sketcher/App/PropertyConstraintList.h Diff File
mod - src/Mod/Sketcher/App/SketchObject.cpp Diff File
mod - src/Mod/Sketcher/App/SketchObject.h Diff File

staging ccda5af7

2019-06-29 09:24:14

Zheng, Lei

Details Diff
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.

DocumentObject added a new API adjustRelativeLink() and a helper
resolveRelativeLink() function.
Attach Issues:
mod - src/App/Application.cpp Diff File
mod - src/App/DocumentObject.cpp Diff File
mod - src/App/DocumentObject.h Diff File
mod - src/App/DocumentObjectPy.xml Diff File
mod - src/App/DocumentObjectPyImp.cpp Diff File
mod - src/App/Property.h Diff File
mod - src/App/PropertyLinks.cpp Diff File
mod - src/App/PropertyLinks.h Diff File

staging 90f10fd2

2019-06-29 09:24:14

Zheng, Lei

Details Diff
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.
Attach Issues:
mod - src/App/Application.cpp Diff File
mod - src/App/DocumentObject.cpp Diff File
mod - src/App/DocumentObject.h Diff File
mod - src/App/DocumentObjectPy.xml Diff File
mod - src/App/DocumentObjectPyImp.cpp Diff File
mod - src/App/Property.h Diff File
mod - src/App/PropertyLinks.cpp Diff File
mod - src/App/PropertyLinks.h Diff File

master e85bf9cd

2019-06-29 09:24:14

Zheng, Lei


Committer: wmayer Details Diff
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.
Attach Issues:
mod - src/App/Application.cpp Diff File
mod - src/App/DocumentObject.cpp Diff File
mod - src/App/DocumentObject.h Diff File
mod - src/App/DocumentObjectPy.xml Diff File
mod - src/App/DocumentObjectPyImp.cpp Diff File
mod - src/App/Property.h Diff File
mod - src/App/PropertyLinks.cpp Diff File
mod - src/App/PropertyLinks.h Diff File

master 05249b21

2019-06-29 06:42:03

mlampert

Details Diff
Removed redundant log message
Attach Issues:
mod - src/Mod/Path/PathScripts/PathAreaOp.py Diff File
mod - src/Mod/Path/PathScripts/PathOpGui.py Diff File

master 9c5fa124

2019-06-29 06:14:20

mlampert

Details Diff
Fixed extension selection
Attach Issues:
mod - src/Mod/Path/PathScripts/PathPocketShapeGui.py Diff File

master 70d8be5b

2019-06-29 05:09:01

mlampert

Details Diff
Fixed document restoration logic.
Attach Issues:
mod - src/Mod/Path/PathScripts/PathPocketShape.py Diff File

master 9e174f11

2019-06-28 15:26:18

yorik

Details Diff
AddonManager: Fixed wrong file name
Attach Issues:

master 287d763e

2019-06-28 15:00:25

yorik

Details Diff
AddonManager: Added Render icon
Attach Issues:
mod - src/Mod/AddonManager/Resources/AddonManager.qrc Diff File
add - src/Mod/AddonManager/Resources/icons/Render.svg Diff File

master 89b8ab61

2019-06-28 13:33:33

Oliver Oxtoby


Committer: yorik Details Diff
[AddonManager] Correct the name of the CfdOF workbench icon
Attach Issues:
mod - src/Mod/AddonManager/Resources/AddonManager.qrc Diff File

master accf578d

2019-06-28 12:23:21

Franck Jullien


Committer: wandererfan Details Diff
[TD] Fix TaskPanel comboBox values
Attach Issues:
mod - src/Mod/TechDraw/Gui/TaskBalloon.cpp Diff File

master 4d7d46b4

2019-06-28 12:00:52

Kunda1


Committer: yorik Details Diff
[AddonManager] Add Geomatics WB logo
Attach Issues:
mod - src/Mod/AddonManager/Resources/AddonManager.qrc Diff File
add - src/Mod/AddonManager/Resources/icons/Geomatics_workbench_icon.svg Diff File

master 3abffaea

2019-06-28 11:20:10

Kunda1


Committer: yorik Details Diff
src/App/MaterialPyImp.cpp: fix source code typos

s/transpareny/transparency/
Attach Issues:
mod - src/App/MaterialPyImp.cpp Diff File

master e0377f8e

2019-06-28 11:19:00

Kunda1


Committer: yorik Details Diff
Misc. typo and whitespace fixes

Found via `codespell`
Attach Issues:
mod - src/Mod/Path/PathScripts/PathAreaOp.py Diff File
mod - src/Mod/Path/PathScripts/PathPocketShape.py Diff File

staging 6cbbc39f

2019-06-28 09:45:27

Zheng, Lei

Details Diff
App: transaction related API changes

Introduce a new concept of transaction ID. Each transaction must be
unique inside the document. Multiple transactions from different
documents can be grouped together with the same transaction ID.
This makes it possible to undo/redo single operation that contains
changes from multiple documents due to external linking.

Application:

* get/set/closeActiveTransaction() is used to setup potential
transactions with a given name. The transaction is only created when
there is actual changes. If objects from multiple documents are
changed under the same active transaction, they will have the same
trasnaction ID, and can be undo/redo togtether later.

* signalUndo/signalRedo, new signals triggered once after an undo/redo
operation. Unlike signalUndo/RedoDocument, these signals will only be
triggered once even if there may be multiple documents involved during
undo/redo.

* signal(Before)CloseTransaction, new signals triggered before/after an
actual transaction is created or aborted.

AutoTransaction:

* Helper class to enable automatic management of transactions. See class
document for more details. This class will be used by Gui::Command
in later patches to allow better automation of transactions in
command.

Document:

* open/commit/abortTransaction() are now redirected to call
Application::get/set/closeActiveTransaction() instead.

* _openTransaction() is added to do the real creation of transaction.

* _checkTransaction() is modified to create transaction on actual change
of any property.

* getTransactionID() is used to find out the position of a transaction
with a given ID. When triggering undo in external document, it may be
necessary to perform multi-step undo/redo in order to match for the
transaction ID.

Transaction/TransactionObject:

* Various changes for the new transaction ID concept.

* Support undo/redo add/remove dynamic property
Attach Issues:
mod - src/App/Application.cpp Diff File
mod - src/App/Application.h Diff File
mod - src/App/ApplicationPy.cpp Diff File
mod - src/App/Document.cpp Diff File
mod - src/App/Document.h Diff File
mod - src/App/DocumentPy.xml Diff File
mod - src/App/DocumentPyImp.cpp Diff File
mod - src/App/TransactionalObject.cpp Diff File
mod - src/App/TransactionalObject.h Diff File
mod - src/App/Transactions.cpp Diff File
mod - src/App/Transactions.h Diff File

staging d26cb0f1

2019-06-28 09:45:27

Zheng, Lei

Details Diff
App: transaction related API changes

Introduce a new concept of transaction ID. Each transaction must be
unique inside the document. Multiple transactions from different
documents can be grouped together with the same transaction ID.
This makes it possible to undo/redo single operation that contains
changes from multiple documents due to external linking.

Application:

* get/set/closeActiveTransaction() is used to setup potential
transactions with a given name. The transaction is only created when
there is actual changes. If objects from multiple documents are
changed under the same active transaction, they will have the same
trasnaction ID, and can be undo/redo togtether later.

* signalUndo/signalRedo, new signals triggered once after an undo/redo
operation. Unlike signalUndo/RedoDocument, these signals will only be
triggered once even if there may be multiple documents involved during
undo/redo.

* signal(Before)CloseTransaction, new signals triggered before/after an
actual transaction is created or aborted.

AutoTransaction:

* Helper class to enable automatic management of transactions. See class
document for more details. This class will be used by Gui::Command
in later patches to allow better automation of transactions in
command.

Document:

* open/commit/abortTransaction() are now redirected to call
Application::get/set/closeActiveTransaction() instead.

* _openTransaction() is added to do the real creation of transaction.

* _checkTransaction() is modified to create transaction on actual change
of any property.

* getTransactionID() is used to find out the position of a transaction
with a given ID. When triggering undo in external document, it may be
necessary to perform multi-step undo/redo in order to match for the
transaction ID.

Transaction/TransactionObject:

* Various changes for the new transaction ID concept.

* Support undo/redo add/remove dynamic property
Attach Issues:
mod - src/App/Application.cpp Diff File
mod - src/App/Application.h Diff File
mod - src/App/ApplicationPy.cpp Diff File
mod - src/App/Document.cpp Diff File
mod - src/App/Document.h Diff File
mod - src/App/DocumentPy.xml Diff File
mod - src/App/DocumentPyImp.cpp Diff File
mod - src/App/TransactionalObject.cpp Diff File
mod - src/App/TransactionalObject.h Diff File
mod - src/App/Transactions.cpp Diff File
mod - src/App/Transactions.h Diff File

master 1cb2e190

2019-06-28 09:45:27

Zheng, Lei


Committer: wmayer Details Diff
App: transaction related API changes

Introduce a new concept of transaction ID. Each transaction must be
unique inside the document. Multiple transactions from different
documents can be grouped together with the same transaction ID.
This makes it possible to undo/redo single operation that contains
changes from multiple documents due to external linking.

Application:

* get/set/closeActiveTransaction() is used to setup potential
transactions with a given name. The transaction is only created when
there is actual changes. If objects from multiple documents are
changed under the same active transaction, they will have the same
trasnaction ID, and can be undo/redo togtether later.

* signalUndo/signalRedo, new signals triggered once after an undo/redo
operation. Unlike signalUndo/RedoDocument, these signals will only be
triggered once even if there may be multiple documents involved during
undo/redo.

* signal(Before)CloseTransaction, new signals triggered before/after an
actual transaction is created or aborted.

AutoTransaction:

* Helper class to enable automatic management of transactions. See class
document for more details. This class will be used by Gui::Command
in later patches to allow better automation of transactions in
command.

Document:

* open/commit/abortTransaction() are now redirected to call
Application::get/set/closeActiveTransaction() instead.

* _openTransaction() is added to do the real creation of transaction.

* _checkTransaction() is modified to create transaction on actual change
of any property.

* getTransactionID() is used to find out the position of a transaction
with a given ID. When triggering undo in external document, it may be
necessary to perform multi-step undo/redo in order to match for the
transaction ID.

Transaction/TransactionObject:

* Various changes for the new transaction ID concept.

* Support undo/redo add/remove dynamic property
Attach Issues:
mod - src/App/Application.cpp Diff File
mod - src/App/Application.h Diff File
mod - src/App/ApplicationPy.cpp Diff File
mod - src/App/Document.cpp Diff File
mod - src/App/Document.h Diff File
mod - src/App/DocumentPy.xml Diff File
mod - src/App/DocumentPyImp.cpp Diff File
mod - src/App/TransactionalObject.cpp Diff File
mod - src/App/TransactionalObject.h Diff File
mod - src/App/Transactions.cpp Diff File
mod - src/App/Transactions.h Diff File

master a9b2e8e9

2019-06-28 07:12:20

mlampert

Details Diff
Cleaned up warnings for PathEngraveBase
Attach Issues:
mod - src/Mod/Path/PathScripts/PathEngraveBase.py Diff File

staging efdb4658

2019-06-28 02:16:42

Zheng, Lei

Details Diff
App: Property related API changes

Property:

* Extended property status bitset. Mirror most of PropertyType and
allow dynamic change property type.

* Cache property name and type to improve performance

* Centralize property status change signalling

* Change aboutToSetValue()/hasSetValue() to virtual

* Add new API getFullName() to obtain full quanlified name of the property

AtomicPropertyChangeInterface:

* Allow calling aboutToSetValue()/hasSetValue() when actually changed

PropertyLists:

* Refactor implementation by an abstract class PropertyListBase and a
template class PropertyListsT, to allow better code reuse.
PropertyListT is derived from AtomicPropertyChangeInterface to allow
more efficient change on individual elements.

* All list type property now accept setting python value as a dictionary
with index as key to set individual element of a list.

* Add touch list for more efficient handling of value changes. The list
contains the index of changed value. And empty touch list should be
treated as the entire list is changed. PropertyContainerPy expose this
functionality with getPropertyTouchList().

PropertyPersistentObject:

* New property to allow dynamic creation of any FreeCAD object derived
from Base::Persistence, and use it as a property.

DynamicProperty:

* Use boost multi_index_container for efficient property lookup while
keeping order.

* Modify to be allowed to use in PropertyContainer directly

PropertyContainer:

* Use boost multi_index_container for efficient property lookup while
keeping order.

* Allow adding/removing dynamic property on all property container

* Modify Save/Restore() to persist property status, and better handle
transient property which can now be dynamically enabled/disabled per
object.

* Add new API getFullName() to obtain full quanlified name of the property.
Implemented by Document, DocumentObject, and also
ViewProviderDocumentObject if future patch

DocumentObject and FeaturePython are modified to accommondate the
dynamic property changes.

Removed get/setCustomAttribute() implementation from DocumentObjectPy,
and rely on PropertyContainerPy for the implementation, because of the
additional dynamic property support in property container.

Gui::ViewProviderDocumentObject, which is derived from
PropertyContainer, is also modified accordingly
Attach Issues:
mod - src/App/Application.cpp Diff File
mod - src/App/Application.h Diff File
mod - src/App/Document.cpp Diff File
mod - src/App/Document.h Diff File
mod - src/App/DocumentObject.cpp Diff File
mod - src/App/DocumentObject.h Diff File
mod - src/App/DocumentObjectPyImp.cpp Diff File
mod - src/App/DynamicProperty.cpp Diff File
mod - src/App/DynamicProperty.h Diff File
mod - src/App/FeatureCustom.h Diff File
mod - src/App/FeaturePython.h Diff File
mod - src/App/PreCompiled.h Diff File
mod - src/App/Property.cpp Diff File
mod - src/App/Property.h Diff File
mod - src/App/PropertyContainer.cpp Diff File
mod - src/App/PropertyContainer.h Diff File
mod - src/App/PropertyContainerPy.xml Diff File
mod - src/App/PropertyContainerPyImp.cpp Diff File
mod - src/App/PropertyGeo.cpp Diff File
mod - src/App/PropertyGeo.h Diff File
mod - src/App/PropertyStandard.cpp Diff File
mod - src/App/PropertyStandard.h Diff File
mod - src/Gui/ViewProviderDocumentObject.cpp Diff File
mod - src/Gui/ViewProviderDocumentObject.h Diff File
mod - src/Gui/ViewProviderPythonFeature.h Diff File

staging 819c8078

2019-06-28 02:16:42

Zheng, Lei

Details Diff
App: Property related API changes

Property:

* Extended property status bitset. Mirror most of PropertyType and
allow dynamic change property type.

* Cache property name and type to improve performance

* Centralize property status change signalling

* Change aboutToSetValue()/hasSetValue() to virtual

* Add new API getFullName() to obtain full quanlified name of the property

AtomicPropertyChangeInterface:

* Allow calling aboutToSetValue()/hasSetValue() when actually changed

PropertyLists:

* Refactor implementation by an abstract class PropertyListBase and a
template class PropertyListsT, to allow better code reuse.
PropertyListT is derived from AtomicPropertyChangeInterface to allow
more efficient change on individual elements.

* All list type property now accept setting python value as a dictionary
with index as key to set individual element of a list.

* Add touch list for more efficient handling of value changes. The list
contains the index of changed value. And empty touch list should be
treated as the entire list is changed. PropertyContainerPy expose this
functionality with getPropertyTouchList().

PropertyPersistentObject:

* New property to allow dynamic creation of any FreeCAD object derived
from Base::Persistence, and use it as a property.

DynamicProperty:

* Use boost multi_index_container for efficient property lookup while
keeping order.

* Modify to be allowed to use in PropertyContainer directly

PropertyContainer:

* Use boost multi_index_container for efficient property lookup while
keeping order.

* Allow adding/removing dynamic property on all property container

* Modify Save/Restore() to persist property status, and better handle
transient property which can now be dynamically enabled/disabled per
object.

* Add new API getFullName() to obtain full quanlified name of the property.
Implemented by Document, DocumentObject, and also
ViewProviderDocumentObject if future patch

DocumentObject and FeaturePython are modified to accommondate the
dynamic property changes.

Removed get/setCustomAttribute() implementation from DocumentObjectPy,
and rely on PropertyContainerPy for the implementation, because of the
additional dynamic property support in property container.

Gui::ViewProviderDocumentObject, which is derived from
PropertyContainer, is also modified accordingly
Attach Issues:
mod - src/App/Application.cpp Diff File
mod - src/App/Application.h Diff File
mod - src/App/Document.cpp Diff File
mod - src/App/Document.h Diff File
mod - src/App/DocumentObject.cpp Diff File
mod - src/App/DocumentObject.h Diff File
mod - src/App/DocumentObjectPyImp.cpp Diff File
mod - src/App/DynamicProperty.cpp Diff File
mod - src/App/DynamicProperty.h Diff File
mod - src/App/FeatureCustom.h Diff File
mod - src/App/FeaturePython.h Diff File
mod - src/App/PreCompiled.h Diff File
mod - src/App/Property.cpp Diff File
mod - src/App/Property.h Diff File
mod - src/App/PropertyContainer.cpp Diff File
mod - src/App/PropertyContainer.h Diff File
mod - src/App/PropertyContainerPy.xml Diff File
mod - src/App/PropertyContainerPyImp.cpp Diff File
mod - src/App/PropertyGeo.cpp Diff File
mod - src/App/PropertyGeo.h Diff File
mod - src/App/PropertyStandard.cpp Diff File
mod - src/App/PropertyStandard.h Diff File
mod - src/Gui/ViewProviderDocumentObject.cpp Diff File
mod - src/Gui/ViewProviderDocumentObject.h Diff File
mod - src/Gui/ViewProviderPythonFeature.h Diff File
 First  Prev  1 2 3 ... 60 ... 120 ... 180 ... 235 236 237 238 239 240 241 ... 300 ... 360 ... 420 ... 480 ... 540 ... 579 580 581  Next  Last