]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Improvement: now in rules you can use "canBeDisplayed" parameter. It is true, if...
authorasl <asl@opencascade.com>
Thu, 1 Dec 2005 10:05:15 +0000 (10:05 +0000)
committerasl <asl@opencascade.com>
Thu, 1 Dec 2005 10:05:15 +0000 (10:05 +0000)
src/GEOMGUI/GEOM_Displayer.cxx
src/GEOMGUI/GEOM_Displayer.h
src/GEOMGUI/GeometryGUI.cxx

index 20b49e11c866fe3142892aaaccd8fd24bbc4ac6d..def483eb21a54e4e3875ff54f1fd3dfc370a63e7 100644 (file)
@@ -1094,3 +1094,8 @@ void GEOM_Displayer::setShape( const TopoDS_Shape& theShape )
 {
   myShape = theShape;
 }
+
+bool GEOM_Displayer::canBeDisplayed( const QString& /*entry*/, const QString& viewer_type ) const
+{
+  return viewer_type==SOCC_Viewer::Type() || viewer_type==SVTK_Viewer::Type();
+}
index 8d081a0ddd5f261637fa8c7730a185b4888ddf10..d1af6d1f003180ccb31ce9b3afe8c833e4b6f9b7 100644 (file)
@@ -75,8 +75,9 @@ public:
   /* Destructor */
   virtual ~GEOM_Displayer();
 
-  /* Display/Erase object methods */
+  virtual bool canBeDisplayed( const QString& /*entry*/, const QString& /*viewer_type*/ ) const;
 
+  /* Display/Erase object methods */
   void          Display   ( const Handle(SALOME_InteractiveObject)& theIO,
                             const bool updateViewer = true,
                            SALOME_View* theViewFrame = 0 );
index ae7f47327ce7bb280add610aa3c3ac6d84b68477..04cf3d313c0f3774bb22f629e75d3758454655fc 100644 (file)
@@ -996,9 +996,16 @@ void GeometryGUI::initialize( CAM_Application* app )
   createMenu( 212, viewId, -1 );  
   createMenu( 214, viewId, -1 );  
   createMenu( separator(), viewId, -1 );
+
+/*
+  PAL9111:
+  because of these items are accessible through object browser and viewers
+  we have removed they from main menu
+
   createMenu( 216, viewId, -1 );  
   createMenu( 213, viewId, -1 );  
   createMenu( 215, viewId, -1 );
+*/
 
   // ---- create toolbars --------------------------
 
@@ -1067,15 +1074,25 @@ void GeometryGUI::initialize( CAM_Application* app )
   mgr->insert( action(  8034 ), -1, -1 ); // isos
   mgr->setRule( action( 8034 ), "client='OCCViewer' and selcount>0 and isVisible", true );
   mgr->insert( separator(), -1, -1 );        // -----------
+  
+
+
+  QString canDisplay = "($component={'GEOM'}) and (selcount>0) and ({true} in $canBeDisplayed) ",
+          onlyComponent = "((type='Component') and selcount=1)",
+          rule = canDisplay + "and ((($type in {%1}) and( %2 )) or " + onlyComponent + ")",
+          types = "'Shape' 'Group'";
+
   mgr->insert( action(  216 ), -1, -1 ); // display
-  mgr->setRule( action( 216 ), "$component={'GEOM'} and ( (selcount>0) and (((isActiveView=true) and (($type in {'Shape' 'Group'} and (not isVisible)) or type='Component'))"
-                              "or ((isActiveView=false) and ($type in {'Shape' 'Group' 'Component'}))))", true );
+  mgr->setRule( action( 216 ), rule.arg( types ).arg( "not isVisible" ), true );
+
   mgr->insert( action(  215 ), -1, -1 ); // erase
-  mgr->setRule( action( 215 ), "$component={'GEOM'} and ((isActiveView=true) and (($type in {'Shape' 'Group'} and isVisible and selcount>0) or (type='Component' and selcount=1)))", true );
+  mgr->setRule( action( 215 ), rule.arg( types ).arg( "isVisible" ), true );
+
   mgr->insert( action(  214 ), -1, -1 ); // erase All
   mgr->setRule( action( 214 ), "client='OCCViewer' or client='VTKViewer'", true );
+
   mgr->insert( action(  213 ), -1, -1 ); // display only
-  mgr->setRule( action( 213 ), "$component={'GEOM'} and (($type in {'Shape' 'Group'} and selcount>0) or (type='Component' and selcount=1))", true );
+  mgr->setRule( action( 213 ), rule.arg( types ).arg( "true" ), true );
   mgr->insert( separator(), -1, -1 );
 
   mgr->hide( mgr->actionId( action( myEraseAll ) ) );