]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/PartSet/PartSet_Module.cpp
Salome HOME
Fix SIGSEGV on model.checkPythonDump() in GUI
[modules/shaper.git] / src / PartSet / PartSet_Module.cpp
index f3e8ad1a568369c21bcc6d2a90331223fa328225..eb8cf55898e2dcd9c587995dedc32b5e03e74232 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2022  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #include <SketcherPrs_Tools.h>
 
 #include <Events_Loop.h>
+#include <Events_MessageBool.h>
 #include <Config_PropManager.h>
 #include <Config_Keywords.h>
 
@@ -187,6 +188,7 @@ PartSet_Module::PartSet_Module(ModuleBase_IWorkshop* theWshop)
 
   Events_Loop* aLoop = Events_Loop::loop();
   aLoop->registerListener(this, Events_Loop::eventByName(EVENT_DOCUMENT_CHANGED));
+  aLoop->registerListener(this, Events_Loop::eventByName(EVENT_DOCUMENTS_CLOSED));
   aLoop->registerListener(this, Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY));
   aLoop->registerListener(this, Events_Loop::eventByName(EVENT_FEATURE_LICENSE_VALID));
 
@@ -286,6 +288,13 @@ PartSet_Module::~PartSet_Module()
 void PartSet_Module::createFeatures()
 {
   ModuleBase_IModule::createFeatures();
+
+  // send signal to initialization plugin about the state of the preferences: to create part or not
+  bool aCreate = ModuleBase_Preferences::resourceMgr()->booleanValue(
+    ModuleBase_Preferences::GENERAL_SECTION, "create_init_part", true);
+  Events_MessageBool aCreateMsg(Events_Loop::eventByName(EVENT_CREATE_PART_ON_START), aCreate);
+  aCreateMsg.send();
+
   myRoot = new PartSet_RootNode();
   myRoot->setWorkshop(workshop());
   ModuleBase_IModule::loadProprietaryPlugins();
@@ -1144,10 +1153,9 @@ void PartSet_Module::onViewTransformed(int theTrsfType)
   Handle(V3d_Viewer) aV3dViewer = aContext->CurrentViewer();
   Handle(V3d_View) aView;
   double aScale = 0;
-  for (aV3dViewer->InitDefinedViews();
-       aV3dViewer->MoreDefinedViews();
-       aV3dViewer->NextDefinedViews()) {
-    Handle(V3d_View) aV = aV3dViewer->DefinedView();
+  V3d_ListOfView::Iterator aDefinedViews(aV3dViewer->DefinedViews());
+  for (; aDefinedViews.More(); aDefinedViews.Next()) {
+    Handle(V3d_View) aV = aDefinedViews.Value();
     double aS = aV->Scale();
     if (aS > aScale) {
       aScale = aS;
@@ -1667,7 +1675,9 @@ if (aObjIndex.isValid()) { \
 //******************************************************
 void PartSet_Module::processEvent(const std::shared_ptr<Events_Message>& theMessage)
 {
-  if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_DOCUMENT_CHANGED)) {
+  if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_DOCUMENTS_CLOSED)) {
+    closeDocument();
+  } else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_DOCUMENT_CHANGED)) {
     SessionPtr aMgr = ModelAPI_Session::get();
     if (!aMgr->hasModuleDocument()) // if document is closed, do not call the document creation
       return;
@@ -1810,11 +1820,11 @@ void PartSet_Module::onTreeViewDoubleClick(const QModelIndex& theIndex)
     {
       if (!aPart.get() && aObj->groupName() == ModelAPI_ResultParameter::group())
       {
-        QObjectPtrList aObjects = aWorkshop->objectBrowser()->selectedObjects();
+        QObjectPtrList aSelectedObjects = aWorkshop->objectBrowser()->selectedObjects();
         FeaturePtr aFeature;
         ResultParameterPtr aParam;
-        foreach(ObjectPtr aObj, aObjects) {
-          aParam = std::dynamic_pointer_cast<ModelAPI_ResultParameter>(aObj);
+        foreach(ObjectPtr aSelected, aSelectedObjects) {
+          aParam = std::dynamic_pointer_cast<ModelAPI_ResultParameter>(aSelected);
           if (aParam.get())
             break;
         }