]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
refs #187: Property panel is in SALOME desktop
authornds <natalia.donis@opencascade.com>
Tue, 28 Oct 2014 06:53:12 +0000 (09:53 +0300)
committernds <natalia.donis@opencascade.com>
Tue, 28 Oct 2014 06:53:12 +0000 (09:53 +0300)
The property for widget's states is switched off in order to provide hidden property panel widget even if it was shown before the module deactivation.
There was an attemp to react on visibilityChanged of the property panel, but the current SALOME/Qt realization gives invalid painted area in the application on the last place of the panel.

src/NewGeom/NewGeom_Module.cpp
src/NewGeom/NewGeom_Module.h

index 5d614069f0268226d3613ee501afe2137f5c7c55..dae250cc3290d778e64485c4169fcf3e4c640c72 100644 (file)
@@ -8,6 +8,9 @@
 #include <XGUI_ContextMenuMgr.h>
 #include <XGUI_Preferences.h>
 #include <XGUI_ObjectsBrowser.h>
+#include <XGUI_OperationMgr.h>
+
+#include <ModuleBase_Operation.h>
 
 #include <LightApp_Application.h>
 #include <LightApp_SelectionMgr.h>
@@ -128,7 +131,6 @@ bool NewGeom_Module::activateModule(SUIT_Study* theStudy)
         mySelector = createSelector(OCCViewManagers.first());
       }
     }
-    myWorkshop->propertyPanel()->hide();
     QtxPopupMgr* aMgr = popupMgr();  // Create popup manager
     action(myEraseAll)->setEnabled(false);
 
@@ -139,6 +141,17 @@ bool NewGeom_Module::activateModule(SUIT_Study* theStudy)
       QTimer::singleShot(1000, myWorkshop, SLOT(displayAllResults()));
     }
   }
+  SUIT_ResourceMgr* aResMgr = application()->resourceMgr();
+  myIsStorePositions = aResMgr->booleanValue("Study", "store_positions", true);
+
+  // this following row is caused by #187 bug.
+  // SALOME saves the dock widget positions before deactivateModule() and
+  // load it after the module activation. So, if the panel is visible before
+  // deactivate, it becomes visible after activate.
+  // In order to avoid the visible property panel, the widget position save is
+  // switch off in this module
+  aResMgr->setValue("Study", "store_positions", false);
+
   return isDone;
 }
 
@@ -148,9 +161,6 @@ bool NewGeom_Module::deactivateModule(SUIT_Study* theStudy)
   setMenuShown(false);
   setToolShown(false);
 
-  myWorkshop->propertyPanel()->setVisible(false);
-  desktop()->removeDockWidget(myWorkshop->propertyPanel());
-
   QObject* aObj = myWorkshop->objectBrowser()->parent();
   QDockWidget* aObjDoc = dynamic_cast<QDockWidget*>(aObj);
   if (aObjDoc) {
@@ -160,6 +170,15 @@ bool NewGeom_Module::deactivateModule(SUIT_Study* theStudy)
     aViewAct->setEnabled(false);
   }
 
+  // the active operation should be stopped for the next activation.
+  // There should not be active operation and visualized preview.
+  // Abort operation should be performed before the selection's remove
+  // because the displayed objects should be removed from the viewer, but
+  // the AIS context is obtained from the selector.
+  ModuleBase_Operation* anOperation = myWorkshop->operationMgr()->currentOperation();
+  if (anOperation)
+    anOperation->abort();
+
   // Delete selector because it has to be redefined on next activation
   if (mySelector) {
     myProxyViewer->setSelector(0);
@@ -168,6 +187,10 @@ bool NewGeom_Module::deactivateModule(SUIT_Study* theStudy)
   }
 
   //myWorkshop->contextMenuMgr()->disconnectViewer();
+
+  SUIT_ResourceMgr* aResMgr = application()->resourceMgr();
+  aResMgr->setValue("Study", "store_positions", myIsStorePositions);
+
   return LightApp_Module::deactivateModule(theStudy);
 }
 
index 9da3e31af221efd2fd7d52c19f2fbde2d92e1e34..eab0275afc184cf369ae5b485ee49ee6274fd0d0 100644 (file)
@@ -104,6 +104,8 @@ Q_OBJECT
   QMap<QString, QStringList> myNestedActions;
 
   bool myIsOpened;
+  bool myIsStorePositions;
+
 };
 
 #endif