]> SALOME platform Git repositories - modules/shaper.git/blob - src/Model/Model_Document.cxx
Salome HOME
Migration to Boost shared_ptr and first python launch-tests
[modules/shaper.git] / src / Model / Model_Document.cxx
1 // File:        Model_Document.cxx
2 // Created:     28 Dec 2011
3 // Author:      Mikhail PONIKAROV
4 // Copyright:   CEA 2011
5
6 #include <Model_Document.hxx>
7
8 #include <TDataStd_Integer.hxx>
9
10 IMPLEMENT_STANDARD_HANDLE(Model_Document,MMgt_TShared)
11 IMPLEMENT_STANDARD_RTTIEXT(Model_Document,MMgt_TShared)
12
13 static const int UNDO_LIMIT = 10; // number of possible undo operations in the module
14
15 static const int TAG_GENERAL = 1; // general properties tag
16 static const int TAG_OBJECTS = 2; // tag of the objects sub-tree (Root for Model_ObjectsMgr)
17 static const int TAG_HISTORY = 3; // tag of the history sub-tree (Root for Model_History)
18 static const int TAG_ISOTOPES = 4; // tag of the isotopes sub-tree (Root for MaterialMC_Isotope)
19
20 using namespace std;
21
22 bool Model_Document::Load(const char* theFileName)
23 {
24   bool myIsError = Standard_False;
25   /*
26   TCollection_ExtendedString aPath ((const Standard_CString)theFileName);
27   PCDM_ReaderStatus aStatus = (PCDM_ReaderStatus) -1;
28   try
29   {
30     Handle(TDocStd_Document) aDoc = this;
31     aStatus = Model_Application::GetApplication()->Open(aPath, aDoc);
32   }
33   catch (Standard_Failure)
34   {}
35   myIsError = aStatus != PCDM_RS_OK;
36   if (myIsError)
37   {
38     switch (aStatus)
39     {
40     case PCDM_RS_UnknownDocument: cout<<"OCAFApp_Appl_RUnknownDocument"<<endl; break;
41     case PCDM_RS_AlreadyRetrieved: cout<<"OCAFApp_Appl_RAlreadyRetrieved"<<endl; break;
42     case PCDM_RS_AlreadyRetrievedAndModified: cout<<"OCAFApp_Appl_RAlreadyRetrievedAndModified"<<endl; break;
43     case PCDM_RS_NoDriver: cout<<"OCAFApp_Appl_RNoDriver"<<endl; break;
44     case PCDM_RS_UnknownFileDriver: cout<<"OCAFApp_Appl_RNoDriver"<<endl; break;
45     case PCDM_RS_OpenError: cout<<"OCAFApp_Appl_ROpenError"<<endl; break;
46     case PCDM_RS_NoVersion: cout<<"OCAFApp_Appl_RNoVersion"<<endl; break;
47     case PCDM_RS_NoModel: cout<<"OCAFApp_Appl_RNoModel"<<endl; break;
48     case PCDM_RS_NoDocument: cout<<"OCAFApp_Appl_RNoDocument"<<endl; break;
49     case PCDM_RS_FormatFailure: cout<<"OCAFApp_Appl_RFormatFailure"<<endl; break;
50     case PCDM_RS_TypeNotFoundInSchema: cout<<"OCAFApp_Appl_RTypeNotFound"<<endl; break;
51     case PCDM_RS_UnrecognizedFileFormat: cout<<"OCAFApp_Appl_RBadFileFormat"<<endl; break;
52     case PCDM_RS_MakeFailure: cout<<"OCAFApp_Appl_RMakeFailure"<<endl; break;
53     case PCDM_RS_PermissionDenied: cout<<"OCAFApp_Appl_RPermissionDenied"<<endl; break;
54     case PCDM_RS_DriverFailure: cout<<"OCAFApp_Appl_RDriverFailure"<<endl; break;
55     default: cout<<"OCAFApp_Appl_RUnknownFail"<<endl; break;
56     }
57   }
58   SetUndoLimit(UNDO_LIMIT);
59   */
60   return !myIsError;
61 }
62
63 bool Model_Document::Save(const char* theFileName)
64 {
65   bool myIsError = true;
66   /*
67   TCollection_ExtendedString aPath ((const Standard_CString)theFileName);
68   PCDM_StoreStatus aStatus;
69   try {
70     Handle(TDocStd_Document) aDoc = this;
71     aStatus = Model_Application::GetApplication()->SaveAs (aDoc, aPath);
72   }
73   catch (Standard_Failure) {
74     Handle(Standard_Failure) aFail = Standard_Failure::Caught();
75     cout<<"OCAFApp_Engine:save Error: "<<aFail->GetMessageString()<<endl;
76     return false;
77   }
78   myIsError = aStatus != PCDM_SS_OK;
79   if (myIsError)
80   {
81     switch (aStatus)
82     {
83     case PCDM_SS_DriverFailure:
84       cout<<"OCAFApp_Appl_SDriverFailure"<<endl;
85       break;
86     case PCDM_SS_WriteFailure:
87       cout<<"OCAFApp_Appl_SWriteFailure"<<endl;
88       break;
89     case PCDM_SS_Failure:
90     default:
91       cout<<"OCAFApp_Appl_SUnknownFailure"<<endl;
92       break;
93     }
94   }
95   myTransactionsAfterSave = 0;
96   Standard::Purge(); // Release free memory
97   */
98   return !myIsError;
99 }
100
101 void Model_Document::Close()
102 {
103   TDocStd_Document::Close();
104 }
105
106 void Model_Document::StartOperation()
107 {
108   TDocStd_Document::NewCommand();
109 }
110
111 void Model_Document::FinishOperation()
112 {
113   TDocStd_Document::CommitCommand();
114   myTransactionsAfterSave++;
115 }
116
117 void Model_Document::AbortOperation()
118 {
119   TDocStd_Document::AbortCommand();
120 }
121
122 bool Model_Document::IsOperation()
123 {
124   return TDocStd_Document::HasOpenCommand() == Standard_True;
125 }
126
127 bool Model_Document::IsModified()
128 {
129   return myTransactionsAfterSave != 0;
130 }
131
132 bool Model_Document::CanUndo()
133 {
134   return TDocStd_Document::GetAvailableUndos() > 0;
135 }
136
137 void Model_Document::Undo()
138 {
139   TDocStd_Document::Undo();
140   myTransactionsAfterSave--;
141 }
142
143 bool Model_Document::CanRedo()
144 {
145   return TDocStd_Document::GetAvailableRedos() > 0;
146 }
147
148 void Model_Document::Redo()
149 {
150   TDocStd_Document::Redo();
151   myTransactionsAfterSave++;
152 }
153
154 Model_Document::Model_Document(const TCollection_ExtendedString& theStorageFormat)
155   : TDocStd_Document(theStorageFormat)
156 {
157   SetUndoLimit(UNDO_LIMIT);
158   myTransactionsAfterSave = 0;
159 }
160
161 Model_Document::~Model_Document()
162 {
163 }