X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ViewWindow.h;h=77b966d860a0901ba6eeac2250bab8db8f3c3c03;hb=3ccd62a2eedaf895c689d77ab4bfc698a592870e;hp=e77a4ee600973bd727570d103a49aa1a038984f3;hpb=2a0dd5ede9110d423fbd6b038c0445cb819163a9;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ViewWindow.h b/src/XGUI/XGUI_ViewWindow.h index e77a4ee60..77b966d86 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" @@ -18,11 +19,20 @@ class XGUI_Viewer; class ViewerToolbar; class ViewerLabel; class XGUI_RectRubberBand; - -class XGUI_ViewWindow: public QFrame +class QMdiSubWindow; + +/*! + \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, @@ -47,68 +57,155 @@ 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; } + signals: + //! 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 viewCloned( XGUI_ViewWindow* ); - void Show(QShowEvent *); - void Hide(QHideEvent *); - void maximized(XGUI_ViewWindow*, bool); - void returnedTo3d(); + //void Show(QShowEvent *); + //void Hide(QHideEvent *); + //void maximized(XGUI_ViewWindow*, bool); + //void returnedTo3d(); + //! Emited before the window closing void tryClosing(XGUI_ViewWindow*); - void closing(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*); - void wheeling(XGUI_ViewWindow*, QWheelEvent*); + + //! 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 viewModified(XGUI_ViewWindow*); + void viewCloned( QMdiSubWindow* theView ); public slots: + //! Start zooming operation void activateZoom(); + + //! Start rotation operation void activateRotation(); + + //! Start panning operation void activatePanning(); -protected: - virtual void resizeEvent(QResizeEvent* theEvent); + //! Start window fit operation + void activateWindowFit(); - virtual void changeEvent(QEvent* theEvent); + //! 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(); - virtual void enterEvent(QEvent* theEvent); - virtual void leaveEvent(QEvent* theEvent); + //! 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(); + + void windowDeactivated(); + +protected: + virtual void changeEvent(QEvent* theEvent); virtual bool eventFilter(QObject *theObj, QEvent *theEvent); + virtual void showEvent(QShowEvent* theEvent); + private slots: void onClose(); void onMinimize(); void onMaximize(); + void updateToolBar(); +// void repaintToolBar(); + private: enum WindowState { - MinimizedState, MaximizedState, NormalState + MinimizedState, + MaximizedState, + WindowNormalState }; bool processWindowControls(QObject *theObj, QEvent *theEvent); @@ -174,6 +271,8 @@ private: bool myCursorIsHand; bool myIsKeyFree; bool myEventStarted; // set when transformation is in process + bool myClosable; + bool myIsActive; QCursor myCursor; @@ -191,37 +290,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) - { - } + ViewerToolbar(QWidget* theParent, XGUI_ViewPort* thePort); + +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) - { - } + ViewerLabel(QWidget* theParent, XGUI_ViewPort* thePort); + +protected slots: + void onViewPortResized() { myResize = true; } protected: virtual void paintEvent(QPaintEvent* theEvent); private: XGUI_ViewPort* myVPort; + bool myResize; }; #endif