]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Correct compilation on Linux
authornds <nds@opencascade.com>
Sun, 10 Dec 2017 11:53:03 +0000 (14:53 +0300)
committernds <nds@opencascade.com>
Sun, 10 Dec 2017 11:53:03 +0000 (14:53 +0300)
src/XGUI/XGUI_Workshop.cpp
src/XGUI/XGUI_Workshop.h

index e433ff4bba460ef96936732f0b61b76689c59488..2e7c4e7702af76198a509735e1be301f0fe483db 100755 (executable)
@@ -2532,6 +2532,46 @@ void XGUI_Workshop::setStatusBarMessage(const QString& theMessage)
 #endif
 }
 
+#ifdef HAVE_SALOME
+//******************************************************
+void XGUI_Workshop::synchronizeViewer()
+{
+  SessionPtr aMgr = ModelAPI_Session::get();
+  QList<DocumentPtr> aDocs;
+  aDocs.append(aMgr->activeDocument());
+  aDocs.append(aMgr->moduleDocument());
+
+  foreach(DocumentPtr aDoc, aDocs) {
+    synchronizeGroupInViewer(aDoc, ModelAPI_ResultConstruction::group(), false);
+    synchronizeGroupInViewer(aDoc, ModelAPI_ResultBody::group(), false);
+    synchronizeGroupInViewer(aDoc, ModelAPI_ResultPart::group(), false);
+    synchronizeGroupInViewer(aDoc, ModelAPI_ResultGroup::group(), false);
+  }
+}
+
+//******************************************************
+void XGUI_Workshop::synchronizeGroupInViewer(const DocumentPtr& theDoc,
+                                             const std::string& theGroup,
+                                             bool theUpdateViewer)
+{
+  ObjectPtr aObj;
+  int aSize = theDoc->size(theGroup);
+  for (int i = 0; i < aSize; i++) {
+    aObj = theDoc->object(theGroup, i);
+    if (aObj->isDisplayed()) {
+      // Hide the presentation with an empty shape. But isDisplayed state of the object should not
+      // be changed to the object becomes visible when the shape becomes not empty
+      ResultPtr aRes = std::dynamic_pointer_cast<ModelAPI_Result>(aObj);
+      if (aRes.get() && (!aRes->shape().get() || aRes->shape()->isNull()))
+        continue;
+      myDisplayer->display(aObj, false);
+    }
+  }
+  if (theUpdateViewer)
+    myDisplayer->updateViewer();
+}
+#endif
+
 //******************************************************
 void XGUI_Workshop::highlightResults(const QObjectPtrList& theObjects)
 {
index 5f1ddd499f7b90fac2bad49721b7fc24e56662a7..8267dff5a813cd7f160502354d3eebd85537d359 100755 (executable)
@@ -264,6 +264,20 @@ Q_OBJECT
   /// \param theMessage a message
   void setStatusBarMessage(const QString& theMessage);
 
+#ifdef HAVE_SALOME
+  /// Has to be called in order to display objects with visibility status = true
+  void synchronizeViewer();
+
+  /// Has to be called in order to display objects from a specifed group
+  /// with visibility status = true
+  /// \param theDoc the document for objects synchronisation
+  /// \param theGroup the group name
+  /// \param theUpdateViewer update viewer flag
+  void synchronizeGroupInViewer(const DocumentPtr& theDoc,
+                                const std::string& theGroup,
+                                bool theUpdateViewer);
+
+#endif
   /// Update the property panel content by the XML description of the operation and set the panel
   /// into the operation
   /// \param theOperation an operation