| 2142 | } |
| 2143 | |
| 2144 | void Document::exportObjects(const std::vector<App::DocumentObject*>& obj, Base::Writer& writer) |
| 2145 | { |
| 2146 | writer.Stream() << "<?xml version='1.0' encoding='utf-8'?>" << std::endl; |
| 2147 | writer.Stream() << "<Document SchemaVersion=\"1\">" << std::endl; |
| 2148 | |
| 2149 | std::map<const App::DocumentObject*, ViewProvider*> views; |
| 2150 | for (const auto& it : obj) { |
| 2151 | Document* doc = Application::Instance->getDocument(it->getDocument()); |
| 2152 | if (doc) { |
| 2153 | ViewProvider* vp = doc->getViewProvider(it); |
| 2154 | if (vp) { |
| 2155 | views[it] = vp; |
| 2156 | } |
| 2157 | } |
| 2158 | } |
| 2159 | |
| 2160 | // writing the view provider names itself |
| 2161 | writer.incInd(); // indentation for 'ViewProviderData Count' |
| 2162 | writer.Stream() << writer.ind() << "<ViewProviderData Count=\"" << views.size() << "\">" |
| 2163 | << std::endl; |
| 2164 | |
| 2165 | bool xml = writer.isForceXML(); |
| 2166 | // writer.setForceXML(true); |
| 2167 | writer.incInd(); // indentation for 'ViewProvider name' |
| 2168 | std::map<const App::DocumentObject*, ViewProvider*>::const_iterator jt; |
| 2169 | for (jt = views.begin(); jt != views.end(); ++jt) { |
| 2170 | const App::DocumentObject* doc = jt->first; |
| 2171 | ViewProvider* vp = jt->second; |
| 2172 | writer.Stream() << writer.ind() << "<ViewProvider name=\"" << doc->getExportName() << "\" " |
| 2173 | << "expanded=\"" << (doc->testStatus(App::Expand) ? 1 : 0) << "\""; |
| 2174 | if (vp->hasExtensions()) { |
| 2175 | writer.Stream() << " Extensions=\"True\""; |
| 2176 | } |
| 2177 | |
| 2178 | writer.Stream() << ">" << std::endl; |
| 2179 | vp->Save(writer); |
| 2180 | writer.Stream() << writer.ind() << "</ViewProvider>" << std::endl; |
| 2181 | } |
| 2182 | writer.setForceXML(xml); |
| 2183 | |
| 2184 | writer.decInd(); // indentation for 'ViewProvider name' |
| 2185 | writer.Stream() << writer.ind() << "</ViewProviderData>" << std::endl; |
| 2186 | writer.decInd(); // indentation for 'ViewProviderData Count' |
| 2187 | writer.incInd(); // indentation for camera settings |
| 2188 | writer.Stream() << writer.ind() << "<Camera settings=\"\"/>" << std::endl; |
| 2189 | writer.decInd(); // indentation for camera settings |
| 2190 | writer.Stream() << "</Document>" << std::endl; |
| 2191 | } |
| 2192 | |
| 2193 | void Document::importObjects( |
| 2194 | const std::vector<App::DocumentObject*>& obj, |
no test coverage detected