Salome HOME
Constraint: Check AIS dimension possibilities. Line edit appears by the text selectio...
[modules/shaper.git] / src / XGUI / XGUI_Viewer.h
index 466951c7ab0342c00e199fb3d1687963ea1eed6e..d85a160cf9edbf96c33e98cdce185eb2e4aec4be 100644 (file)
@@ -7,6 +7,8 @@
 #include <QObject>
 #include <QMap>
 #include <QList>
+#include <QPoint>
+#include <QAction>
 
 #include <V3d_Viewer.hxx>
 #include <AIS_InteractiveContext.hxx>
@@ -14,7 +16,6 @@
 #include <NCollection_List.hxx>
 #include <TopoDS_Shape.hxx>
 
-#include <QPoint>
 
 class XGUI_MainWindow;
 class QMdiSubWindow;
@@ -79,7 +80,14 @@ public:
 
   /// Enable or disable selectioon in the viewer
   // \param toEnable - true or false (enable or disable selection)
-  void setSelectionEnabled(bool toEnable) { mySelectionEnabled = toEnable; }
+  void setSelectionEnabled(bool toEnable);
+
+  /// Returns true if multi-selection in the viewer is enabled
+  bool isMultiSelectionEnabled() const { return myMultiSelectionEnabled; }
+
+  /// Enable or disable selectioon in the viewer
+  // \param toEnable - true or false (enable or disable selection)
+  void setMultiSelectionEnabled(bool toEnable);
 
   /// Select the object in 3D viewer.
   /// \param theIO - list objects to be selected
@@ -116,17 +124,15 @@ public:
   //! Compute trihedron size dependent on 3d scene size
   bool computeTrihedronSize(double& theNewSize, double& theSize);
 
+  //! Add action to the viewer
+  void addAction(QAction* theAction) { myActions.append(theAction); }
+
+
   static void setHotButton(XGUI::InteractionStyle theInteractionStyle, XGUI::HotOperation theOper,
                            Qt::KeyboardModifiers theState, Qt::MouseButtons theButton);
   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;
 
@@ -159,6 +165,7 @@ private slots:
   void onMouseMove(XGUI_ViewWindow* theWindow, QMouseEvent* theEvent);
   void onMouseReleased(XGUI_ViewWindow* theWindow, QMouseEvent* theEvent);
   void onMousePressed(XGUI_ViewWindow* theWindow, QMouseEvent* theEvent);
+  void onContextMenuRequested(QContextMenuEvent* theEvent);
 
 private:
   void addView(QMdiSubWindow* theView);
@@ -166,6 +173,8 @@ private:
   /*! Removes the View from internal Views list.*/
   void removeView(QMdiSubWindow* theView);
 
+  void updateViewsDrawMode() const;
+
 private:
   XGUI_MainWindow* myMainWindow;
 
@@ -188,6 +197,12 @@ private:
 
   /// Points used for selection management
   QPoint myStartPnt, myEndPnt, myCurPnt;
+
+  /// A counter of created windows
+  int myWndIdCount;
+
+  /// List of Viewer actions
+  QList<QAction*> myActions;
 };
 
 #endif