Salome HOME
Merge from V6_main 01/04/2013
[modules/visu.git] / src / VISUGUI / VisuGUI.h
index 8af43519994a61cc36668b2fa4c8c1643179f7fd..e6e1210a76e801df7d53453f296d7985bff229a1 100644 (file)
-//  File      : VisuGUI.h
-//  Created   : Wed Aug 01 10:23:06 2001
-//  Author    : Laurent CORNABE & Hubert ROLLAND 
-//  Project   : SALOME
-//  Module    : VISUGUI
-//  Copyright : PRINCIPIA
-//  $Header$
-
+// Copyright (C) 2007-2013  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
+//
+// 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
+//  Module : VISU
+//
 #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 <TColStd_MapOfInteger.hxx>
-#include <TColStd_MapIteratorOfMapOfInteger.hxx>
-#include "SALOME_ListIteratorOfListIO.hxx"
-
-#include <vtkRenderer.h>
-#include <vtkRenderWindow.h>
-#include <vtkRenderWindowInteractor.h>
-#include <vtkWindowToImageFilter.h>
-#include <vtkTIFFWriter.h>
-#include <vtkActor.h>
-#include <vtkActor2D.h>
-#include <vtkActorCollection.h>
-#include <vtkActor2DCollection.h>
-
-static QString filters[] = { "DAT Files (*.dat)",
-                       "Pressures Files (*.pre)",
-                       "Displacements Files (*.dis)",
-                       "Scalars Files (*.sca)",
-                       "Vectors Files (*.vec)",
-                       "Data Files (*.dat )",
-                       "Vtk Files (*.vtk )",
-                       "Med Files (*.med)",
-                       "Results Files (*.res )",
-                       "Print Files (*.tif)",
-                       "Plot Files (*.plt)",
-                       "Test Files (*.tst)" };
-
-typedef enum {SOLVER,DAT_FILE,VTK_FILE,RES_FILE,MED_FILE,SMESH_FILE,VISU_FILE,SCALAR_FILE,ERROR} result ;
-
-enum RepresentType { POINTS, WIREFRAME, SURFACE, SHRINK };
-
-
-
-// ======================================================================
-//                             CLASS VIUSGUI
-// ======================================================================
-// 
-class VisuGUI : public QObject
+#include <SalomeApp_Module.h>
+
+#include <SVTK_ViewWindow.h>
+#include <VISU_Prs3d_i.hh>
+
+#include "VisuGUI_Panel.h"
+
+#include <map>
+#include <set>
+
+class SUIT_ViewManager;
+class VisuGUI_Slider;
+class VisuGUI_Sweep;
+
+namespace VISU
 {
-  Q_OBJECT
-
-public :
-VisuGUI();       
-~VisuGUI();      
-
-// Methods PUBLIC for Visualization
-// 
- static SALOMEDS::Study_var GetCurrentStudy() { return myStudy; }
- static QAD_Study* GetGUICurrentStudy() { return myActiveStudy; }
- static VTKViewer_ViewFrame* GetVtkViewFrame();
- static SALOMEDS::StudyBuilder_var GetStudyBuilder() { return myStudyBuilder;}
- static VISU::Storable::TRestoringMap getMapOfValue(SALOMEDS::SObject_var theSObject);
-
- static vtkRenderer* GetRenderer(QAD_Study* theStudy);
-
-
-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 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    ClearViewer(QAD_Desktop* parent, vtkRenderer *ren, int TypeOfActor);
-static void    ShowTrihedron(bool Show);
-static void    ChangeViewer(QAD_Desktop* parent, vtkRenderer *ren, bool ScalarBar, int Type);
-
-static void    NewColor(VISU_Actor *Actor);
-static void    NewOutlineColor(VISU_Actor *Actor);
-static void    NewOpacity(VISU_Actor *Actor);
-static void    NewLinewidth(VISU_Actor *Actor);
-
-static void    ChangeScalarBar();
-static void    SetSweepingPreferences();
-static  VISU_Actor *ReferenceActor(QAD_Desktop* parent);
-
-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 );
-
-void    PrintRW(QString prFile, bool toPrinter);
-
-static         QString getVisuInputDir();
-static QString getVisuOutputDir();
-
-static VISU_Actor      *ActorSelected(QAD_Desktop* parent, bool InViewer, int *Mode);
-static VISU_Actor      *GetActorObjBrowser(SALOMEDS::SObject_var objVisu, vtkRenderer *ren);
-static VISU_Actor      *GetActor(QAD_Desktop* parent, Handle_SALOME_InteractiveObject IO, vtkRenderer *ren);
-
- static QString getValue(SALOMEDS::SObject_var theSObject, QString theKey);
-
-
-VISU_Actor* UpdateViewer(VISU::Prs3d_i* thePrs, bool theDispOnly=false);
-bool IsDisplayed(VISU::Prs3d_i* thePrs);
-void ErasePrs(VISU::Prs3d_i* thePrs);
-
-VISU_Actor* GetActor(VISU::Prs3d_i* thePrs);
-static VISU::Prs3d_i* GetSelectedPrs();
-void RecreateActor(VISU::Prs3d_i* thePrs);
-static void CreateActor(VISU::Prs3d_i* thePrs);
-
-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);
-QAD_Study*     GetActiveStudy();
-QAD_Desktop*   GetDesktop();
-
-// ----------------------------------------
-// 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);
-
-Standard_EXPORT static bool APIreaderVTK (QString FileMesh, QString FileResultat);
-
-Standard_EXPORT static bool getObjectRef(QAD_Desktop* parent, SALOMEDS::SObject_ptr obj, 
-                                        _CORBA_ObjRef_OUT_arg< SALOMEDS::_objref_SObject, SALOMEDS::SObject_Helper > objres,
-                                        const char* Type);   
+  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 VisuGUI: public SalomeApp_Module
+{
+  Q_OBJECT;
+
+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();
+
+  virtual bool renameAllowed( const QString& ) const;
+  virtual bool renameObject( const QString&, const QString& );
+  
+
+signals:
+  void moduleDeactivated();
+  void moduleActivated();
+  void presentationCreated(VISU::Prs3d_i* thePrs);
+  void beforeObjectDelete(QString theEntry);
 
 public slots:
- void ImportTablesFromFile();
- void ImportFromFile();
- void ExportToFile();
- void CreateMesh();
- void CreateScalarMap();
- void CreateDeformedShape();
- void CreateVectors();
- void CreateIsoSurfaces();
- void CreateCutPlanes();
- void CreateStreamLines();
-
- void DisplayPrs();
- void DisplayOnlyPrs();
- void ErasePrs();
- void EditPrs();
- void EditScalarBar();
-
- void MakeWireframe();
- void MakeSurface();
- void MakePoints();
- void MakeShrink();
-
- void ChageColor();
- void ChangeOutlineColor();
- void ChangeOpacity();
- void ChangeLines();
-
- void ShowTable();
- 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();
+  virtual bool deactivateModule( SUIT_Study* );
+  virtual bool activateModule( SUIT_Study* );
+  virtual void OnEraseAll();
+
+protected slots:
+  void OnImportFromFile();
+  void OnImportFromSauvFile();
+  void OnImportTableFromFile();
+  void OnExportTableToFile();
+  void OnImportMedField();
+
+  void OnLoadComponentData();
+
+  void OnCreateMesh();
+  void OnCreateScalarMap();
+  void OnCreateDeformedShape();
+  void OnCreateVectors();
+  void OnCreateIsoSurfaces();
+  void OnCreateCutPlanes();
+  void OnCreateCutLines();
+  void OnCreateCutSegment();
+  void OnCreateStreamLines();
+  void OnCreatePlot3D();
+  void OnCreateManyMesh();
+  void OnCreatePlot2dView();
+  void OnCreateDeformedShapeAndScalarMap();
+
+  void OnEditScalarMap();
+  void OnEditDeformedShape();
+  void OnEditCutPlanes();
+  void OnEditCutLines();
+  void OnEditCutSegment();
+  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 OnChangePointMarker();
+  void OnChangeShrinkFactor();
+
+  void OnShowTable();
+  void OnShowTablePlot();
+  void OnShowScalarBar();
+  void OnHideScalarBar();
+  void OnCreateTable();
+  void OnDeleteObjects();
+  void OnPlotData();
+  void OnCurveProperties();
+  void OnCurveScale();
+  void OnClearContainer();
+  void OnEditContainer();
+
+  void OnMergeScalarBars();
+  void OnFreeScalarBars();
+
+  virtual void OnSaveViewParams();
+  virtual void OnRestoreViewParams();
+
+  void OnClippingPlanes();
+  void OnSweep();
+  void OnParallelTimeAnimation();
+  void OnSucccessiveTimeAnimation();
+  void OnShowAnimation();
+
+  void OnPointEvolution();
+  void OnShowEvolution();
+
+  void OnCopyPresentation();
+
+  void OnTranslatePrs();
+  void OnArrangeActors();
+  void OnPlot3dFromCutPlane();
+
+  void OnManageCache();
+
+  void OnFilterScalars();
+  
+  void OnValuesLabeling();
+  void OnValuesLabelingParams();
+
+  void OnArcQuadMode();
+  void OnLineQuadMode();
+
+  void OnShowDeviation();
+
+  // MULTIPR
+  void OnMultiprViewFullRes();
+  void OnMultiprViewMediumRes();
+  void OnMultiprViewLowRes();
+  void OnMultiprViewHide();
+  void OnMultiprChangeRes(VISU::Result::Resolution theResolution);
+
+  void OnFileInfo();
+  void OnExportMED();
 
 protected:
-  
- // Methods PROTECTED
- // 
+  virtual LightApp_Selection* createSelection() const;
 
+  virtual void processPresentationCreated( VISU::Prs3d_i* thePrs );
 
- // Fields PROTECTED
- //
+  void OnTimeAnimation(VISU::Animation::AnimationMode theMode);
 
-private :
-  static VISU::VISU_Gen_var myComponent;
-  static SALOMEDS::Study_var myStudy;
-  static SALOMEDS::StudyBuilder_var myStudyBuilder;
-  static QAD_Desktop* myDesktop;
-  static QAD_Study*  myActiveStudy;
-       QDialog*                        myActiveDialogBox;
-       int                             myState ;
-       int                             myStudyId;
+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 );
 
-signals:
-       void SignalDeactivateActiveDialog();
-       void SignalCloseAllDialogs();
+private:
+  QMap<int,VisuGUI_Panel*> myPanels;
+  VisuGUI_Slider*          mySlider;
+  VisuGUI_Sweep*           mySweep; 
+
+  LightApp_Displayer*      myDisplayer;
+  VISU::TViewToPrs3d       myScalarBarsMap;
 };
 
 #endif