X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FHYDROGUI%2FHYDROGUI_CalculationDlg.cxx;h=778ac4311666fb01038a44833c13200a089a1ba7;hb=71ba58001e1084f0995fff43bf5e4643b153e5e0;hp=49d6188827c69f86837afd2322ef17ba0e9c8110;hpb=439579ec24edd8b147cab07f688d446d59029a1e;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_CalculationDlg.cxx b/src/HYDROGUI/HYDROGUI_CalculationDlg.cxx index 49d61888..778ac431 100644 --- a/src/HYDROGUI/HYDROGUI_CalculationDlg.cxx +++ b/src/HYDROGUI/HYDROGUI_CalculationDlg.cxx @@ -19,7 +19,7 @@ #include "HYDROGUI_CalculationDlg.h" #include "HYDROGUI_ObjSelector.h" -#include "HYDROGUI_Tool.h" +#include "HYDROGUI_Tool2.h" #include "HYDROGUI_DataBrowser.h" #include "HYDROGUI_DataModel.h" #include "HYDROGUI_ListSelector.h" @@ -30,6 +30,7 @@ #include "HYDROGUI_Zone.h" #include "HYDROGUI_OrderedListWidget.h" #include "HYDROGUI_PriorityWidget.h" +#include "HYDROGUI_PriorityTableModel.h" #include #include @@ -70,6 +71,7 @@ HYDROGUI_CalculationDlg::HYDROGUI_CalculationDlg( HYDROGUI_Module* theModule, co { addPage( createObjectsPage() ); addPage( createGroupsPage() ); + addPage( createLandCoverMapPage() ); addPage( createZonesPage() ); } @@ -83,13 +85,15 @@ void HYDROGUI_CalculationDlg::reset() HYDROGUI_ListModel::Object2VisibleList anObject2VisibleList; myGeomObjects->setObjects(anObject2VisibleList); myPolylineName->clear(); + myLandCoverMapName->clear(); + myStricklerTableName->clear(); myAvailableGeomObjects->clear(); // Activate the automatic mode setMode( HYDROData_CalculationCase::AUTOMATIC ); // Reset the priority widget state - QList anObjects; + QList anObjects; myPriorityWidget->setObjects( anObjects ); } @@ -237,6 +241,8 @@ QWizardPage* HYDROGUI_CalculationDlg::createObjectsPage() { connect( myGeomObjects, SIGNAL( orderChanged() ), SLOT( onOrderChanged() ) ); + connect( myPriorityWidget, SIGNAL( ruleChanged() ), SLOT( onRuleChanged() ) ); + return aPage; } @@ -303,18 +309,64 @@ QWizardPage* HYDROGUI_CalculationDlg::createGroupsPage() { return aPage; } +QWizardPage* HYDROGUI_CalculationDlg::createLandCoverMapPage() { + QWizardPage* aPage = new QWizardPage( mainFrame() ); + QFrame* aFrame = new QFrame( aPage ); + + // Top of the page + QWidget* aTopContainer = new QWidget; + + // Combo-box to choose land cover map object + QLabel* aLandCoverMapLabel = new QLabel( tr( "LAND_COVER_MAP" ), aPage ); + myLandCoverMapName = new QComboBox( aPage ); + myLandCoverMapName->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + connect( myLandCoverMapName, SIGNAL( activated( const QString & ) ), + SIGNAL( landCoverMapSelected( const QString & ) ) ); + // Combo-box to choose Strickler table name + QLabel* aStricklerTableLabel = new QLabel( tr( "STRICKLER_TABLE" ), aPage ); + myStricklerTableName = new QComboBox( aPage ); + myStricklerTableName->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + connect( myStricklerTableName, SIGNAL( activated( const QString & ) ), + SIGNAL( StricklerTableSelected( const QString & ) ) ); + + // Fill the top layout of the page + QGridLayout* aGridLayout = new QGridLayout; + aGridLayout->setMargin( 5 ); + aGridLayout->setSpacing( 5 ); + aGridLayout->setVerticalSpacing( 10 ); + aGridLayout->addWidget( aLandCoverMapLabel, 0, 0 ); + aGridLayout->addWidget( myLandCoverMapName, 0, 1 ); + aGridLayout->addWidget( aStricklerTableLabel, 1, 0 ); + aGridLayout->addWidget( myStricklerTableName, 1, 1 ); + + QVBoxLayout* aTopLayout = new QVBoxLayout; + aTopLayout->setMargin( 5 ); + aTopLayout->setSpacing( 5 ); + aTopLayout->addLayout( aGridLayout ); + aTopLayout->addStretch( 1 ); + + aTopContainer->setLayout( aTopLayout ); + + aPage->setLayout( aTopLayout ); + + return aPage; +} + QWizardPage* HYDROGUI_CalculationDlg::createZonesPage() { QWizardPage* aPage = new QWizardPage( mainFrame() ); QFrame* aFrame = new QFrame( aPage ); QGridLayout* aLayout = new QGridLayout( aPage ); + + QLabel* aResultsOnGeomObjectsLabel = new QLabel( tr( "RESULTS_ON_GEOMETRY_OBJECTS" ), aFrame ); myBrowser = new HYDROGUI_DataBrowser( module(), NULL, aPage ); myBrowser->setAutoOpenLevel( 3 ); aLayout->setMargin( 5 ); aLayout->setSpacing( 5 ); - aLayout->addWidget( myBrowser, 0, 0, 1, 2 ); + aLayout->addWidget( aResultsOnGeomObjectsLabel, 0, 0 ); + aLayout->addWidget( myBrowser, 1, 0, 1, 2 ); myBathymetryLabel = new QLabel( tr( "BATHYMETRY" ), aFrame ); myBathymetryChoice = new QComboBox( aFrame ); @@ -322,8 +374,11 @@ QWizardPage* HYDROGUI_CalculationDlg::createZonesPage() { myBathymetryChoice->setVisible( false ); myBathymetryLabel->setVisible( false ); - aLayout->addWidget( myBathymetryLabel, 1, 0 ); - aLayout->addWidget( myBathymetryChoice, 1, 1 ); + aLayout->addWidget( myBathymetryLabel, 2, 0 ); + aLayout->addWidget( myBathymetryChoice, 2, 1 ); + + QPushButton* aRegenerateBtn = new QPushButton( tr( "REGENERATE_COLORS" ), this ); + aLayout->addWidget( aRegenerateBtn, 3, 0 ); aPage->setLayout( aLayout ); @@ -335,11 +390,10 @@ QWizardPage* HYDROGUI_CalculationDlg::createZonesPage() { SIGNAL( dropped( const QList&, SUIT_DataObject*, int, Qt::DropAction ) ), SLOT( onZonesDropped( const QList&, SUIT_DataObject*, int, Qt::DropAction ) ) ); connect( myBrowser, SIGNAL( newRegion() ), this, SLOT( OnNewRegion() ) ); - + connect( aRegenerateBtn, SIGNAL( clicked() ), this, SIGNAL( regenerateColors() ) ); return aPage; } - bool HYDROGUI_CalculationDlg::acceptCurrent() const { QString anErrorMsg; @@ -439,7 +493,7 @@ void HYDROGUI_CalculationDlg::onSelected( SUIT_DataObject* theObject ) myBathymetryChoice->addItem( tr("MERGE_UNKNOWN"), HYDROData_Zone::Merge_UNKNOWN ); myBathymetryChoice->addItem( tr("MERGE_ZMIN"), HYDROData_Zone::Merge_ZMIN ); myBathymetryChoice->addItem( tr("MERGE_ZMAX"), HYDROData_Zone::Merge_ZMAX ); - QStringList aList = aZone->getAltitudes(); + QStringList aList = aZone->getObjects(); for ( int i = 0; i < aList.length(); i++ ) { myBathymetryChoice->addItem( aList.at( i ), HYDROData_Zone::Merge_Object ); @@ -502,7 +556,6 @@ void moveItems( QListWidget* theSource, QListWidget* theDest, const QStringList& void HYDROGUI_CalculationDlg::includeGeomObjects( const QStringList& theObjects ) { - HYDROGUI_ListModel::Object2VisibleList anObjectsToInclude; QList aFoundItems; foreach ( const QString& anObjName, theObjects ) { // Hide the object in the available objects list @@ -554,6 +607,27 @@ void HYDROGUI_CalculationDlg::setPolylineNames( const QStringList& theObjects, c myPolylineName->addItem( theObjects.at( i ), theObjectsEntries.at( i ) ); } } + +void HYDROGUI_CalculationDlg::setLandCoverMapsNames( const QStringList& theObjects, const QStringList& theObjectsEntries ) +{ + myLandCoverMapName->clear(); + + for ( int i = 0, n = theObjects.length(); i < n; ++i ) + { + myLandCoverMapName->addItem( theObjects.at( i ), theObjectsEntries.at( i ) ); + } +} + +void HYDROGUI_CalculationDlg::setStricklerTableNames( const QStringList& theObjects, const QStringList& theObjectsEntries ) +{ + myStricklerTableName->clear(); + + for ( int i = 0, n = theObjects.length(); i < n; ++i ) + { + myStricklerTableName->addItem( theObjects.at( i ), theObjectsEntries.at( i ) ); + } +} + void HYDROGUI_CalculationDlg::setAllGeomObjects( const QStringList& theObjects, const QStringList& theObjectsEntries ) { myAvailableGeomObjects->clear(); @@ -600,7 +674,7 @@ void HYDROGUI_CalculationDlg::setEditedObject( const Handle(HYDROData_Calculatio myValidator->setEditedObject( theCase ); // Build the calculation case subtree - module()->getDataModel()->buildCaseTree( myBrowser->root(), myEditedObject ); + module()->getDataModel()->buildCaseTree( myBrowser->root(), myEditedObject); myBrowser->updateTree(); myBrowser->openLevels(); @@ -698,10 +772,10 @@ void HYDROGUI_CalculationDlg::setEditZonesEnabled( const bool theIsEnabled ) Get included geometry objects. @return the list of geometry objects */ -QList HYDROGUI_CalculationDlg::getGeometryObjects() +QList HYDROGUI_CalculationDlg::getGeometryObjects() { QList anEntities = myGeomObjects->getObjects(); - QList anObjects; + QList anObjects; foreach ( Handle(HYDROData_Entity) anEntity, anEntities ) { Handle(HYDROData_Object) anObj = Handle(HYDROData_Object)::DownCast( anEntity ); @@ -738,5 +812,49 @@ void HYDROGUI_CalculationDlg::setRules( const HYDROData_ListOfRules& theRules ) */ void HYDROGUI_CalculationDlg::onOrderChanged() { - myPriorityWidget->setObjects( getGeometryObjects() ); + bool isConfirmed = true; + emit orderChanged( isConfirmed ); + if( isConfirmed ) + myPriorityWidget->setObjects( getGeometryObjects() ); + else + myGeomObjects->undoLastMove(); +} + +/** + Slot called when priority rule for geometry objects is changed. + */ +void HYDROGUI_CalculationDlg::onRuleChanged() +{ + bool isConfirmed = true; + emit ruleChanged( isConfirmed ); + if( !isConfirmed ) + myPriorityWidget->undoLastChange(); +} + +void HYDROGUI_CalculationDlg::setStricklerTable( const QString& theStricklerTableName, bool theBlockSignals ) +{ + bool isBlocked; + if ( theBlockSignals ) + isBlocked = myStricklerTableName->blockSignals( true ); + + myStricklerTableName->setCurrentIndex( myStricklerTableName->findText( theStricklerTableName ) ); + + if ( theBlockSignals ) + myStricklerTableName->blockSignals( isBlocked ); + else + emit StricklerTableSelected( theStricklerTableName ); +} + +void HYDROGUI_CalculationDlg::setLandCoverMap( const QString& theLandCoverMapName, bool theBlockSignals ) +{ + bool isBlocked; + if ( theBlockSignals ) + isBlocked = myLandCoverMapName->blockSignals( true ); + + myLandCoverMapName->setCurrentIndex( myLandCoverMapName->findText( theLandCoverMapName ) ); + + if ( theBlockSignals ) + myLandCoverMapName->blockSignals( isBlocked ); + else + emit landCoverMapSelected( theLandCoverMapName ); }