]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Edit/Delete popup menues enable on presentation selected in OCC viewer.
authornds <natalia.ermolaeva@opencascade.com>
Tue, 15 Nov 2016 18:20:03 +0000 (21:20 +0300)
committernds <natalia.ermolaeva@opencascade.com>
Tue, 15 Nov 2016 18:20:03 +0000 (21:20 +0300)
src/GEOMGUI/GEOMGUI_Selection.cxx
src/GEOMGUI/GEOMGUI_Selection.h
src/GEOMGUI/GeometryGUI.cxx

index 48ac374d6a146ce9341f5fe1bf875acb3ced8640..87026424ef3c819e33f25dfd964236c2af5f9a8a 100644 (file)
@@ -26,6 +26,7 @@
 #include "GEOMGUI_Selection.h"
 #include <GEOMGUI_DimensionProperty.h>
 #include <GEOMGUI_AnnotationAttrs.h>
+#include <GEOMGUI_AnnotationMgr.h>
 
 #include "GeometryGUI.h"
 #include "GEOM_Displayer.h"
@@ -152,6 +153,8 @@ QVariant GEOMGUI_Selection::parameter( const QString& p ) const
     v = hasImported();
   else if ( p == "allImported" )
     v = allImported();
+  else if (p == "annotationsCount")
+    v = annotationsCount();
   else
     v = LightApp_Selection::parameter( p );
   return v;
@@ -212,6 +215,9 @@ QVariant GEOMGUI_Selection::parameter( const int idx, const QString& p ) const
 // the method to skip temporary objects from selection (called from LightApp)
 bool GEOMGUI_Selection::processOwner( const LightApp_DataOwner* theOwner )
 {
+  if ( theOwner->entry().contains( GEOMGUI_AnnotationMgr::GetEntrySeparator() ) ) {
+    myAnnotationEntries.append( theOwner->entry() );
+  }
   return !theOwner->entry().contains("_");
 }
 
@@ -858,6 +864,11 @@ bool GEOMGUI_Selection::hasVisibleDimensions( const int theIndex ) const
   return isAnyVisible;
 }
 
+int GEOMGUI_Selection::annotationsCount() const
+{
+  return myAnnotationEntries.size();
+}
+
 bool GEOMGUI_Selection::hasAnnotations( const int theIndex, bool& theHidden, bool& theVisible ) const
 {
   SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( study() );
index d5f6ba23bbb9626fe26da87cf1183a19336a3689..76dda787c30b473f2eff936f65d538162ccd40c7 100644 (file)
@@ -85,6 +85,8 @@ private:
   bool                  hasHiddenDimensions( const int ) const;
   bool                  hasVisibleDimensions( const int ) const;
 
+  int                   annotationsCount() const;
+
   bool                  hasAnnotations( const int, bool&, bool& ) const;
   bool                  hasHiddenAnnotations( const int ) const;
   bool                  hasVisibleAnnotations( const int ) const;
@@ -102,6 +104,7 @@ private:
 
 private:
   GeomObjectVector      myObjects;
+  QStringList           myAnnotationEntries;
 };
 
 #endif
index 4872916744751eb410631fec2e537cf6021104c6..e59a6d9fc2b89ffa1cd8648a1b8c7e875bcb4b39 100755 (executable)
@@ -1623,9 +1623,9 @@ void GeometryGUI::initialize( CAM_Application* app )
   mgr->insert( separator(), -1, -1 );     // -----------
 
   mgr->insert( action(  GEOMOp::OpEditAnnotation ), -1, -1 );  // edit annotation
-  mgr->setRule( action( GEOMOp::OpEditAnnotation ),  QString("($component={'GEOM'}) and type='Shape' and selcount=1"), QtxPopupMgr::VisibleRule );
+  mgr->setRule( action( GEOMOp::OpEditAnnotation ),  clientOCC + " and annotationsCount=1", QtxPopupMgr::VisibleRule );
   mgr->insert( action(  GEOMOp::OpDeleteAnnotation ), -1, -1 );  // delete annotation
-  mgr->setRule( action( GEOMOp::OpDeleteAnnotation ),  QString("($component={'GEOM'}) and type='Shape' and selcount=1"), QtxPopupMgr::VisibleRule );
+  mgr->setRule( action( GEOMOp::OpDeleteAnnotation ),  clientOCC + " and (annotationsCount>1)", QtxPopupMgr::VisibleRule );
   mgr->insert( separator(), -1, -1 );     // -----------
 
   QString canDisplay = "($component={'GEOM'}) and (selcount>0) and ({true} in $canBeDisplayed) ",