#include "HYDROGUI_CalculationDlg.h"
+#include "HYDROGUI_ObjSelector.h"
#include "HYDROGUI_Tool.h"
#include <SUIT_FileDlg.h>
#include <QLabel>
#include <QLayout>
#include <QLineEdit>
+#include <QListWidget>
#include <QPicture>
+#include <QPushButton>
#include <QToolButton>
HYDROGUI_CalculationDlg::HYDROGUI_CalculationDlg( HYDROGUI_Module* theModule, const QString& theTitle )
: HYDROGUI_InputPanel( theModule, theTitle )
{
// Calculation name
- myObjectNameGroup = new QGroupBox( tr( "CALCULATION_NAME" ) );
+ myObjectNameGroup = new QGroupBox( tr( "CALCULATION_NAME" ), mainFrame() );
myObjectName = new QLineEdit( myObjectNameGroup );
aNameLayout->addWidget( new QLabel( tr( "NAME" ), myObjectNameGroup ) );
aNameLayout->addWidget( myObjectName );
+
+ // Calculation boundary line
+ QGroupBox* aBndGroup = new QGroupBox( tr( "CALCULATION_BOUNDARY" ), mainFrame() );
+
+ myBndPolyline = new HYDROGUI_ObjSelector( theModule, KIND_POLYLINE, aBndGroup );
+
+ QBoxLayout* aBndLayout = new QHBoxLayout( aBndGroup );
+ aBndLayout->setMargin( 5 );
+ aBndLayout->setSpacing( 5 );
+ aBndLayout->addWidget( new QLabel( tr( "BOUNDARY_POLYLINE" ), aBndGroup ) );
+ aBndLayout->addWidget( myBndPolyline );
+
+
+ // Calculation zones
+ QGroupBox* aZonesGroup = new QGroupBox( tr( "CALCULATION_ZONES" ), mainFrame() );
+
+ myZones = new QListWidget( aZonesGroup );
+ myZones->setSelectionMode( QListWidget::SingleSelection );
+ myZones->setEditTriggers( QListWidget::NoEditTriggers );
+ myZones->setViewMode( QListWidget::ListMode );
+
+ myRegions = new QListWidget( aZonesGroup );
+ myRegions->setSelectionMode( QListWidget::SingleSelection );
+ myRegions->setEditTriggers( QListWidget::NoEditTriggers );
+ myRegions->setViewMode( QListWidget::ListMode );
+
+ mySplittedZonesPrefix = new QLineEdit( aZonesGroup );
+
+ QPushButton* aSplitBtn = new QPushButton( tr( "SPLIT_REFERENCE_ZONES" ), aZonesGroup );
+
+ QGridLayout* aZonesLayout = new QGridLayout( aZonesGroup );
+ aZonesLayout->setMargin( 5 );
+ aZonesLayout->setSpacing( 5 );
+ aZonesLayout->addWidget( new QLabel( tr( "CALCULATION_REFERENCE_ZONES" ), aZonesGroup ), 0, 0, 1, 2 );
+ aZonesLayout->addWidget( myZones, 1, 0, 1, 2 );
+ aZonesLayout->addWidget( new QLabel( tr( "CALCULATION_REGIONS" ), aZonesGroup ), 2, 0, 1, 2 );
+ aZonesLayout->addWidget( myRegions, 3, 0, 1, 2 );
+ aZonesLayout->addWidget( new QLabel( tr( "PREFIX_REGIONS" ), aZonesGroup ), 4, 0 );
+ aZonesLayout->addWidget( mySplittedZonesPrefix, 4, 1 );
+ aZonesLayout->addWidget( aSplitBtn, 5, 0, 1, 2 );
+
// Common
addWidget( myObjectNameGroup );
+ addWidget( aBndGroup );
+ addWidget( aZonesGroup );
addStretch();
+
+
+ // Connect signals and slots
+ connect( aSplitBtn, SIGNAL( clicked( bool ) ), this, SIGNAL( SplitZones() ) );
}
HYDROGUI_CalculationDlg::~HYDROGUI_CalculationDlg()
void HYDROGUI_CalculationDlg::reset()
{
myObjectName->clear();
+
+ myBndPolyline->Clear();
+
+ myZones->clear();
+ myRegions->clear();
+
+ setSplitZonesPrefix( tr( "DEFAULT_PREFIX_REGIONS" ) );
}
void HYDROGUI_CalculationDlg::setObjectName( const QString& theName )
return myObjectName->text();
}
+void HYDROGUI_CalculationDlg::setPolylineName( const QString& theName )
+{
+ myBndPolyline->SetName( theName );
+}
+
+QString HYDROGUI_CalculationDlg::getPolylineName() const
+{
+ return myBndPolyline->GetName();
+}
+
+void HYDROGUI_CalculationDlg::setZones( const QStringList& theZones )
+{
+ myZones->clear();
+
+ for ( int i = 0, n = theZones.length(); i < n; ++i )
+ {
+ QString aZoneName = theZones.at( i );
+
+ QListWidgetItem* aListItem = new QListWidgetItem( aZoneName, myZones );
+ aListItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable );
+ aListItem->setCheckState( Qt::Unchecked );
+ }
+}
+
+void HYDROGUI_CalculationDlg::setSelectedZones( const QStringList& theZones )
+{
+ for ( int i = 0, n = theZones.length(); i < n; ++i )
+ {
+ QString aZoneName = theZones.at( i );
+
+ QList<QListWidgetItem *> anItems =
+ myZones->findItems( aZoneName, Qt::MatchFixedString | Qt::MatchCaseSensitive );
+ if ( anItems.isEmpty() )
+ continue;
+
+ QListWidgetItem* aListItem = anItems.first();
+ if ( !aListItem )
+ continue;
+
+ aListItem->setCheckState( Qt::Checked );
+ }
+}
+
+QStringList HYDROGUI_CalculationDlg::getSelectedZones() const
+{
+ QStringList aResList;
+
+ for ( int i = 0, n = myZones->count(); i < n; ++i )
+ {
+ QListWidgetItem* aListItem = myZones->item( i );
+ if ( !aListItem || aListItem->checkState() != Qt::Checked )
+ continue;
+
+ QString aSelZoneName = aListItem->text();
+ aResList.append( aSelZoneName );
+ }
+
+ return aResList;
+}
+
+void HYDROGUI_CalculationDlg::setRegions( const QStringList& theRegions )
+{
+ myRegions->clear();
+ for ( int i = 0, n = theRegions.length(); i < n; ++i )
+ {
+ QString aRegionName = theRegions.at( i );
+ QListWidgetItem* aListItem = new QListWidgetItem( aRegionName, myRegions );
+ aListItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
+ }
+}
+
+QStringList HYDROGUI_CalculationDlg::getRegions() const
+{
+ QStringList aResList;
+
+ for ( int i = 0, n = myRegions->count(); i < n; ++i )
+ {
+ QListWidgetItem* aListItem = myRegions->item( i );
+ if ( !aListItem )
+ continue;
+
+ QString aRegionName = aListItem->text();
+ aResList.append( aRegionName );
+ }
+
+ return aResList;
+}
+
+void HYDROGUI_CalculationDlg::setSplitZonesPrefix( const QString& theName )
+{
+ mySplittedZonesPrefix->setText( theName );
+}
+
+QString HYDROGUI_CalculationDlg::getSplitZonesPrefix() const
+{
+ QString aPrefix = mySplittedZonesPrefix->text();
+ if ( aPrefix.isEmpty() )
+ aPrefix = tr( "DEFAULT_PREFIX_REGIONS" );
+ return aPrefix;
+}