]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
IPAL21035 It's impossible to hide scalar bar for gauss points
authordmv <dmv@opencascade.com>
Tue, 14 Apr 2009 08:07:03 +0000 (08:07 +0000)
committerdmv <dmv@opencascade.com>
Tue, 14 Apr 2009 08:07:03 +0000 (08:07 +0000)
12 files changed:
doc/salome/gui/VISU/input/viewing_3d_presentations.doc
idl/VISU_Gen.idl
src/OBJECT/VISU_GaussPtsAct.cxx
src/VISUGUI/VisuGUI.cxx
src/VISUGUI/VisuGUI_Module.cxx
src/VISUGUI/VisuGUI_Selection.cxx
src/VISUGUI/VisuGUI_Selection.h
src/VISUGUI/VisuGUI_Tools.cxx
src/VISUGUI/VisuGUI_Tools.h
src/VISU_I/VISU_DumpPython.cc
src/VISU_I/VISU_GaussPoints_i.cc
src/VISU_I/VISU_GaussPoints_i.hh

index 236082bf26648227f0fa3c274d3d6a85ce406428..a4a22329997051da8ca2905ebe6f1a07a8f1840b 100644 (file)
@@ -19,6 +19,8 @@ options:
 visualization and NOT all properties can be set for a certain 3D
 presentation.
 
+\anchor filter_by_scalars_anchor
+
 <ul>
 <li><b>Hide all</b> - allows to hide all objects from the
 viewer.</li>
@@ -34,6 +36,8 @@ the minimum and the maximum values for the <b>Scalar Range</b></li>
 
 \image html viewing4.png 
 
+\anchor rename_anchor
+
 <li><b>Rename</b> - allows to rename the presentation.</li>
 <li><b>Copy</b> - allows to create a copy of the presentation in the
 same subfolder (time stamp) in the Object Browser.</li>
@@ -50,6 +54,8 @@ cells or nodes of a 3D presentation.
 \image html values_labeling.png
 </li>
 
+\anchor labeling_parameters_anchor
+
 <li><b>Labeling Parameters</b> allows to change such labeling parameters as font and color.
 
 \image html labeling_parameters.png
index f4027093876c1ce7465a760de25403d6b6a26b89..f2bd29f83f4fa3e1cebe14725d8ad5fef7ab2448 100644 (file)
@@ -762,6 +762,16 @@ module VISU {
 
     //! Get value of the distance between global and local scalar bars.
     double GetSpacing();
+    
+    /*!
+     * Returns visibility state of scalar bar
+     */
+    boolean IsBarVisible();
+
+    /*!
+     * Sets visibility state of scalar bar
+     */
+    void SetBarVisible(in boolean theVisible);
 
     /*!  
      * Set the Multicolored mode.
@@ -886,6 +896,8 @@ module VISU {
 
     //! Defines how many faces of can be drawn in the Geometrical Sphere primitive mode
     long GetFaceLimit();
+    
+    
   };
 
 
index a26d58fbe969b7c5dea4364bd7f9176223a31294..5dd12bbdf541dbec68dbe0927eef1342ec388b4e 100644 (file)
@@ -727,8 +727,8 @@ VISU_GaussPtsAct
   myPreHighlightActor->SetVisibility(false);
   myCursorPyramid->SetVisibility(false);  
 
-  if (!myBarVisibility)
-    return false;
+/*  if (!myBarVisibility)
+    return false;*/
 
 
   if(!theIsHighlight)
@@ -866,8 +866,8 @@ VISU_GaussPtsAct
     return true;
   }
   
-  if (!myBarVisibility)
-    return false;
+/*  if (!myBarVisibility)
+    return false;*/
 
 
   if(aSelectionMode == ActorSelection)
index 78b6396bce4d5f15e9b684ffc6456ffb7e6224bd..76136ddc23101e96608d1ad218190fb5296d2d84 100644 (file)
@@ -1414,7 +1414,6 @@ void
 VisuGUI
 ::SetScalarBarVisibility(bool theVisibility)
 {
-  printf ("\nOnHideScalarBar");
   LightApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(this);
   SALOME_ListIO aListIO;
   aSelectionMgr->selectedObjects(aListIO);
@@ -1424,18 +1423,21 @@ VisuGUI
   bool update = false;
   for (; It.More(); It.Next()) {
     Handle(SALOME_InteractiveObject)& anIO = It.Value();
-    std::vector<VISU::Prs3d_i*> aPrsList = GetPrs3dList(this, anIO);
-    if (!aPrsList.empty()) {
+    std::vector<VISU::Prs3d_i*> aPrsList = GetPrs3dList(this, anIO, true);
+    if ( aPrsList.size()>0 ) {
       for (int i = 0, n = aPrsList.size(); i < n; i++) {
         VISU::Prs3d_i* aPrsObject = aPrsList[i];
         if (aPrsObject) {
-          VISU::ScalarMap_i* aScalar = dynamic_cast<VISU::ScalarMap_i*>(aPrsObject);
-          if (aScalar) {
+          if (VISU::ScalarMap_i* aScalar = dynamic_cast<VISU::ScalarMap_i*>(aPrsObject)) {
             aScalar->SetBarVisible( theVisibility );
             RecreateActor(this, aScalar);
             update = true;
-          }
-        }
+          } else if (VISU::GaussPoints_i* aGauss = dynamic_cast<VISU::GaussPoints_i*>(aPrsObject)) {
+            aGauss->SetBarVisible( theVisibility );
+            RecreateActor(this, aGauss);
+            update = true;
+         }
+       }
       }
     }
   }
@@ -2945,8 +2947,8 @@ VisuGUI
   QString aTableOrContShow = "(($type in {'VISU::TTABLE' 'VISU::TPOINTMAP3D' 'VISU::TCONTAINER'}) and isPlot2dViewer and hasCurves and isThereAreHiddenCurves)";
   QString orCurveVisible   = "or (type='VISU::TCURVE' and isVisible)";
   QString orCurveInvisible = "or (type='VISU::TCURVE'" + andInvisible + ")";
-  QString aPrsVisible   = "(($type in {'VISU::TMESH' 'VISU::TPOINTMAP3D'" + aPrsAll + "}) and isVisible and (not isPlot2dViewer))";
-  QString aPrsInvisible = "(($type in {'VISU::TMESH' 'VISU::TPOINTMAP3D'" + aPrsAll + "})" + andInvisible + " and (not isPlot2dViewer))";
+  QString aPrsVisible   = "(($type in {'VISU::TMESH' 'VISU::TPOINTMAP3D' 'VISU::TGAUSSPOINTS'" + aPrsAll + "}) and isVisible and (not isPlot2dViewer))";
+  QString aPrsInvisible = "(($type in {'VISU::TMESH' 'VISU::TPOINTMAP3D' 'VISU::TGAUSSPOINTS'" + aPrsAll + "})" + andInvisible + " and (not isPlot2dViewer))";
   QString aComponent = "( selcount=1 and canBeDisplayed and isVisuComponent )";
 
   QString anEraseRule = "( selcount>0 and ({true} in $canBeDisplayed) and (" + aPrsVisible +
@@ -2955,12 +2957,12 @@ VisuGUI
   QString aDisplayRule = "( selcount>0 and ({true} in $canBeDisplayed) and (" + aPrsInvisible +
     " or (   (" + aTableOrContShow + orCurveInvisible + "))) ) or " + aComponent;
 
-  QString aDOnlyRule = "( selcount>0 and ({true} in $canBeDisplayed) and (($type in {'VISU::TMESH' 'VISU::TPOINTMAP3D'" + aPrsAll + "})"
+  QString aDOnlyRule = "( selcount>0 and ({true} in $canBeDisplayed) and (($type in {'VISU::TMESH' 'VISU::TPOINTMAP3D' 'VISU::TGAUSSPOINTS'" + aPrsAll + "})"
     " or (   ((type='VISU::TTABLE' and nbChildren>0) or"
     " ($type in {'VISU::TCURVE' 'VISU::TCONTAINER'})))) ) or" + aComponent;
 
-  QString aScalarBarHideRule = "( selcount>0 and ($type in {'VISU::TMESH' 'VISU::TPOINTMAP3D'" + aPrsAll + "}) and isScalarMapAct=1 and " + aPrsVisible + " and isScalarBarVisible )";
-  QString aScalarBarShowRule = "( selcount>0 and ($type in {'VISU::TMESH' 'VISU::TPOINTMAP3D'" + aPrsAll + "}) and isScalarMapAct=1 and " + aPrsVisible + " and (not isScalarBarVisible) )";
+  QString aScalarBarHideRule = "( selcount>0 and ($type in {'VISU::TMESH' 'VISU::TPOINTMAP3D' 'VISU::TGAUSSPOINTS'" + aPrsAll + "}) and (isScalarMapAct=1  or isGaussPtsAct=1 ) and " + aPrsVisible + " and isScalarBarVisible )";
+  QString aScalarBarShowRule = "( selcount>0 and ($type in {'VISU::TMESH' 'VISU::TPOINTMAP3D' 'VISU::TGAUSSPOINTS'" + aPrsAll + "}) and ( isScalarMapAct=1 or isGaussPtsAct=1 ) and " + aPrsVisible + " and (not isScalarBarVisible) )";
 
   mgr->setRule( action( VISU_ERASE ), anEraseRule );
   mgr->setRule( action( VISU_DISPLAY ), aDisplayRule );
index ce511b71c6341d0aa1be4fc5662ef5591716721b..31869571c0c57e56f7991f5b6a1c6cf0ca8c71ff 100644 (file)
@@ -323,7 +323,7 @@ void VisuGUI_Module::initialize( CAM_Application* theApp )
 
   aRule = "(selcount>0 and type='VISU::TGAUSSPOINTS')";
 
-  createAction( GAUSS_ERASE_PRS, VisuGUI::tr("MEN_HIDE"), QIcon(),
+/*  createAction( GAUSS_ERASE_PRS, VisuGUI::tr("MEN_HIDE"), QIcon(),
                 VisuGUI::tr("MEN_HIDE"), "", 0, this, false,
                 this, SLOT(OnErasePrs()));
   mgr->insert( action( GAUSS_ERASE_PRS ), -1, -1, -1 ); // erase
@@ -342,7 +342,7 @@ void VisuGUI_Module::initialize( CAM_Application* theApp )
                 this, SLOT(OnDisplayOnlyPrs()));
   mgr->insert( action( GAUSS_DISPLAY_ONLY_PRS ), -1, -1, -1 ); // display only
   mgr->setRule( action( GAUSS_DISPLAY_ONLY_PRS ),
-    aRule + " and ({true} in $canBeDisplayed)" );
+    aRule + " and ({true} in $canBeDisplayed)" );*/
 
   createAction( GAUSS_RENAME_CONFIGURATION, VisuGUI::tr("MEN_RENAME"), QIcon(),
                VisuGUI::tr("MEN_RENAME"), "", 0, this, false,
index 398f17441edadd5f26df079b4ea1e29c438f8b6c..38b56d3bfe7e04e3cc4ecd7989300dfa83dc1327 100644 (file)
@@ -34,6 +34,7 @@
 
 #include "VISU_Actor.h"
 #include "VISU_ScalarMapAct.h"
+#include "VISU_GaussPtsAct.h"
 
 #include "SalomeApp_Study.h"
 #include "LightApp_Study.h"
@@ -64,6 +65,7 @@ QVariant VisuGUI_Selection::parameter( const int ind, const QString& p ) const
     else if ( p == "hasActor"       ) val = QVariant( hasActor( ind ) );
     else if ( p == "isShading"      ) val = QVariant( isShading( ind ) );
     else if ( p == "isScalarMapAct" ) val = QVariant( isScalarMapAct( ind ) );
+    else if ( p == "isGaussPtsAct" ) val = QVariant( isGaussPtsAct( ind ) );
     else if ( p == "isVisuComponent") val = QVariant( isVisuComponent( ind ) );
     else if ( p == "fullResolution"   ) val = QVariant( fullResolution( ind ) );
     else if ( p == "mediumResolution"   ) val = QVariant( mediumResolution( ind ) );
@@ -607,6 +609,25 @@ QString VisuGUI_Selection::isScalarMapAct( const int ind ) const
   return TPopupDispatcher<TIsScalarMapActFunctor>()(myModule, entry(ind));
 }
 
+//----------------------------------------------------------------------------
+struct TIsGaussPtsActFunctor: TViewFunctor
+{
+  QString
+  virtual
+  get(VISU::Prs3d_i* thePrs3d,
+      SVTK_ViewWindow* theViewWindow,
+      VISU_Actor* theActor)
+  {
+    return dynamic_cast<VISU_GaussPtsAct*>(theActor)? "1" : "0";
+  }
+};
+
+
+//---------------------------------------------------------------
+QString VisuGUI_Selection::isGaussPtsAct( const int ind ) const
+{
+  return TPopupDispatcher<TIsGaussPtsActFunctor>()(myModule, entry(ind));
+}
 
 //----------------------------------------------------------------------------
 bool VisuGUI_Selection::isVisuComponent( const int ind ) const
@@ -734,6 +755,8 @@ struct TIsScalarBarVisibleFunctor: TViewFunctor
   {
     if(VISU_ScalarMapAct* anActor = dynamic_cast<VISU_ScalarMapAct*>(theActor))
       return anActor->GetBarVisibility() ? "true" : "false";
+    else if ( VISU_GaussPtsAct* anActor = dynamic_cast<VISU_GaussPtsAct*>(theActor))
+      return anActor->GetBarVisibility() ? "true" : "false";
     return QString();
   }
 };
index dede2e8f268629fb7073aca02a3812ee8aa0d0c0..5026d72b9f5ab6f8721fa5e1fd1150f7b30eda5b 100644 (file)
@@ -59,6 +59,7 @@ private:
   bool             hasActor( const int ) const;
   QString          isShading( const int ) const;
   QString          isScalarMapAct( const int ) const;
+  QString          isGaussPtsAct( const int ) const;
   bool             isScalarBarVisible( const int ) const;
   bool             isVisuComponent( const int ) const;
   QString          isValuesLabeled( const int ) const;
index ae7155c13554791fad63ec42b29c1af47854eb10..97eabc841d6caba6627a3fedb002e857f86f4143 100644 (file)
@@ -1281,19 +1281,21 @@ namespace VISU
   // GetPrs3dList: find list of presentations for the given object
   // ========================================================================================
   std::vector<VISU::Prs3d_i*> GetPrs3dList (const SalomeApp_Module* theModule,
-                                            const Handle(SALOME_InteractiveObject)& theIO)
+                                            const Handle(SALOME_InteractiveObject)& theIO,
+                                           bool theGP)
   {
     std::vector<VISU::Prs3d_i*> aList;
     if (!theIO.IsNull() && theIO->hasEntry()) {
       _PTR(Study) aCStudy = GetCStudy(GetAppStudy(theModule));
       _PTR(SObject) aSObject = aCStudy->FindObjectID(theIO->getEntry());
-      aList = GetPrs3dList(theModule, aSObject);
+      aList = GetPrs3dList(theModule, aSObject, theGP);
     }
     return aList;
   }
 
   std::vector<VISU::Prs3d_i*> GetPrs3dList (const SalomeApp_Module* theModule,
-                                            _PTR(SObject) theObject)
+                                            _PTR(SObject) theObject,
+                                           bool theGP)
   {
     std::vector<VISU::Prs3d_i*> aList; int k = 0;
     if (!theObject)
@@ -1307,6 +1309,8 @@ namespace VISU
       if (!CORBA::is_nil(aVisuObj)) {
         VISU::VISUType aType = aVisuObj->GetType();
         switch (aType) {
+       case VISU::TGAUSSPOINTS:
+         if ( !theGP ) break;
        case VISU::TSCALARMAP:
         case VISU::TISOSURFACES:
         case VISU::TDEFORMEDSHAPE:
index 1faa3d7d513657655812c514e6f08b093743c945..4ad92fabe2626e93970861018bd354d5ed368a32 100644 (file)
@@ -230,9 +230,11 @@ namespace VISU
   
   // Others
   std::vector<VISU::Prs3d_i*> GetPrs3dList (const SalomeApp_Module* theModule,
-                                           const Handle(SALOME_InteractiveObject)& theIO);
+                                           const Handle(SALOME_InteractiveObject)& theIO,
+                                           bool theGP = false);
   std::vector<VISU::Prs3d_i*> GetPrs3dList (const SalomeApp_Module* theModule,
-                                           _PTR(SObject) theObject);
+                                           _PTR(SObject) theObject,
+                                           bool theGP = false);
   
   int GetFreePositionOfDefaultScalarBar(VisuGUI* theModule, SVTK_ViewWindow* theViewWindow);
   void AddScalarBarPosition(VisuGUI* theModule, SVTK_ViewWindow* theViewWindow,
index c91a9c014c385fa6c1de056e1cfe98a371fff1eb..04ff5006ac49b58ad4f33dc9a623eeffdc7b82bf 100644 (file)
@@ -408,6 +408,9 @@ namespace VISU
 
     theStr<<thePrefix<<theName<<".SetMagnification("<<theServant->GetMagnification()<<")"<<endl;
     theStr<<thePrefix<<theName<<".SetMagnificationIncrement("<<theServant->GetMagnificationIncrement()<<")"<<endl;
+    
+    std::string aVisible = theServant->IsBarVisible()? "True" : "False";
+    theStr<<thePrefix<<theName<<".SetBarVisible("<<aVisible<<")"<<endl;
 
     return thePrefix;
   }
index 6c5efd3f72f1d461c77dca64d8f94f012060f357..04d52a8b0a7751ef427c71ad97c527f63f32ee43 100644 (file)
@@ -139,7 +139,8 @@ VISU::GaussPoints_i
   myIsActiveLocalScalarBar(true),
   myIsDispGlobalScalarBar(true),
   mySpacing(0.01),
-  myFaceLimit(50000)
+  myFaceLimit(50000),
+  myShowBar(true)
 {
   if(MYDEBUG) MESSAGE("GaussPoints_i::GaussPoints_i - this = "<<this);
 }
@@ -215,6 +216,8 @@ VISU::GaussPoints_i
   anAlphaTexture = aResourceMgr->stringValue( "VISU", "point_sprite_alpha_texture", anAlphaTexture );
 
   SetTextures( aMainTexture.toLatin1().data(), anAlphaTexture.toLatin1().data() );
+  
+  myShowBar = true;
 
   return this;
 }
@@ -239,6 +242,8 @@ VISU::GaussPoints_i
 
     SetColor(anOrigin->GetColor());
 
+    SetBarVisible(anOrigin->IsBarVisible());
+
     SetTextures(anOrigin->GetMainTexture(), anOrigin->GetAlphaTexture());
   }
 }
@@ -270,6 +275,9 @@ VISU::GaussPoints_i
   CORBA::String_var aPixMapName = aPixmap->GetPixMap();
   if(strcmp(GetIconName(), aPixMapName.in()) != 0)
     aPixmap->SetPixMap(GetIconName());
+    
+  QString aVal = VISU::Storable::FindValue(theMap,"myShowBar", "1");
+  SetBarVisible((aVal.toInt() == 1)? true : false);
 
   SetIsActiveLocalScalarBar(Storable::FindValue(theMap,"myIsActiveLocalScalarBar").toInt());
   SetIsDispGlobalScalarBar(Storable::FindValue(theMap,"myIsDispGlobalScalarBar").toInt());
@@ -345,6 +353,7 @@ VISU::GaussPoints_i
   Storable::DataToStream( theStr, "myAlphaTexture", GetQAlphaTexture() );
 
   Storable::DataToStream( theStr, "myResolution", GetResolution() );
+  Storable::DataToStream( theStr, "myShowBar",    (IsBarVisible()? 1:0) );
 }
 
 
@@ -787,7 +796,15 @@ VISU::GaussPoints_i
   return IsPossible(GetCResult(),GetCMeshName(),GetEntity(),GetCFieldName(),GetTimeStampNumber(),true);
 }
 
-
+void VISU::GaussPoints_i::SetBarVisible(CORBA::Boolean theVisible) 
+{ 
+  if (myShowBar == theVisible)
+    return;
+  VISU::TSetModified aModified(this);
+  myShowBar = theVisible; 
+  myParamsTime.Modified();
+}
+      
 //----------------------------------------------------------------------------
 void
 VISU::GaussPoints_i
@@ -856,6 +873,7 @@ VISU::GaussPoints_i
 ::CreateActor() 
 {
   VISU_GaussPtsAct* anActor = VISU_GaussPtsAct::New();
+  anActor->SetBarVisibility(myShowBar);
   if(OnCreateActor(anActor))
     return anActor;
   return NULL;
@@ -928,7 +946,6 @@ VISU::GaussPoints_i
   if(VISU_GaussPtsAct* anActor = dynamic_cast<VISU_GaussPtsAct*>(theActor)){
     VISU_ScalarBarCtrl *aScalarBarCtrl = anActor->GetScalarBarCtrl();
     if(GetIsColored()){
-      anActor->SetBarVisibility(true);
       GetPipeLine()->GetMapper()->SetScalarVisibility(1);
 
       if(IsRangeFixed()){
@@ -988,14 +1005,14 @@ VISU::GaussPoints_i
 
       aScalarBarCtrl->Update();
     }else{
-      anActor->SetBarVisibility(false);
-
       GetPipeLine()->GetMapper()->SetScalarVisibility(0);
 
       anActor->GetProperty()->SetColor(myColor.red() / 255.0,
                                       myColor.green() / 255.0,
                                       myColor.blue() / 255.0);
     }
+    
+    anActor->SetBarVisibility(myShowBar); 
 
     if( GetSpecificPL()->GetPrimitiveType() != VISU_OpenGLPointSpriteMapper::GeomSphere )
       theActor->SetRepresentation( VTK_POINTS );
index 5d623de2d21fc345f5c8e3e5d122a867e4ef6369..740cd61f9d1e58a71cf1ec88c679981223e49d60 100644 (file)
@@ -120,7 +120,7 @@ namespace VISU
     //! Get path to the image using for Main Point Sprite texture.
     QString
     GetQMainTexture();
-
+    
     char*
     GetMainTexture();
 
@@ -271,6 +271,10 @@ namespace VISU
     { 
       return myGaussPointsPL; 
     }
+    
+    virtual CORBA::Boolean IsBarVisible() { return myShowBar; }
+       
+    virtual void SetBarVisible(CORBA::Boolean theVisible);
 
     //----------------------------------------------------------------------------
     //! Sets initial source geometry
@@ -400,6 +404,9 @@ namespace VISU
     virtual 
     void
     UpdateFromActor(VISU_GaussPtsAct* theActor);
+    
+    private:
+      bool myShowBar;
   };
 }