X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ImportBathymetryDlg.cxx;h=ee73bd2ef9761e4eccacbf9ee3ccb37ece6d0ece;hb=fce3f1240b6161d7cb837344078e5943b90eca65;hp=e4b67cab7b8f02489bda610dc1a92ed0552d1706;hpb=c305a67ff4752ad6025962f5ec87e8db650325e0;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ImportBathymetryDlg.cxx b/src/HYDROGUI/HYDROGUI_ImportBathymetryDlg.cxx index e4b67cab..ee73bd2e 100644 --- a/src/HYDROGUI/HYDROGUI_ImportBathymetryDlg.cxx +++ b/src/HYDROGUI/HYDROGUI_ImportBathymetryDlg.cxx @@ -33,33 +33,41 @@ #include #include -//TODO add new checkbox ('FUSE INTO THE ONE')!!! HYDROGUI_ImportBathymetryDlg::HYDROGUI_ImportBathymetryDlg( HYDROGUI_Module* theModule, const QString& theTitle ) -: HYDROGUI_InputPanel( theModule, theTitle ) +: HYDROGUI_InputPanel( theModule, theTitle ), myIsEdit ( false ) { SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); // Import bathymetry from file myFileNameGroup = new QGroupBox( tr( "IMPORT_BATHYMETRY_FROM_FILE" ) ); - QLabel* aFileNameLabel = new QLabel( tr( "FILE_NAME" ), myFileNameGroup ); + QLabel* aFileNameLabel = new QLabel( tr( "FILE_NAMES" ), myFileNameGroup ); myFileNames = new QListWidget( myFileNameGroup ); - myFileNames->viewport()->setAttribute( Qt::WA_TransparentForMouseEvents ); - //myFileNames->setFocusPolicy(Qt::FocusPolicy::NoFocus); //TODO - //myFileNames->setReadOnly( true ); + myFileNames->setSelectionMode( QAbstractItemView::ExtendedSelection); + //myFileNames->viewport()->setAttribute( Qt::WA_TransparentForMouseEvents ); + //myFileNames->setFocusPolicy(Qt::FocusPolicy::NoFocus); QPushButton* aBrowseBtn = new QPushButton( myFileNameGroup ); - // aBrowseBtn->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "BROWSE_ICO" ) ) ); - aBrowseBtn->setText("Load files(s)"); + aBrowseBtn->setText("Add files(s)"); aBrowseBtn->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "BROWSE_ICO" ) ) ); + QPushButton* aRemoveBtn = new QPushButton( myFileNameGroup ); + aRemoveBtn->setText("Remove selected file(s)"); + QBoxLayout* aFileNameLayout = new QVBoxLayout( myFileNameGroup ); + + myFuseIntoOne = new QCheckBox(); + myFuseIntoOne->setText("Import as one bathymetry object (fuse the geometry data)"); + myFuseIntoOne->setEnabled( false ); + aFileNameLayout->setMargin( 5 ); aFileNameLayout->setSpacing( 5 ); aFileNameLayout->addWidget( aFileNameLabel ); aFileNameLayout->addWidget( aBrowseBtn ); + aFileNameLayout->addWidget( aRemoveBtn ); aFileNameLayout->addWidget( myFileNames ); + aFileNameLayout->addWidget( myFuseIntoOne ); // Bathymetry name myObjectNameGroup = new QGroupBox( tr( "BATHYMETRY_NAME" ) ); @@ -83,6 +91,8 @@ HYDROGUI_ImportBathymetryDlg::HYDROGUI_ImportBathymetryDlg( HYDROGUI_Module* the addStretch(); connect( aBrowseBtn, SIGNAL( clicked() ), this, SLOT( onBrowse() ) ); + connect( aRemoveBtn, SIGNAL( clicked() ), this, SLOT( onRemove() ) ); + connect( myFuseIntoOne, SIGNAL( stateChanged(int) ), this, SLOT( onStateChanged(int) ) ); } HYDROGUI_ImportBathymetryDlg::~HYDROGUI_ImportBathymetryDlg() @@ -94,12 +104,21 @@ void HYDROGUI_ImportBathymetryDlg::reset() myFileNames->clear(); myObjectName->clear(); myObjectNameGroup->setEnabled( false ); + myFuseIntoOne->setEnabled( false ); +} + +void HYDROGUI_ImportBathymetryDlg::SetEditMode(bool isEdit) +{ + myIsEdit = isEdit; } void HYDROGUI_ImportBathymetryDlg::setObjectName( const QString& theName ) { myObjectName->setText( theName ); - myObjectNameGroup->setEnabled( !theName.isEmpty() || !myFileNames->count() ); + bool ObjNameState = myObjectName->isEnabled(); + myObjectNameGroup->setEnabled( !theName.isEmpty() || myFileNames->count() > 0 ); + myObjectName->setEnabled(ObjNameState); + myFuseIntoOne->setEnabled( myFileNames->count() > 1 ); } QString HYDROGUI_ImportBathymetryDlg::getObjectName() const @@ -107,13 +126,58 @@ QString HYDROGUI_ImportBathymetryDlg::getObjectName() const return myObjectName->text(); } -void HYDROGUI_ImportBathymetryDlg::setFileNames( const QStringList& theFileNames ) +void HYDROGUI_ImportBathymetryDlg::addFileNames( const QStringList& theFileNames ) { + //myFileNames->clear(); + QSet exfilenames = getFileNames().toSet(); + QStringList newFileNames; + foreach (QString str, theFileNames) + if (!exfilenames.contains(str)) + newFileNames.append(str); + myFileNames->addItems( newFileNames ); + UpdateCheckBoxStates(); +} + +void HYDROGUI_ImportBathymetryDlg::removeFileNames( const QList& theFileNamesToRem ) +{ + foreach (QListWidgetItem* item, theFileNamesToRem) + delete myFileNames->takeItem(myFileNames->row(item)); + UpdateCheckBoxStates(); +} - myFileNames->addItems( theFileNames ); - if ( !myObjectNameGroup->isEnabled() ) - myObjectNameGroup->setEnabled( !theFileNames.isEmpty() ); +void HYDROGUI_ImportBathymetryDlg::UpdateCheckBoxStates() +{ + if (myFuseIntoOne->isChecked() || myFileNames->count() == 1 ) + { + myObjectNameGroup->setEnabled( true ); + myObjectName->setEnabled( true ); + } + else + { + myObjectNameGroup->setEnabled( false ); + myObjectName->setEnabled( false ); + } + // + if (myFileNames->count() <= 1 || myIsEdit) + myFuseIntoOne->setEnabled( false ); + else + myFuseIntoOne->setEnabled( true ); + + QString anObjectName = getObjectName().simplified(); + + QStringList aFileNames = getFileNames(); + if ( anObjectName.isEmpty() ) + { + if (!aFileNames.empty()) + { + anObjectName = aFileNames[0]; + if ( !anObjectName.isEmpty() ) + anObjectName = QFileInfo( anObjectName ).baseName(); + } + setObjectName( anObjectName ); + } + } QStringList HYDROGUI_ImportBathymetryDlg::getFileNames() const @@ -137,6 +201,26 @@ bool HYDROGUI_ImportBathymetryDlg::isInvertAltitudes() const return myInvertAltitudes->isChecked(); } +void HYDROGUI_ImportBathymetryDlg::setFuseIntoOneOptionChecked( bool isFIO ) +{ + myFuseIntoOne->setChecked( isFIO ); +} + +bool HYDROGUI_ImportBathymetryDlg::isFuseIntoOneOptionChecked() const +{ + return myFuseIntoOne->isChecked(); +} + +void HYDROGUI_ImportBathymetryDlg::setFuseIntoOneOptionEnabled(bool enabled) +{ + myFuseIntoOne->setEnabled(enabled); +} + +bool HYDROGUI_ImportBathymetryDlg::isFuseIntoOneOptionEnabled() const +{ + return myFuseIntoOne->isEnabled(); +} + void HYDROGUI_ImportBathymetryDlg::onBrowse() { QString aFilter( tr( "BATHYMETRY_FILTER" ) ); @@ -144,11 +228,33 @@ void HYDROGUI_ImportBathymetryDlg::onBrowse() if( !aFileNames.isEmpty() ) { - setFileNames( aFileNames ); + addFileNames( aFileNames ); emit FileSelected( aFileNames ); } } +void HYDROGUI_ImportBathymetryDlg::onRemove() +{ + QList selected = myFileNames->selectedItems(); + + removeFileNames(selected); +} +void HYDROGUI_ImportBathymetryDlg::onStateChanged (int state) +{ + if (getFileNames().count() > 1) + { + if (state == Qt::Checked) + { + myObjectName->setEnabled(true); + myObjectNameGroup->setEnabled(true); + } + else if (state == Qt::Unchecked) + { + myObjectName->setEnabled(false); + myObjectNameGroup->setEnabled(false); + } + } +}