]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
#1021 HDF file : nothing saved if only parameters and sketch were created
authornds <nds@opencascade.com>
Thu, 10 Dec 2015 10:26:31 +0000 (13:26 +0300)
committernds <nds@opencascade.com>
Thu, 10 Dec 2015 10:26:31 +0000 (13:26 +0300)
src/NewGeom/NewGeom_DataModel.cpp
src/NewGeom/NewGeom_DataModel.h
src/NewGeom/NewGeom_Module.cpp

index 88e7db728e938d5396200949082ac24b0b026ab3..2f208950957e1f9f039777b22cb411fa563daf36 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <LightApp_Study.h>
 #include <CAM_Application.h>
+#include <CAM_DataObject.h>
 #include <SUIT_Tools.h>
 #include <SUIT_ResourceMgr.h>
 
@@ -131,6 +132,20 @@ bool NewGeom_DataModel::isSaved() const
 
 void NewGeom_DataModel::update(LightApp_DataObject* theObj, LightApp_Study* theStudy)
 {
+  // Nothing to do here: we always keep the data tree in the up-to-date state
+  // The only goal of this method is to hide default behavior from LightApp_DataModel
+  return;
+}
+
+void NewGeom_DataModel::initRootObject()
+{
+  LightApp_Study* study = dynamic_cast<LightApp_Study*>( module()->application()->activeStudy() );
+  CAM_ModuleObject *aModelRoot = dynamic_cast<CAM_ModuleObject*>(root());
+  if(study && aModelRoot == NULL) {
+    aModelRoot = createModuleObject( study->root() );
+    aModelRoot->setDataModel( this );
+    setRoot(aModelRoot);
+  }
 }
 
 void NewGeom_DataModel::removeDirectory(const QString& theDirectoryName)
index 5f6f9519d345f5403528610fd8776835dbdf2dbf..e553f8cccda533b43e45d0778cd7ab09196e0df2 100644 (file)
@@ -51,6 +51,11 @@ class NewGeom_EXPORT NewGeom_DataModel : public LightApp_DataModel
   /// Returns True if the data structure is already saved
   virtual bool isSaved() const;
 
+  /// Creates a module root object if it has not been created yet
+  /// and append it to the active study. It is necessary for correct persistent
+  /// of the model.
+  void initRootObject();
+
   /// Update data object
   /// \param theObj an data object
   /// \param theStudy a current study
index 04d3a1b6db6539655d316f2e8c64f366fef8d5a3..7bc410a0b88e804ba8f87478dada54db0f94b42c 100644 (file)
@@ -144,6 +144,9 @@ void NewGeom_Module::viewManagers(QStringList& theList) const
 bool NewGeom_Module::activateModule(SUIT_Study* theStudy)
 {
   bool isDone = LightApp_Module::activateModule(theStudy);
+  NewGeom_DataModel* aDataModel = dynamic_cast<NewGeom_DataModel*>(dataModel());
+  aDataModel->initRootObject();
+
   if (isDone) {
     setMenuShown(true);
     setToolShown(true);
@@ -348,13 +351,7 @@ NewGeom_OCCSelector* NewGeom_Module::createSelector(SUIT_ViewManager* theMgr)
 //******************************************************
 CAM_DataModel* NewGeom_Module::createDataModel()
 {
-  NewGeom_DataModel* aDataModel = new NewGeom_DataModel(this);
-
-  // Calling addComponent() for persistent functionality work in the SalomeApp_Study
-  LightApp_Study* aStudy = dynamic_cast<LightApp_Study*>(application()->activeStudy() );
-  aStudy->addComponent(aDataModel);
-
-  return aDataModel;
+  return new NewGeom_DataModel(this);
 }
 
 QAction* NewGeom_Module::addFeature(const QString& theWBName, const ActionInfo& theInfo)