X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROCurveCreator%2FCurveCreator_TableView.cxx;h=b0c4d527f87186dd5aee432a3011ae31536ffa66;hb=65c66988575cb4fc8de7d838cde08b4731a6e54b;hp=52a8f4923b2accc3fea52552ad13370cf0cb0007;hpb=bc94f7ba1f12d74aee550ceae01684f1438bd8ac;p=modules%2Fhydro.git diff --git a/src/HYDROCurveCreator/CurveCreator_TableView.cxx b/src/HYDROCurveCreator/CurveCreator_TableView.cxx index 52a8f492..b0c4d527 100644 --- a/src/HYDROCurveCreator/CurveCreator_TableView.cxx +++ b/src/HYDROCurveCreator/CurveCreator_TableView.cxx @@ -20,9 +20,11 @@ #include "CurveCreator_TableView.h" #include "CurveCreator_UtilsICurve.hxx" +#include + #include #include -//#include + #include const double DBL_MINIMUM = -10000000.; @@ -50,7 +52,7 @@ QWidget* CurveCreator_TableItemDelegate::createEditor( QWidget* theParent, int aColumnId = theIndex.column(); if ( aColumnId == 2 || aColumnId == 3 ) { QDoubleSpinBox* aSpin = new QtxDoubleSpinBox( theParent ); - aSpin->setDecimals( 6 ); + aSpin->setDecimals( 2 ); aSpin->setRange( DBL_MINIMUM, DBL_MAXIMUM ); anEditor = aSpin; } @@ -63,14 +65,11 @@ QWidget* CurveCreator_TableItemDelegate::createEditor( QWidget* theParent, void CurveCreator_TableItemDelegate::setEditorData( QWidget* theEditor, const QModelIndex& theIndex ) const { - QTableWidget* aTableWidget = dynamic_cast( parent() ); - QTableWidgetItem* anItem = aTableWidget ? dynamic_cast - ( aTableWidget->item( theIndex.row(), theIndex.column() ) ) : 0; int aColumnId = theIndex.column(); - if ( anItem && ( aColumnId == 2 || aColumnId == 3 ) ) { + if ( aColumnId == 2 || aColumnId == 3 ) { QDoubleSpinBox* aDblSpin = dynamic_cast( theEditor ); - double aValue = anItem->data( Qt::UserRole ).toDouble(); if ( aDblSpin ) { + double aValue = theIndex.model()->data( theIndex, Qt::EditRole ).toDouble(); aDblSpin->setValue( aValue ); } } @@ -82,16 +81,12 @@ void CurveCreator_TableItemDelegate::setModelData( QWidget* theEditor, QAbstractItemModel* theModel, const QModelIndex& theIndex ) const { - QTableWidget* aTableWidget = dynamic_cast( parent() ); - QTableWidgetItem* anItem = aTableWidget ? dynamic_cast - ( aTableWidget->item( theIndex.row(), theIndex.column() ) ) : 0; - int aColumnId = theIndex.column(); - if ( anItem && ( aColumnId == 2 || aColumnId == 3 ) ) { + if ( aColumnId == 2 || aColumnId == 3 ) { QDoubleSpinBox* aDblSpin = dynamic_cast( theEditor ); if ( aDblSpin ) { double aValue = aDblSpin->value(); - anItem->setData( Qt::UserRole, aValue ); + theModel->setData( theIndex, aValue, Qt::UserRole); } } else @@ -117,60 +112,42 @@ void CurveCreator_TableView::setCurve( CurveCreator_ICurve* theCurve ) myCurve = theCurve; } -void CurveCreator_TableView::addLocalPointToTable( const double theX, const double theY ) +void CurveCreator_TableView::addLocalPointToTable( + const CurveCreator_ICurve::SectionToPoint& theSToPoint ) { - CurveCreator_ICurve::SectionToPointList aPoints; - CurveCreator_UtilsICurve::findSectionsToPoints( myCurve, theX, theY, aPoints ); - - CurveCreator_ICurve::SectionToPointList aSkipList; - // table could not contain two equal value rows int aRowId = rowCount(); - double aCurrentX, aCurrentY; - int aSectionId, aPointId; - CurveCreator_ICurve::SectionToPoint aPoint; - for ( int i = 0; i < aRowId; i++ ) { - aCurrentX = item( i, 2 )->data( Qt::UserRole ).toDouble(); - aCurrentY = item( i, 3 )->data( Qt::UserRole ).toDouble(); - if ( fabs( aCurrentX - theX ) < LOCAL_SELECTION_TOLERANCE && - fabs( aCurrentY - theY ) < LOCAL_SELECTION_TOLERANCE ) { - aPoint = std::make_pair( getSectionId( i ), getPointId( i ) ); - if ( !CurveCreator_UtilsICurve::contains( aSkipList, aPoint ) ) - aSkipList.push_back( aPoint ); - } - } - if ( aSkipList.size() == aPoints.size() ) + int anISection = theSToPoint.first; + int anIPoint = theSToPoint.second; + bool isFoundPoint = false; + for ( int i = 0; i < aRowId && !isFoundPoint; i++ ) + isFoundPoint = getSectionId( i ) == anISection && + getPointId( i ) == anIPoint; + if ( isFoundPoint ) return; + setRowCount( aRowId+1 ); + QTableWidgetItem* anItem; - CurveCreator_ICurve::SectionToPointList::const_iterator anIt = aPoints.begin(), - aLast = aPoints.end(); - for ( ; anIt != aLast; anIt++ ) { - aPoint = *anIt; - if ( CurveCreator_UtilsICurve::contains( aSkipList, aPoint ) ) - continue; - - setRowCount( aRowId+1 ); - aSectionId = aPoint.first; - aPointId = aPoint.second; - - anItem = new QTableWidgetItem( myCurve->getSectionName( aSectionId ).c_str() ); - anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled ); - anItem->setData( Qt::UserRole, aSectionId ); - setItem( aRowId, 0, anItem ); - - anItem = new QTableWidgetItem( QString::number( aPointId + 1 ) ); - anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled ); - anItem->setData( Qt::UserRole, aPointId ); - setItem( aRowId, 1, anItem ); - - anItem = new QTableWidgetItem( QString::number( theX ) ); - anItem->setData( Qt::UserRole, theX ); - setItem( aRowId, 2, anItem ); - - anItem = new QTableWidgetItem( QString::number( theY ) ); - anItem->setData( Qt::UserRole, theY ); - setItem( aRowId, 3, anItem ); - } + anItem = new QTableWidgetItem( myCurve->getSectionName( anISection ).c_str() ); + anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled ); + anItem->setData( Qt::UserRole, anISection ); + setItem( aRowId, 0, anItem ); + + anItem = new QTableWidgetItem( QString::number( anIPoint + 1 ) ); + anItem->setFlags( anItem->flags() & ~Qt::ItemIsEnabled ); + anItem->setData( Qt::UserRole, anIPoint ); + setItem( aRowId, 1, anItem ); + + gp_Pnt aPoint; + CurveCreator_UtilsICurve::getPoint( myCurve, anISection, anIPoint, aPoint ); + + anItem = new QTableWidgetItem( QString::number( aPoint.X(), 'f', 2 ) ); + anItem->setData( Qt::UserRole, aPoint.X() ); + setItem( aRowId, 2, anItem ); + + anItem = new QTableWidgetItem( QString::number( aPoint.Y(), 'f', 2 ) ); + anItem->setData( Qt::UserRole, aPoint.Y() ); + setItem( aRowId, 3, anItem ); } int CurveCreator_TableView::getSectionId( const int theRowId ) const