HYDROGUI_Region* aRegion = dynamic_cast<HYDROGUI_Region*>(theTargetParent);
if ( aRegion )
{
- emit moveZones( theTargetParent, aZonesList );
+ emit moveZones( theTargetParent, aZonesList, false );
}
}
}
void HYDROGUI_CalculationDlg::onLandCoverZoneSelected( SUIT_DataObject* theObject )
{
- // TODO: implement this function
+ bool doShow = false;
+ HYDROGUI_Zone* aZone = dynamic_cast<HYDROGUI_Zone*>( 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<SUIT_DataObject*>& theList,
// Build the calculation case subtree
module()->getDataModel()->buildCaseTree( myBrowser->root(), myEditedObject );
+ // TODO: build subtree items corresponding to regions constructed on land covers
+ //...
myBrowser->updateTree();
myBrowser->openLevels();
myBrowser->adjustColumnsWidth();
myBrowser->setAutoUpdate( true );
myBrowser->setUpdateModified( true );
+
+ myLandCoverBrowser->updateTree();
+ myLandCoverBrowser->openLevels();
+ myLandCoverBrowser->adjustColumnsWidth();
+ myLandCoverBrowser->setAutoUpdate( true );
+ myLandCoverBrowser->setUpdateModified( true );
}
HYDROGUI_Zone* HYDROGUI_CalculationDlg::getCurrentZone() const
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 );
}
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;
void boundarySelected( const QString & theObjName );
void setMergeType( int theMergeType, QString& theBathymetryName );
void createRegion( const QList<SUIT_DataObject*>& theZonesList );
- void moveZones( SUIT_DataObject* theRegion, const QList<SUIT_DataObject*>& theZonesList );
+ void moveZones( SUIT_DataObject* theRegion, const QList<SUIT_DataObject*>& theZonesList, bool theLandCover );
void clickedInZonesBrowser( SUIT_DataObject* );
void changeLandCoverMode( int theMode );
void createLandCoverRegion( const QList<SUIT_DataObject*>& theLandCoverZonesList );
void StricklerTableSelected( const QString & theObjName );
+ void setMergeStricklerType( int theMergeType, QString& theStricklerTypeName );
protected:
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<SUIT_DataObject*>& ) ),
- SLOT( onMoveZones( SUIT_DataObject*, const QList<SUIT_DataObject*>& ) ) );
+ connect( aPanel, SIGNAL( setMergeStricklerType( int, QString& ) ), SLOT( onSetMergeStricklerType( int, QString& ) ) );
+ connect( aPanel, SIGNAL( moveZones( SUIT_DataObject*, const QList<SUIT_DataObject*>&, bool ) ),
+ SLOT( onMoveZones( SUIT_DataObject*, const QList<SUIT_DataObject*>&, bool ) ) );
connect( aPanel, SIGNAL( createRegion( const QList<SUIT_DataObject*>& ) ),
SLOT( onCreateRegion( const QList<SUIT_DataObject*>& ) ) );
connect( aPanel, SIGNAL( clickedInZonesBrowser( SUIT_DataObject* ) ),
}
}
-void HYDROGUI_CalculationOp::onMoveZones( SUIT_DataObject* theRegionItem, const QList<SUIT_DataObject*>& theZonesList )
+void HYDROGUI_CalculationOp::onMoveZones( SUIT_DataObject* theRegionItem,
+ const QList<SUIT_DataObject*>& theZonesList,
+ bool theLandCover )
{
HYDROGUI_Region* aRegion = dynamic_cast<HYDROGUI_Region*>(theRegionItem);
if ( aRegion )
::qobject_cast<HYDROGUI_CalculationDlg*>( inputPanel() );
if ( aPanel )
{
- aPanel->refreshZonesBrowser();
+ theLandCover ? aPanel->refreshLandCoverZonesBrowser(): aPanel->refreshZonesBrowser();
}
- createPreview( false );
+ createPreview( theLandCover );
}
}
}
}
}
+void HYDROGUI_CalculationOp::onSetMergeStricklerType( int theMergeType, QString& theStricklerTypeName )
+{
+ HYDROGUI_CalculationDlg* aPanel =
+ ::qobject_cast<HYDROGUI_CalculationDlg*>( inputPanel() );
+ if ( aPanel )
+ {
+ HYDROGUI_Zone* aZone = aPanel->getCurrentZone();
+ if ( aZone )
+ {
+ aZone->setMergeStricklerType( 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 =
}
}
}
- aPanel->setEditLandCoversEnabled( aMode == HYDROData_CalculationCase::MANUAL );
+ aPanel->setEditLandCoverZonesEnabled( aMode == HYDROData_CalculationCase::MANUAL );
bool anIsToUpdateOb = false;
if ( myEditedObject->IsMustBeUpdated() )
* Set the given bathymetry merge type to the current zone.
*/
void onSetMergeType( int theMergeType, QString& theBathymetryName );
+ /**
+ * 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<SUIT_DataObject*>& theZonesList );
+ const QList<SUIT_DataObject*>& theZonesList,
+ bool theLandCover );
/**
* Selected zones are moved to the new region to be created.
*/
}
}
+void HYDROGUI_Zone::setMergeStricklerType( int theMergeType, QString theStricklerTypeName)
+{
+ // TODO: implement this method
+}
+
/*!
\brief Check if this object is can't be renamed in place
* If the type is Merge_Object then use the second parameter to set the merge bathymetry.
*/
void setMergeType( int theMergeType, QString theAltitudeName = QString() );
+ /**
+ * Set the merging type for conflict strickler types.
+ * If the type is Merge_Object then use the second parameter to set the merge Strickler type.
+ */
+ void setMergeStricklerType( int theMergeType, QString theStricklerTypeName = QString() );
private:
QString getRefObjectNames() const;