]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue # 112: Show only command defined
authorvsv <vitaly.smetannikov@opencascade.com>
Fri, 5 Sep 2014 14:41:40 +0000 (18:41 +0400)
committervsv <vitaly.smetannikov@opencascade.com>
Fri, 5 Sep 2014 14:41:40 +0000 (18:41 +0400)
src/XGUI/XGUI_ContextMenuMgr.cpp
src/XGUI/XGUI_Displayer.cpp
src/XGUI/XGUI_Displayer.h
src/XGUI/XGUI_Workshop.cpp
src/XGUI/XGUI_Workshop.h

index 914cce3217c605a514e13a57b1ea4b27ce35734a..c24669c70ad97414ff895c6f29031f73544156da 100644 (file)
@@ -46,6 +46,9 @@ void XGUI_ContextMenuMgr::createActions()
   aAction = new QAction(QIcon(":pictures/eye_pencil.png"), tr("Show"), this);
   addAction("SHOW_CMD", aAction);
 
+  aAction = new QAction(QIcon(":pictures/eye_pencil.png"), tr("Show only"), this);
+  addAction("SHOW_ONLY_CMD", aAction);
+
   aAction = new QAction(QIcon(":pictures/eye_pencil_closed.png"), tr("Hide"), this);
   addAction("HIDE_CMD", aAction);
 }
@@ -121,8 +124,10 @@ QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const
         } else {
           if (aDisplayer->isVisible(aObject))
             aMenu->addAction(action("HIDE_CMD"));
-          else
+          else {
             aMenu->addAction(action("SHOW_CMD"));
+          }
+          aMenu->addAction(action("SHOW_ONLY_CMD"));
         }
       } else {  // If feature is 0 the it means that selected root object (document)
         if (aMgr->currentDocument() != aMgr->rootDocument())
@@ -145,6 +150,7 @@ QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const
       if (hasResult) {
         aMenu->addAction(action("SHOW_CMD"));
         aMenu->addAction(action("HIDE_CMD"));
+        aMenu->addAction(action("SHOW_ONLY_CMD"));
       }
       if (hasFeature)
         aMenu->addAction(action("DELETE_CMD"));
index 26def2f04855d27112bc55dee573509876f2d47d..840ade6713d7b7b0bc4d782e98141fed06be057e 100644 (file)
@@ -279,25 +279,22 @@ void XGUI_Displayer::setSelected(const QList<ObjectPtr>& theResults, const bool
     updateViewer();
 }
 
-/*void XGUI_Displayer::EraseAll(const bool isUpdateViewer)
+void XGUI_Displayer::eraseAll(const bool isUpdateViewer)
  {
- Handle(AIS_InteractiveContext) ic = AISContext();
-
- AIS_ListOfInteractive aList;
- ic->DisplayedObjects(aList);
- AIS_ListIteratorOfListOfInteractive anIter(aList);
- for (; anIter.More(); anIter.Next()) {
- if ((anIter.Value()->DynamicType() == STANDARD_TYPE(AIS_Trihedron)))
- continue;
-
- // erase an object
- Handle(AIS_InteractiveObject) anIO = anIter.Value();
- ic->Erase(anIO, false);
+   Handle(AIS_InteractiveContext) ic = AISContext();
+
+   ResultToAISMap::iterator aIt;
+   for (aIt = myResult2AISObjectMap.begin(); aIt != myResult2AISObjectMap.end(); aIt++) {
+     // erase an object
+     boost::shared_ptr<GeomAPI_AISObject> aAISObj = (*aIt).second;
+     Handle(AIS_InteractiveObject) anIO = aAISObj->impl<Handle(AIS_InteractiveObject)>();
+     if (!anIO.IsNull())
+      ic->Remove(anIO, false);
+   }
+   myResult2AISObjectMap.clear();
+   if (isUpdateViewer)
+     updateViewer();
  }
- myResult2AISObjectMap.clear();
- if (isUpdateViewer)
- updateViewer();
- }*/
 
 void XGUI_Displayer::eraseDeletedResults(const bool isUpdateViewer)
 {
index 5c54857d07bf4cab3ef6ca813907ce91e2703f94..7d0970659d54dd6457c062562df919c0b58362c0 100644 (file)
@@ -97,7 +97,7 @@ class XGUI_EXPORT XGUI_Displayer
 
   /// Erase all presentations
   /// \param isUpdateViewer the parameter whether the viewer should be update immediatelly
-  //void EraseAll(const bool isUpdateViewer = true);
+  void eraseAll(const bool isUpdateViewer = true);
 
   /// Erase AIS interactive objects, which has an empty feature in the internal map
   /// \param isUpdateViewer the parameter whether the viewer should be update immediatelly
index be21a28256d55f988f769f812c1bfb8aaca47be8..9d51cd86584a90175da8428851aa23bd1e74b3db 100644 (file)
@@ -960,6 +960,8 @@ void XGUI_Workshop::onContextMenuCommand(const QString& theId, bool isChecked)
     showObjects(aObjects, true);
   else if (theId == "HIDE_CMD")
     showObjects(aObjects, false);
+  else if (theId == "SHOW_ONLY_CMD")
+    showOnlyObjects(aObjects);
 }
 
 //**************************************************************
@@ -1050,6 +1052,14 @@ void XGUI_Workshop::showObjects(const QList<ObjectPtr>& theList, bool isVisible)
   myDisplayer->updateViewer();
 }
 
+//**************************************************************
+void XGUI_Workshop::showOnlyObjects(const QList<ObjectPtr>& theList)
+{
+  myDisplayer->eraseAll(false);
+  showObjects(theList, true);
+}
+
+
 //**************************************************************
 void XGUI_Workshop::updateCommandsOnViewSelection()
 {
index 458b8a4c415a9a35c8d358ce98d574adc325900a..95644a07fb1f25913f4141afd7223d137fce8680 100644 (file)
@@ -154,6 +154,9 @@ Q_OBJECT
   //! Show the given features in 3d Viewer
   void showObjects(const QList<ObjectPtr>& theList, bool isVisible);
 
+  //! Show the given features in 3d Viewer
+  void showOnlyObjects(const QList<ObjectPtr>& theList);
+
   ModuleBase_IModule* module() const
   {
     return myModule;