1 // File: Model_Application.cxx
2 // Created: Fri Sep 2 2011
3 // Author: Mikhail PONIKAROV
5 #include <Model_Application.h>
6 #include <Model_Document.h>
8 IMPLEMENT_STANDARD_HANDLE(Model_Application, TDocStd_Application)
9 IMPLEMENT_STANDARD_RTTIEXT(Model_Application, TDocStd_Application)
13 static Handle_Model_Application TheApplication = new Model_Application;
15 //=======================================================================
16 Handle(Model_Application) Model_Application::getApplication()
18 return TheApplication;
21 //=======================================================================
22 const std::shared_ptr<Model_Document>& Model_Application::getDocument(string theDocID)
24 if (myDocs.find(theDocID) != myDocs.end())
25 return myDocs[theDocID];
27 static const std::string thePartSetKind("PartSet");
28 static const std::string thePartKind("Part");
29 std::shared_ptr<Model_Document> aNew(
30 new Model_Document(theDocID, theDocID == "root" ? thePartSetKind : thePartKind));
31 myDocs[theDocID] = aNew;
32 // load it if it must be loaded by demand
33 if (myLoadedByDemand.find(theDocID) != myLoadedByDemand.end() && !myPath.empty()) {
34 aNew->load(myPath.c_str());
35 myLoadedByDemand.erase(theDocID); // done, don't do it anymore
38 return myDocs[theDocID];
41 void Model_Application::deleteDocument(string theDocID)
43 if (myDocs.find(theDocID) != myDocs.end()) {
44 myDocs[theDocID]->close(true);
45 myDocs.erase(theDocID);
47 myLoadedByDemand.clear();
50 void Model_Application::deleteAllDocuments()
53 myLoadedByDemand.clear();
56 //=======================================================================
57 bool Model_Application::hasDocument(std::string theDocID)
59 return myDocs.find(theDocID) != myDocs.end();
62 //=======================================================================
63 void Model_Application::setLoadPath(std::string thePath)
68 //=======================================================================
69 void Model_Application::setLoadByDemand(std::string theID)
71 myLoadedByDemand.insert(theID);
74 //=======================================================================
75 bool Model_Application::isLoadByDemand(std::string theID)
77 return myLoadedByDemand.find(theID) != myLoadedByDemand.end();
80 //=======================================================================
81 Model_Application::Model_Application()
83 // store handle to the application to avoid nullification
84 static Handle(Model_Application) TheKeepHandle;
88 //=======================================================================
89 void Model_Application::Formats(TColStd_SequenceOfExtendedString& theFormats)
91 theFormats.Append(TCollection_ExtendedString("BinOcaf")); // standard binary schema
94 //=======================================================================
95 Standard_CString Model_Application::ResourcesName()
97 return Standard_CString("Standard");