Salome HOME
Profile object creation.
[modules/hydro.git] / src / HYDROCurveCreator / OCCViewer_ViewWidget.cxx
index fd242ac1f64cb7ccbaf49398ae06a7c8576b0cff..ac9fd07c51abe19ce6774c75fcab83aed881f1bc 100644 (file)
@@ -152,8 +152,8 @@ const char* imageCrossCursor[] = {
   "................................"};
 
 // ---------------- OCC view widget --------
-OCCViewer_ViewWidget::OCCViewer_ViewWidget(QWidget* parent)
-  : QFrame(parent), myShowTrihedron(true)
+OCCViewer_ViewWidget::OCCViewer_ViewWidget(QWidget* parent, const bool isUseMultiAction)
+  : QFrame(parent), myShowTrihedron(true), myUseMultiAction(isUseMultiAction)
 {
   setObjectName("OCC_view_widget");
   mySelectedPoint = gp_Pnt(0.,0.,0.);
@@ -170,16 +170,17 @@ OCCViewer_ViewWidget::OCCViewer_ViewWidget(QWidget* parent)
 
   myToolBar = new QToolBar(aBtnBox);
   aBtnLay->addWidget(myToolBar);
-  myZoomBtns = new QtxMultiAction(aBtnBox);
-  myZoomBtns->setObjectName("zoomBtn");
-  myToolBar->addAction(myZoomBtns);
-  myPanBtns = new QtxMultiAction(aBtnBox);
-  myPanBtns->setObjectName("panBtn");
-  myToolBar->addAction(myPanBtns);
-  myProjBtns = new QtxMultiAction(aBtnBox);
-  myProjBtns->setObjectName("projectionBtn");
-  myToolBar->addAction(myProjBtns);
-
+  if (myUseMultiAction) {
+    myZoomBtns = new QtxMultiAction(aBtnBox);
+    myZoomBtns->setObjectName("zoomBtn");
+    myToolBar->addAction(myZoomBtns);
+    myPanBtns = new QtxMultiAction(aBtnBox);
+    myPanBtns->setObjectName("panBtn");
+    myToolBar->addAction(myPanBtns);
+    myProjBtns = new QtxMultiAction(aBtnBox);
+    myProjBtns->setObjectName("projectionBtn");
+    myToolBar->addAction(myProjBtns);
+  }
   // Rotation
   aBtnLay->addStretch(1);
   anAnalLay->addWidget(aBtnBox, 0, 0, 1, 2);
@@ -230,6 +231,8 @@ OCCViewer_ViewWidget::OCCViewer_ViewWidget(QWidget* parent)
   createActions();
   myButsMap[TrihId]->setChecked(false);
   onTrihChanged();
+
+  my2dMode = No2dMode;
 }
 
 OCCViewer_ViewWidget::~OCCViewer_ViewWidget()
@@ -243,6 +246,11 @@ OCCViewer_ViewWidget::~OCCViewer_ViewWidget()
   #endif
 }
 
+OCCViewer_ViewPort3d* OCCViewer_ViewWidget::getViewPort()
+{
+  return myViewPort;
+}
+
 void OCCViewer_ViewWidget::reset()
 {
   clearViewer();
@@ -370,19 +378,36 @@ void OCCViewer_ViewWidget::createActions()
   myToolBar->addAction(aAction);
   myButsMap[ TrihId ] = aAction;
 
-  myZoomBtns->insertAction(myButsMap[ FitAllId ]);
-  myZoomBtns->insertAction(myButsMap[ FitRectId ]);
-  myZoomBtns->insertAction(myButsMap[ ZoomId ]);
+  if (myUseMultiAction) {
+    myZoomBtns->insertAction(myButsMap[ FitAllId ]);
+    myZoomBtns->insertAction(myButsMap[ FitRectId ]);
+    myZoomBtns->insertAction(myButsMap[ ZoomId ]);
 
-  myPanBtns->insertAction(myButsMap[ PanId ]);
-  myPanBtns->insertAction(myButsMap[ GlobalPanId ]);
+    myPanBtns->insertAction(myButsMap[ PanId ]);
+    myPanBtns->insertAction(myButsMap[ GlobalPanId ]);
 
-  myProjBtns->insertAction(myButsMap[ FrontId ]);
-  myProjBtns->insertAction(myButsMap[ BackId ]);
-  myProjBtns->insertAction(myButsMap[ TopId ]);
-  myProjBtns->insertAction(myButsMap[ BottomId ]);
-  myProjBtns->insertAction(myButsMap[ LeftId ]);
-  myProjBtns->insertAction(myButsMap[ RightId ]);
+    myProjBtns->insertAction(myButsMap[ FrontId ]);
+    myProjBtns->insertAction(myButsMap[ BackId ]);
+    myProjBtns->insertAction(myButsMap[ TopId ]);
+    myProjBtns->insertAction(myButsMap[ BottomId ]);
+    myProjBtns->insertAction(myButsMap[ LeftId ]);
+    myProjBtns->insertAction(myButsMap[ RightId ]);
+  }
+  else {
+    myToolBar->addAction(myButsMap[ FitAllId ]);
+    myToolBar->addAction(myButsMap[ FitRectId ]);
+    myToolBar->addAction(myButsMap[ ZoomId ]);
+
+    myToolBar->addAction(myButsMap[ PanId ]);
+    myToolBar->addAction(myButsMap[ GlobalPanId ]);
+
+    myToolBar->addAction(myButsMap[ FrontId ]);
+    myToolBar->addAction(myButsMap[ BackId ]);
+    myToolBar->addAction(myButsMap[ TopId ]);
+    myToolBar->addAction(myButsMap[ BottomId ]);
+    myToolBar->addAction(myButsMap[ LeftId ]);
+    myToolBar->addAction(myButsMap[ RightId ]);
+  }
 }
 
 /*!
@@ -438,6 +463,16 @@ bool OCCViewer_ViewWidget::eventFilter(QObject* watched, QEvent* e)
   return aRes;
 }
 
+void OCCViewer_ViewWidget::set2dMode(OCCViewer_ViewWidget::Mode2dType theType)
+{
+  my2dMode = theType;
+}
+
+QAction* OCCViewer_ViewWidget::action( const ButtonsType& theId )
+{
+  return myButsMap.contains( theId ) ? myButsMap[theId] : 0;
+}
+
 void OCCViewer_ViewWidget::onActivated()
 {
   if(!sender() || !sender()->inherits("QtxAction"))
@@ -639,6 +674,7 @@ void OCCViewer_ViewWidget::vpMousePressEvent(QMouseEvent* theEvent)
         //myViewPort->startRotation(myStartX, myStartY);//, 0, mySelectedPoint);
         break;
       default:
+        emit mousePressed(theEvent);
         break;
     }
   }
@@ -653,7 +689,8 @@ OCCViewer_ViewWidget::OperationType OCCViewer_ViewWidget::getButtonState(QMouseE
            (theEvent->button() == SUIT_ViewModel::myButtonMap[SUIT_ViewModel::STANDARD][SUIT_ViewModel::PAN]))
     aOp = PANVIEW;
   else if((theEvent->modifiers()  == SUIT_ViewModel::myStateMap[SUIT_ViewModel::STANDARD][SUIT_ViewModel::ROTATE]) &&
-           (theEvent->button() == SUIT_ViewModel::myButtonMap[SUIT_ViewModel::STANDARD][SUIT_ViewModel::ROTATE]))
+           (theEvent->button() == SUIT_ViewModel::myButtonMap[SUIT_ViewModel::STANDARD][SUIT_ViewModel::ROTATE]) &&
+           (my2dMode == No2dMode))
     aOp = ROTATE;
 
   return aOp;
@@ -663,6 +700,7 @@ void OCCViewer_ViewWidget::vpMouseReleaseEvent(QMouseEvent* theEvent)
 {
   switch (myOperation) {
   case NOTHING:
+    emit mouseReleased(theEvent);
     break;
   case ROTATE:
     myViewPort->endRotation();
@@ -740,7 +778,9 @@ void OCCViewer_ViewWidget::vpMouseMoveEvent(QMouseEvent* theEvent)
             setCursor(handCursor);
           }
         }
-      }
+    }
+    else
+      emit mouseMoving( theEvent );
     }
   }
 }