X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ImportImageOp.cxx;h=d68840a8b22a5026b0a4858622e89a91a08861ca;hb=36005df362d7bee6db949b079960cec90333aed2;hp=12a71ec54cd32c8e6deae6235edf53ef984652fc;hpb=87ec03822dde901d88878980cb7d9e7cc2b1b6db;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ImportImageOp.cxx b/src/HYDROGUI/HYDROGUI_ImportImageOp.cxx index 12a71ec5..d68840a8 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; } @@ -350,9 +350,22 @@ bool HYDROGUI_ImportImageOp::processApply( int& theUpdateFlags, { HYDROGUI_ImportImageDlg* aPanel = (HYDROGUI_ImportImageDlg*)inputPanel(); + if( !myIsEdit ) + { + QString aFilePath = aPanel->getFileName(); + if( aFilePath.isEmpty() ) + { + theErrorMsg = tr( "SELECT_IMAGE_FILE" ).arg( aFilePath ); + return false; + } + } + QString anImageName = aPanel->getImageName(); if( anImageName.isEmpty() ) + { + theErrorMsg = tr( "SELECT_IMAGE_NAME" ).arg( anImageName ); return false; + } if( !myIsEdit || ( !myEditedObject.IsNull() && myEditedObject->GetName() != anImageName ) ) { @@ -497,14 +510,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 +566,7 @@ bool HYDROGUI_ImportImageOp::isReferenceCorrect() const return isCorrect; } -void HYDROGUI_ImportImageOp::onApply() +void HYDROGUI_ImportImageOp::apply() { HYDROGUI_ImportImageDlg* aPanel = (HYDROGUI_ImportImageDlg*)inputPanel(); @@ -548,7 +582,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() ); @@ -888,3 +922,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; +}