#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"
#include "HYDROGUI_Zone.h"
#include "HYDROGUI_OrderedListWidget.h"
#include "HYDROGUI_PriorityWidget.h"
+#include "HYDROGUI_PriorityTableModel.h"
#include <HYDROData_Document.h>
#include <HYDROData_Entity.h>
{
addPage( createObjectsPage() );
addPage( createGroupsPage() );
+ addPage( createLandCoverMapPage() );
addPage( createZonesPage() );
}
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<Handle(HYDROData_Object)> anObjects;
+ QList<Handle(HYDROData_Entity)> anObjects;
myPriorityWidget->setObjects( anObjects );
}
connect( myGeomObjects, SIGNAL( orderChanged() ), SLOT( onOrderChanged() ) );
+ connect( myPriorityWidget, SIGNAL( ruleChanged() ), SLOT( onRuleChanged() ) );
+
return aPage;
}
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 );
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 );
SIGNAL( dropped( const QList<SUIT_DataObject*>&, SUIT_DataObject*, int, Qt::DropAction ) ),
SLOT( onZonesDropped( const QList<SUIT_DataObject*>&, 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;
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 );
void HYDROGUI_CalculationDlg::includeGeomObjects( const QStringList& theObjects )
{
- HYDROGUI_ListModel::Object2VisibleList anObjectsToInclude;
QList<QListWidgetItem*> aFoundItems;
foreach ( const QString& anObjName, theObjects ) {
// Hide the object in the available objects list
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();
void HYDROGUI_CalculationDlg::setEditedObject( const Handle(HYDROData_CalculationCase) theCase )
{
myEditedObject = theCase;
- myValidator->setEditedObject( theCase );
+ myValidator->setEditedObject( myEditedObject );
// Build the calculation case subtree
- module()->getDataModel()->buildCaseTree( myBrowser->root(), myEditedObject );
+ module()->getDataModel()->buildCaseTree( myBrowser->root(), myEditedObject);
myBrowser->updateTree();
myBrowser->openLevels();
Get included geometry objects.
@return the list of geometry objects
*/
-QList<Handle(HYDROData_Object)> HYDROGUI_CalculationDlg::getGeometryObjects()
+QList<Handle(HYDROData_Entity)> HYDROGUI_CalculationDlg::getGeometryObjects()
{
QList<Handle(HYDROData_Entity)> anEntities = myGeomObjects->getObjects();
- QList<Handle(HYDROData_Object)> anObjects;
+ QList<Handle(HYDROData_Entity)> anObjects;
foreach ( Handle(HYDROData_Entity) anEntity, anEntities ) {
Handle(HYDROData_Object) anObj = Handle(HYDROData_Object)::DownCast( anEntity );
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 );
+}