X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_StricklerTableDlg.cxx;h=40269457f68c683b12a6aa1259fd74c758cc1e9c;hb=d6e19029f8b41f295db878e9aecf451c2edda4af;hp=3bcab2d8feb5a359b51254e12dd948d7074aee74;hpb=e0ed73f9fe23d646ae3b99ee4446098f10f3cb55;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_StricklerTableDlg.cxx b/src/HYDROGUI/HYDROGUI_StricklerTableDlg.cxx index 3bcab2d8..40269457 100644 --- a/src/HYDROGUI/HYDROGUI_StricklerTableDlg.cxx +++ b/src/HYDROGUI/HYDROGUI_StricklerTableDlg.cxx @@ -38,263 +38,280 @@ #include #include -HYDROGUI_StricklerTableDlg::HYDROGUI_StricklerTableDlg( HYDROGUI_Module* theModule, const QString& theTitle ) -: HYDROGUI_InputPanel( theModule, theTitle ), myName(NULL) +HYDROGUI_StricklerTableDlg::HYDROGUI_StricklerTableDlg( HYDROGUI_Module* theModule, const QString& theTitle, int theType ) +: HYDROGUI_InputPanel( theModule, theTitle ), + myType( theType ) { - SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); - - // Import Strickler table from file - myFileNameGroup = new QGroupBox( tr( "IMPORT_STRICKLER_TABLE_FROM_FILE" ), this ); - - QLabel* aFileNameLabel = new QLabel( tr( "FILE_NAME" ), myFileNameGroup ); - - myFileName = new QLineEdit( myFileNameGroup ); - myFileName->setReadOnly( true ); - - myBrowseBtn = new QToolButton( myFileNameGroup ); - myBrowseBtn->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "BROWSE_ICO" ) ) ); - - QBoxLayout* aFileNameLayout = new QHBoxLayout( myFileNameGroup ); - aFileNameLayout->setMargin( 5 ); - aFileNameLayout->setSpacing( 5 ); - aFileNameLayout->addWidget( aFileNameLabel ); - aFileNameLayout->addWidget( myFileName ); - aFileNameLayout->addWidget( myBrowseBtn ); - - // Strickler table name - myNameGroup = new QGroupBox( tr( "STRICKLER_TABLE_NAME" ), this ); - - QLabel* anImageNameLabel = new QLabel( tr( "NAME" ), myNameGroup ); - myName = new QLineEdit( myNameGroup ); - - QBoxLayout* anImageNameLayout = new QHBoxLayout( myNameGroup ); - anImageNameLayout->setMargin( 5 ); - anImageNameLayout->setSpacing( 5 ); - anImageNameLayout->addWidget( anImageNameLabel ); - anImageNameLayout->addWidget( myName ); - - // Strickler table - myTableGroup = new QGroupBox( tr( "STRICKLER_TABLE_TABLE" ), this ); - - // Main layout - QVBoxLayout* aTableLayout = new QVBoxLayout( myTableGroup ); - aTableLayout->setMargin( 5 ); - aTableLayout->setSpacing( 5 ); - - // Buttons - myAddBtn = new QToolButton; - myAddBtn->setText( tr( "ADD" ) ); - myRemoveBtn = new QToolButton; - myRemoveBtn->setText( tr( "REMOVE" ) ); - myClearBtn = new QToolButton; - myClearBtn->setText( tr( "CLEAR_ALL" ) ); - - // Table - myTable = new QTableWidget( mainFrame() ); - myTable->setItemDelegate( new HYDROGUI_LineEditDoubleValidator( this ) ); - myTable->setEditTriggers( QAbstractItemView::DoubleClicked | - QAbstractItemView::SelectedClicked | - QAbstractItemView::EditKeyPressed ); - - myTable->setColumnCount( 2 ); - QStringList aColumnNames; - aColumnNames << tr( "STRICKLER_TYPE" ) << tr( "STRICKLER_COEFFICIENT" ); - myTable->setHorizontalHeaderLabels( aColumnNames ); - - myTable->horizontalHeader()->setStretchLastSection( false); - myTable->horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch ); - myTable->horizontalHeader()->setResizeMode( 1, QHeaderView::ResizeToContents ); - - myTable->verticalHeader()->setResizeMode( QHeaderView::ResizeToContents ); - - // Layout - // buttons - QHBoxLayout* aButtonsLayout = new QHBoxLayout(); - aButtonsLayout->addWidget( myAddBtn ); - aButtonsLayout->addWidget( myRemoveBtn ); - aButtonsLayout->addStretch( 1 ); - aButtonsLayout->addWidget( myClearBtn ); - - // main - aTableLayout->addLayout( aButtonsLayout ); - aTableLayout->addWidget( myTable ); - - // Common - addWidget( myFileNameGroup ); - addWidget( myNameGroup ); - addWidget( myTableGroup ); - - // Update controls - updateControls(); - - // Connections - connect( myBrowseBtn, SIGNAL( clicked() ), this, SLOT( onBrowse() ) ); - connect( myAddBtn, SIGNAL( clicked() ), this, SLOT( onAddCoefficient() ) ); - connect( myRemoveBtn, SIGNAL( clicked() ), this, SLOT( onRemoveCoefficient() ) ); - connect( myClearBtn, SIGNAL( clicked() ), this, SLOT( onClearCoefficients() ) ); - connect( myTable->selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), - this, SLOT( onSelectionChanged() ) ); - - setMinimumWidth( 350 ); -} + SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); + + QString fileGroupTitle = theType == Export ? tr( "EXPORT_STRICKLER_TABLE_FILE" ) : tr( "IMPORT_STRICKLER_TABLE_FILE" ); + + // Import Strickler table from file + QGroupBox* aFileNameGroup = new QGroupBox( fileGroupTitle, this ); + aFileNameGroup->setVisible( theType != Edit ); + + QLabel* aFileNameLabel = new QLabel( tr( "FILE_NAME" ), aFileNameGroup ); + + myFileName = new QLineEdit( aFileNameGroup ); + myFileName->setReadOnly( true ); + + QToolButton* aBrowseBtn = new QToolButton( aFileNameGroup ); + aBrowseBtn->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "BROWSE_ICO" ) ) ); + + QBoxLayout* aFileNameLayout = new QHBoxLayout( aFileNameGroup ); + aFileNameLayout->setMargin( 5 ); + aFileNameLayout->setSpacing( 5 ); + aFileNameLayout->addWidget( aFileNameLabel ); + aFileNameLayout->addWidget( myFileName ); + aFileNameLayout->addWidget( aBrowseBtn ); + + // Strickler table name + QGroupBox* aNameGroup = new QGroupBox( tr( "STRICKLER_TABLE_NAME" ), this ); + + QLabel* anImageNameLabel = new QLabel( tr( "NAME" ), aNameGroup ); + myName = new QLineEdit( aNameGroup ); + + QBoxLayout* anImageNameLayout = new QHBoxLayout( aNameGroup ); + anImageNameLayout->setMargin( 5 ); + anImageNameLayout->setSpacing( 5 ); + anImageNameLayout->addWidget( anImageNameLabel ); + anImageNameLayout->addWidget( myName ); + + // Strickler table + QGroupBox* aTableGroup = new QGroupBox( tr( "STRICKLER_TABLE_TABLE" ), this ); + aTableGroup->setVisible( theType == Edit ); + + // Main layout + QVBoxLayout* aTableLayout = new QVBoxLayout( aTableGroup ); + aTableLayout->setMargin( 5 ); + aTableLayout->setSpacing( 5 ); + + // Buttons + myAddBtn = new QToolButton; + myAddBtn->setText( tr( "ADD" ) ); + myRemoveBtn = new QToolButton; + myRemoveBtn->setText( tr( "REMOVE" ) ); + myClearBtn = new QToolButton; + myClearBtn->setText( tr( "CLEAR_ALL" ) ); + + // Table + myTable = new QTableWidget( mainFrame() ); + myTable->setItemDelegate( new HYDROGUI_LineEditDoubleValidator( this ) ); + myTable->setEditTriggers( QAbstractItemView::DoubleClicked | + QAbstractItemView::SelectedClicked | + QAbstractItemView::EditKeyPressed ); + + myTable->setColumnCount( 2 ); + QStringList aColumnNames; + aColumnNames << tr( "STRICKLER_TYPE" ) << tr( "STRICKLER_COEFFICIENT" ); + myTable->setHorizontalHeaderLabels( aColumnNames ); + + myTable->horizontalHeader()->setStretchLastSection( false); + myTable->horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch ); + myTable->horizontalHeader()->setResizeMode( 1, QHeaderView::ResizeToContents ); + + myTable->verticalHeader()->setResizeMode( QHeaderView::ResizeToContents ); + + // Layout + // buttons + QHBoxLayout* aButtonsLayout = new QHBoxLayout(); + aButtonsLayout->addWidget( myAddBtn ); + aButtonsLayout->addWidget( myRemoveBtn ); + aButtonsLayout->addStretch( 1 ); + aButtonsLayout->addWidget( myClearBtn ); + + // main + aTableLayout->addLayout( aButtonsLayout ); + aTableLayout->addWidget( myTable ); + + // Common + addWidget( aFileNameGroup ); + addWidget( aNameGroup ); + addWidget( aTableGroup ); + + // Update controls + updateControls(); -HYDROGUI_StricklerTableDlg::~HYDROGUI_StricklerTableDlg() -{ + // Connections + connect( aBrowseBtn, SIGNAL( clicked() ), this, SLOT( onBrowse() ) ); + connect( myAddBtn, SIGNAL( clicked() ), this, SLOT( onAddCoefficient() ) ); + connect( myRemoveBtn, SIGNAL( clicked() ), this, SLOT( onRemoveCoefficient() ) ); + connect( myClearBtn, SIGNAL( clicked() ), this, SLOT( onClearCoefficients() ) ); + connect( myTable->selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), + this, SLOT( onSelectionChanged() ) ); + + setMinimumWidth( 350 ); + + if ( theType != Edit ) + addStretch(); } -void HYDROGUI_StricklerTableDlg::setIsEdit( const bool theIsEdit ) +HYDROGUI_StricklerTableDlg::~HYDROGUI_StricklerTableDlg() { - myFileNameGroup->setVisible( !theIsEdit ); - myNameGroup->setEnabled( theIsEdit ); - myTableGroup->setVisible( theIsEdit ); - if ( !theIsEdit ) - addStretch(); } void HYDROGUI_StricklerTableDlg::reset() { - myFileName->clear(); + myFileName->clear(); - myName->clear(); - myNameGroup->setEnabled( false ); + myName->clear(); } QString HYDROGUI_StricklerTableDlg::getFileName() const { - return myFileName->text(); + return myFileName->text(); } void HYDROGUI_StricklerTableDlg::setFileName( const QString& theName ) { - myFileName->setText( theName ); + myFileName->setText( theName ); +} - if ( !myNameGroup->isEnabled() ) - myNameGroup->setEnabled( true ); +void HYDROGUI_StricklerTableDlg::setTableName( const QString& theName ) +{ + myName->setText(theName); } -void HYDROGUI_StricklerTableDlg::setStricklerTableName( const QString& theName ) +QString HYDROGUI_StricklerTableDlg::getTableName() const { - myName->setText(theName); + return myName->text(); } -QString HYDROGUI_StricklerTableDlg::getStricklerTableName() const +bool HYDROGUI_StricklerTableDlg::isTableNameReadOnly() const { - return myName->text(); + return myName->isReadOnly(); } -void HYDROGUI_StricklerTableDlg::setData(const StricklerCoefficientList& theData) +void HYDROGUI_StricklerTableDlg::setTableNameReadOnly( bool on ) { - myTable->setRowCount( 0 ); + myName->setReadOnly( on ); +} - foreach ( const StricklerCoefficient& aData, theData ) { - // Check the current Strickler type - if ( aData.myType.isEmpty() ) { - continue; +HYDROGUI_StricklerTableDlg::StricklerCoefficientList HYDROGUI_StricklerTableDlg::getData() const +{ + StricklerCoefficientList aRes; + for ( int i = 0; i < myTable->rowCount(); i++ ) + { + QTableWidgetItem* typeItem = myTable->item( i, 0 ); + QTableWidgetItem* coeffItem = myTable->item( i, 1 ); + aRes.append( StricklerCoefficient( typeItem->text(), coeffItem->text().toDouble() ) ); } + return aRes; +} - // Get Strickler coefficient value for the current Strickler type - QString aCoefficient = HYDROGUI_Tool::GetCoordinateString( aData.myCoefficient, false ); - - // Insert row with the data - int aRow = myTable->rowCount(); - myTable->insertRow( aRow ); +void HYDROGUI_StricklerTableDlg::setData(const StricklerCoefficientList& theData) +{ + myTable->setRowCount( 0 ); + + foreach ( const StricklerCoefficient& aData, theData ) { + // Check the current Strickler type + if ( aData.myType.isEmpty() ) { + continue; + } + + // Get Strickler coefficient value for the current Strickler type + QString aCoefficient = HYDROGUI_Tool::GetCoordinateString( aData.myCoefficient, false ); + + // Insert row with the data + int aRow = myTable->rowCount(); + myTable->insertRow( aRow ); - // "Type" column - QTableWidgetItem* aTypeItem = new QTableWidgetItem( aData.myType ); - myTable->setItem( aRow, 0, aTypeItem ); + // "Type" column + QTableWidgetItem* aTypeItem = new QTableWidgetItem( aData.myType ); + myTable->setItem( aRow, 0, aTypeItem ); - // "Coefficient" column - myTable->setItem( aRow, 1, new QTableWidgetItem( aCoefficient ) ); - } + // "Coefficient" column + myTable->setItem( aRow, 1, new QTableWidgetItem( aCoefficient ) ); + } - myTable->resizeColumnToContents( 0 ); - myTable->resizeRowsToContents(); + myTable->resizeColumnToContents( 0 ); + myTable->resizeRowsToContents(); - updateControls(); + updateControls(); } void HYDROGUI_StricklerTableDlg::updateControls() { - bool isTableNotEmpty = myTable->rowCount() > 0; - myClearBtn->setEnabled( isTableNotEmpty ); - onSelectionChanged(); + bool isTableNotEmpty = myTable->rowCount() > 0; + myClearBtn->setEnabled( isTableNotEmpty ); + onSelectionChanged(); } void HYDROGUI_StricklerTableDlg::removeRows( const QList theRows ) { - QList aSortedRows = theRows; - qSort( aSortedRows ); - - int aRowToRemove = -1; - int aNbRemoved = 0; - foreach ( int aRow, aSortedRows ) { - aRowToRemove = aRow - aNbRemoved; - if ( myTable->model()->removeRow( aRowToRemove ) ) { - aNbRemoved++; + QList aSortedRows = theRows; + qSort( aSortedRows ); + + int aRowToRemove = -1; + int aNbRemoved = 0; + foreach ( int aRow, aSortedRows ) { + aRowToRemove = aRow - aNbRemoved; + if ( myTable->model()->removeRow( aRowToRemove ) ) { + aNbRemoved++; + } } - } - if ( aNbRemoved > 0 ) - updateControls(); + if ( aNbRemoved > 0 ) + updateControls(); } void HYDROGUI_StricklerTableDlg::onBrowse() { - QString aFilter( tr( "STRICKLER_TABLE_FILTER" ) ); - QString aFileName = SUIT_FileDlg::getFileName( this, "", aFilter, tr( "IMPORT_STRICKLER_TABLE_FROM_FILE" ), true ); - if( !aFileName.isEmpty() ) - { - setFileName( aFileName ); - emit fileSelected( aFileName ); - } + QString aFilter( tr( "STRICKLER_TABLE_FILTER" ) ); + QString aFileName = SUIT_FileDlg::getFileName( this, "", aFilter, myFileName->parent()->property( "title" ).toString(), myType == Import ); + if ( !aFileName.isEmpty() ) + { + setFileName( aFileName ); + emit fileSelected( aFileName ); + } } /** - Add the new default constructed Strickler coefficient. - */ +Add the new default constructed Strickler coefficient. +*/ void HYDROGUI_StricklerTableDlg::onAddCoefficient() { - int aRow = myTable->rowCount(); - myTable->insertRow( aRow ); + int aRow = myTable->rowCount(); + myTable->insertRow( aRow ); - // Set default type (=> generate unique type name) and coefficient - //... + // Set default type (=> generate unique type name) and coefficient + //... - updateControls(); + updateControls(); } /** - Remove the selected Strickler coefficient. - */ +Remove the selected Strickler coefficient. +*/ void HYDROGUI_StricklerTableDlg::onRemoveCoefficient() { - QList aRows; - QModelIndexList aSelectedIndexes = myTable->selectionModel()->selectedRows(); - foreach ( const QModelIndex& anIndex, aSelectedIndexes ) { - aRows << anIndex.row(); - } + QList aRows; + QModelIndexList aSelectedIndexes = myTable->selectionModel()->selectedRows(); + foreach ( const QModelIndex& anIndex, aSelectedIndexes ) { + aRows << anIndex.row(); + } - removeRows( aRows ); + removeRows( aRows ); } /** - Clear all Strickler coefficients. - */ +Clear all Strickler coefficients. +*/ void HYDROGUI_StricklerTableDlg::onClearCoefficients() { - QList aRows; - for ( int i=0; i< myTable->rowCount(); i++ ) { - aRows << i; - } + QList aRows; + for ( int i=0; i< myTable->rowCount(); i++ ) { + aRows << i; + } - removeRows( aRows ); + removeRows( aRows ); } /** - Slot called on table selection change. +Slot called on table selection change. */ void HYDROGUI_StricklerTableDlg::onSelectionChanged() { - QModelIndexList aSelectedIndexes = myTable->selectionModel()->selectedRows(); - myRemoveBtn->setEnabled( aSelectedIndexes.count() > 0 ); + QModelIndexList aSelectedIndexes = myTable->selectionModel()->selectedRows(); + myRemoveBtn->setEnabled( aSelectedIndexes.count() > 0 ); }