]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Added the hasRootDocument method for GUI NewDocument checking
authormpv <mikhail.ponikarov@opencascade.com>
Fri, 11 Apr 2014 07:21:43 +0000 (11:21 +0400)
committermpv <mikhail.ponikarov@opencascade.com>
Fri, 11 Apr 2014 07:21:43 +0000 (11:21 +0400)
src/Model/Model_Application.cxx
src/Model/Model_Application.h
src/Model/Model_PluginManager.cxx
src/Model/Model_PluginManager.h
src/ModelAPI/ModelAPI_PluginManager.h
src/ModuleBase/ModuleBase_Operation.cpp

index a8c8966b3962cb43eb08f6e3e72faea022fc9ffa..40704967e8de9cef5e8a568dac24330bd0fc5f37 100644 (file)
@@ -12,18 +12,12 @@ using namespace std;
 
 static Handle_Model_Application TheApplication = new Model_Application;
 
-//=======================================================================
-//function : getApplication
-//purpose  : 
 //=======================================================================
 Handle(Model_Application) Model_Application::getApplication()
 {
   return TheApplication;
 }
 
-//=======================================================================
-//function : getDocument
-//purpose  : 
 //=======================================================================
 const std::shared_ptr<Model_Document>& Model_Application::getDocument(string theDocID)
 {
@@ -41,8 +35,11 @@ void Model_Application::deleteDocument(string theDocID)
 }
 
 //=======================================================================
-//function : OCAFApp_Application
-//purpose  : 
+bool Model_Application::hasDocument(std::string theDocID)
+{
+  return myDocs.find(theDocID) != myDocs.end();
+}
+
 //=======================================================================
 Model_Application::Model_Application()
 {
@@ -51,18 +48,12 @@ Model_Application::Model_Application()
   TheKeepHandle = this;
 }
 
-//=======================================================================
-//function : Formats
-//purpose  : 
 //=======================================================================
 void Model_Application::Formats(TColStd_SequenceOfExtendedString& theFormats)
 {
   theFormats.Append(TCollection_ExtendedString("BinOcaf")); // standard binary schema
 }
 
-//=======================================================================
-//function : ResourcesName
-//purpose  : 
 //=======================================================================
 Standard_CString Model_Application::ResourcesName()
 {
index c4f578f0443e755afdbd314578199f3d91457f94..3865434796cad755f7869adb96677e18fb41d2f4 100644 (file)
@@ -31,6 +31,8 @@ public:
   MODEL_EXPORT static Handle_Model_Application getApplication();
   //! Returns the main document (on first call creates it) by the string identifier
   MODEL_EXPORT const std::shared_ptr<Model_Document>& getDocument(std::string theDocID);
+  //! Returns true if document has been created
+  MODEL_EXPORT bool hasDocument(std::string theDocID);
   //! Deletes the document from the application
   MODEL_EXPORT void deleteDocument(std::string theDocID);
 
index ea0b826a646015a0606057a963dbf1d6848248c7..724f30e2639c812c5af0569a209a28f09259f6cc 100644 (file)
@@ -43,6 +43,11 @@ std::shared_ptr<ModelAPI_Document> Model_PluginManager::rootDocument()
     Model_Application::getApplication()->getDocument("root"));
 }
 
+bool Model_PluginManager::hasRootDocument()
+{
+  return Model_Application::getApplication()->hasDocument("root");
+}
+
 shared_ptr<ModelAPI_Document> Model_PluginManager::currentDocument()
 {
   if (!myCurrentDoc)
index 6da805cfa54e5aa27dad46dda311f96ec9cd944c..8fc49bdf2c6e9ccb84c136360b34c33a91bd933b 100644 (file)
@@ -30,6 +30,9 @@ public:
   /// Returns the root document of the application (that may contains sub-documents)
   MODEL_EXPORT virtual std::shared_ptr<ModelAPI_Document> rootDocument();
 
+  /// Return true if root document has been already created
+  MODEL_EXPORT virtual bool hasRootDocument();
+
   /// Returns the current document that used for current work in the application
   MODEL_EXPORT virtual std::shared_ptr<ModelAPI_Document> currentDocument();
 
index 8aab3f6f40d8525510612b61cad659634794ed61..90e1ca81d1bd91a138b987ddde6fe3bc3be451b7 100644 (file)
@@ -34,6 +34,9 @@ public:
   /// Returns the root document of the application (that may contains sub-documents)
   virtual std::shared_ptr<ModelAPI_Document> rootDocument() = 0;
 
+  /// Return true if root document has been already created
+  virtual bool hasRootDocument() = 0;
+
   /// Returns the current document that used for current work in the application
   virtual std::shared_ptr<ModelAPI_Document> currentDocument() = 0;
 
index 9def6b185607c528fcff46672bad7f21df07ecef..2c0e7d9d7e79514d353401e80d8e9e75f15a30dd 100644 (file)
@@ -289,7 +289,8 @@ void ModuleBase_Operation::startOperation()
 {
   std::shared_ptr<ModelAPI_Document> aDoc = ModelAPI_PluginManager::get()->rootDocument();
   myFeature = aDoc->addFeature(myOperationId.toStdString());
-  myFeature->execute();
+  if (myFeature) // TODO: generate an error if feature was not created
+    myFeature->execute();
   //emit callSlot();
   //commit();
 }
@@ -319,7 +320,7 @@ void ModuleBase_Operation::abortOperation()
  */
 void ModuleBase_Operation::commitOperation()
 {
-  myFeature->execute();
+  if (myFeature) myFeature->execute();
 }
 
 /*!