Salome HOME
Bug IPAL21228 SIGSEGV on exit from Salome with active GaussPointsDlg
[modules/visu.git] / src / VISUGUI / VisuGUI.h
index ad52d84ff17eacbe2e8988b8cce73d29720b52ba..58d8f2ce21389863bf7a1fcbf8334475f9b2702a 100644 (file)
-//  VISU VISUGUI : GUI of VISU component
+//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
-//  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 
+//  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  VISU VISUGUI : GUI of VISU component
 //  File   : VisuGUI.h
-//  Author : Laurent CORNABE & Hubert ROLLAND 
+//  Author : Laurent CORNABE & Hubert ROLLAND
 //  Module : VISU
-//  $Header$
 
 #ifndef VisuGUI_HeaderFile
 #define VisuGUI_HeaderFile
 
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(VISU_Gen)
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "QAD_Desktop.h"
-#include "VISU_Actor.h"
-#include "VISU_PrsObject_i.hh"
-#include "VISU_Table_i.hh"
-#include "VISU_ViewManager_i.hh"
+#include <SalomeApp_Module.h>
 
-#include <TColStd_MapOfInteger.hxx>
-#include <TColStd_MapIteratorOfMapOfInteger.hxx>
-#include "SALOME_ListIteratorOfListIO.hxx"
+#include <SVTK_ViewWindow.h>
+#include <VISU_Prs3d_i.hh>
 
-class vtkRenderer;
+#include "VisuGUI_Panel.h"
 
-enum RepresentType { POINTS, WIREFRAME, SURFACE, SHRINK };
+#include <map>
+#include <set>
 
+class SUIT_ViewManager;
+class VisuGUI_Slider;
+class VisuGUI_Sweep;
 
+namespace VISU
+{
+  class Prs3d_i;
+  typedef std::pair<Prs3d_i*,int> TPrs3dToInd; // prs pointer and default index of scalar bar placement
+  typedef std::set<TPrs3dToInd> TSetPrs3d;
+  typedef std::map<SVTK_ViewWindow*,TSetPrs3d> TViewToPrs3d;
+}
 
-// ======================================================================
-//                             CLASS VIUSGUI
-// ======================================================================
-// 
-class VisuGUI : public QObject{
+class VisuGUI: public SalomeApp_Module
+{
   Q_OBJECT;
- public:
-  VisuGUI();     
-  ~VisuGUI();    
-
-  static VISU::VISU_Gen_i* GetVisuGen();
-
-  static QAD_Desktop* GetDesktop();
-  static QAD_Study* GetActiveStudy();
-  static vtkRenderer* GetRenderer();
-  static VTKViewer_ViewFrame* GetVtkViewFrame();
-  static SALOMEDS::Study_var GetStudyDocument();
-  static SALOMEDS::StudyBuilder_var NewBuilder();
-  static VISU::Storable::TRestoringMap getMapOfValue(SALOMEDS::SObject_var theSObject);
-
-  static  VisuGUI* GetOrCreateVisuGUI(QAD_Desktop* desktop);
-  static  VisuGUI* GetVisuGUI() ;
-
-  static VISU::Result_i*  CreatePresent(SALOMEDS::SObject_var theField, VISU::Result_var& theResult);
-
-  bool CreateScalarMap(SALOMEDS::SObject_var theField);
-  static VISU::ScalarMap_i* CreateScalarMapPrs(SALOMEDS::SObject_var theField, 
-                                              const char* theMeshName, VISU::Entity theEntity, 
-                                              const char* theFieldName, double theTimeId);
-  bool CreateDeformedShape(SALOMEDS::SObject_var theField);
-  static VISU::DeformedShape_i* CreateDeformedShapePrs(SALOMEDS::SObject_var theField, 
-                                                      const char* theMeshName, VISU::Entity theEntity, 
-                                                      const char* theFieldName, double theTimeId);
-  bool CreateVectors(SALOMEDS::SObject_var theField);
-  static VISU::Vectors_i* CreateVectorsPrs(SALOMEDS::SObject_var theField, 
-                                          const char* theMeshName, VISU::Entity theEntity, 
-                                          const char* theFieldName, double theTimeId);
-  bool CreateIsoSurfaces(SALOMEDS::SObject_var theField);
-  static VISU::IsoSurfaces_i* CreateIsoSurfacesPrs(SALOMEDS::SObject_var theField, 
-                                                  const char* theMeshName, VISU::Entity theEntity, 
-                                                  const char* theFieldName, double theTimeId);
-  bool CreateCutPlanes(SALOMEDS::SObject_var theField);
-  static VISU::CutPlanes_i* CreateCutPlanesPrs(SALOMEDS::SObject_var theField, 
-                                              const char* theMeshName, VISU::Entity theEntity, 
-                                              const char* theFieldName, double theTimeId);
-  bool CreateCutLines(SALOMEDS::SObject_var theField);
-  static VISU::CutLines_i* CreateCutLinesPrs(SALOMEDS::SObject_var theField, 
-                                            const char* theMeshName, VISU::Entity theEntity, 
-                                            const char* theFieldName, double theTimeId);
-  bool CreateStreamLines(SALOMEDS::SObject_var theField);
-  static VISU::StreamLines_i* CreateStreamLinesPrs(SALOMEDS::SObject_var theField, 
-                                                  const char* theMeshName, VISU::Entity theEntity, 
-                                                  const char* theFieldName, double theTimeId);
-  bool TestObjectBrowser(SALOMEDS::SObject_var& objVisu);
-  
-  static void ShowTrihedron(bool Show);
-  static void ChangeViewer(int theType);
-            
-  static void NewColor(VISU_Actor *Actor);
-  static void NewOutlineColor(VISUMesh_Actor *Actor);
-  static void NewOpacity(VISU_Actor *Actor);
-  static void NewLinewidth(VISU_Actor *Actor);
-            
-  static void ChangeScalarBar();
-  static void SetSweepingPreferences();
-            
-  static void  PlotTable( VISU::Table_i* table, int theDisplaying );
-  static void  PlotCurve( VISU::Curve_i* curve, int theDisplaying );
-  static void  PlotContainer( VISU::Container_i* container, int theDisplaying );
-  
-  static QString getVisuInputDir();
-  static QString getVisuOutputDir();
-  
-  static QString getValue(SALOMEDS::SObject_var theSObject, QString theKey);
-  static int checkHomoSelection();
-  
-  VISU_Actor* UpdateViewer(VISU::Prs3d_i* thePrs, bool theDispOnly=false);
-  bool IsDisplayed(VISU::Prs3d_i* thePrs);
-  void ErasePrs(VISU::Prs3d_i* thePrs);
-  
-  static VISU::Prs3d_i* GetSelectedPrs3d(Handle(SALOME_InteractiveObject)* theIO = NULL);
-  void RecreateActor(VISU::Prs3d_i* thePrs);
-  static void CreateActor(VISU::Prs3d_i* thePrs);
-  static VISU_Actor *GetActor(int* theSelectionType = NULL);
-  static VISU_Actor* GetActor(VISU::Prs3d_i* thePrs, VTKViewer_ViewFrame* theViewFrame = NULL);
-  
-  void VisuGUI::ChangeRepresentation(RepresentType theType);
-  void DeletePresentation(VISU::Prs3d_i* thePrs);
-  
-  void         SetState(int aState );
-  void         ResetState();
-  void         EmitSignalDeactivateDialog();
-  void         EmitSignalCloseAllDialogs();
-  QDialog*     GetActiveDialogBox();
-  void         SetActiveDialogBox(QDialog* aDlg);
-  
-// ----------------------------------------
-// All method of standard EXPORT
-// ----------------------------------------
-  Standard_EXPORT static bool OnGUIEvent(int theCommandID, 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)&);
-  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);
-  public slots:
-  void ImportTablesFromFile();
-  void ImportFromFile();
-  void ExportToFile();
-  void CreateMesh();
-  void CreateScalarMap();
-  void CreateDeformedShape();
-  void CreateVectors();
-  void CreateIsoSurfaces();
-  void CreateCutPlanes();
-  void CreateCutLines();
-  void CreateStreamLines();
-  void CreateManyMesh();
-  
-  void DisplayPrs();
-  void DisplayOnlyPrs();
-  void ErasePrs();
-  void EditPrs();
-  void EditScalarBar();
-  void DisplayManyPrs();
-  void EraseManyPrs();
-  
-  void MakeWireframe();
-  void MakeSurface();
-  void MakePoints();
-  void MakeShrink();
-  
-  void ChageColor();
-  void ChangeOutlineColor();
-  void ChangeOpacity();
-  void ChangeLines();
-  
-  void ShowTable();
-  void CreateTable();
-  void PlotData();
-  void CurveProperties();
-  void ClearContainer();
-  
-  void SaveViewParams();
-  void RestoreViewParams();
-  
-  void DeletePrs();
-  void Rename();
-  void Sweep();
-  void TimeAnimation();
-  
-  void ImportMedField();
-  //void ImportMedMesh();
-  
-  void DeleteViewParams();
-  void CopyPresentation();
 
-  void InfoOnPoint();
-  void InfoOnCell();
-  void SelectPoint();
-  void SelectCell();
+public:
+  enum PanelId { SelectionPanelId = 0,
+                FeatureEdgesPanelId,
+                 ClippingPlanesPanelId };
+
+public:
+  VisuGUI();
+  virtual ~VisuGUI();
+
+  virtual LightApp_Displayer*    displayer();
+  virtual void initialize( CAM_Application* );
+  virtual void windows( QMap<int, int>& ) const;
+  virtual void viewManagers( QStringList& ) const;
+
+  virtual QString engineIOR() const;
+
+  virtual void  studyActivated();
+
+  virtual void  contextMenuPopup( const QString& theClient, QMenu* theMenu, QString& theTitle );
+
+  virtual void createPreferences();
+  virtual void preferencesChanged( const QString&, const QString& );
+
+  virtual
+  SUIT_ViewManager*
+  getViewManager(const QString& theType, 
+                const bool theIsCreate);
+
+  VISU::TViewToPrs3d&
+  getScalarBarsMap();
 
-private :
-  QDialog* myActiveDialogBox;
-  int myState ;
-  
 signals:
-  void SignalDeactivateActiveDialog();
-  void SignalCloseAllDialogs();
+  void moduleDeactivated();
+  void moduleActivated();
+  void presentationCreated(VISU::Prs3d_i* thePrs);
+  void beforeObjectDelete(QString theEntry);
+
+public slots:
+  virtual bool deactivateModule( SUIT_Study* );
+  virtual bool activateModule( SUIT_Study* );
+  virtual void OnEraseAll();
+
+protected slots:
+  void OnImportFromFile();
+  void OnImportTableFromFile();
+  void OnExportTableToFile();
+  void OnImportMedField();
+
+  void OnLoadComponentData();
+
+  void OnCreateMesh();
+  void OnCreateScalarMap();
+  void OnCreateDeformedShape();
+  void OnCreateVectors();
+  void OnCreateIsoSurfaces();
+  void OnCreateCutPlanes();
+  void OnCreateCutLines();
+  void OnCreateStreamLines();
+  void OnCreatePlot3D();
+  void OnCreateManyMesh();
+  void OnCreatePlot2dView();
+  void OnCreateDeformedShapeAndScalarMap();
+
+  void OnEditScalarMap();
+  void OnEditDeformedShape();
+  void OnEditCutPlanes();
+  void OnEditCutLines();
+  void OnEditIsoSurfaces();
+  void OnEditVectors();
+  void OnEditStreamLines();
+  void OnEditPlot3D();
+  void OnEditDeformedShapeAndScalarMap();
+
+  virtual void OnDisplayPrs();
+  virtual void OnDisplayOnlyPrs();
+  virtual void OnErasePrs();
+  //  virtual void OnEraseAll();
+
+  void OnToggleSelectionPanel();
+  void OnSwitchSelectionMode();
+  void OnSwitchSelectionMode( int );
+
+  void OnMakeSurfaceframe();
+  void OnMakeInsideframe();
+  void OnMakeWireframe();
+  void OnMakeSurface();
+  void OnMakePoints();
+  void OnMakeShrink();
+
+  void OnMakeFeatureEdges();
+
+  void OnSetShadingOn();
+  void OnSetShadingOff();
+
+  void OnChangeColor();
+  void OnChangeWireframeColor();
+  void OnChangeOpacity();
+  void OnChangeLines();
+
+  void OnShowTable();
+  void OnShowTablePlot();
+  void OnShowScalarBar();
+  void OnHideScalarBar();
+  void OnCreateTable();
+  void OnDeleteObjects();
+  void OnPlotData();
+  void OnCurveProperties();
+  void OnClearContainer();
+  void OnEditContainer();
+
+  void OnMergeScalarBars();
+  void OnFreeScalarBars();
+
+  virtual void OnSaveViewParams();
+  virtual void OnRestoreViewParams();
+
+  void OnRename();
+  void OnClippingPlanes();
+  void OnSweep();
+  void OnParallelTimeAnimation();
+  void OnSucccessiveTimeAnimation();
+  void OnShowAnimation();
+
+  void OnCopyPresentation();
+
+  void OnTranslatePrs();
+  void OnArrangeActors();
+  void OnPlot3dFromCutPlane();
+
+  void OnManageCache();
+
+  void OnFilterScalars();
+  
+  void OnValuesLabeling();
+  void OnValuesLabelingParams();
+
+  void OnArcQuadMode();
+  void OnLineQuadMode();
+
+  // MULTIPR
+  void OnMultiprViewFullRes();
+  void OnMultiprViewMediumRes();
+  void OnMultiprViewLowRes();
+  void OnMultiprViewHide();
+  void OnMultiprChangeRes(VISU::Result::Resolution theResolution);
+
+  void OnFileInfo();
+  void OnExportMED();
+
+protected:
+  virtual LightApp_Selection* createSelection() const;
+
+  void OnTimeAnimation(VISU::Animation::AnimationMode theMode);
+
+private:
+  void createActions();
+  void createMenus();
+  void createToolBars();
+  void createPopupMenus();
+  void createPanels();
+  void SetScalarBarVisibility( bool );
+  void activateAppropriateViewer( Handle(SALOME_InteractiveObject) theIO );
+  int  addVtkFontPref( const QString& label, const int pId, const QString& param, const bool useSize );
+
+private:
+  QMap<int,VisuGUI_Panel*> myPanels;
+  VisuGUI_Slider*          mySlider;
+  VisuGUI_Sweep*           mySweep; 
+
+  LightApp_Displayer*      myDisplayer;
+  VISU::TViewToPrs3d       myScalarBarsMap;
 };
 
 #endif