]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
PAL9391
authorasl <asl@opencascade.com>
Tue, 27 Sep 2005 06:32:15 +0000 (06:32 +0000)
committerasl <asl@opencascade.com>
Tue, 27 Sep 2005 06:32:15 +0000 (06:32 +0000)
src/GEOMGUI/GEOMGUI_Selection.cxx
src/GEOMGUI/GEOM_Displayer.cxx
src/GEOMGUI/GEOM_Displayer.h
src/GEOMGUI/GeometryGUI.cxx
src/GEOMGUI/GeometryGUI.h

index c7494b8c7acab93438a976a6d4b956442ef72f68..234f1c6a4bc334f38521ba4c1aaa347eef922460 100644 (file)
@@ -53,11 +53,15 @@ QtxValue GEOMGUI_Selection::globalParam( const QString& p ) const
 
 QtxValue GEOMGUI_Selection::param( const int ind, const QString& p ) const
 {
-  if      ( p == "isVisible"   )    return QtxValue( isVisible( ind ) );
-  else if ( p == "type"        )    return QtxValue( typeName( ind ) );
-  else if ( p == "displaymode" )    return QtxValue( displayMode( ind ) );
-
-  return SalomeApp_Selection::param( ind, p );
+//  if      ( p == "isVisible"   )    return QtxValue( isVisible( ind ) );
+// parameter isVisible is calculated in base SalomeApp_Selection
+//  else
+  if( p == "type" )
+    return QtxValue( typeName( ind ) );
+  else if ( p == "displaymode" )
+    return QtxValue( displayMode( ind ) );
+  else
+    return SalomeApp_Selection::param( ind, p );
 }
 
 QString GEOMGUI_Selection::typeName( const int index ) const
index 18a2df6ec77efda0918458a41f29dc887fc36350..4ee4823ddc3e6b61c7dfc0b7247ace8cb15ac621 100644 (file)
@@ -256,26 +256,6 @@ GEOM_Displayer::~GEOM_Displayer()
 {
 }
 
-//=================================================================
-/*!
- *  GetActiveView
- *  Get active study frame, returns 0 if no open study frame
- */
-//=================================================================
-SALOME_View* GEOM_Displayer::GetActiveView()
-{
-  SUIT_Session* session = SUIT_Session::session();
-  if (  SUIT_Application* app = session->activeApplication() ) {
-    if ( SalomeApp_Application* sApp = dynamic_cast<SalomeApp_Application*>( app ) ) {
-      if( SUIT_ViewManager* vman = sApp->activeViewManager() ) {
-       if ( SUIT_ViewModel* vmod = vman->getViewModel() )
-         return dynamic_cast<SALOME_View*>( vmod );
-      }
-    }
-  }
-  return 0;
-}
-
 //=================================================================
 /*!
  *  GEOM_Displayer::Display
@@ -289,7 +269,7 @@ void GEOM_Displayer::Display( const Handle(SALOME_InteractiveObject)& theIO,
   SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView();
   if ( vf )
   {
-    SALOME_Prs* prs = buildPresentation( theIO, vf );
+    SALOME_Prs* prs = buildPresentation( theIO->getEntry(), vf );
 
     if ( prs )
     {
@@ -369,25 +349,6 @@ void GEOM_Displayer::Erase( GEOM::GEOM_Object_ptr theObj,
   }
 }
 
-//=================================================================
-/*!
- *  GEOM_Displayer::EraseAll
- *  Erase all objects in the current viewer
- */
-//=================================================================
-void GEOM_Displayer::EraseAll ( const bool forced,
-                               const bool updateViewer,
-                               SALOME_View* theViewFrame )
-{
-  SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView();
-
-  if ( vf ) {
-    vf->EraseAll( forced );
-    if ( updateViewer )
-      vf->Repaint();
-  }
-}
-
 //=================================================================
 /*!
  *  GEOM_Displayer::Redisplay
@@ -479,19 +440,6 @@ void GEOM_Displayer::Redisplay( const SALOME_ListIO& theIOList, const bool updat
     UpdateViewer();
 }
 
-//=================================================================
-/*!
- *  GEOM_Displayer::UpdateViewer
- *  Update current viewer
- */
-//=================================================================
-void GEOM_Displayer::UpdateViewer()
-{
-  SALOME_View* vf = GetActiveView();
-  if ( vf )
-    vf->Repaint();
-}
-
 //=================================================================
 /*!
  *  GEOM_Displayer::Update
@@ -801,7 +749,7 @@ SALOME_Prs* GEOM_Displayer::BuildPrs( const TopoDS_Shape& theShape )
  *  [ internal ]
  */
 //=================================================================
-SALOME_Prs* GEOM_Displayer::buildPresentation( const Handle(SALOME_InteractiveObject)& theIO,
+SALOME_Prs* GEOM_Displayer::buildPresentation( const QString& entry,
                                               SALOME_View* theViewFrame )
 {
   SALOME_Prs* prs = 0;
@@ -811,9 +759,11 @@ SALOME_Prs* GEOM_Displayer::buildPresentation( const Handle(SALOME_InteractiveOb
 
   if ( myViewFrame )
   {
-    prs = myViewFrame->CreatePrs( !theIO.IsNull() ? theIO->getEntry() : 0 );
+    prs = SalomeApp_Displayer::buildPresentation( entry, theViewFrame );
     if ( prs )
     {
+      Handle( SALOME_InteractiveObject ) theIO = new SALOME_InteractiveObject();
+      theIO->setEntry( entry.latin1() );
       if ( !theIO.IsNull() )
       {
        // set interactive object
index 18be72e3114b7e6b31d3724fe454822f30bfd420..4091324b34186e5e4efe864a85f0db9f523d742d 100644 (file)
@@ -34,6 +34,7 @@
 #include "SALOME_ListIO.hxx"
 #include <TopoDS_Shape.hxx>
 #include <Quantity_Color.hxx>
+#include <SalomeApp_Displayer.h>
 
 #include <list>
 
@@ -63,7 +64,7 @@ class SUIT_SelectionFilter;
 #define GEOMGUI_WNT_EXPORT
 #endif
 
-class GEOMGUI_WNT_EXPORT GEOM_Displayer : public SALOME_Displayer
+class GEOMGUI_WNT_EXPORT GEOM_Displayer : public SalomeApp_Displayer
 {
     
 public:
@@ -107,14 +108,6 @@ public:
   void          Redisplay ( const SALOME_ListIO& theIOList,
                             const bool updateViewer = true );
 
-  /* Erase all objects displayed in the given or active view */
-  void          EraseAll ( const bool forced = false,
-                          const bool updateViewer = true,
-                          SALOME_View* theViewFrame = 0 );
-
-  /* Update current viewer */
-  void          UpdateViewer();
-
   /* build presentation accordint to the current viewer type*/
   SALOME_Prs*   BuildPrs  ( GEOM::GEOM_Object_ptr );
   SALOME_Prs*   BuildPrs  ( const TopoDS_Shape& );
@@ -153,14 +146,12 @@ public:
   void         GlobalSelection( const int = GEOM_ALLOBJECTS, const bool = false );
   void         GlobalSelection( const TColStd_MapOfInteger&, const bool = false );
 
-  static SALOME_View* GetActiveView();
   SalomeApp_Study* getStudy() const {return myStudy;}
 
 protected:
   /* internal methods */
   /* Builds presentation accordint to the current viewer type */
-  SALOME_Prs* buildPresentation( const Handle(SALOME_InteractiveObject)& theIO,
-                                SALOME_View* theViewFrame = 0 );
+  virtual SALOME_Prs* buildPresentation( const QString&, SALOME_View* = 0 );
   
   /* Sets interactive object */
   void        setIO( const Handle(SALOME_InteractiveObject)& theIO ) { myIO = theIO; }
index 4f72ceb79c8b66e3e5810052ac09b4ba0fc1b1c3..79c0e38681ea95b50c174f6e00f848036595ccc6 100644 (file)
@@ -29,6 +29,7 @@
 #include "GeometryGUI.h"
 #include "GEOMGUI_OCCSelector.h"
 #include "GEOMGUI_Selection.h"
+#include "GEOM_Displayer.h"
 
 #include <SUIT_MessageBox.h>
 #include <SUIT_ResourceMgr.h>
@@ -180,6 +181,8 @@ GeometryGUI::GeometryGUI() :
 
   myOCCSelectors.setAutoDelete( true );
   myVTKSelectors.setAutoDelete( true );
+
+  myDisplayer = 0;
 }
 
 //=======================================================================
@@ -1065,10 +1068,10 @@ void GeometryGUI::initialize( CAM_Application* app )
   mgr->setRule( action( 8034 ), "client='OCCViewer' and selcount>0", true );
   mgr->insert( separator(), -1, -1 );        // -----------
   mgr->insert( action(  216 ), -1, -1 ); // display
-  mgr->setRule( action( 216 ), "(selcount>0) and (((isActiveView=true) and (($type in {'Shape' 'Group'} and isVisible=false) or type='Component'))"
+  mgr->setRule( action( 216 ), "(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->insert( action(  215 ), -1, -1 ); // erase
-  mgr->setRule( action( 215 ), "(isActiveView=true) and (($type in {'Shape' 'Group'} and isVisible=true and selcount>0) or (type='Component' and selcount=1))", true );
+  mgr->setRule( action( 215 ), "(isActiveView=true) and (($type in {'Shape' 'Group'} and isVisible and selcount>0) or (type='Component' and selcount=1))", 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
@@ -1613,3 +1616,10 @@ void GeometryGUI::createPreferences()
 void GeometryGUI::preferencesChanged( const QString& section, const QString& param )
 {
 }
+
+SalomeApp_Displayer* GeometryGUI::displayer()
+{
+  if( !myDisplayer )
+    myDisplayer = new GEOM_Displayer( dynamic_cast<SalomeApp_Study*>( getApp()->activeStudy() ) );
+  return myDisplayer;
+}
index 854dbc615d018133a7fb06b19d02fd4c88149a4a..d671e02abfa77f544f5bc9be0acfa1e6aa0d9641 100644 (file)
@@ -88,6 +88,7 @@ public:
   // Destructor
   ~GeometryGUI();
 
+  virtual SalomeApp_Displayer* displayer();
   virtual void                initialize( CAM_Application* );
   virtual QString             engineIOR() const;
 
@@ -181,6 +182,8 @@ private:
 
   QPtrList<GEOMGUI_OCCSelector>   myOCCSelectors;
   QPtrList<SalomeApp_VTKSelector> myVTKSelectors;
+
+  SalomeApp_Displayer*        myDisplayer;
 };
 
 #endif