From: mzn Date: Fri, 6 Dec 2013 12:05:48 +0000 (+0000) Subject: Allow only closed polylines for split images operation. X-Git-Tag: BR_hydro_v_0_4~1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;ds=sidebyside;h=c058eaecee25b3958a7207a61aa530fed32b1968;p=modules%2Fhydro.git Allow only closed polylines for split images operation. Bug #148: Split image works wrong. --- diff --git a/src/HYDROGUI/HYDROGUI_ObjSelector.cxx b/src/HYDROGUI/HYDROGUI_ObjSelector.cxx index f3b0ae69..df700b22 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 @@ -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 ); @@ -103,7 +107,16 @@ void HYDROGUI_ObjSelector::OnSelectionChanged() 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() ) diff --git a/src/HYDROGUI/HYDROGUI_ObjSelector.h b/src/HYDROGUI/HYDROGUI_ObjSelector.h index e44ba07a..5846aed6 100644 --- a/src/HYDROGUI/HYDROGUI_ObjSelector.h +++ b/src/HYDROGUI/HYDROGUI_ObjSelector.h @@ -35,10 +35,17 @@ class HYDROGUI_ObjSelector : public QAbstractButton { Q_OBJECT +public: + enum ObjectFlags { + NoFlags = 0x00000000, + ClosedPolyline = 0x00000001 + }; + public: HYDROGUI_ObjSelector( HYDROGUI_Module* theModule, const ObjectKind theObjectKind, - QWidget* theParent ); + QWidget* theParent, + const int theObjectFlags = NoFlags ); virtual ~HYDROGUI_ObjSelector(); void Clear(); @@ -68,6 +75,8 @@ private: QToolButton* myBtn; QLineEdit* myObjName; + + int myObjectFlags; }; #endif diff --git a/src/HYDROGUI/HYDROGUI_TwoImagesDlg.cxx b/src/HYDROGUI/HYDROGUI_TwoImagesDlg.cxx index d8edd596..7ec78132 100644 --- a/src/HYDROGUI/HYDROGUI_TwoImagesDlg.cxx +++ b/src/HYDROGUI/HYDROGUI_TwoImagesDlg.cxx @@ -62,7 +62,8 @@ HYDROGUI_TwoImagesDlg::HYDROGUI_TwoImagesDlg( HYDROGUI_Module* theModule, const myImage2 = new HYDROGUI_ObjSelector( theModule, KIND_IMAGE, aParamGroup ); myPolylineLabel = new QLabel( tr( "POLYLINE" ), aParamGroup ); - myPolyline = new HYDROGUI_ObjSelector( theModule, KIND_POLYLINEXY, aParamGroup ); + myPolyline = new HYDROGUI_ObjSelector( theModule, KIND_POLYLINEXY, aParamGroup, + HYDROGUI_ObjSelector::ClosedPolyline); QFrame* aBackgroundFrame = new QFrame( aParamGroup ); QLabel* aBackgroundLabel = new QLabel( tr( "BACKGROUND" ), aBackgroundFrame );