X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_StreamOp.cxx;h=a2072046345be71268bd07eeb74fdbcfe26457c6;hb=7f56fcbfed23a9fd09b7ab87edd7ec742e2725e6;hp=cabf8c677b047fd4c88830eb661c316e840234ae;hpb=8e79913fc37eacbd1edf9dc08632b6f8bc7250d8;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_StreamOp.cxx b/src/HYDROGUI/HYDROGUI_StreamOp.cxx index cabf8c67..a2072046 100755 --- a/src/HYDROGUI/HYDROGUI_StreamOp.cxx +++ b/src/HYDROGUI/HYDROGUI_StreamOp.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 @@ -23,6 +19,7 @@ #include "HYDROGUI_StreamOp.h" #include "HYDROGUI_Module.h" +#include #include "HYDROGUI_Shape.h" #include "HYDROGUI_StreamDlg.h" #include "HYDROGUI_Tool.h" @@ -95,7 +92,8 @@ void HYDROGUI_StreamOp::startOperation() { HYDROGUI_Operation::startOperation(); - myEditedObject.Nullify(); + if ( !myIsEdit || isApplyAndClose() ) + myEditedObject.Nullify(); myHydAxis.clear(); myProfiles.clear(); myProfileParams.clear(); @@ -107,8 +105,9 @@ void HYDROGUI_StreamOp::startOperation() QString anObjectName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_STREAM_NAME" ) ); if ( myIsEdit ) { - myEditedObject = - Handle(HYDROData_Stream)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) ); + if ( isApplyAndClose() ) + myEditedObject = + Handle(HYDROData_Stream)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) ); if ( !myEditedObject.IsNull() ) { anObjectName = myEditedObject->GetName(); @@ -184,7 +183,8 @@ HYDROGUI_InputPanel* HYDROGUI_StreamOp::createInputPanel() const } bool HYDROGUI_StreamOp::processApply( int& theUpdateFlags, - QString& theErrorMsg ) + QString& theErrorMsg, + QStringList& theBrowseObjectsEntries ) { HYDROGUI_StreamDlg* aPanel = ::qobject_cast( inputPanel() ); if ( !aPanel ) @@ -245,13 +245,13 @@ bool HYDROGUI_StreamOp::processApply( int& theUpdateFlags, myEditedObject->SetHydraulicAxis( aHydAxis ); myEditedObject->SetProfiles( aRefProfiles, false ); - if ( myEditedObject->IsMustBeUpdated() ) + if ( myEditedObject->IsMustBeUpdated( HYDROData_Entity::Geom_2d ) ) myEditedObject->Update(); if ( !myIsEdit ) { - myEditedObject->SetFillingColor( HYDROData_Stream::DefaultFillingColor() ); - myEditedObject->SetBorderColor( HYDROData_Stream::DefaultBorderColor() ); + myEditedObject->SetFillingColor( myEditedObject->DefaultFillingColor() ); + myEditedObject->SetBorderColor( myEditedObject->DefaultBorderColor() ); } // Erase preview @@ -260,6 +260,8 @@ bool HYDROGUI_StreamOp::processApply( int& theUpdateFlags, // Show the object in case of creation mode of the operation if( !myIsEdit ) { module()->setObjectVisible( HYDROGUI_Tool::GetActiveOCCViewId( module() ), myEditedObject, true ); + QString anEntry = HYDROGUI_DataObject::dataObjectEntry( myEditedObject ); + theBrowseObjectsEntries.append( anEntry ); } module()->setIsToUpdate( myEditedObject ); @@ -289,8 +291,8 @@ void HYDROGUI_StreamOp::createPreview() { myPreviewPrs = new HYDROGUI_Shape( aCtx, NULL, getPreviewZLayer() ); - QColor aFillingColor = HYDROData_Stream::DefaultFillingColor(); - QColor aBorderColor = HYDROData_Stream::DefaultBorderColor(); + QColor aFillingColor = Qt::green; + QColor aBorderColor = Qt::transparent; if ( !myEditedObject.IsNull() ) { aFillingColor = myEditedObject->GetFillingColor(); @@ -433,20 +435,7 @@ void HYDROGUI_StreamOp::onAddProfiles() void HYDROGUI_StreamOp::onRemoveProfiles( const QStringList& theProfilesToRemove ) { QStringList aToRemove = theProfilesToRemove; - - // Take the Object Browser selection into account - HYDROData_SequenceOfObjects aSelectedObjects = HYDROGUI_Tool::GetSelectedObjects( module() ); - for( int i = 1, n = aSelectedObjects.Length(); i <= n; i++ ) - { - Handle(HYDROData_Profile) aProfile = - Handle(HYDROData_Profile)::DownCast( aSelectedObjects.Value( i ) ); - if ( aProfile.IsNull() ) - continue; - - QString aProfileName = aProfile->GetName(); - aToRemove.append( aProfileName ); - } - + aToRemove.removeDuplicates(); if ( aToRemove.isEmpty() ) return;