]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
PAL10810 - "Display", "Erase", "Display only" on root objects
authorasl <asl@opencascade.com>
Wed, 14 Dec 2005 06:45:20 +0000 (06:45 +0000)
committerasl <asl@opencascade.com>
Wed, 14 Dec 2005 06:45:20 +0000 (06:45 +0000)
src/VISUGUI/VisuGUI.cxx
src/VISUGUI/VisuGUI_Displayer.cxx

index 13ec0762c2cc045772d3c7a7346d04e461712fe9..4284985d2df6dd665656defc604c4557c9956ec4 100644 (file)
@@ -610,9 +610,11 @@ OnDisplayPrs()
   if(MYDEBUG) MESSAGE("VisuGUI::OnDisplayPrs");
 
   QApplication::setOverrideCursor(Qt::waitCursor);
-  SALOME_ListIO aList;
+  SALOME_ListIO aSel, aList;
   LightApp_SelectionMgr* mgr = GetSelectionMgr(this);
-  mgr->selectedObjects(aList);
+  mgr->selectedObjects( aSel );
+
+  extractContainers( aSel, aList );
 
   Handle(SALOME_InteractiveObject) anIO;
   for ( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() ) {
@@ -686,9 +688,11 @@ OnErasePrs()
   if (vw)
     vw->unHighlightAll();
 
-  SALOME_ListIO aList;
+  SALOME_ListIO aList, aSel;
   LightApp_SelectionMgr* mgr = GetSelectionMgr(this);
-  mgr->selectedObjects(aList);
+  mgr->selectedObjects( aSel );
+
+  extractContainers( aSel, aList );
 
   Handle(SALOME_InteractiveObject) anIO;
   for ( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() ) {
@@ -2493,16 +2497,17 @@ createPopupMenus()
   QString orCurveInvisible = "or (type='VISU::TCURVE'" + andInvisible + ")";
   QString aPrsVisible   = "(($type in {'VISU::TMESH' " + aPrsAll + "}) and isVisible)";
   QString aPrsInvisible = "(($type in {'VISU::TMESH' " + aPrsAll + "})" + andInvisible + ")";
+  QString aComponent = "( selcount=1 and canBeDisplayed )";
 
-  QString anEraseRule = "selcount>0 and ({true} in $canBeDisplayed) and (" + aPrsVisible +
-    " or (client='ObjectBrowser' and (" + aTableOrCont + orCurveVisible + ")))";
+  QString anEraseRule = "selcount>0 and ({true} in $canBeDisplayed) and (" + aPrsVisible +
+    " or (client='ObjectBrowser' and (" + aTableOrCont + orCurveVisible + "))) ) or " + aComponent;
 
-  QString aDisplayRule = "selcount>0 and ({true} in $canBeDisplayed) and (" + aPrsInvisible +
-    " or (client='ObjectBrowser' and (" + aTableOrCont + orCurveInvisible + ")))";
+  QString aDisplayRule = "selcount>0 and ({true} in $canBeDisplayed) and (" + aPrsInvisible +
+    " or (client='ObjectBrowser' and (" + aTableOrCont + orCurveInvisible + "))) ) or" + aComponent;
 
-  QString aDOnlyRule = "selcount>0 and ({true} in $canBeDisplayed) and (($type in {'VISU::TMESH' " + aPrsAll + "})"
+  QString aDOnlyRule = "selcount>0 and ({true} in $canBeDisplayed) and (($type in {'VISU::TMESH' " + aPrsAll + "})"
     " or (client='ObjectBrowser' and ((type='VISU::TTABLE' and nbChildren>0) or"
-    " ($type in {'VISU::TCURVE' 'VISU::TCONTAINER'}))))";
+    " ($type in {'VISU::TCURVE' 'VISU::TCONTAINER'})))) ) or" + aComponent;
 
   mgr->setRule( action( VISU_ERASE ), anEraseRule, true );
   mgr->setRule( action( VISU_DISPLAY ), aDisplayRule, true );
index bcfffa772294744ddb3810aca7e4ef7ed5c8c996..68d8f28b8208cfb5682e65bfe1626b745ec39d39 100644 (file)
@@ -224,6 +224,9 @@ bool VisuGUI_Displayer::canBeDisplayed( const QString& entry, const QString& vie
   if( CORBA::is_nil( anObj ) )
     return false;
 
+  if( study->isComponent( entry ) )
+    return true;
+
   if( viewer_type==SVTK_Viewer::Type() )
   {
     VISU::Prs3d_i* thePrs = dynamic_cast<VISU::Prs3d_i*>( VISU::GetServant( anObj ).in() );