From: mkr Date: Fri, 19 Jun 2015 12:22:04 +0000 (+0300) Subject: Merge branch 'BR_LAND_COVER' of ssh://git.salome-platform.org/modules/hydro into... X-Git-Tag: v1.4.2~53^2~3 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=69048e668dcd9f681a48054df3b01a84d7ed773e;hp=c8e83d6c803519b483f3b1c03a7704710e0874fd;p=modules%2Fhydro.git Merge branch 'BR_LAND_COVER' of ssh://git.salome-platform.org/modules/hydro into BR_LAND_COVER --- diff --git a/src/HYDROGUI/HYDROGUI_CalculationDlg.cxx b/src/HYDROGUI/HYDROGUI_CalculationDlg.cxx index 1b5fb33b..5d3481e6 100644 --- a/src/HYDROGUI/HYDROGUI_CalculationDlg.cxx +++ b/src/HYDROGUI/HYDROGUI_CalculationDlg.cxx @@ -585,7 +585,7 @@ void HYDROGUI_CalculationDlg::onZonesDropped( const QList& the HYDROGUI_Region* aRegion = dynamic_cast(theTargetParent); if ( aRegion ) { - emit moveZones( theTargetParent, aZonesList ); + emit moveZones( theTargetParent, aZonesList, false ); } } } @@ -658,12 +658,49 @@ void HYDROGUI_CalculationDlg::onSelected( SUIT_DataObject* theObject ) void HYDROGUI_CalculationDlg::onLandCoverZoneSelected( SUIT_DataObject* theObject ) { - // TODO: implement this function + bool doShow = false; + HYDROGUI_Zone* aZone = dynamic_cast( theObject ); + if ( aZone ) + { + doShow = aZone->isMergingNeed(); + } + + if ( doShow ) + { + // Fill the merge type combo box + bool prevBlock = myStricklerTypeChoice->blockSignals( true ); + myCurrentZone = aZone; + myStricklerTypeChoice->clear(); + myStricklerTypeChoice->addItem( tr("MERGE_UNKNOWN"), HYDROData_Zone::Merge_UNKNOWN ); + /*QStringList aList = aZone->getStricklerTypes(); + for ( int i = 0; i < aList.length(); i++ ) + { + myStricklerTypeChoice->addItem( aList.at( i ), HYDROData_Zone::Merge_Object ); + } + // Select the current choice if any + int aCurIndex = 0; + switch ( aZone->getMergeType() ) + { + case HYDROData_Zone::Merge_Object: + aCurIndex = 1 + aList.indexOf( aZone->text( HYDROGUI_DataObject::AltitudeObjId ) ); + break; + default: + aCurIndex = 0; // Select unknown by default + } + myStricklerTypeChoice->setCurrentIndex( aCurIndex );*/ + myStricklerTypeChoice->blockSignals( prevBlock ); + } + + myStricklerTypeChoice->setVisible( doShow ); + myStricklerTypeChoice->setEnabled( getLandCoverMode() == HYDROData_CalculationCase::MANUAL ); + myStricklerTypeChoice->setVisible( doShow ); } void HYDROGUI_CalculationDlg::onMergeStricklerTypeSelected( int theIndex ) { - // TODO: implement this function + int aType = myStricklerTypeChoice->itemData( theIndex ).toInt(); + QString aText = myStricklerTypeChoice->itemText( theIndex ); + emit setMergeStricklerType( aType, aText ); } void HYDROGUI_CalculationDlg::onLandCoverZonesDropped( const QList& theList, @@ -843,7 +880,7 @@ void HYDROGUI_CalculationDlg::setEditedObject( const Handle(HYDROData_Calculatio // Build the calculation case subtree module()->getDataModel()->buildCaseTree( myBrowser->root(), myEditedObject, false ); - + myBrowser->updateTree(); myBrowser->openLevels(); myBrowser->adjustColumnsWidth(); @@ -977,7 +1014,7 @@ void HYDROGUI_CalculationDlg::setEditZonesEnabled( const bool theIsEnabled ) Enable/disable land covers drag'n'drop and renaming. @param theIsEnabled if true - land covers drag'n'drop and renaming will be enabled */ -void HYDROGUI_CalculationDlg::setEditLandCoversEnabled( const bool theIsEnabled ) +void HYDROGUI_CalculationDlg::setEditLandCoverZonesEnabled( const bool theIsEnabled ) { myLandCoverBrowser->setReadOnly( !theIsEnabled ); } diff --git a/src/HYDROGUI/HYDROGUI_CalculationDlg.h b/src/HYDROGUI/HYDROGUI_CalculationDlg.h index da597e86..d6105168 100644 --- a/src/HYDROGUI/HYDROGUI_CalculationDlg.h +++ b/src/HYDROGUI/HYDROGUI_CalculationDlg.h @@ -78,7 +78,7 @@ public: void setAvailableGroups( const QStringList& ); void setEditZonesEnabled( const bool theIsEnabled ); - void setEditLandCoversEnabled( const bool theIsEnabled ); + void setEditLandCoverZonesEnabled( const bool theIsEnabled ); HYDROData_ListOfRules getRules() const; void setRules( const HYDROData_ListOfRules& theRules ) const; @@ -150,7 +150,7 @@ signals: void boundarySelected( const QString & theObjName ); void setMergeType( int theMergeType, QString& theBathymetryName ); void createRegion( const QList& theZonesList ); - void moveZones( SUIT_DataObject* theRegion, const QList& theZonesList ); + void moveZones( SUIT_DataObject* theRegion, const QList& theZonesList, bool theLandCover ); void clickedInZonesBrowser( SUIT_DataObject* ); void changeLandCoverMode( int theMode ); @@ -163,6 +163,7 @@ signals: void createLandCoverRegion( const QList& theLandCoverZonesList ); void StricklerTableSelected( const QString & theObjName ); + void setMergeStricklerType( int theMergeType, QString& theStricklerTypeName ); protected: diff --git a/src/HYDROGUI/HYDROGUI_CalculationOp.cxx b/src/HYDROGUI/HYDROGUI_CalculationOp.cxx index a63a4354..e00d3a44 100644 --- a/src/HYDROGUI/HYDROGUI_CalculationOp.cxx +++ b/src/HYDROGUI/HYDROGUI_CalculationOp.cxx @@ -223,8 +223,9 @@ HYDROGUI_InputPanel* HYDROGUI_CalculationOp::createInputPanel() const connect( aPanel, SIGNAL( Back( const int ) ), SLOT( onHideZones( const int ) ) ); //connect( aPanel, SIGNAL( clicked( SUIT_DataObject* ) ), SLOT( onSelected( SUIT_DataObject* ) ) ); connect( aPanel, SIGNAL( setMergeType( int, QString& ) ), SLOT( onSetMergeType( int, QString& ) ) ); - connect( aPanel, SIGNAL( moveZones( SUIT_DataObject*, const QList& ) ), - SLOT( onMoveZones( SUIT_DataObject*, const QList& ) ) ); + connect( aPanel, SIGNAL( setMergeStricklerType( int, QString& ) ), SLOT( onSetMergeStricklerType( int, QString& ) ) ); + connect( aPanel, SIGNAL( moveZones( SUIT_DataObject*, const QList&, bool ) ), + SLOT( onMoveZones( SUIT_DataObject*, const QList&, bool ) ) ); connect( aPanel, SIGNAL( createRegion( const QList& ) ), SLOT( onCreateRegion( const QList& ) ) ); connect( aPanel, SIGNAL( clickedInZonesBrowser( SUIT_DataObject* ) ), @@ -460,7 +461,9 @@ void HYDROGUI_CalculationOp::onClickedInZonesBrowser( SUIT_DataObject* theItem ) } } -void HYDROGUI_CalculationOp::onMoveZones( SUIT_DataObject* theRegionItem, const QList& theZonesList ) +void HYDROGUI_CalculationOp::onMoveZones( SUIT_DataObject* theRegionItem, + const QList& theZonesList, + bool theLandCover ) { HYDROGUI_Region* aRegion = dynamic_cast(theRegionItem); if ( aRegion ) @@ -483,9 +486,9 @@ void HYDROGUI_CalculationOp::onMoveZones( SUIT_DataObject* theRegionItem, const ::qobject_cast( inputPanel() ); if ( aPanel ) { - aPanel->refreshZonesBrowser(); + theLandCover ? aPanel->refreshLandCoverZonesBrowser(): aPanel->refreshZonesBrowser(); } - createPreview( false ); + createPreview( theLandCover ); } } } @@ -538,6 +541,26 @@ void HYDROGUI_CalculationOp::onSetMergeType( int theMergeType, QString& theMerge } } +void HYDROGUI_CalculationOp::onSetMergeStricklerType( int theMergeType, QString& theStricklerTypeName ) +{ + HYDROGUI_CalculationDlg* aPanel = + ::qobject_cast( inputPanel() ); + if ( aPanel ) + { + HYDROGUI_Zone* aZone = aPanel->getCurrentZone(); + if ( aZone ) + { + aZone->setMergeType( theMergeType, theStricklerTypeName ); + HYDROGUI_Shape* aShape = module()->getObjectShape( HYDROGUI_Module::VMR_PreviewCaseZones, aZone->modelObject() ); + if ( aShape ) + { + aShape->update( true, false ); + } + } + aPanel->refreshLandCoverZonesBrowser(); + } +} + void HYDROGUI_CalculationOp::onAddObjects() { HYDROGUI_CalculationDlg* aPanel = @@ -1040,7 +1063,7 @@ void HYDROGUI_CalculationOp::onNext( const int theIndex ) } } } - aPanel->setEditLandCoversEnabled( aMode == HYDROData_CalculationCase::MANUAL ); + aPanel->setEditLandCoverZonesEnabled( aMode == HYDROData_CalculationCase::MANUAL ); bool anIsToUpdateOb = false; if ( myEditedObject->IsMustBeUpdated() ) diff --git a/src/HYDROGUI/HYDROGUI_CalculationOp.h b/src/HYDROGUI/HYDROGUI_CalculationOp.h index 6629e1c1..263efd4f 100644 --- a/src/HYDROGUI/HYDROGUI_CalculationOp.h +++ b/src/HYDROGUI/HYDROGUI_CalculationOp.h @@ -99,11 +99,16 @@ protected slots: * Set the given bathymetry/type merge type to the current zone. */ void onSetMergeType( int theMergeType, QString& theMergeObjectName ); + /** + * Set the given Strickler merge type to the current zone. + */ + void onSetMergeStricklerType( int theMergeType, QString& theStricklerTypeName ); /** * Selected zones are moved to the existing region. */ void onMoveZones( SUIT_DataObject* theRegionItem, - const QList& theZonesList ); + const QList& theZonesList, + bool theLandCover ); /** * Selected zones are moved to the new region to be created. */