Gui: add new API ViewProviderDocumentObject::allowOverride()

This API is used to delcare if a view provider can be used as an
override for a give object.

Conflicts:
	src/App/DocumentObject.h
This commit is contained in:
Zheng, Lei
2019-09-22 21:18:54 +08:00
committed by wmayer
parent 7305343e10
commit 2df3052ecf
10 changed files with 89 additions and 103 deletions

View File

@@ -3540,17 +3540,8 @@ DocumentObject * Document::addObject(const char* sType, const char* pObjectName,
pcObject->setStatus(ObjectStatus::PartialObject, isPartial);
// If an object does not allow to override its view provider then ignore any
// input of the Document.xml or from Python as this information could be wrong.
// In this case the default type from getViewProviderName() is used.
if (pcObject->allowOverrideViewProviderName()) {
if (!viewType || viewType[0] == '\0') {
viewType = pcObject->getViewProviderNameOverride();
}
}
else {
viewType = pcObject->getViewProviderName();
}
if (!viewType || viewType[0] == '\0')
viewType = pcObject->getViewProviderNameOverride();
if (viewType && viewType[0] != '\0')
pcObject->_pcViewProviderName = viewType;
@@ -3644,16 +3635,8 @@ std::vector<DocumentObject *> Document::addObjects(const char* sType, const std:
// mark the object as new (i.e. set status bit 2) and send the signal
pcObject->setStatus(ObjectStatus::New, true);
// If an object does not allow to override its view provider then use
// getViewProviderName() instead.
if (pcObject->allowOverrideViewProviderName()) {
const char *viewType = pcObject->getViewProviderNameOverride();
pcObject->_pcViewProviderName = viewType ? viewType : "";
}
else {
const char *viewType = pcObject->getViewProviderName();
pcObject->_pcViewProviderName = viewType ? viewType : "";
}
const char *viewType = pcObject->getViewProviderNameOverride();
pcObject->_pcViewProviderName = viewType ? viewType : "";
signalNewObject(*pcObject);
@@ -3711,16 +3694,8 @@ void Document::addObject(DocumentObject* pcObject, const char* pObjectName)
// mark the object as new (i.e. set status bit 2) and send the signal
pcObject->setStatus(ObjectStatus::New, true);
// If an object does not allow to override its view provider then use
// getViewProviderName() instead.
if (pcObject->allowOverrideViewProviderName()) {
const char *viewType = pcObject->getViewProviderNameOverride();
pcObject->_pcViewProviderName = viewType ? viewType : "";
}
else {
const char *viewType = pcObject->getViewProviderName();
pcObject->_pcViewProviderName = viewType ? viewType : "";
}
const char *viewType = pcObject->getViewProviderNameOverride();
pcObject->_pcViewProviderName = viewType ? viewType : "";
signalNewObject(*pcObject);
@@ -3751,16 +3726,8 @@ void Document::_addObject(DocumentObject* pcObject, const char* pObjectName)
d->activeUndoTransaction->addObjectDel(pcObject);
}
// If an object does not allow to override its view provider then use
// getViewProviderName() instead.
if (pcObject->allowOverrideViewProviderName()) {
const char *viewType = pcObject->getViewProviderNameOverride();
pcObject->_pcViewProviderName = viewType ? viewType : "";
}
else {
const char *viewType = pcObject->getViewProviderName();
pcObject->_pcViewProviderName = viewType ? viewType : "";
}
const char *viewType = pcObject->getViewProviderNameOverride();
pcObject->_pcViewProviderName = viewType ? viewType : "";
// send the signal
signalNewObject(*pcObject);