1 #ifndef SVTK_VIEWWINDOW_H
2 #define SVTK_VIEWWINDOW_H
5 #pragma warning( disable:4251 )
9 #include "SUIT_ViewWindow.h"
11 #include "SVTK_Selection.h"
12 #include "SALOME_InteractiveObject.hxx"
19 class VTKViewer_Trihedron;
20 class VTKViewer_Transform;
27 class SVTK_RenderWindow;
28 class SVTK_InteractorStyle;
29 class SVTK_RenderWindowInteractor;
31 class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow
36 SVTK_ViewWindow( SUIT_Desktop*, SVTK_Viewer* );
37 virtual ~SVTK_ViewWindow();
39 QToolBar* getToolBar() { return myToolBar; }
41 void setBackgroundColor( const QColor& );
42 QColor backgroundColor() const;
44 vtkRenderer* getRenderer() {return myRenderer;}
45 SVTK_Selector* GetSelector() {return mySelector;}
46 SVTK_RenderWindow* getRenderWindow() {return myRenderWindow;}
47 SVTK_RenderWindowInteractor* getRWInteractor() {return myRWInteractor;}
48 Selection_Mode SelectionMode() const;
49 void SetSelectionMode(Selection_Mode theMode);
51 bool isTrihedronDisplayed();
53 /* interactive object management */
54 void highlight( const Handle(SALOME_InteractiveObject)& IObject,
55 bool highlight, bool immediatly = true );
56 void unHighlightAll();
57 bool isInViewer( const Handle(SALOME_InteractiveObject)& IObject );
58 bool isVisible( const Handle(SALOME_InteractiveObject)& IObject );
61 Handle(SALOME_InteractiveObject) FindIObject(const char* Entry);
64 void Display( const Handle(SALOME_InteractiveObject)& IObject,
65 bool immediatly = true );
66 void DisplayOnly( const Handle(SALOME_InteractiveObject)& IObject );
67 void Erase( const Handle(SALOME_InteractiveObject)& IObject,
68 bool immediatly = true );
71 void Repaint( bool theUpdateTrihedron );
72 void Repaint() { Repaint(true); }
74 //apply existing transformation on adding SALOME_Actor
75 void SetScale( double theScale[3] );
76 void GetScale( double theScale[3] );
77 void AddActor( SALOME_Actor*, bool update = false );
78 void RemoveActor(SALOME_Actor*, bool update = false);
80 void AdjustTrihedrons( const bool forced );
81 bool ComputeTrihedronSize( double& theNewSize,
83 double GetTrihedronSize() const;
86 void onSelectionChanged();
89 void selectionChanged();
103 void onViewTrihedron();
104 void onAdjustTrihedron();
113 void onRotateRight();
118 void activateWindowFit();
119 void activateRotation();
120 void activatePanning();
121 void activateGlobalPanning();
124 void onKeyPressed(QKeyEvent* event);
125 void onKeyReleased(QKeyEvent* event);
126 void onMousePressed(QMouseEvent* event);
127 void onMouseDoubleClicked(QMouseEvent* event);
128 void onMouseReleased(QMouseEvent* event);
129 void onMouseMoving(QMouseEvent* event);
133 void InsertActor( SALOME_Actor* theActor,
134 bool theMoveInternalActors = false );
135 void MoveActor( SALOME_Actor* theActor );
138 enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId,
139 FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, ViewTrihedronId };
140 typedef QMap<int, QtxAction*> ActionsMap;
142 void createActions();
143 void createToolBar();
145 vtkRenderer* myRenderer;
147 SVTK_Viewer* myModel;
148 SVTK_Selector* mySelector;
150 SVTK_RenderWindow* myRenderWindow;
151 SVTK_RenderWindowInteractor* myRWInteractor;
153 VTKViewer_Trihedron* myTrihedron;
154 VTKViewer_Transform* myTransform;
157 ActionsMap myActionsMap;
161 friend class SVTK_RenderWindowInteractor;
165 #pragma warning( default:4251 )