]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
curve creator: display distance between points in table view
authorPaul RASCLE <paul.rascle@edf.fr>
Fri, 27 May 2016 07:16:42 +0000 (09:16 +0200)
committerPaul RASCLE <paul.rascle@edf.fr>
Fri, 27 May 2016 07:16:42 +0000 (09:16 +0200)
src/CurveCreator/CurveCreator_TableView.cxx
src/GEOMGUI/GEOM_msg_en.ts

index 31bbb5c4d9cf123ae2b9ef52503c1028ab38b4f5..884b78672b147bcf6a363bd5d75d0f3ab31f7144 100644 (file)
@@ -101,14 +101,15 @@ CurveCreator_TableView::CurveCreator_TableView( CurveCreator_ICurve* theCurve,
 {
   setItemDelegate( new CurveCreator_TableItemDelegate( this ) );
   setVisible( false );
-  setColumnCount( 4 );
+  setColumnCount( 5 );
   setColumnWidth( 0, SECTION_NAME_COLUMN_WIDTH );
   setColumnWidth( 1, POINT_INDEX_COLUMN_WIDTH );
   QStringList aLabels;
   QString aCoord1 = theCoordTitles.size() > 0 ? theCoordTitles[0] : tr( "TABLE_X" ); // tr( "X_POSITION_LBL" )
   QString aCoord2 = theCoordTitles.size() > 1 ? theCoordTitles[1] : tr( "TABLE_Y" ); // tr( "Y_POSITION_LBL" )
+  QString aDistance = theCoordTitles.size() > 2 ? theCoordTitles[2] : tr( "DISTANCE_PREV" );
   //aLabels << tr( "SECTION_LABEL" ) << tr( "IDENTIFIER_LABEL" ) << aCoord1 << aCoord2;
-  aLabels << tr( "TABLE_SECTION" ) << tr("TABLE_INDEX") << aCoord1 << aCoord2;
+  aLabels << tr( "TABLE_SECTION" ) << tr("TABLE_INDEX") << aCoord1 << aCoord2 << aDistance;
   setHorizontalHeaderLabels( aLabels );
 
   connect( horizontalHeader(), SIGNAL( sectionClicked( int ) ), this, SLOT( OnHeaderClick( int ) ) );
@@ -125,6 +126,8 @@ void CurveCreator_TableView::setLocalPointsToTable(
   setRowCount( thePoints.size() );
 
   int aRowId = 0;
+  double prevX=0;
+  double prevY=0;
   CurveCreator_ICurve::SectionToPointList::const_iterator anIt = thePoints.begin(),
                                                           aLast = thePoints.end();
   for ( ; anIt != aLast; anIt++ ) {
@@ -153,7 +156,7 @@ void CurveCreator_TableView::setLocalPointsToTable(
       setItem( aRowId, 2, anItem );
     }
     anItem->setData( Qt::UserRole, aPoint.X() );
-    anItem->setData( Qt::DisplayRole, QString::number( aPoint.X(), 'f', 2 ).toDouble() );
+    anItem->setData( Qt::DisplayRole, QString::number( aPoint.X(), 'f', 3 ).toDouble() );
 
     anItem = item( aRowId, 3 );
     if ( !anItem ) {
@@ -161,7 +164,20 @@ void CurveCreator_TableView::setLocalPointsToTable(
       setItem( aRowId, 3, anItem );
     }
     anItem->setData( Qt::UserRole, aPoint.Y() );
-    anItem->setData( Qt::DisplayRole, QString::number( aPoint.Y(), 'f', 2 ).toDouble() );
+    anItem->setData( Qt::DisplayRole, QString::number( aPoint.Y(), 'f', 3 ).toDouble() );
+
+    anItem = item( aRowId, 4 );
+    if ( !anItem ) {
+      anItem = new QTableWidgetItem();
+      setItem( aRowId, 4, anItem );
+    }
+    double d=0;
+    if (aRowId>0)
+      d=sqrt((aPoint.X()-prevX)* (aPoint.X()-prevX) + (aPoint.Y()-prevY)* (aPoint.Y()-prevY));
+    anItem->setData( Qt::UserRole, d );
+    anItem->setData( Qt::DisplayRole, QString::number( d, 'f', 6 ).toDouble() );
+    prevX = aPoint.X();
+    prevY = aPoint.Y();
 
     aRowId++;
   }
index 491d964f84abd7a51aa2548739a4e357776ddf8d..bdb86dfc08d8a8fa372273c2ef84c278a748c1e8 100644 (file)
@@ -5808,6 +5808,10 @@ shells and solids on the other hand.</translation>
         <source>TABLE_Y</source>
         <translation>Y</translation>
     </message>
+    <message>
+        <source>DISTANCE_PREV</source>
+        <translation>Distance</translation>
+    </message>
 </context>
 <context>
     <name>CurveCreator_Widget</name>