X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ObjSelector.cxx;h=2b4c4a7d9d98f71acc8e609793abb54e24b1f863;hb=3524c916e16d5c5c545c0ddbda4b570139612afe;hp=19ddb76ec31d5b748bccaf6063817fc9a7315983;hpb=84f8b4a57d3cdad820bc1333a5066699cd1c8ae3;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ObjSelector.cxx b/src/HYDROGUI/HYDROGUI_ObjSelector.cxx index 19ddb76e..2b4c4a7d 100644 --- a/src/HYDROGUI/HYDROGUI_ObjSelector.cxx +++ b/src/HYDROGUI/HYDROGUI_ObjSelector.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 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 @@ -6,7 +6,7 @@ // 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 @@ -26,6 +26,8 @@ #include "HYDROGUI_Module.h" #include "HYDROGUI_Tool.h" +#include + #include #include @@ -41,10 +43,12 @@ HYDROGUI_ObjSelector::HYDROGUI_ObjSelector( HYDROGUI_Module* theModule, const ObjectKind theObjectKind, - QWidget* theParent ) + QWidget* theParent, + const int theObjectFlags) : QAbstractButton( theParent ), myObjectKind( theObjectKind ), - myModule( theModule ) + myModule( theModule ), + myObjectFlags( theObjectFlags ) { QHBoxLayout* aLayout = new QHBoxLayout( this ); aLayout->setMargin( 0 ); @@ -102,7 +106,33 @@ void HYDROGUI_ObjSelector::OnSelectionChanged() Handle(HYDROData_Entity) anObject = HYDROGUI_Tool::GetSelectedObject( myModule ); if( !anObject.IsNull() ) if( myObjectKind == KIND_UNKNOWN || myObjectKind == anObject->GetKind() ) - anObjName = anObject->GetName(); + { + 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 ); } @@ -110,6 +140,7 @@ void HYDROGUI_ObjSelector::OnSelectionChanged() void HYDROGUI_ObjSelector::SetName( const QString& theName ) { myObjName->setText( theName ); + emit selectionChanged(); } QString HYDROGUI_ObjSelector::GetName() const