X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ViewWindow.h;h=65c2ae273cc87b9c50a25f7636d97de8515aff75;hb=a3b2736968186ac435b1e05e530c40becbc82301;hp=3efd7bb87b02eb73b7f14e627313da7bd8e5f447;hpb=24fd5aa4e000a03e484c5d4c544e5e08b08a747f;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ViewWindow.h b/src/XGUI/XGUI_ViewWindow.h index 3efd7bb87..65c2ae273 100644 --- a/src/XGUI/XGUI_ViewWindow.h +++ b/src/XGUI/XGUI_ViewWindow.h @@ -1,6 +1,7 @@ #ifndef XGUI_ViewWindow_H #define XGUI_ViewWindow_H +#include "XGUI.h" #include "XGUI_Constants.h" #include "XGUI_ViewBackground.h" @@ -20,10 +21,18 @@ class ViewerLabel; class XGUI_RectRubberBand; class QMdiSubWindow; -class XGUI_ViewWindow: public QFrame +/*! + \class XGUI_ViewWindow + \ingroup GUI + \brief Implements a one view window of 3d viewer object. + It contains a view port object (drawing area) and toolbars for view camera and window management. + Also it managements events in view port +*/ +class XGUI_EXPORT XGUI_ViewWindow: public QFrame { Q_OBJECT public: + //! Types of viewer operations enum OperationType { NOTHING, @@ -48,78 +57,146 @@ public: virtual ~XGUI_ViewWindow(); + //! Returns view port object XGUI_ViewPort* viewPort() const { return myViewPort; } + //! Retrurns current interaction style XGUI::InteractionStyle interactionStyle() const { return myInteractionStyle; } + //! Disable or enable given operation type void setTransformEnabled(const OperationType, const bool); + + //! Returns true if the given operation type is enabled bool transformEnabled(const OperationType) const; + //! Returns View background object XGUI_ViewBackground background() const; + + //! Sets View background object void setBackground(const XGUI_ViewBackground& theBackground); + //! Returns true if the current view window can be closed bool closable() const { return myClosable; } + + //! Sets the current view window closable or not void setClosable( const bool isClosable ) { myClosable = isClosable; } + //! Enable/Disable drawing of ribbon line + void enableDrawMode(bool toEnable) { myEnableDrawMode = toEnable; } + + //! Returns true if ribbon line drawing enabled + bool isDrawModeEnabled() const { return myEnableDrawMode; } + + //! Updates drawing mode in the view window + void updateEnabledDrawMode(); + signals: - void vpTransformationStarted(XGUI_ViewWindow::OperationType type); - void vpTransformationFinished(XGUI_ViewWindow::OperationType type); - - void Show(QShowEvent *); - void Hide(QHideEvent *); - void maximized(XGUI_ViewWindow*, bool); - void returnedTo3d(); - - void tryClosing(XGUI_ViewWindow*); - void closed( QMdiSubWindow* ); - void mousePressed(XGUI_ViewWindow*, QMouseEvent*); - void mouseReleased(XGUI_ViewWindow*, QMouseEvent*); - void mouseDoubleClicked(XGUI_ViewWindow*, QMouseEvent*); - void mouseMoving(XGUI_ViewWindow*, QMouseEvent*); - void keyPressed(XGUI_ViewWindow*, QKeyEvent*); - void keyReleased(XGUI_ViewWindow*, QKeyEvent*); - void contextMenuRequested(QContextMenuEvent *e); - - void viewModified(XGUI_ViewWindow*); - void viewCloned( QMdiSubWindow* theView ); + //! Emited whien view transformation operation is started + void vpTransformationStarted(XGUI_ViewWindow::OperationType type); + + //! Emited whien view transformation operation is finished + void vpTransformationFinished(XGUI_ViewWindow::OperationType type); + + //void Show(QShowEvent *); + //void Hide(QHideEvent *); + //void maximized(XGUI_ViewWindow*, bool); + //void returnedTo3d(); + + //! Emited before the window closing + void tryClosing(XGUI_ViewWindow*); + + //! Emited when window is closing + void closed( QMdiSubWindow* ); + + //! Emited on mouse press in view port + void mousePressed(XGUI_ViewWindow*, QMouseEvent*); + + //! Emited on mouse release in view port + void mouseReleased(XGUI_ViewWindow*, QMouseEvent*); + + //! Emited on mouse double click in view port + void mouseDoubleClicked(XGUI_ViewWindow*, QMouseEvent*); + + //! Emited on mouse moving in view port + void mouseMoving(XGUI_ViewWindow*, QMouseEvent*); + + //! Emited on key press in view port + void keyPressed(XGUI_ViewWindow*, QKeyEvent*); + + //! Emited on key release in view port + void keyReleased(XGUI_ViewWindow*, QKeyEvent*); + + //! Emited on context menu request in view port + void contextMenuRequested(QContextMenuEvent *e); + + //void viewModified(XGUI_ViewWindow*); + void viewCloned( QMdiSubWindow* theView ); public slots: + //! Start zooming operation void activateZoom(); + + //! Start rotation operation void activateRotation(); + + //! Start panning operation void activatePanning(); + + //! Start window fit operation void activateWindowFit(); + + //! Start global panning operation void activateGlobalPanning(); + //! Clone the view window preserving a view point of the current view void cloneView(); + + //! Dump the view window into external file (*.bmp *.png *.jpg *.jpeg *.eps *.ps) void dumpView(); + + //! Fit all command void fitAll(); + //! Set front view void frontView(); + + //! Set back view void backView(); + + //! Set top view void topView(); + + //! Set bottom view void bottomView(); + + //! Set left view void leftView(); + + //! Set right view void rightView(); + //! Reset point of view void reset(); + void windowActivated(); -protected: - virtual void resizeEvent(QResizeEvent* theEvent); + void windowDeactivated(); +protected: virtual void changeEvent(QEvent* theEvent); - virtual void enterEvent(QEvent* theEvent); - virtual void leaveEvent(QEvent* theEvent); - virtual bool eventFilter(QObject *theObj, QEvent *theEvent); + virtual void showEvent(QShowEvent* theEvent); + + virtual void contextMenuEvent(QContextMenuEvent* theEvent); + private slots: void onClose(); void onMinimize(); @@ -131,7 +208,9 @@ private slots: private: enum WindowState { - MinimizedState, MaximizedState, NormalState + MinimizedState, + MaximizedState, + WindowNormalState }; bool processWindowControls(QObject *theObj, QEvent *theEvent); @@ -198,6 +277,7 @@ private: bool myIsKeyFree; bool myEventStarted; // set when transformation is in process bool myClosable; + bool myIsActive; QCursor myCursor; @@ -215,45 +295,51 @@ private: }; //****************************************************** +/*! + \class ViewerToolbar + \ingroup GUI + \brief Provides a toolbar widget with treansparent background over OCCT View window +*/ class ViewerToolbar: public QToolBar { Q_OBJECT public: - ViewerToolbar(QWidget* theParent, XGUI_ViewPort* thePort) - : QToolBar(theParent), myVPort(thePort) - { - setBackgroundRole(QPalette::NoRole); - setAttribute(Qt::WA_NoSystemBackground); - setAttribute(Qt::WA_PaintOnScreen); - } + ViewerToolbar(QWidget* theParent, XGUI_ViewPort* thePort); - void repaintBackground(); +protected slots: + void onViewPortResized() { myResize = true; } protected: virtual void paintEvent(QPaintEvent* theEvent); + + private: XGUI_ViewPort* myVPort; + bool myResize; }; //****************************************************** +/*! + \class ViewerToolbar + \ingroup GUI + \brief Provides a Label widget with treansparent background over OCCT View window +*/ class ViewerLabel: public QLabel { Q_OBJECT public: - ViewerLabel(QWidget* theParent, XGUI_ViewPort* thePort) - : QLabel(theParent), myVPort(thePort) - { - setAttribute(Qt::WA_NoSystemBackground); - } + ViewerLabel(QWidget* theParent, XGUI_ViewPort* thePort); - void repaintBackground(); +protected slots: + void onViewPortResized() { myResize = true; } protected: virtual void paintEvent(QPaintEvent* theEvent); private: XGUI_ViewPort* myVPort; + bool myResize; }; #endif