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 boost::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 boost::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 myDocs.erase(theDocID);
46 //=======================================================================
47 bool Model_Application::hasDocument(std::string theDocID)
49 return myDocs.find(theDocID) != myDocs.end();
52 //=======================================================================
53 void Model_Application::setLoadPath(std::string thePath)
58 //=======================================================================
59 void Model_Application::setLoadByDemand(std::string theID)
61 myLoadedByDemand.insert(theID);
64 //=======================================================================
65 bool Model_Application::isLoadByDemand(std::string theID)
67 return myLoadedByDemand.find(theID) != myLoadedByDemand.end();
70 //=======================================================================
71 Model_Application::Model_Application()
73 // store handle to the application to avoid nullification
74 static Handle(Model_Application) TheKeepHandle;
78 //=======================================================================
79 void Model_Application::Formats(TColStd_SequenceOfExtendedString& theFormats)
81 theFormats.Append(TCollection_ExtendedString("BinOcaf")); // standard binary schema
84 //=======================================================================
85 Standard_CString Model_Application::ResourcesName()
87 return Standard_CString("Standard");