]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Fix for the bug #42: point C is not activated, but point C is shown in preview in...
authorrkv <rkv@opencascade.com>
Wed, 13 Nov 2013 15:38:00 +0000 (15:38 +0000)
committerrkv <rkv@opencascade.com>
Wed, 13 Nov 2013 15:38:00 +0000 (15:38 +0000)
src/HYDROGUI/HYDROGUI_ImportImageDlg.cxx
src/HYDROGUI/HYDROGUI_ImportImageDlg.h
src/HYDROGUI/HYDROGUI_ImportImageOp.cxx
src/HYDROGUI/HYDROGUI_ImportImageOp.h
src/HYDROGUI/HYDROGUI_PrsImage.cxx
src/HYDROGUI/HYDROGUI_PrsImage.h

index 1d9510f41e2eec70e2ff8826f9e2817c4378e569..74fcfc1cf8f3de45f09bad785c77cb45f24b1197 100644 (file)
@@ -288,7 +288,7 @@ HYDROGUI_ImportImageDlg::HYDROGUI_ImportImageDlg( HYDROGUI_Module* theModule, co
   connect( myPointCEnabler, SIGNAL( toggled( bool ) ), myRefPointXMap[ HYDROGUI_PrsImage::PointC ], SLOT( setEnabled( bool ) ) );
   connect( myPointCEnabler, SIGNAL( toggled( bool ) ), myRefPointYMap[ HYDROGUI_PrsImage::PointC ], SLOT( setEnabled( bool ) ) );
 
-  connect( myPointCEnabler, SIGNAL( toggled( bool ) ), SIGNAL( setIsByTwoPoints( bool ) ) );
+  connect( myPointCEnabler, SIGNAL( toggled( bool ) ), SLOT( onSetCIsUsed( bool ) ) );
 
   aTransformLayout->setColumnStretch( 1, 1 ); // double
   aTransformLayout->setColumnStretch( 3, 1 ); // degrees
@@ -318,6 +318,16 @@ HYDROGUI_ImportImageDlg::~HYDROGUI_ImportImageDlg()
 {
 }
 
+void HYDROGUI_ImportImageDlg::onSetCIsUsed( bool theCIsUsed )
+{
+  if ( !theCIsUsed  && myPointBtnMap[ HYDROGUI_PrsImage::PointC ]->isChecked() )
+  {
+    // Turn on point A selection if point C selection has been activated and we disable point C.
+    myPointBtnMap[ HYDROGUI_PrsImage::PointA ]->toggle();
+  }
+  emit setCIsUsed( theCIsUsed );
+}
+
 void HYDROGUI_ImportImageDlg::setIsEdit( const bool theIsEdit )
 {
   myFileNameGroup->setVisible( !theIsEdit );
index 59de8c6c6c89aebb9f4a79710099a1d41ab96bd1..12c550f935f8feccecfa71f74379aad8c63f2b7e 100644 (file)
@@ -118,6 +118,7 @@ protected slots:
   void                       onRefImageActivated( const QString& );
   void                       onPointBtnToggled( bool );
   void                       onPointCoordChanged( int );
+  void                       onSetCIsUsed( bool theCIsUsed );
 
   void                       onGeodesicCoordChanged();
   void                       onGeodesicCoordChanged( const int thePointType );
@@ -138,7 +139,7 @@ signals:
                                                 int theValue );
   void                       modeActivated( int );
   void                       refImageActivated( const QString& );
-  void                       setIsByTwoPoints( bool theIsByTwoPoints );
+  void                       setCIsUsed( bool theIsByTwoPoints );
 
 private:
   QGroupBox*                   myFileNameGroup;    //!< The group for the source image file selection
index 82de7403539b8b971b7840dbdd4ed93afed7f3a5..4f7afb9b2e0fd6009a2a7324a80ca2da9c650e57 100644 (file)
@@ -270,19 +270,19 @@ HYDROGUI_InputPanel* HYDROGUI_ImportImageOp::createInputPanel() const
   connect( aPanel, SIGNAL( modeActivated( int ) ), SLOT( onModeActivated( int ) ) );
   connect( aPanel, SIGNAL( refImageActivated( const QString& ) ),
                      SLOT( onRefImageActivated( const QString& ) ) );
-  connect( aPanel, SIGNAL( setIsByTwoPoints( bool ) ), SLOT( onSetIsByTwoPoints( bool ) ) );
+  connect( aPanel, SIGNAL( setCIsUsed( bool ) ), SLOT( onSetCIsUsed( bool ) ) );
   return aPanel;
 }
 
-void HYDROGUI_ImportImageOp::onSetIsByTwoPoints( bool theIsSetByTwoPoints )
+void HYDROGUI_ImportImageOp::onSetCIsUsed( bool theCIsUsed )
 {
   if ( myPreviewPrs )
   {
-    myPreviewPrs->setIsByTwoPoints( theIsSetByTwoPoints );
+    myPreviewPrs->setIsByTwoPoints( !theCIsUsed );
   }
   if ( myRefPreviewPrs )
   {
-    myRefPreviewPrs->setIsByTwoPoints( theIsSetByTwoPoints );
+    myRefPreviewPrs->setIsByTwoPoints( !theCIsUsed );
   }
 }
 
@@ -700,6 +700,7 @@ void HYDROGUI_ImportImageOp::onPointSelected( bool theIsRefImage )
 
   const HYDROGUI_PrsImage::TransformationPointMap& aPointMap =
     aPrs->getTransformationPointMap();
+  
   HYDROGUI_PrsImage::TransformationPointMapIterator anIter( aPointMap );
   while( anIter.hasNext() )
   {
index ade485174bfb2a39eef581023540da042ee0a346..e14249d55265e67247bdbb5790bc04b3582a04a1 100644 (file)
@@ -57,7 +57,7 @@ protected slots:
   void                       onPointCoordChanged( bool, int, bool, int );
   void                       onModeActivated( int );
   void                       onRefImageActivated( const QString& );
-  void                       onSetIsByTwoPoints( bool theIsSetByTwoPoints );
+  void                       onSetCIsUsed( bool theCIsUsed );
 
   void                       onLastViewClosed( SUIT_ViewManager* );
 
index 250d4c859555c219b757dcf15fb2dc0a9fb3f511..172f5f72b41b7b4a2edb7eac4b3f10631d03cef4 100644 (file)
@@ -298,6 +298,7 @@ void HYDROGUI_PrsImage::computeTransformationPoints()
     int aWidth = myImage.width();
     int aHeight = myImage.height();
 
+    // Create presentations for transformation points A, B and C
     for( int aPointType = PointA; aPointType <= PointC; aPointType++ )
     {
       TransformationPoint aTransformationPoint;
@@ -341,29 +342,37 @@ void HYDROGUI_PrsImage::computeTransformationPoints()
     }
   }
 
-  bool anIsVisible = myIsTransformationPointPreview;
-  bool anIsPointVisible;
   for( int aPointType = PointA; aPointType <= PointC; aPointType++ )
   {
-    // If image is transformed only by two points then the point C is invisible
-    anIsPointVisible = anIsVisible && ( 
-      ( !myIsByTwoPoints ) || ( myIsByTwoPoints && ( aPointType != PointC ) ) );
-    TransformationPoint& aTransformationPoint = myTransformationPointMap[ aPointType ];
-
-    double aRadius = 5;
-    const QPointF& aPoint = aTransformationPoint.Point;
-    QRectF aRect( aPoint - QPointF( aRadius, aRadius ), QSizeF( aRadius * 2 + 1, aRadius * 2 + 1 ) );
-    aTransformationPoint.PointItem->setRect( aRect );
-    aTransformationPoint.PointItem->setVisible( anIsPointVisible );
-
-    QPointF aCaptionShift( -aRadius * 2, aRadius * 2 );
-    aTransformationPoint.CaptionItem->setPos( aPoint + aCaptionShift );
-    aTransformationPoint.CaptionItem->setVisible( anIsPointVisible );
+    // Show/hide the point if necessary
+    updateTrsfPoint( aPointType );
   }
 }
 
 //================================================================
-// Function : IsByTwoPoints
+// Function : updateTrsfPoint
+// Purpose  : 
+//================================================================
+void HYDROGUI_PrsImage::updateTrsfPoint( const int thePointType )
+{
+  // If image is transformed only by two points then the point C is invisible
+  bool anIsPointVisible = myIsTransformationPointPreview && ( 
+    ( !myIsByTwoPoints ) || ( myIsByTwoPoints && ( thePointType != PointC ) ) );
+  TransformationPoint& aTransformationPoint = myTransformationPointMap[ thePointType ];
+
+  double aRadius = 5;
+  const QPointF& aPoint = aTransformationPoint.Point;
+  QRectF aRect( aPoint - QPointF( aRadius, aRadius ), QSizeF( aRadius * 2 + 1, aRadius * 2 + 1 ) );
+  aTransformationPoint.PointItem->setRect( aRect );
+  aTransformationPoint.PointItem->setVisible( anIsPointVisible );
+
+  QPointF aCaptionShift( -aRadius * 2, aRadius * 2 );
+  aTransformationPoint.CaptionItem->setPos( aPoint + aCaptionShift );
+  aTransformationPoint.CaptionItem->setVisible( anIsPointVisible );
+}
+
+//================================================================
+// Function : getIsByTwoPoints
 // Purpose  : 
 //================================================================
 bool HYDROGUI_PrsImage::getIsByTwoPoints() const
@@ -372,7 +381,7 @@ bool HYDROGUI_PrsImage::getIsByTwoPoints() const
 }
 
 //================================================================
-// Function : SetIsByTwoPoints
+// Function : setIsByTwoPoints
 // Purpose  : 
 //================================================================
 void HYDROGUI_PrsImage::setIsByTwoPoints( const bool theIsByTwoPoints )
@@ -380,8 +389,7 @@ void HYDROGUI_PrsImage::setIsByTwoPoints( const bool theIsByTwoPoints )
   myIsByTwoPoints = theIsByTwoPoints;
   if ( myTransformationPointMap.contains( PointC ) )
   {
-    TransformationPoint& aTransformationPoint = myTransformationPointMap[ PointC ];
-    aTransformationPoint.PointItem->setVisible( myIsTransformationPointPreview && theIsByTwoPoints );
-    aTransformationPoint.CaptionItem->setVisible( myIsTransformationPointPreview && theIsByTwoPoints );
+    // Show/hide the point C if necessary
+    updateTrsfPoint( PointC );
   }
 }
index 0287839c8c60474f7b26d84884f18f1fa8b7aae9..f51ab35e69638eb20e499ea6ac23af952c1f4545 100644 (file)
@@ -91,6 +91,10 @@ public:
 
 protected:
   void                            computeTransformationPoints();
+  /**
+   * Show/hide a transformation point if necessary.
+   */
+  void                            updateTrsfPoint( const int thePointType );
 
 protected:
   QCursor*                        getTransformationPointCursor() const { return myTransformationPointCursor; }