Salome HOME
refs #30 - Sketch base GUI: create, draw lines
[modules/shaper.git] / src / XGUI / XGUI_ViewWindow.h
index cd3db6862e6be1cd778aac4674634a8495b61460..65c2ae273cc87b9c50a25f7636d97de8515aff75 100644 (file)
@@ -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,90 +57,160 @@ 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();
   void onMaximize();
 
   void updateToolBar();
-  //void repaintToolBar();
+//  void repaintToolBar();
 
 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,41 +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)
-  {
-  }
+  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)
-  {
-  }
+  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