X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ObjSelector.cxx;h=d855bc2172c51e57b837148ce55980f2580adc74;hb=f34b90e9e4e02ba65419134d5d37a2e42aecfabf;hp=3b7e1e5939c0787fdcaeaf12d2e8647b84d7f221;hpb=fe02bb085711fbb88046f31bd30a4590d7263c7a;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ObjSelector.cxx b/src/HYDROGUI/HYDROGUI_ObjSelector.cxx index 3b7e1e59..d855bc21 100644 --- a/src/HYDROGUI/HYDROGUI_ObjSelector.cxx +++ b/src/HYDROGUI/HYDROGUI_ObjSelector.cxx @@ -26,6 +26,8 @@ #include "HYDROGUI_Module.h" #include "HYDROGUI_Tool.h" +#include + #include #include @@ -39,8 +41,14 @@ #include #include -HYDROGUI_ObjSelector::HYDROGUI_ObjSelector( HYDROGUI_Module* theModule, QWidget* theParent ) -: QAbstractButton( theParent ), myModule( theModule ) +HYDROGUI_ObjSelector::HYDROGUI_ObjSelector( HYDROGUI_Module* theModule, + const ObjectKind theObjectKind, + QWidget* theParent, + const int theObjectFlags) +: QAbstractButton( theParent ), + myObjectKind( theObjectKind ), + myModule( theModule ), + myObjectFlags( theObjectFlags ) { QHBoxLayout* aLayout = new QHBoxLayout( this ); aLayout->setMargin( 0 ); @@ -95,11 +103,44 @@ void HYDROGUI_ObjSelector::OnSelectionChanged() return; QString anObjName; - Handle(HYDROData_Object) anObject = HYDROGUI_Tool::GetSelectedObject( myModule ); + Handle(HYDROData_Entity) anObject = HYDROGUI_Tool::GetSelectedObject( myModule ); if( !anObject.IsNull() ) - anObjName = anObject->GetName(); + if( myObjectKind == KIND_UNKNOWN || myObjectKind == anObject->GetKind() ) + { + if ( myObjectKind == KIND_POLYLINEXY && ( myObjectFlags & ClosedPolyline ) ) { + // check if the polyline is closed + Handle(HYDROData_PolylineXY) aPolylineObj = + Handle(HYDROData_PolylineXY)::DownCast( anObject ); + if ( !aPolylineObj.IsNull() && aPolylineObj->IsClosed() ) { + anObjName = aPolylineObj->GetName(); + } + } else { + anObjName = anObject->GetName(); + } + + // Check if the same object has not been selected in other selectors of the same parent widget. + if ( !anObjName.isEmpty() ) + { + QList aSelectors = parentWidget()->findChildren(); + foreach( HYDROGUI_ObjSelector* aSelector, aSelectors ) + { + if( aSelector != this && ( aSelector->GetName() == anObjName ) ) + { + // Forbid selection of the same object + emit alreadySelected( anObjName ); + return; + } + } + } + } + + SetName( anObjName ); +} - myObjName->setText( anObjName ); +void HYDROGUI_ObjSelector::SetName( const QString& theName ) +{ + myObjName->setText( theName ); + emit selectionChanged(); } QString HYDROGUI_ObjSelector::GetName() const @@ -112,3 +153,8 @@ void HYDROGUI_ObjSelector::Clear() myObjName->clear(); myBtn->setChecked( false ); } + +void HYDROGUI_ObjSelector::SetChecked( const bool theState ) +{ + myBtn->setChecked( theState ); +}