Salome HOME
Define canBreakLink parameter
authorvsv <vsv@opencascade.com>
Fri, 20 Dec 2019 12:53:23 +0000 (15:53 +0300)
committervsv <vsv@opencascade.com>
Fri, 20 Dec 2019 12:53:23 +0000 (15:53 +0300)
src/SMESHGUI/SMESHGUI.cxx
src/SMESHGUI/SMESHGUI_Selection.cxx
src/SMESHGUI/SMESHGUI_Selection.h

index 4a612b59d2c8d3bdb4aea6248a6e34834a9cbacb..5a3747d0ca34696eb8f3af68b23e371305b18f2e 100644 (file)
@@ -4888,7 +4888,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   popupMgr()->insert( separator(), -1, -1 );
 
   popupMgr()->insert( action( SMESHOp::OpBreakLink), -1, -1 );
   popupMgr()->insert( separator(), -1, -1 );
 
   popupMgr()->insert( action( SMESHOp::OpBreakLink), -1, -1 );
-  popupMgr()->setRule( action( SMESHOp::OpBreakLink), "$component={'SHAPERSTUDY'} and client='ObjectBrowser'", QtxPopupMgr::VisibleRule );
+  popupMgr()->setRule( action( SMESHOp::OpBreakLink), "$component={'SHAPERSTUDY'} and client='ObjectBrowser' and canBreakLink", QtxPopupMgr::VisibleRule );
 
   connect( application(), SIGNAL( viewManagerActivated( SUIT_ViewManager* ) ),
            this, SLOT( onViewManagerActivated( SUIT_ViewManager* ) ) );
 
   connect( application(), SIGNAL( viewManagerActivated( SUIT_ViewManager* ) ),
            this, SLOT( onViewManagerActivated( SUIT_ViewManager* ) ) );
index d0cd5c4dcc54cb765f55e29623e09432d8606095..d4b79054e6c4471eba61e351cedb3a3510685cb4 100644 (file)
@@ -140,6 +140,7 @@ QVariant SMESHGUI_Selection::parameter( const int ind, const QString& p ) const
   else if ( p=="nbChildren")            val = QVariant( nbChildren( ind ) );
   else if ( p=="isContainer")           val = QVariant( isContainer( ind ) );
   else if ( p=="guiState")              val = QVariant( guiState() );
   else if ( p=="nbChildren")            val = QVariant( nbChildren( ind ) );
   else if ( p=="isContainer")           val = QVariant( isContainer( ind ) );
   else if ( p=="guiState")              val = QVariant( guiState() );
+  else if ( p=="canBreakLink")          val = QVariant( canBreakLink(ind) );
 
   if ( val.isValid() )
     return val;
 
   if ( val.isValid() )
     return val;
@@ -605,6 +606,20 @@ bool SMESHGUI_Selection::hasGeomReference( int ind ) const
   return false;
 }
 
   return false;
 }
 
+//=======================================================================
+//function : canBreakLink
+//purpose  : returns true if selected object is a Shaper object and it can break link
+//=======================================================================
+
+bool SMESHGUI_Selection::canBreakLink( int ind ) const
+{
+  if ( ind >= 0 && ind < myTypes.count()) {
+    _PTR(SObject) so = SMESH::getStudy()->FindObjectID( entry( ind ).toUtf8().data() );
+    return true;
+  }
+  return false;
+}
+
 //=======================================================================
 //function : isEditableHyp
 //purpose  : 
 //=======================================================================
 //function : isEditableHyp
 //purpose  : 
index 7ebf07a261191605a030fd8f2c1260b13839b2a1..6ca2c0cb1d0357a276785579115ac7082f182a53 100644 (file)
@@ -61,6 +61,7 @@ public:
   virtual bool            hasGeomReference( int ) const;
   virtual bool            isEditableHyp( int ) const;
   virtual bool            isVisible( int ) const;
   virtual bool            hasGeomReference( int ) const;
   virtual bool            isEditableHyp( int ) const;
   virtual bool            isVisible( int ) const;
+  virtual bool            canBreakLink(int) const;
 
   virtual bool            isQuadratic( int ) const;
   virtual QString         quadratic2DMode( int ) const;
 
   virtual bool            isQuadratic( int ) const;
   virtual QString         quadratic2DMode( int ) const;