Add initial version of the Cloud workbench

This commit is contained in:
Jean-Marie Verdun
2019-08-26 00:16:58 +02:00
committed by wmayer
parent 90b5f63bc2
commit a2e21f79f2
24 changed files with 1538 additions and 28 deletions

View File

@@ -1189,20 +1189,21 @@ void Document::Restore(Base::XMLReader &reader)
void Document::RestoreDocFile(Base::Reader &reader)
{
// We must create an XML parser to read from the input stream
Base::XMLReader xmlReader("GuiDocument.xml", reader);
xmlReader.FileVersion = reader.getFileVersion();
Base::XMLReader *localreader;
localreader = new Base::XMLReader("GuiDocument.xml", reader);
localreader->FileVersion = reader.getFileVersion();
xmlReader.readElement("Document");
long scheme = xmlReader.getAttributeAsInteger("SchemaVersion");
xmlReader.DocumentSchema = scheme;
localreader->readElement("Document");
long scheme = localreader->getAttributeAsInteger("SchemaVersion");
localreader->DocumentSchema = scheme;
bool hasExpansion = xmlReader.hasAttribute("HasExpansion");
bool hasExpansion = localreader->hasAttribute("HasExpansion");
if(hasExpansion) {
auto tree = TreeWidget::instance();
if(tree) {
auto docItem = tree->getDocumentItem(this);
if(docItem)
docItem->Restore(xmlReader);
docItem->Restore(*localreader);
}
}
@@ -1212,32 +1213,32 @@ void Document::RestoreDocFile(Base::Reader &reader)
// SchemeVersion "1"
if (scheme == 1) {
// read the viewproviders itself
xmlReader.readElement("ViewProviderData");
int Cnt = xmlReader.getAttributeAsInteger("Count");
localreader->readElement("ViewProviderData");
int Cnt = localreader->getAttributeAsInteger("Count");
for (int i=0; i<Cnt; i++) {
xmlReader.readElement("ViewProvider");
std::string name = xmlReader.getAttribute("name");
localreader->readElement("ViewProvider");
std::string name = localreader->getAttribute("name");
bool expanded = false;
if (!hasExpansion && xmlReader.hasAttribute("expanded")) {
const char* attr = xmlReader.getAttribute("expanded");
if (!hasExpansion && localreader->hasAttribute("expanded")) {
const char* attr = localreader->getAttribute("expanded");
if (strcmp(attr,"1") == 0) {
expanded = true;
}
}
ViewProvider* pObj = getViewProviderByName(name.c_str());
if (pObj) // check if this feature has been registered
pObj->Restore(xmlReader);
pObj->Restore(*localreader);
if (pObj && expanded) {
Gui::ViewProviderDocumentObject* vp = static_cast<Gui::ViewProviderDocumentObject*>(pObj);
this->signalExpandObject(*vp, Gui::ExpandItem,0,0);
}
xmlReader.readEndElement("ViewProvider");
localreader->readEndElement("ViewProvider");
}
xmlReader.readEndElement("ViewProviderData");
localreader->readEndElement("ViewProviderData");
// read camera settings
xmlReader.readElement("Camera");
const char* ppReturn = xmlReader.getAttribute("settings");
localreader->readElement("Camera");
const char* ppReturn = localreader->getAttribute("settings");
cameraSettings.clear();
if(ppReturn && ppReturn[0]) {
saveCameraSettings(ppReturn);
@@ -1255,13 +1256,10 @@ void Document::RestoreDocFile(Base::Reader &reader)
}
}
xmlReader.readEndElement("Document");
// In the file GuiDocument.xml new data files might be added
if (!xmlReader.getFilenames().empty())
xmlReader.readFiles(static_cast<zipios::ZipInputStream&>(reader.getStream()));
localreader->readEndElement("Document");
// reset modified flag
reader.initLocalReader(localreader);
setModified(false);
}