X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ImportLandCoverMapDlg.cxx;h=f075284df30f018df491b770965bc76db2d1f07f;hb=9d44116e703eee10527cef6c81ab5f6805515111;hp=5c7c5ccd2f1057ed4ed915fca6b7dcf1f13aeced;hpb=bfb47f35b807312281b69a52494b9147c22759dd;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ImportLandCoverMapDlg.cxx b/src/HYDROGUI/HYDROGUI_ImportLandCoverMapDlg.cxx index 5c7c5ccd..f075284d 100644 --- a/src/HYDROGUI/HYDROGUI_ImportLandCoverMapDlg.cxx +++ b/src/HYDROGUI/HYDROGUI_ImportLandCoverMapDlg.cxx @@ -28,10 +28,16 @@ #include #include #include - +#include +#include +#include #include #include #include +#include +#include +#include +#include HYDROGUI_ImportLandCoverMapDlg::HYDROGUI_ImportLandCoverMapDlg( HYDROGUI_Module* theModule, const QString& theTitle ) : HYDROGUI_Wizard( theModule, theTitle ) @@ -39,6 +45,9 @@ HYDROGUI_ImportLandCoverMapDlg::HYDROGUI_ImportLandCoverMapDlg( HYDROGUI_Module* addPage( createPage1() ); addPage( createPage2() ); addPage( createPage3() ); + myFirstPageState = false; + myDbfState = false; + myUpdateViewerState = false; } QWizardPage* HYDROGUI_ImportLandCoverMapDlg::createPage1() { @@ -47,7 +56,7 @@ QWizardPage* HYDROGUI_ImportLandCoverMapDlg::createPage1() { SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); - myFileNameGroup = new QGroupBox( tr( "IMPORT_LANDCOVERMAP_FROM_FILE" ) ); + myFileNameGroup = new QGroupBox( tr( "IMPORT_LANDCOVER_MAP_FROM_FILE" ) ); QLabel* aFileNameLabel = new QLabel( tr( "FILE_NAME" ), myFileNameGroup ); @@ -63,7 +72,7 @@ QWizardPage* HYDROGUI_ImportLandCoverMapDlg::createPage1() { aFileNameLayout->addWidget( aFileNameLabel ); aFileNameLayout->addWidget( myFileName ); aFileNameLayout->addWidget( aBrowseBtn ); - + myObjectNameGroup = new QGroupBox( tr( "LANDCOVERMAP_NAME" ) ); QLabel* aLandcoverNameLabel = new QLabel( tr( "NAME" ), myObjectNameGroup ); @@ -75,29 +84,34 @@ QWizardPage* HYDROGUI_ImportLandCoverMapDlg::createPage1() { aLandcoverNameLayout->addWidget( aLandcoverNameLabel ); aLandcoverNameLayout->addWidget( myObjectName ); - QGroupBox* aPolygonsGroup = new QGroupBox( tr( "FOUNDED_POLYGONS" ) ); - myPolygons = new QListWidget( aPolygonsGroup ); - myPolygons->setSelectionMode( QListWidget::ExtendedSelection ); - myPolygons->setEditTriggers( QListWidget::NoEditTriggers ); - myPolygons->setViewMode( QListWidget::ListMode ); - myPolygons->setSortingEnabled( false ); + QGroupBox* aPolygonsGroup = new QGroupBox( tr( "FOUND_POLYGONS" ) ); + myPolygonsListWidget = new QListWidget( aPolygonsGroup ); + myPolygonsListWidget->setSelectionMode( QListWidget::ExtendedSelection ); + myPolygonsListWidget->setEditTriggers( QListWidget::NoEditTriggers ); + myPolygonsListWidget->setViewMode( QListWidget::ListMode ); + myPolygonsListWidget->setSortingEnabled( false ); QBoxLayout* aPolygonsLayout = new QVBoxLayout; - aPolygonsLayout->addWidget( myPolygons ); + aPolygonsLayout->addWidget( myPolygonsListWidget ); aPolygonsGroup->setLayout( aPolygonsLayout ); - // Layout QVBoxLayout* aPageLayout = new QVBoxLayout; + myAttrCheckBox = new QCheckBox( tr("USE_DBF_AS_ST") ); + myAttrCheckBox->setChecked(true); + + // Layout aPageLayout->setMargin( 5 ); aPageLayout->setSpacing( 5 ); aPageLayout->addWidget( myFileNameGroup ); + aPageLayout->addWidget( myAttrCheckBox ); aPageLayout->addWidget( myObjectNameGroup ); aPageLayout->addWidget( aPolygonsGroup ); aPage->setLayout( aPageLayout ); // Conections - connect( myPolygons, SIGNAL( itemSelectionChanged() ), this, SLOT( onItemSelectionChanged() ) ); + connect( myPolygonsListWidget, SIGNAL( itemSelectionChanged() ), this, SLOT( onItemSelectionChanged() ) ); connect( aBrowseBtn, SIGNAL( clicked() ), this, SLOT( onBrowse() ) ); + connect( myAttrCheckBox, SIGNAL(clicked(bool)), this, SLOT(onAttrCBChecked(bool))); return aPage; } @@ -106,29 +120,23 @@ QWizardPage* HYDROGUI_ImportLandCoverMapDlg::createPage2() { QWizardPage* aPage = new QWizardPage( mainFrame() ); QFrame* aFrame = new QFrame( aPage ); - myAttrNameGroup = new QGroupBox( "Available attributes" ); - - QCheckBox* anAttrCheckBox = new QCheckBox( "Use dBase attributes as a Strickler Types", myAttrNameGroup ); - - QBoxLayout* aFileNameLayout = new QHBoxLayout( myAttrNameGroup ); - aFileNameLayout->setMargin( 5 ); - aFileNameLayout->setSpacing( 5 ); - aFileNameLayout->addWidget( anAttrCheckBox ); - - - myDBFAttr = new QListWidget( aPage ); - myDBFAttr->setSelectionMode( QListWidget::ExtendedSelection ); - myDBFAttr->setEditTriggers( QListWidget::NoEditTriggers ); - myDBFAttr->setViewMode( QListWidget::ListMode ); - myDBFAttr->setSortingEnabled( false ); + myAvAttrLabel = new QLabel(); + myAvAttrLabel->setText(tr("AV_ATTRS")); + + myDBFAttrListWidget = new QListWidget( ); + myDBFAttrListWidget->setSelectionMode( QListWidget::SingleSelection ); + myDBFAttrListWidget->setEditTriggers( QListWidget::NoEditTriggers ); + myDBFAttrListWidget->setViewMode( QListWidget::ListMode ); + myDBFAttrListWidget->setSortingEnabled( false ); // Layout QVBoxLayout* aPageLayout = new QVBoxLayout; aPageLayout->setMargin( 5 ); aPageLayout->setSpacing( 5 ); - aPageLayout->addWidget( myAttrNameGroup ); - aPageLayout->addWidget( myDBFAttr ); + aPageLayout->addWidget( myAvAttrLabel ); + aPageLayout->addWidget( myDBFAttrListWidget ); aPage->setLayout( aPageLayout ); + return aPage; } @@ -136,31 +144,17 @@ QWizardPage* HYDROGUI_ImportLandCoverMapDlg::createPage3() { QWizardPage* aPage = new QWizardPage( mainFrame() ); QFrame* aFrame = new QFrame( aPage ); - myCLabel = new QLabel(); - myCLabel->setText("Correspondence"); + myCorrLabel = new QLabel(); + myCorrLabel->setText(tr ("CORR")); - myTableW = new QTableWidget(); - - myTableW->setRowCount(5); - myTableW->setColumnCount(2); - - QStringList list; - list << "1" << "2" << "3"; - - for (int i = 0; i < 5; i++) - for (int j = 0; j < 2; j++) - { - QComboBox* CB = new QComboBox(); - CB->addItems(list); - myTableW->setCellWidget(i,j,CB); - } + myCorrTableWidget = new QTableWidget(); // Layout QVBoxLayout* aPageLayout = new QVBoxLayout; aPageLayout->setMargin( 5 ); aPageLayout->setSpacing( 5 ); - aPageLayout->addWidget( myCLabel ); - aPageLayout->addWidget( myTableW ); + aPageLayout->addWidget( myCorrLabel ); + aPageLayout->addWidget( myCorrTableWidget ); aPage->setLayout( aPageLayout ); return aPage; } @@ -168,38 +162,34 @@ QWizardPage* HYDROGUI_ImportLandCoverMapDlg::createPage3() { HYDROGUI_ImportLandCoverMapDlg::~HYDROGUI_ImportLandCoverMapDlg() { + myPolygonsListWidget->clear(); + myDBFAttrListWidget->clear(); } void HYDROGUI_ImportLandCoverMapDlg::reset() { - myPolygons->clear(); + myPolygonsListWidget->clear(); + myDBFAttrListWidget->clear(); } void HYDROGUI_ImportLandCoverMapDlg::setPolygonNames( const QStringList& theNames ) { - myPolygons->clear(); - myPolygons->addItems( theNames ); + myPolygonsListWidget->clear(); + myPolygonsListWidget->addItems( theNames ); } -void HYDROGUI_ImportLandCoverMapDlg::removePolygonNames( const QStringList& theNames ) +void HYDROGUI_ImportLandCoverMapDlg::setAttributeNames( const QStringList& theAttrNames ) { - QList aFoundItems; - - foreach ( const QString& aName, theNames ) { - aFoundItems = myPolygons->findItems( aName, Qt::MatchExactly ); - foreach ( QListWidgetItem* anItem, aFoundItems ) { - anItem = myPolygons->takeItem( myPolygons->row( anItem ) ); - delete anItem; - } - } + myDBFAttrListWidget->clear(); + myDBFAttrListWidget->addItems( theAttrNames ); } void HYDROGUI_ImportLandCoverMapDlg::setSelectedPolygonNames( const QStringList& theNames ) { - myPolygons->clearSelection(); + myPolygonsListWidget->clearSelection(); foreach( const QString aName, theNames ) { - QList anItems = myPolygons->findItems( aName, Qt::MatchExactly ); + QList anItems = myPolygonsListWidget->findItems( aName, Qt::MatchExactly ); if ( anItems.count() == 1 ) { anItems.first()->setSelected( true ); } @@ -207,27 +197,27 @@ void HYDROGUI_ImportLandCoverMapDlg::setSelectedPolygonNames( const QStringList& } void HYDROGUI_ImportLandCoverMapDlg::onItemSelectionChanged() -{ - emit selectionChanged( getSelectedPolygonNames() ); +{ + int aCurIndex = getCurrentWizardIndex(); + if (aCurIndex == 0 && getViewerState()) + emit selectionChanged( getSelectedPolygonNames() ); } QStringList HYDROGUI_ImportLandCoverMapDlg::getSelectedPolygonNames() const { QStringList aSelectedNames; - QList aSelectedItems = myPolygons->selectedItems(); - foreach( const QListWidgetItem* anItem, aSelectedItems ) { + QList aSelectedItems = myPolygonsListWidget->selectedItems(); + foreach( const QListWidgetItem* anItem, aSelectedItems ) aSelectedNames << anItem->text(); - } return aSelectedNames; } - void HYDROGUI_ImportLandCoverMapDlg::onBrowse() { QString aFilter( tr( "LANDCOVERMAP_FILTER" ) ); - QString aFileName = SUIT_FileDlg::getFileName( this, "", aFilter, tr( "IMPORT_LANDCOVERMAP_FROM_FILE" ), true ); + QString aFileName = SUIT_FileDlg::getFileName( this, "", aFilter, tr( "IMPORT_LANDCOVER_MAP_FROM_FILE" ), true ); if( !aFileName.isEmpty() ) { @@ -260,3 +250,205 @@ QString HYDROGUI_ImportLandCoverMapDlg::getFileName() const return myFileName->text(); } + +void HYDROGUI_ImportLandCoverMapDlg::FillCorrespondenceTable(const QStringList& theFirstColumn, + const QStringList& theSecondColumn, + const QVector theDefCBIndices, + const QVector theColors) +{ + int aFCSize = theFirstColumn.size(); // == theDefCBIndices.size() ! + int aSCSize = theSecondColumn.size(); + + myStrColors = theColors; + + myCorrTableWidget->setRowCount(aFCSize); + myCorrTableWidget->setColumnCount(3); + QTableWidgetItem* aHeader_1 = new QTableWidgetItem(QString(tr("TABLE_H1")), QTableWidgetItem::Type); + QTableWidgetItem* aHeader_2 = new QTableWidgetItem(QString(tr("TABLE_H2")), QTableWidgetItem::Type); + QTableWidgetItem* aHeader_3 = new QTableWidgetItem(QString(tr("TABLE_H3")), QTableWidgetItem::Type); + myCorrTableWidget->setHorizontalHeaderItem(0, aHeader_1); + myCorrTableWidget->setHorizontalHeaderItem(1, aHeader_2); + myCorrTableWidget->setHorizontalHeaderItem(2, aHeader_3); + myCorrTableWidget->horizontalHeader()->setResizeMode( QHeaderView::ResizeToContents ); + // + for (int i = 0; i < aFCSize; i++) + { + QTableWidgetItem* aTWI = new QTableWidgetItem(); + aTWI->setText(theFirstColumn.at(i)); + aTWI->setFlags(Qt::ItemIsUserCheckable); + myCorrTableWidget->setItem(i, 0, aTWI); + } + // + QSignalMapper* signalMap = new QSignalMapper(); + for (int i = 0; i < aFCSize; i++) + { + QComboBox* aCB = new QComboBox(); + connect(aCB, SIGNAL(currentIndexChanged(int)), signalMap, SLOT(map())); + signalMap->setMapping(aCB, i); + aCB->addItems(theSecondColumn); + aCB->setCurrentIndex(theDefCBIndices[i]); + myCorrTableWidget->setCellWidget(i, 1, aCB); + } + connect(signalMap, SIGNAL(mapped(int)), this, SLOT(onComboBoxColorChanged(int))); + + // + for (int i = 0; i < aFCSize; i++) + { + myCorrTableWidget->setItem(i, 2, new QTableWidgetItem); + myCorrTableWidget->item(i, 2)->setBackground(myStrColors[theDefCBIndices[i]]); + } + +} + +QString HYDROGUI_ImportLandCoverMapDlg::getSelectedFieldName() const +{ + return myDBFAttrListWidget->selectedItems().first()->text(); +} + +void HYDROGUI_ImportLandCoverMapDlg::setFirstPageState(bool theState) +{ + myFirstPageState = theState; +} + +bool HYDROGUI_ImportLandCoverMapDlg::getFirstPageState() const +{ + return myFirstPageState; +} + + +bool HYDROGUI_ImportLandCoverMapDlg::acceptCurrent() const +{ + //Check the state of the current page + int aCurrPage = getCurrentWizardIndex(); + switch ( aCurrPage ) + { + case 0: + { + //this method verifies first page + if (!CheckFirstPageFilling()) + return false; + break; + } + case 1: + { + if (myDBFAttrListWidget->selectedItems().empty()) + { + SUIT_MessageBox::warning( module()->getApp()->desktop(), tr( "LCM_IMPORT_WARNING" ), tr ("ATTRS_ISNT_SELECTED")); + return false; + } + break; + } + case 2: //last page + { + if (this->isPolygonListEmpty()) + { + SUIT_MessageBox::warning( module()->getApp()->desktop(), tr( "LCM_IMPORT_WARNING" ), tr("POLYGONS_ISNT_SELECTED")); + return false; + } + break; + } + default: + return false; + } + return true; +} + +void HYDROGUI_ImportLandCoverMapDlg::getValAttr2StricklerTypeCorr(QStringList& theAttrValues, QStringList& theST) +{ + int aRowCount = myCorrTableWidget->rowCount(); + for (int i = 0; i < aRowCount; i++) + { + QTableWidgetItem* aTWI = myCorrTableWidget->item(i, 0); + theAttrValues.push_back(aTWI->text()); + } + + for (int i = 0; i < aRowCount; i++) + { + QWidget* aW = myCorrTableWidget->cellWidget(i, 1); + QComboBox* aCB = dynamic_cast (aW); + theST.push_back(aCB->currentText()); + } +} + + +QVector HYDROGUI_ImportLandCoverMapDlg::getSelectedPolygonIndices() const +{ + QVector aSelectedIndices; + + QModelIndexList aSelectedItems = myPolygonsListWidget->selectionModel()->selectedIndexes(); + foreach( QModelIndex index, aSelectedItems ) { + aSelectedIndices << index.row(); + } + + return aSelectedIndices; +} + +void HYDROGUI_ImportLandCoverMapDlg::onAttrCBChecked( bool theState ) +{ + if (theState) + SetButtonsState ( false ); + else + SetButtonsState ( true ); +} + +bool HYDROGUI_ImportLandCoverMapDlg::getAttrCheckBoxState() const +{ + return myAttrCheckBox->isChecked(); +} + +void HYDROGUI_ImportLandCoverMapDlg::onComboBoxColorChanged(int theInd) +{ + QComboBox* CB = qobject_cast (myCorrTableWidget->cellWidget(theInd, 1)); + int aCurIndOfCB = CB->currentIndex(); + myCorrTableWidget->item(theInd, 2)->setBackground(myStrColors[aCurIndOfCB]); +} + +void HYDROGUI_ImportLandCoverMapDlg::setDbfState(bool theState) +{ + myDbfState = theState; +} + +bool HYDROGUI_ImportLandCoverMapDlg::getDbfState() const +{ + return myDbfState; +} + +int HYDROGUI_ImportLandCoverMapDlg::getCurrentWizardIndex() const +{ + return wizard()->currentIndex(); +} + +void HYDROGUI_ImportLandCoverMapDlg::setViewerState(bool theState) +{ + myUpdateViewerState = theState; +} + +bool HYDROGUI_ImportLandCoverMapDlg::getViewerState() const +{ + return myUpdateViewerState; +} + +bool HYDROGUI_ImportLandCoverMapDlg::isPolygonListEmpty() const +{ + return myPolygonsListWidget->selectedItems().empty(); +} + +bool HYDROGUI_ImportLandCoverMapDlg::CheckFirstPageFilling() const +{ + if (!this->getFirstPageState()) + { + SUIT_MessageBox::warning( module()->getApp()->desktop(), tr( "LCM_IMPORT_WARNING" ), tr("FILE_ISNT_CHOSEN")); + return false; + } + if (this->isPolygonListEmpty()) + { + SUIT_MessageBox::warning( module()->getApp()->desktop(), tr( "LCM_IMPORT_WARNING" ), tr("POLYGONS_ISNT_SELECTED")); + return false; + } + if (this->getAttrCheckBoxState() && !this->getDbfState()) + { + SUIT_MessageBox::critical( module()->getApp()->desktop(), tr( "DBF_LOAD_ERROR" ), tr("DBF_LOAD_ERR_MESS")); + return false; + } + return true; +} \ No newline at end of file