X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_StreamDlg.cxx;h=95f0750bda8f08194e944d5882ba655a72347a68;hb=541470db80142c32e3812a7b79e26727df1dcece;hp=b2aa1e1a0a01681726e39594f03e85df268099d1;hpb=8c70d5cb1e04edf503afb50caf735fa1c4f45b25;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_StreamDlg.cxx b/src/HYDROGUI/HYDROGUI_StreamDlg.cxx index b2aa1e1a..95f0750b 100644 --- a/src/HYDROGUI/HYDROGUI_StreamDlg.cxx +++ b/src/HYDROGUI/HYDROGUI_StreamDlg.cxx @@ -1,12 +1,8 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 EDF-R&D // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -22,14 +18,23 @@ #include "HYDROGUI_StreamDlg.h" +#include "HYDROGUI_ListSelector.h" +#include "HYDROGUI_Module.h" +#include "HYDROGUI_OrderedListWidget.h" #include "HYDROGUI_Tool.h" +#include + +#include +#include + #include #include #include #include #include #include +#include HYDROGUI_StreamDlg::HYDROGUI_StreamDlg( HYDROGUI_Module* theModule, const QString& theTitle ) : HYDROGUI_InputPanel( theModule, theTitle ) @@ -48,30 +53,53 @@ HYDROGUI_StreamDlg::HYDROGUI_StreamDlg( HYDROGUI_Module* theModule, const QStrin // Stream parameters QGroupBox* aParamGroup = new QGroupBox( tr( "STREAM_PARAMETERS" ), mainFrame() ); - myAxises = new QComboBox( aParamGroup ); - myAxises->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - myProfiles = new QListWidget( aParamGroup ); - myProfiles->setSelectionMode( QListWidget::SingleSelection ); - myProfiles->setEditTriggers( QListWidget::NoEditTriggers ); - myProfiles->setViewMode( QListWidget::ListMode ); - myProfiles->setSortingEnabled( false ); + myAxes = new QComboBox( aParamGroup ); + myAxes->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); + QBoxLayout* anAxisLayout = new QHBoxLayout(); + anAxisLayout->addWidget( new QLabel( tr( "STREAM_HYDRAULIC_AXIS" ) ) ); + anAxisLayout->addWidget( myAxes ); + + myProfiles = new HYDROGUI_OrderedListWidget( aParamGroup, 0 ); + myProfiles->setHiddenObjectsShown(true); + myProfiles->setVisibilityIconShown(false); + myProfiles->setContentsMargins(QMargins()); + myProfiles->setOrderingEnabled( false ); + + myAddButton = new QPushButton( aParamGroup ); + myAddButton->setText( tr("ADD") ); + myRemoveButton = new QPushButton( aParamGroup ); + myRemoveButton->setText( tr("REMOVE") ); + QBoxLayout* aButtonsLayout = new QHBoxLayout(); + aButtonsLayout->addWidget( myAddButton ); + aButtonsLayout->addWidget( myRemoveButton ); + aButtonsLayout->addStretch(); - QGridLayout* aParamLayout = new QGridLayout( aParamGroup ); + QBoxLayout* aParamLayout = new QVBoxLayout(); aParamLayout->setMargin( 5 ); aParamLayout->setSpacing( 5 ); - aParamLayout->addWidget( new QLabel( tr( "STREAM_HYDRAULIC_AXIS" ), aParamGroup ), 0, 0 ); - aParamLayout->addWidget( myAxises, 0, 1 ); - aParamLayout->addWidget( myProfiles, 1, 0, 1, 2 ); + aParamLayout->addLayout( anAxisLayout ); + aParamLayout->addWidget( myProfiles ); + aParamLayout->addLayout( aButtonsLayout ); + + aParamGroup->setLayout( aParamLayout ); // Common addWidget( myObjectNameGroup ); addWidget( aParamGroup ); - addStretch(); + // Create selector + if ( module() ) { + HYDROGUI_ListSelector* aListSelector = + new HYDROGUI_ListSelector( myProfiles, module()->getApp()->selectionMgr() ); + aListSelector->setAutoBlock( true ); + } + // Connect signals and slots - connect( myAxises, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onStreamDefChanged() ) ); + connect( myAxes, SIGNAL( currentIndexChanged( const QString & ) ), + this, SIGNAL( AxisChanged( const QString& ) ) ); + connect( myAddButton, SIGNAL( clicked() ), this, SIGNAL( AddProfiles() ) ); + connect( myRemoveButton, SIGNAL( clicked() ), this, SLOT( onRemoveProfiles() ) ); } HYDROGUI_StreamDlg::~HYDROGUI_StreamDlg() @@ -84,12 +112,12 @@ void HYDROGUI_StreamDlg::reset() myObjectName->clear(); - myAxises->clear(); - myProfiles->clear(); + myAxes->clear(); + myProfiles->setObjects( HYDROGUI_ListModel::Object2VisibleList() ); + myAddButton->setEnabled( false ); + myRemoveButton->setEnabled( false ); blockSignals( isBlocked ); - - onStreamDefChanged(); } void HYDROGUI_StreamDlg::setObjectName( const QString& theName ) @@ -106,72 +134,57 @@ void HYDROGUI_StreamDlg::setAxisNames( const QStringList& theAxises ) { bool isBlocked = blockSignals( true ); - myAxises->clear(); - myAxises->addItems( theAxises ); + myAxes->clear(); + myAxes->addItems( theAxises ); blockSignals( isBlocked ); } void HYDROGUI_StreamDlg::setAxisName( const QString& theName ) { - int aNewIdx = myAxises->findText( theName ); - if ( aNewIdx != myAxises->currentIndex() ) - { - myAxises->setCurrentIndex( aNewIdx ); - } - else - { - onStreamDefChanged(); + bool isBlocked = blockSignals( true ); + + int aNewId = myAxes->findText( theName ); + if ( aNewId != myAxes->currentIndex() ) { + myAxes->setCurrentIndex( aNewId ); } + myAddButton->setEnabled( myAxes->currentIndex() > -1 ); + + blockSignals( isBlocked ); } QString HYDROGUI_StreamDlg::getAxisName() const { - return myAxises->currentText(); + return myAxes->currentText(); } -void HYDROGUI_StreamDlg::setSelectedProfiles( const QStringList& theProfiles ) +void HYDROGUI_StreamDlg::setProfiles( const QStringList& theProfiles ) { bool isBlocked = blockSignals( true ); myProfiles->setUpdatesEnabled( false ); - myProfiles->clear(); - for ( int i = 0, n = theProfiles.length(); i < n; ++i ) - { - const QString& aProfileName = theProfiles.at( i ); - QListWidgetItem* aListItem = new QListWidgetItem( aProfileName, myProfiles ); - aListItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable ); + HYDROGUI_ListModel::Object2VisibleList aProfiles; + foreach ( const QString& aProfileName, theProfiles ) { + Handle(HYDROData_Profile) anObject = Handle(HYDROData_Profile)::DownCast( + HYDROGUI_Tool::FindObjectByName( module(), aProfileName ) ); + if ( !anObject.IsNull() ) { + aProfiles.append( HYDROGUI_ListModel::Object2Visible( anObject, true ) ); + } } - myProfiles->setUpdatesEnabled( true ); + myProfiles->setObjects( aProfiles ); - blockSignals( isBlocked ); - - onStreamDefChanged(); -} + myRemoveButton->setEnabled( myProfiles->getObjects().count() > 0 ); -QStringList HYDROGUI_StreamDlg::getSelectedProfiles() const -{ - QStringList aProfiles; - - for ( int i = 0, n = myProfiles->count(); i < n; ++i ) - { - QListWidgetItem* aListItem = myProfiles->item( i ); - if ( !aListItem ) - continue; - - QString aProfileName = aListItem->text(); - aProfiles << aProfileName; - } + myProfiles->setUpdatesEnabled( true ); - return aProfiles; + blockSignals( isBlocked ); } -void HYDROGUI_StreamDlg::onStreamDefChanged() +void HYDROGUI_StreamDlg::onRemoveProfiles() { - if ( signalsBlocked() ) - return; + QStringList aSelectedProfiles = myProfiles->getSelectedNames(); - emit CreatePreview(); + emit RemoveProfiles( aSelectedProfiles ); }