X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI.h;h=4c17a2cb632b4fdc0c0c004871c0a1ec442cf084;hb=51569f091c2d18be76ea9bd3e68ca0247cc731c3;hp=29ffb9702c60cc01d750cc7dc2ffae3638e3a780;hpb=3973ceea250d2a077cdb5a798eb7c6151fa9c568;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI.h b/src/SMESHGUI/SMESHGUI.h index 29ffb9702..4c17a2cb6 100644 --- a/src/SMESHGUI/SMESHGUI.h +++ b/src/SMESHGUI/SMESHGUI.h @@ -1,48 +1,75 @@ -// File : SMESHGUI.h -// Created : Sun May 05 11:45:40 2002 -// Author : Nicolas REJNERI -// Project : SALOME -// Module : SMESH -// Copyright : Open CASCADE 2002 +// SMESH SMESHGUI : GUI for SMESH component +// +// 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.h +// Author : Nicolas REJNERI +// Module : SMESH // $Header$ - #ifndef SMESHGUI_HeaderFile #define SMESHGUI_HeaderFile #include "TColStd_MapOfInteger.hxx" +#include #include "SMESHDS_Document.hxx" // SALOME Includes +#include "SALOMEGUI.h" #include "QAD_Desktop.h" #include "SALOME_Selection.h" #include "SALOME_InteractiveObject.hxx" -#include "SMESH_Actor.h" - #include "SMESHGUI_StudyAPI.h" +#include "SMESHGUI_Hypotheses.h" // IDL Headers #include #include CORBA_SERVER_HEADER(SMESH_Gen) #include CORBA_SERVER_HEADER(SMESH_Mesh) +#include CORBA_SERVER_HEADER(SMESH_Group) #include CORBA_SERVER_HEADER(SMESH_Hypothesis) -#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis) #include CORBA_SERVER_HEADER(GEOM_Gen) #include CORBA_SERVER_HEADER(SALOMEDS_Attributes) +#include CORBA_SERVER_HEADER(SMESH_Filter) // QT Includes #include -// VTK Inlcudes -#include +// VTK Inlcludes + +class vtkActorCollection; +class vtkActor2DCollection; +class vtkScalarBarActor; +class vtkActor; + +class SMESH_Actor; //================================================================================= // class : SMESHGUI // purpose : //================================================================================= -class SMESHGUI : public QObject +class SMESHGUI : public SALOMEGUI { Q_OBJECT @@ -69,13 +96,20 @@ private : // vtkScalarBarActor* myScalarBar; - Handle_SMESHDS_Document myDocument;//NBU + SMESHDS_Document * myDocument;//NBU bool myAutomaticUpdate; + SMESH::FilterManager_var myFilterMgr; + + // Hypotheses/algorithms from plugin libraries + map myHypothesesMap; + map myAlgorithmsMap; + map myHypCreatorMap; + public : - SMESHGUI(); + SMESHGUI( const QString& name = "", QObject* parent = 0 ); ~SMESHGUI(); static SMESHGUI* GetOrCreateSMESHGUI( QAD_Desktop* desktop ); @@ -86,8 +120,6 @@ public : SALOMEDS::Study_ptr GetStudy(); SMESHGUI_StudyAPI GetStudyAPI(); - vtkScalarBarActor* GetScalarBar(); - QDialog* GetActiveDialogBox() ; void SetActiveDialogBox(QDialog* aDlg) ; @@ -96,104 +128,75 @@ public : bool DefineDlgPosition(QWidget* aDlg, int& x, int& y) ; - /* Managed by IAPP */ - Standard_EXPORT static bool OnGUIEvent ( int theCommandID, QAD_Desktop* parent) ; - Standard_EXPORT static bool OnMousePress ( QMouseEvent* pe, QAD_Desktop* parent, - QAD_StudyFrame* studyFrame ); - Standard_EXPORT static bool OnMouseMove ( QMouseEvent* pe, QAD_Desktop* parent, - QAD_StudyFrame* studyFrame ); - Standard_EXPORT static bool OnKeyPress ( QKeyEvent* pe, QAD_Desktop* parent, - QAD_StudyFrame* studyFrame ); - Standard_EXPORT static void activeStudyChanged ( QAD_Desktop* parent ); - Standard_EXPORT static bool SetSettings ( QAD_Desktop* parent ); - Standard_EXPORT static void DefinePopup( QString & theContext, - QString & theParent, - QString & theObject ); - Standard_EXPORT static bool CustomPopup ( QAD_Desktop* parent, - QPopupMenu* popup, - const QString& theContext, - const QString& theParent, - const QString& theObject ); - Standard_EXPORT static void BuildPresentation(const Handle(SALOME_InteractiveObject)&); + virtual bool OnGUIEvent (int theCommandID, QAD_Desktop* parent); + virtual bool OnMousePress (QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame); + virtual bool OnMouseMove (QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame); + virtual bool OnKeyPress (QKeyEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame); + virtual bool ActiveStudyChanged( QAD_Desktop* parent ); + virtual bool SetSettings ( QAD_Desktop* parent ); + virtual void DefinePopup ( QString & theContext, QString & theParent, QString & theObject ); + virtual bool CustomPopup ( QAD_Desktop* parent, QPopupMenu* popup, const QString & theContext, + const QString & theParent, const QString & theObject ); + virtual void BuildPresentation ( const Handle(SALOME_InteractiveObject)& theIO ); + virtual void SupportedViewType (int* buffer, int bufferSize); + virtual void Deactivate (); void OnEditDelete(); /* Mesh Management */ SMESH::SMESH_Mesh_ptr InitMesh( GEOM::GEOM_Shape_ptr aShape, QString NameMesh ); SMESH::SMESH_subMesh_ptr AddSubMesh( SMESH::SMESH_Mesh_ptr aMesh, GEOM::GEOM_Shape_ptr aShape, QString NameMesh ); + SMESH::SMESH_Group_ptr AddGroup( SMESH::SMESH_Mesh_ptr aMesh, SMESH::ElementType aType, QString aName ); + + /* Hypotheses and Algorithms Management */ + void InitAvailableHypotheses (); + QStringList GetAvailableHypotheses (const bool isAlgo); + HypothesisData* GetHypothesisData (const char* aHypType); + SMESHGUI_GenericHypothesisCreator* GetHypothesisCreator (const QString& aHypType); + + SMESH::SMESH_Hypothesis_ptr CreateHypothesis (const QString& aHypType, + const QString& aHypName, + const bool isAlgo = false); - /* Hypothesis Management */ - SMESH::SMESH_Hypothesis_ptr CreateHypothesis( QString TypeHypothesis, QString NameHypothesis ); - void AddHypothesisOnMesh( SMESH::SMESH_Mesh_ptr aMesh, SMESH::SMESH_Hypothesis_ptr aHyp ) ; - void AddHypothesisOnSubMesh( SMESH::SMESH_subMesh_ptr aSubMesh, SMESH::SMESH_Hypothesis_ptr aHyp ) ; + bool AddHypothesisOnMesh (SMESH::SMESH_Mesh_ptr aMesh, SMESH::SMESH_Hypothesis_ptr aHyp); + bool AddAlgorithmOnMesh (SMESH::SMESH_Mesh_ptr aMesh, SMESH::SMESH_Hypothesis_ptr aHyp); - void RemoveHypothesisOrAlgorithmOnMesh( const Handle(SALOME_InteractiveObject)& IObject ) ; - void RemoveHypothesisOrAlgorithmOnMesh( SALOMEDS::SObject_ptr MorSM, SMESH::SMESH_Hypothesis_ptr anHyp ) ; + bool AddHypothesisOnSubMesh (SMESH::SMESH_subMesh_ptr aSubMesh, SMESH::SMESH_Hypothesis_ptr aHyp); + bool AddAlgorithmOnSubMesh (SMESH::SMESH_subMesh_ptr aSubMesh, SMESH::SMESH_Hypothesis_ptr aHyp); - void CreateLocalLength( QString TypeHypothesis, QString NameHypothesis, double Length ); - void CreateNbSegments( QString TypeHypothesis, QString NameHypothesis, double nbSegments ); - void CreateMaxElementArea( QString TypeHypothesis, QString NameHypothesis, double MaxArea ); - void CreateMaxElementVolume( QString TypeHypothesis, QString NameHypothesis, double MaxVolume ); + bool RemoveHypothesisOrAlgorithmOnMesh (const Handle(SALOME_InteractiveObject)& IObject); + bool RemoveHypothesisOrAlgorithmOnMesh (SALOMEDS::SObject_ptr MorSM, + SMESH::SMESH_Hypothesis_ptr anHyp); - /* Algorithms Management */ - void AddAlgorithmOnMesh( SMESH::SMESH_Mesh_ptr aMesh, SMESH::SMESH_Hypothesis_ptr aHyp ); - void AddAlgorithmOnSubMesh( SMESH::SMESH_subMesh_ptr aSubMesh, SMESH::SMESH_Hypothesis_ptr aHyp ); - void CreateAlgorithm( QString TypeAlgo, QString NameAlgo ); + void SetPickable(SMESH_Actor* theActor = NULL); /* NODES */ void ViewNodes(); vtkActor* SimulationMoveNode(SMESH_Actor* Mactor, int idnode); void MoveNode( SMESH::SMESH_Mesh_ptr aMesh, int idnode, float x, float y, float z); - void AddNode(SMESH_Actor*, int idnode, float x, float y, float z) ; - void AddNodes( SMESH_Actor* Mactor, int number, - const SMESH::double_array& coords, const SMESH::long_array& indexes); void DisplaySimulationNode( SMESH::SMESH_Mesh_ptr aMesh, float x, float y, float z); void DisplaySimulationMoveNode( vtkActor* ac, int idnode, float x, float y, float z); - void RemoveNode(SMESH_Actor*, int idnode) ; void RemoveNodes(SMESH::SMESH_Mesh_ptr aMesh, const TColStd_MapOfInteger& MapIndex) ; - void RemoveNodes(SMESH_Actor* Mactor, int number, - const SMESH::double_array& coords, const SMESH::long_array& indexes); /* EDGES */ - void AddEdge(SMESH_Actor*, int idedge, int idnode1, int idnode2) ; - void AddEdges( SMESH_Actor* Mactor, int number, - const SMESH::double_array& coords, const SMESH::long_array& indexes); void DisplayEdges(SMESH_Actor* ac, bool visibility = true); void DisplayEdgesConnectivityLegendBox(vtkActor *ac); void DisplaySimulationEdge( SMESH::SMESH_Mesh_ptr aMesh, const TColStd_MapOfInteger& MapIndex ); /* TRIANGLES */ - void AddTriangle(SMESH_Actor*, int idtri, int idnode1, int idnode2, int idnode3) ; - void AddTriangles( SMESH_Actor* Mactor, int number, - const SMESH::double_array& coords, const SMESH::long_array& indexes); void DisplaySimulationTriangle( SMESH::SMESH_Mesh_ptr aMesh, const TColStd_MapOfInteger& MapIndex, bool reverse ); /* QUADRANGLES */ - void AddQuadrangle(SMESH_Actor*, int idquad, int idnode1, int idnode2, - int idnode3, int idnode4) ; - void AddQuadrangles( SMESH_Actor* Mactor, int number, - const SMESH::double_array& coords, const SMESH::long_array& indexes); void DisplaySimulationQuadrangle( SMESH::SMESH_Mesh_ptr aMesh, const TColStd_MapOfInteger& MapIndex, bool reverse ); /* VOLUMES */ - void AddTetra(SMESH_Actor*, int idtetra, int idnode1, int idnode2, - int idnode3, int idnode4) ; - void AddHexaedre(SMESH_Actor*, int idhexa, int idnode1, int idnode2, - int idnode3, int idnode4, int idnode5, int idnode6, int idnode7, int idnode8) ; - void AddTetras( SMESH_Actor* Mactor, int number, - const SMESH::double_array& coords, const SMESH::long_array& indexes); - void AddHexaedres( SMESH_Actor* Mactor, int number, - const SMESH::double_array& coords, const SMESH::long_array& indexes); void DisplaySimulationTetra( SMESH::SMESH_Mesh_ptr aMesh, const TColStd_MapOfInteger& MapIndex ); void DisplaySimulationHexa( SMESH::SMESH_Mesh_ptr aMesh, const TColStd_MapOfInteger& MapIndex ); /* ELEMENTS */ - void RemoveElement(SMESH_Actor*, int idnode); void RemoveElements(SMESH::SMESH_Mesh_ptr aMesh, const TColStd_MapOfInteger& MapIndex) ; - void RemoveElements(SMESH_Actor* Mactor, int number, - const SMESH::double_array& coords, const SMESH::long_array& indexes); void OrientationElements(SMESH::SMESH_Mesh_ptr aMesh, const TColStd_MapOfInteger& MapIndex); void DiagonalInversion(SMESH::SMESH_Mesh_ptr aMesh, const TColStd_MapOfInteger& MapIndex); @@ -220,6 +223,7 @@ public : SMESH::SMESH_Mesh_ptr ConvertIOinMesh(const Handle(SALOME_InteractiveObject)& IO, Standard_Boolean& testResult) ; SMESH::SMESH_subMesh_ptr ConvertIOinSubMesh(const Handle(SALOME_InteractiveObject)& IO, Standard_Boolean& testResult) ; + SMESH::SMESH_Group_ptr ConvertIOinSMESHGroup(const Handle(SALOME_InteractiveObject)& IO, Standard_Boolean& testResult) ; /* Geometry Client */ GEOM::GEOM_Shape_ptr ConvertIOinGEOMShape( const Handle(SALOME_InteractiveObject)& IO, @@ -238,7 +242,7 @@ public : void SetViewMode(int commandId); void ChangeRepresentation( SMESH_Actor* ac, int type ); - SMESH_Actor* FindActor(SMESH::SMESH_Mesh_ptr aMesh, + SMESH_Actor* FindActor(CORBA::Object_ptr theObj, Standard_Boolean& testResult, bool onlyInActiveView); SMESH_Actor* FindActorByEntry(QString entry, @@ -263,10 +267,7 @@ public : QString Bold, QString Italic, QString Shadow, QString Font, QString Orientation, float Width, float Height, int NbColors, int NbLabels); - void DisplayScalarBar(bool visibility); - void UpdateScalarBar(float MinRange, float MaxRange); - - void SetDisplaySettings(); + void SetDisplaySettings(); SALOMEDS::Study::ListOfSObject* GetMeshesUsingAlgoOrHypothesis( SMESH::SMESH_Hypothesis_ptr AlgoOrHyp ) ; @@ -284,11 +285,12 @@ public : static void setOrb(); /* Import/Export */ //NBU - static void Import_Document(QAD_Desktop* parent, int theCommandID); - static void Export_Document(QAD_Desktop* parent, int theCommandID); static void Import_Mesh(QAD_Desktop* parent, int theCommandID); static void Export_Mesh(QAD_Desktop* parent, int theCommandID); + /* Filter manager */ + SMESH::FilterManager_ptr GetFilterMgr(); + signals: void SignalDeactivateActiveDialog() ; void SignalCloseAllDialogs() ;