Skip to content

Commit

Permalink
fix saving view provider attributes for Copy&Paste or Duplicate selec…
Browse files Browse the repository at this point in the history
…tion
  • Loading branch information
wwmayer committed Feb 28, 2019
1 parent 979177d commit 59a0144
Showing 1 changed file with 20 additions and 8 deletions.
28 changes: 20 additions & 8 deletions src/Gui/Document.cpp
Expand Up @@ -800,8 +800,6 @@ void Document::RestoreDocFile(Base::Reader &reader)
Base::XMLReader xmlReader("GuiDocument.xml", reader);
xmlReader.FileVersion = reader.getFileVersion();

int i,Cnt;

xmlReader.readElement("Document");
long scheme = xmlReader.getAttributeAsInteger("SchemaVersion");
xmlReader.DocumentSchema = scheme;
Expand All @@ -813,8 +811,8 @@ void Document::RestoreDocFile(Base::Reader &reader)
if (scheme == 1) {
// read the viewproviders itself
xmlReader.readElement("ViewProviderData");
Cnt = xmlReader.getAttributeAsInteger("Count");
for (i=0 ;i<Cnt ;i++) {
int Cnt = xmlReader.getAttributeAsInteger("Count");
for (int i=0; i<Cnt; i++) {
xmlReader.readElement("ViewProvider");
std::string name = xmlReader.getAttribute("name");
bool expanded = false;
Expand Down Expand Up @@ -923,7 +921,7 @@ void Document::SaveDocFile (Base::Writer &writer) const
writer.Stream() << writer.ind() << "<ViewProvider name=\""
<< doc->getNameInDocument() << "\" "
<< "expanded=\"" << (doc->testStatus(App::Expand) ? 1:0) << "\"";
if(obj->hasExtensions())
if (obj->hasExtensions())
writer.Stream() << " Extensions=\"True\"";

writer.Stream() << ">" << std::endl;
Expand Down Expand Up @@ -988,9 +986,12 @@ void Document::exportObjects(const std::vector<App::DocumentObject*>& obj, Base:
const App::DocumentObject* doc = jt->first;
ViewProvider* obj = jt->second;
writer.Stream() << writer.ind() << "<ViewProvider name=\""
<< doc->getNameInDocument() << "\" type=\""
<< obj->getTypeId().getName()
<< "\">" << std::endl;
<< doc->getNameInDocument() << "\" "
<< "expanded=\"" << (doc->testStatus(App::Expand) ? 1:0) << "\"";
if (obj->hasExtensions())
writer.Stream() << " Extensions=\"True\"";

writer.Stream() << ">" << std::endl;
obj->Save(writer);
writer.Stream() << writer.ind() << "</ViewProvider>" << std::endl;
}
Expand Down Expand Up @@ -1031,9 +1032,20 @@ void Document::importObjects(const std::vector<App::DocumentObject*>& obj, Base:
std::map<std::string, std::string>::const_iterator jt = nameMapping.find(name);
if (jt != nameMapping.end())
name = jt->second;
bool expanded = false;
if (xmlReader.hasAttribute("expanded")) {
const char* attr = xmlReader.getAttribute("expanded");
if (strcmp(attr,"1") == 0) {
expanded = true;
}
}
Gui::ViewProvider* pObj = this->getViewProviderByName(name.c_str());
if (pObj)
pObj->Restore(xmlReader);
if (pObj && expanded) {
Gui::ViewProviderDocumentObject* vp = static_cast<Gui::ViewProviderDocumentObject*>(pObj);
this->signalExpandObject(*vp, Gui::ExpandItem);
}
xmlReader.readEndElement("ViewProvider");
if (it == obj.end())
break;
Expand Down

0 comments on commit 59a0144

Please sign in to comment.