Salome HOME
PAL9391
authorasl <asl@opencascade.com>
Tue, 27 Sep 2005 06:33:42 +0000 (06:33 +0000)
committerasl <asl@opencascade.com>
Tue, 27 Sep 2005 06:33:42 +0000 (06:33 +0000)
src/SMESHGUI/Makefile.in
src/SMESHGUI/SMESHGUI.cxx
src/SMESHGUI/SMESHGUI.h
src/SMESHGUI/SMESHGUI_Displayer.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_Displayer.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_Selection.cxx

index c6d5fd4..565329b 100644 (file)
@@ -110,7 +110,8 @@ LIB_SRC =   SMESHGUI.cxx \
                SMESHGUI_SelectionOp.cxx \
                SMESHGUI_Dialog.cxx \
                SMESHGUI_MeshDlg.cxx \
-               SMESHGUI_MeshOp.cxx
+               SMESHGUI_MeshOp.cxx \
+               SMESHGUI_Displayer.cxx
 
 LIB_MOC = \
                SMESHGUI.h \
index 2440a84..aade73a 100644 (file)
@@ -64,6 +64,7 @@
 #include "SMESHGUI_Selection.h"
 #include "SMESHGUI_CreatePolyhedralVolumeDlg.h"
 #include "SMESHGUI_MeshOp.h"
+#include "SMESHGUI_Displayer.h"
 
 #include "SMESHGUI_Utils.h"
 #include "SMESHGUI_GEOMGenUtils.h"
@@ -806,6 +807,7 @@ SalomeApp_Module( "SMESH" )
 
   myActiveDialogBox = 0 ;
   myState = -1 ;
+  myDisplayer = 0;
 
   SMESH::GetFilterManager();
   SMESH::GetPattern();
@@ -3045,5 +3047,14 @@ SalomeApp_Operation* SMESHGUI::createOperation( const int id ) const
     break;
   }
 
+  if( !op )
+    op = SalomeApp_Module::createOperation( id );
   return op;
 }
+
+SalomeApp_Displayer* SMESHGUI::displayer()
+{
+  if( !myDisplayer )
+    myDisplayer = new SMESHGUI_Displayer( dynamic_cast<SalomeApp_Study*>( getApp()->activeStudy() ) );
+  return myDisplayer;
+}
index 5ccfbe8..821fffa 100644 (file)
@@ -71,6 +71,7 @@ public :
 
   static bool                     automaticUpdate();
 
+  virtual SalomeApp_Displayer*    displayer();
   virtual QString     engineIOR() const;
   virtual void        initialize( CAM_Application* );
   virtual void        windows( QMap<int, int>& ) const;
@@ -135,6 +136,7 @@ private :
   QDialog*                         myActiveDialogBox;
   int                              myState;
   QMap<int,QString>                myRules;
+  SalomeApp_Displayer*             myDisplayer;
 };
 
 #endif
diff --git a/src/SMESHGUI/SMESHGUI_Displayer.cxx b/src/SMESHGUI/SMESHGUI_Displayer.cxx
new file mode 100644 (file)
index 0000000..f1ddb5b
--- /dev/null
@@ -0,0 +1,74 @@
+//  SMESH SMESHGUI : Displayer for SMESH module
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+//  File   : SMESHGUI_Displayer.cxx
+//  Author : Alexander SOLOVYOV
+//  Module : SMESH
+//  $Header: /home/server/cvs/SMESH/SMESH_SRC/src/SMESHGUI/SMESHGUI_Displayer.cxx
+
+#include "SMESHGUI_Displayer.h"
+#include "SMESHGUI_VTKUtils.h"
+
+#include <SalomeApp_Study.h>
+#include <SVTK_ViewModel.h>
+#include <SVTK_ViewWindow.h>
+
+SMESHGUI_Displayer::SMESHGUI_Displayer( SalomeApp_Study* st )
+: SalomeApp_Displayer(),
+  myStudy( st )
+{
+}
+
+SMESHGUI_Displayer::~SMESHGUI_Displayer()
+{
+}
+
+SALOME_Prs* SMESHGUI_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame )
+{
+  SALOME_Prs* prs = 0;
+
+  SALOME_View* aViewFrame = theViewFrame ? theViewFrame : GetActiveView();
+
+  if ( aViewFrame )
+  {
+    SVTK_Viewer* vtk_viewer = dynamic_cast<SVTK_Viewer*>( aViewFrame );
+    if( vtk_viewer )
+    {
+      SUIT_ViewWindow* wnd = vtk_viewer->getViewManager()->getActiveView();
+      SMESH_Actor* anActor = SMESH::FindActorByEntry( wnd, entry.latin1() );
+      if( !anActor )
+       anActor = SMESH::CreateActor( myStudy->studyDS(), entry.latin1(), true );
+      if( anActor )
+      {
+       SMESH::DisplayActor( wnd, anActor );
+        prs = SalomeApp_Displayer::buildPresentation( entry.latin1(), aViewFrame );
+      }
+      if( prs )
+       UpdatePrs( prs );
+      else if( anActor )
+       SMESH::RemoveActor( vtk_viewer->getViewManager()->getActiveView(), anActor );
+    }
+  }
+
+  return prs;
+}
diff --git a/src/SMESHGUI/SMESHGUI_Displayer.h b/src/SMESHGUI/SMESHGUI_Displayer.h
new file mode 100644 (file)
index 0000000..b8458e6
--- /dev/null
@@ -0,0 +1,48 @@
+//  SMESH SMESHGUI : Displayer for SMESH module
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+//  File   : SMESHGUI_Displayer.h
+//  Author : Alexander SOLOVYOV
+//  Module : SMESH
+//  $Header: /home/server/cvs/SMESH/SMESH_SRC/src/SMESHGUI/SMESHGUI_Displayer.h
+
+#ifndef SMESHGUI_DISPLAYER_HEADER
+#define SMESHGUI_DISPLAYER_HEADER
+
+#include <SalomeApp_Displayer.h>
+
+class SalomeApp_Study;
+
+class SMESHGUI_Displayer : public SalomeApp_Displayer
+{
+public:
+  SMESHGUI_Displayer( SalomeApp_Study* );
+  ~SMESHGUI_Displayer();
+
+  virtual SALOME_Prs* buildPresentation( const QString&, SALOME_View* = 0 );
+
+private:
+  SalomeApp_Study*   myStudy;
+};
+
+#endif
index 014e88a..ee4b1e6 100644 (file)
@@ -84,12 +84,16 @@ QtxValue SMESHGUI_Selection::param( const int ind, const QString& p ) const
   else if ( p=="displayMode" )   val = QtxValue( displayMode( ind ) );
   else if ( p=="isComputable" )  val = QtxValue( isComputable( ind ) );
   else if ( p=="hasReference" )  val = QtxValue( hasReference( ind ) );
-  else if ( p=="isVisible" )     val = QtxValue( isVisible( ind ) );
+//  else if ( p=="isVisible" )     val = QtxValue( isVisible( ind ) );
 
   // printf( "--> param() : [%s] = %s (%s)\n", p.latin1(), val.toString().latin1(), val.typeName() );
   //if ( val.type() == QVariant::List )
   //cout << "size: " << val.toList().count() << endl;
-  return val;
+
+  if( val.isValid() )
+    return val;
+  else
+    return SalomeApp_Selection::param( ind, p );
 }
 
 //=======================================================================