]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Fix for bug IPAL8977(3.0.0: Add funcitonality for operating of viewer actions by...
authormzn <mzn@opencascade.com>
Wed, 9 Aug 2006 12:26:14 +0000 (12:26 +0000)
committermzn <mzn@opencascade.com>
Wed, 9 Aug 2006 12:26:14 +0000 (12:26 +0000)
src/Plot2d/Plot2d_ViewFrame.cxx
src/Plot2d/Plot2d_ViewFrame.h

index f7b862f7b80fc7c6ff120dc4c7b31c7f4f43b0ec..35b590480131170202ca5f647da5963f728899b8 100755 (executable)
@@ -1414,6 +1414,7 @@ void Plot2d_ViewFrame::plotMousePressed(const QMouseEvent& me )
       parent()->eventFilter(this, aEvent);
     }
   }
+  setFocus(); 
 }
 /*!
   Slot, called when user moves mouse
@@ -1425,41 +1426,11 @@ void Plot2d_ViewFrame::plotMouseMoved( const QMouseEvent& me )
 
   if ( myOperation != NoOpId) {
     if ( myOperation == ZoomId ) {
-      QwtDiMap xMap = myPlot->canvasMap( QwtPlot::xBottom );
-      QwtDiMap yMap = myPlot->canvasMap( QwtPlot::yLeft );
-
-      myPlot->setAxisScale( QwtPlot::yLeft, 
-          myPlot->invTransform( QwtPlot::yLeft, yMap.i1() ), 
-          myPlot->invTransform( QwtPlot::yLeft, yMap.i2() + dy ) );
-      myPlot->setAxisScale( QwtPlot::xBottom, 
-          myPlot->invTransform( QwtPlot::xBottom, xMap.i1() ), 
-          myPlot->invTransform( QwtPlot::xBottom, xMap.i2() - dx ) );
-      if (mySecondY) {
-        QwtDiMap y2Map = myPlot->canvasMap( QwtPlot::yRight );
-        myPlot->setAxisScale( QwtPlot::yRight, 
-          myPlot->invTransform( QwtPlot::yRight, y2Map.i1() ), 
-          myPlot->invTransform( QwtPlot::yRight, y2Map.i2() + dy ) );
-      }
-      myPlot->replot();
+      this->incrementalZoom( dx, dy ); 
       myPnt = me.pos();
     }
     else if ( myOperation == PanId ) {
-      QwtDiMap xMap = myPlot->canvasMap( QwtPlot::xBottom );
-      QwtDiMap yMap = myPlot->canvasMap( QwtPlot::yLeft );
-
-      myPlot->setAxisScale( QwtPlot::yLeft, 
-          myPlot->invTransform( QwtPlot::yLeft, yMap.i1()-dy ), 
-          myPlot->invTransform( QwtPlot::yLeft, yMap.i2()-dy ) );
-      myPlot->setAxisScale( QwtPlot::xBottom, 
-          myPlot->invTransform( QwtPlot::xBottom, xMap.i1()-dx ),
-          myPlot->invTransform( QwtPlot::xBottom, xMap.i2()-dx ) ); 
-      if (mySecondY) {
-        QwtDiMap y2Map = myPlot->canvasMap( QwtPlot::yRight );
-        myPlot->setAxisScale( QwtPlot::yRight,
-          myPlot->invTransform( QwtPlot::yRight, y2Map.i1()-dy ), 
-          myPlot->invTransform( QwtPlot::yRight, y2Map.i2()-dy ) );
-      }
-      myPlot->replot();
+      this->incrementalPan( dx, dy );
       myPnt = me.pos();
     }
   }
@@ -1980,3 +1951,97 @@ void Plot2d_ViewFrame::setVisualParameters( const QString& parameters )
     fitData( 0, xmin, xmax, ymin, ymax, y2min, y2max );
   }  
 }
+
+/*!
+  Incremental zooming operation
+*/
+void Plot2d_ViewFrame::incrementalPan( const int incrX, const int incrY ) {
+  QwtDiMap xMap = myPlot->canvasMap( QwtPlot::xBottom );
+  QwtDiMap yMap = myPlot->canvasMap( QwtPlot::yLeft );
+  
+  myPlot->setAxisScale( QwtPlot::yLeft, 
+                       myPlot->invTransform( QwtPlot::yLeft, yMap.i1()-incrY ), 
+                       myPlot->invTransform( QwtPlot::yLeft, yMap.i2()-incrY ) );
+  myPlot->setAxisScale( QwtPlot::xBottom, 
+                       myPlot->invTransform( QwtPlot::xBottom, xMap.i1()-incrX ),
+                       myPlot->invTransform( QwtPlot::xBottom, xMap.i2()-incrX ) ); 
+  if (mySecondY) {
+    QwtDiMap y2Map = myPlot->canvasMap( QwtPlot::yRight );
+    myPlot->setAxisScale( QwtPlot::yRight,
+                         myPlot->invTransform( QwtPlot::yRight, y2Map.i1()-incrY ), 
+                         myPlot->invTransform( QwtPlot::yRight, y2Map.i2()-incrY ) );
+  }
+  myPlot->replot();
+}
+
+/*!
+  Incremental panning operation
+*/
+void Plot2d_ViewFrame::incrementalZoom( const int incrX, const int incrY ) {
+  QwtDiMap xMap = myPlot->canvasMap( QwtPlot::xBottom );
+  QwtDiMap yMap = myPlot->canvasMap( QwtPlot::yLeft );
+  
+  myPlot->setAxisScale( QwtPlot::yLeft, 
+                       myPlot->invTransform( QwtPlot::yLeft, yMap.i1() ), 
+                       myPlot->invTransform( QwtPlot::yLeft, yMap.i2() + incrY ) );
+  myPlot->setAxisScale( QwtPlot::xBottom, 
+                       myPlot->invTransform( QwtPlot::xBottom, xMap.i1() ), 
+                       myPlot->invTransform( QwtPlot::xBottom, xMap.i2() - incrX ) );
+  if (mySecondY) {
+    QwtDiMap y2Map = myPlot->canvasMap( QwtPlot::yRight );
+    myPlot->setAxisScale( QwtPlot::yRight, 
+                         myPlot->invTransform( QwtPlot::yRight, y2Map.i1() ), 
+                         myPlot->invTransform( QwtPlot::yRight, y2Map.i2() + incrY ) );
+  }
+  myPlot->replot();
+}
+
+#define INCREMENT_FOR_OP 10
+
+/*!
+  Performs incremental panning to the left
+*/
+void Plot2d_ViewFrame::onPanLeft()
+{
+  this->incrementalPan( -INCREMENT_FOR_OP, 0 );
+}
+
+/*!
+  Performs incremental panning to the right
+*/
+void Plot2d_ViewFrame::onPanRight()
+{
+  this->incrementalPan( INCREMENT_FOR_OP, 0 );
+}
+
+/*!
+  Performs incremental panning to the top
+*/
+void Plot2d_ViewFrame::onPanUp()
+{
+  this->incrementalPan( 0, -INCREMENT_FOR_OP );
+}
+
+/*!
+  Performs incremental panning to the bottom
+*/
+void Plot2d_ViewFrame::onPanDown()
+{
+  this->incrementalPan( 0, INCREMENT_FOR_OP );
+}
+
+/*!
+  Performs incremental zooming in
+*/
+void Plot2d_ViewFrame::onZoomIn()
+{
+  this->incrementalZoom( INCREMENT_FOR_OP, INCREMENT_FOR_OP );
+}
+
+/*!
+  Performs incremental zooming out
+*/
+void Plot2d_ViewFrame::onZoomOut()
+{
+  this->incrementalZoom( -INCREMENT_FOR_OP, -INCREMENT_FOR_OP );
+}
index 2c38caf1d76d83e772714ee1ae5027c9d9c4cfc4..6a6aaf1716dfb71df34ccea53ad4970e66a5dfa5 100755 (executable)
@@ -121,6 +121,9 @@ public:
   QString getVisualParameters();
   void    setVisualParameters( const QString& parameters );
 
+  void    incrementalPan ( const int incrX, const int incrY );
+  void    incrementalZoom( const int incrX, const int incrY );
+
 protected:
   int     testOperation( const QMouseEvent& );
   void    readPreferences();
@@ -138,6 +141,13 @@ public slots:
   void    onFitData();
   void    onChangeBackground();
 
+  void    onPanLeft();
+  void    onPanRight();
+  void    onPanUp();
+  void    onPanDown();
+  void    onZoomIn();
+  void    onZoomOut();
+
 protected slots:
   void    plotMousePressed( const QMouseEvent& );
   void    plotMouseMoved( const QMouseEvent& );