X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Viewer.h;h=d85a160cf9edbf96c33e98cdce185eb2e4aec4be;hb=a398103d11950df8cb50eeea49942237eb16edcf;hp=27df6840da36199369f2c72a6413650742bf5483;hpb=d4572a0253007ff9fc263253720e37bf896f8d0d;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Viewer.h b/src/XGUI/XGUI_Viewer.h index 27df6840d..d85a160cf 100644 --- a/src/XGUI/XGUI_Viewer.h +++ b/src/XGUI/XGUI_Viewer.h @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include #include @@ -14,6 +16,7 @@ #include #include + class XGUI_MainWindow; class QMdiSubWindow; class XGUI_ViewWindow; @@ -57,15 +60,8 @@ 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 @@ -79,6 +75,20 @@ public: /// \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); + + /// 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 void setSelected(const Handle(AIS_InteractiveObject)& theIO) { myAISContext->SetSelected(theIO); } @@ -114,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 StatesMap; typedef QMap ButtonsMap; @@ -156,6 +164,8 @@ 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); + void onContextMenuRequested(QContextMenuEvent* theEvent); private: void addView(QMdiSubWindow* theView); @@ -163,10 +173,14 @@ private: /*! Removes the View from internal Views list.*/ void removeView(QMdiSubWindow* theView); + void updateViewsDrawMode() const; + 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; @@ -180,6 +194,15 @@ private: QList myViews; QMdiSubWindow* myActiveView; + + /// Points used for selection management + QPoint myStartPnt, myEndPnt, myCurPnt; + + /// A counter of created windows + int myWndIdCount; + + /// List of Viewer actions + QList myActions; }; #endif