X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ImportImageOp.cxx;h=bf837ade79e883bcac198a7b6be658d5d2aa1fab;hb=a53349567d67f4df0ef737798a25c24d9dc8f08e;hp=afa0aa74f4640051c7fdc025481f3252dee476ca;hpb=474c2cd65280d793f1c81ca528bc92e1cff988e6;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ImportImageOp.cxx b/src/HYDROGUI/HYDROGUI_ImportImageOp.cxx index afa0aa74..bf837ade 100644 --- a/src/HYDROGUI/HYDROGUI_ImportImageOp.cxx +++ b/src/HYDROGUI/HYDROGUI_ImportImageOp.cxx @@ -1,8 +1,4 @@ -// 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 -// +// 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 @@ -78,7 +74,8 @@ void HYDROGUI_ImportImageOp::startOperation() if( myIsEdit ) { - myEditedObject = Handle(HYDROData_Image)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) ); + if ( isApplyAndClose() ) + myEditedObject = Handle(HYDROData_Image)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) ); if( !myEditedObject.IsNull() ) { QImage anImage = myEditedObject->Image(); @@ -262,7 +259,8 @@ void HYDROGUI_ImportImageOp::abortOperation() void HYDROGUI_ImportImageOp::commitOperation() { - closePreview(); + if ( isApplyAndClose() ) + closePreview(); HYDROGUI_Operation::commitOperation(); } @@ -278,6 +276,8 @@ HYDROGUI_InputPanel* HYDROGUI_ImportImageOp::createInputPanel() const connect( aPanel, SIGNAL( refImageActivated( const QString& ) ), SLOT( onRefImageActivated( const QString& ) ) ); connect( aPanel, SIGNAL( setCIsUsed( bool ) ), SLOT( onSetCIsUsed( bool ) ) ); + connect( aPanel, SIGNAL( filesSelected( const QStringList& ) ), + SLOT( onFilesSelected( const QStringList& ) ) ); return aPanel; } @@ -497,14 +497,35 @@ bool HYDROGUI_ImportImageOp::processApply( int& theUpdateFlags, } // must be done after all checks and before calling SetVisible() method below - closePreview(); + if ( isApplyAndClose() ) + closePreview(); if( !myIsEdit ) module()->setObjectVisible( HYDROGUI_Tool::GetActiveGraphicsViewId( module() ), anImageObj, true ); anImageObj->Update(); - theUpdateFlags = UF_Model | UF_Viewer | UF_GV_Forced | UF_OCCViewer | UF_OCC_Forced; + theUpdateFlags = UF_Model; + if ( isApplyAndClose() ) + theUpdateFlags |= UF_Viewer | UF_GV_Forced | UF_OCCViewer | UF_OCC_Forced; + + if( isApplyAndClose() ) + { + commitDocOperation(); // to save the modifications in the data model + return true; + } + + if( SetNextFile() ) + { + theErrorMsg = ""; + module()->updateObjBrowser(); + return false; // and to continue the operation + } + + /*if( myFiles.count() > 1 ) + { + setIsApplyAndClose( true ); + }*/ return true; } @@ -532,7 +553,7 @@ bool HYDROGUI_ImportImageOp::isReferenceCorrect() const return isCorrect; } -void HYDROGUI_ImportImageOp::onApply() +void HYDROGUI_ImportImageOp::apply() { HYDROGUI_ImportImageDlg* aPanel = (HYDROGUI_ImportImageDlg*)inputPanel(); @@ -548,7 +569,7 @@ void HYDROGUI_ImportImageOp::onApply() QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) == QMessageBox::Yes; } if ( aCanApply ) - HYDROGUI_Operation::onApply(); + HYDROGUI_Operation::apply(); else { aPanel->setRefImageName( "" ); onRefImageActivated( aPanel->getRefImageName() ); @@ -615,8 +636,14 @@ void HYDROGUI_ImportImageOp::onCreatePreview( QImage theImage ) aViewPort->addItem( myPreviewPrs ); aViewPort->fitAll(); - + + if ( myEditedObject ) { + size_t aViewId = (size_t)aViewer; + module()->setObjectVisible( aViewId, myEditedObject, true ); + } + myPreviewPrs->setIsTransformationPointPreview( true ); + myPreviewPrs->setTransformationPointCursorShape( module()->getPrefEditCursor().shape() ); } connect( aViewer, SIGNAL( selectionChanged( GV_SelectionChangeStatus ) ), this, SLOT( onPointSelected() ) ); @@ -738,9 +765,13 @@ void HYDROGUI_ImportImageOp::onRefImageActivated( const QString& theName ) if( !aViewPort ) return; + size_t aViewId = (size_t)myRefViewManager->getViewer(); + // Remove the old presentation of the reference image if any if( myRefPreviewPrs ) { + module()->setObjectVisible( aViewId, myRefPreviewPrs->getObject(), false ); + myRefPreviewPrs->setCaption( QString() ); aViewPort->removeItem( myRefPreviewPrs ); @@ -765,8 +796,12 @@ void HYDROGUI_ImportImageOp::onRefImageActivated( const QString& theName ) myRefPreviewPrs->setIsByTwoPoints( aPanel->isByTwoPoints() ); + myRefPreviewPrs->setTransformationPointCursorShape( module()->getPrefEditCursor().shape() ); + // Add the new reference image presentation to the appropriate view aViewPort->addItem( myRefPreviewPrs ); + + module()->setObjectVisible( aViewId, anImageObj, true ); } aViewPort->fitAll(); @@ -874,3 +909,22 @@ void HYDROGUI_ImportImageOp::closeView( GraphicsView_ViewManager* &aViewMgr ) aViewMgr = 0; } } + +void HYDROGUI_ImportImageOp::onFilesSelected( const QStringList& theFileNames ) +{ + myFiles = theFileNames; + myFileIndex = -1; + SetNextFile(); +} + +bool HYDROGUI_ImportImageOp::SetNextFile() +{ + myFileIndex++; + bool isEnabledEdit = myFiles.count()==1 || myFileIndex==myFiles.count(); + bool isValid = ( myFileIndex>=0 && myFileIndex( inputPanel() ); + aPanel->ActivateFile( aFile, isEnabledEdit ); + return isValid; +}