]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/XGUI/XGUI_Viewer.h
Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / XGUI / XGUI_Viewer.h
index 3e33be3ae6a802a191814013328b5bf2e41b7771..466951c7ab0342c00e199fb3d1687963ea1eed6e 100644 (file)
 #include <V3d_Viewer.hxx>
 #include <AIS_InteractiveContext.hxx>
 #include <AIS_Trihedron.hxx>
+#include <NCollection_List.hxx>
+#include <TopoDS_Shape.hxx>
+
+#include <QPoint>
 
 class XGUI_MainWindow;
 class QMdiSubWindow;
@@ -55,15 +59,31 @@ public:
     return myAISContext;
   }
 
-  //! Activate local selection
-  //! \param theAIS the list of objects
-  //! \param theMode the selection mode
-  //! \param isUpdateViewer the state wether the viewer should be updated immediatelly
-  void setLocalSelection(const AIS_ListOfInteractive& theAISObjects, const int theMode,
-                         const bool isUpdateViewer);
-  //! Deactivate local selection
-  //! \param isUpdateViewer the state wether the viewer should be updated immediatelly
-  void setGlobalSelection(const bool isUpdateViewer);
+  //! Returns an active view window or NULL
+  XGUI_ViewWindow* activeViewWindow() const;
+
+  /// Return objects selected in 3D viewer
+  /// \param theList - list to be filled with selected objects
+  void  getSelectedObjects(AIS_ListOfInteractive& theList);
+
+  /// Return shapes selected in 3D viewer
+  /// \param theList - list to be filled with selected shapes
+  void getSelectedShapes(NCollection_List<TopoDS_Shape>& theList);
+
+  /// Selects objects in 3D viewer. Other selected objects are left as selected
+  /// \param theList - list objects to be selected
+  void  setObjectsSelected(const AIS_ListOfInteractive& theList);
+
+  /// Returns true if selection in the viewer is enabled
+  bool isSelectionEnabled() const { return mySelectionEnabled; }
+
+  /// Enable or disable selectioon in the viewer
+  // \param toEnable - true or false (enable or disable selection)
+  void setSelectionEnabled(bool toEnable) { mySelectionEnabled = toEnable; }
+
+  /// Select the object in 3D viewer.
+  /// \param theIO - list objects to be selected
+  void setSelected(const Handle(AIS_InteractiveObject)& theIO) { myAISContext->SetSelected(theIO); }
 
   //! Trihedron 3d object shown in the viewer
   Handle(AIS_Trihedron) trihedron() const
@@ -101,6 +121,12 @@ public:
   static void getHotButton(XGUI::InteractionStyle theInteractionStyle, XGUI::HotOperation theOper,
                            Qt::KeyboardModifiers& theState, Qt::MouseButtons& theButton);
 
+  //! Sets the view projection
+  /// \param theX the X projection value
+  /// \param theY the Y projection value
+  /// \param theZ the Z projection value
+  void setViewProjection(double theX, double theY, double theZ);
+
   typedef QMap<XGUI::HotOperation, Qt::KeyboardModifiers> StatesMap;
   typedef QMap<XGUI::HotOperation, Qt::MouseButtons> ButtonsMap;
 
@@ -132,6 +158,7 @@ private slots:
   void onViewClosed(QMdiSubWindow*);
   void onMouseMove(XGUI_ViewWindow* theWindow, QMouseEvent* theEvent);
   void onMouseReleased(XGUI_ViewWindow* theWindow, QMouseEvent* theEvent);
+  void onMousePressed(XGUI_ViewWindow* theWindow, QMouseEvent* theEvent);
 
 private:
   void addView(QMdiSubWindow* theView);
@@ -142,7 +169,9 @@ private:
 private:
   XGUI_MainWindow* myMainWindow;
 
-  Handle(V3d_Viewer) myV3dViewer;Handle(AIS_Trihedron) myTrihedron;Handle(AIS_InteractiveContext) myAISContext;
+  Handle(V3d_Viewer) myV3dViewer;
+  Handle(AIS_Trihedron) myTrihedron;
+  Handle(AIS_InteractiveContext) myAISContext;
 
   XGUI::InteractionStyle myInteractionStyle;
 
@@ -156,6 +185,9 @@ private:
   QList<QMdiSubWindow*> myViews;
 
   QMdiSubWindow* myActiveView;
+
+  /// Points used for selection management
+  QPoint myStartPnt, myEndPnt, myCurPnt;
 };
 
 #endif