X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ImportImageOp.cxx;h=72f2ac2dcac15953dfdaa5a200062fc9cef8791a;hb=81c9f5cdf82909d0aebd2c491c50fa7516cc80b7;hp=3533cee2c7d4f651860227a4c2b8efa7b7a30d01;hpb=66d416b1aa5a5d48fc64b5080eb9280fb58573ba;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ImportImageOp.cxx b/src/HYDROGUI/HYDROGUI_ImportImageOp.cxx index 3533cee2..72f2ac2d 100644 --- a/src/HYDROGUI/HYDROGUI_ImportImageOp.cxx +++ b/src/HYDROGUI/HYDROGUI_ImportImageOp.cxx @@ -23,6 +23,7 @@ #include "HYDROGUI_ImportImageOp.h" #include "HYDROGUI_DataModel.h" +#include #include "HYDROGUI_ImportImageDlg.h" #include "HYDROGUI_Module.h" #include "HYDROGUI_PrsImage.h" @@ -166,36 +167,8 @@ void HYDROGUI_ImportImageOp::startOperation() } } - // Collect information about existing images and initialize the combobox - // reference image selector in the dialog. HYDROGUI_ImportImageDlg::PrsPointDataList aPrsPointDataList; - HYDROData_Iterator anIterator( doc(), KIND_IMAGE ); - for( ; anIterator.More(); anIterator.Next() ) - { - Handle(HYDROData_Image) anImageObj = Handle(HYDROData_Image)::DownCast( anIterator.Current() ); - if( !anImageObj.IsNull() ) - { - if( myIsEdit && IsEqual( anImageObj, myEditedObject ) ) - continue; - - QPoint aLocalPointA, aLocalPointB, aLocalPointC; - anImageObj->GetLocalPoints( aLocalPointA, aLocalPointB, aLocalPointC ); - - HYDROData_Image::TransformationMode aImgTrsfMode; - QPointF aTrsfPointA, aTrsfPointB, aTrsfPointC; - anImageObj->GetGlobalPoints( aImgTrsfMode, - aTrsfPointA, aTrsfPointB, aTrsfPointC ); - - HYDROGUI_ImportImageDlg::TransformationDataMap aDataMap; - computeTrsfData( aImgTrsfMode, false, aLocalPointA, aLocalPointB, aLocalPointC, - aTrsfPointA, aTrsfPointB, aTrsfPointC, aDataMap ); - - HYDROGUI_ImportImageDlg::PrsPointData aPrsPointData( anImageObj->GetName(), aDataMap ); - aPrsPointDataList.append( aPrsPointData ); - } - } - - // Initialize the combobox in the dialog with the list of available reference images + getReferenceDataList( aPrsPointDataList ); aPanel->setPrsPointDataList( aPrsPointDataList ); // Select the current reference image in the dialog combobox aPanel->setRefImageName( aRefImageName ); @@ -225,6 +198,38 @@ void HYDROGUI_ImportImageOp::setPresentationTrsfPoints( HYDROGUI_PrsImage* thePr } } +void HYDROGUI_ImportImageOp::getReferenceDataList( + HYDROGUI_ImportImageDlg::PrsPointDataList& theList ) const +{ + // Collect information about existing images and initialize the combobox + // reference image selector in the dialog. + HYDROData_Iterator anIterator( doc(), KIND_IMAGE ); + for( ; anIterator.More(); anIterator.Next() ) + { + Handle(HYDROData_Image) anImageObj = Handle(HYDROData_Image)::DownCast( anIterator.Current() ); + if( !anImageObj.IsNull() ) + { + if( myIsEdit && IsEqual( anImageObj, myEditedObject ) ) + continue; + + QPoint aLocalPointA, aLocalPointB, aLocalPointC; + anImageObj->GetLocalPoints( aLocalPointA, aLocalPointB, aLocalPointC ); + + HYDROData_Image::TransformationMode aImgTrsfMode; + QPointF aTrsfPointA, aTrsfPointB, aTrsfPointC; + anImageObj->GetGlobalPoints( aImgTrsfMode, + aTrsfPointA, aTrsfPointB, aTrsfPointC ); + + HYDROGUI_ImportImageDlg::TransformationDataMap aDataMap; + computeTrsfData( aImgTrsfMode, false, aLocalPointA, aLocalPointB, aLocalPointC, + aTrsfPointA, aTrsfPointB, aTrsfPointC, aDataMap ); + + HYDROGUI_ImportImageDlg::PrsPointData aPrsPointData( anImageObj->GetName(), aDataMap ); + theList.append( aPrsPointData ); + } + } +} + void HYDROGUI_ImportImageOp::computeTrsfData( HYDROData_Image::TransformationMode theTrsfMode, bool theIsByTwoPoints, const QPoint& theLocalPointA, @@ -340,7 +345,8 @@ bool HYDROGUI_ImportImageOp::checkPoints( const QPointF& thePointA, } bool HYDROGUI_ImportImageOp::processApply( int& theUpdateFlags, - QString& theErrorMsg ) + QString& theErrorMsg, + QStringList& theBrowseObjectsEntries ) { HYDROGUI_ImportImageDlg* aPanel = (HYDROGUI_ImportImageDlg*)inputPanel(); @@ -442,7 +448,11 @@ bool HYDROGUI_ImportImageOp::processApply( int& theUpdateFlags, if( myIsEdit ) anImageObj = myEditedObject; else + { anImageObj = Handle(HYDROData_Image)::DownCast( doc()->CreateObject( KIND_IMAGE ) ); + QString anEntry = HYDROGUI_DataObject::dataObjectEntry( anImageObj ); + theBrowseObjectsEntries.append( anEntry ); + } if( anImageObj.IsNull() ) return false; @@ -553,9 +563,20 @@ void HYDROGUI_ImportImageOp::onCreatePreview( QImage theImage ) if( myPreviewPrs ) // if the image is changed by choosing another file { - myPreviewPrs->setImage( myImage ); - myPreviewPrs->compute(); - + myPreviewPrs->setImage( myImage, true ); + if ( sender() ) // reset the previous presentation settings + { + QString aFileName = aPanel->getFileName(); + + aPanel->reset(); + aPanel->setIsEdit( myIsEdit ); + // restore the file name + aPanel->setFileName( aFileName ); + // fill the reference list + HYDROGUI_ImportImageDlg::PrsPointDataList aPrsPointDataList; + getReferenceDataList( aPrsPointDataList ); + aPanel->setPrsPointDataList( aPrsPointDataList ); + } if( myPreviewViewManager ) { if( GraphicsView_Viewer* aViewer = myPreviewViewManager->getViewer() ) @@ -575,8 +596,7 @@ void HYDROGUI_ImportImageOp::onCreatePreview( QImage theImage ) myActiveViewManager = anApp->activeViewManager(); myPreviewPrs = new HYDROGUI_PrsImage( myIsEdit ? myEditedObject : 0 ); - myPreviewPrs->setImage( myImage ); - myPreviewPrs->compute(); + myPreviewPrs->setImage( myImage, true ); myPreviewViewManager = dynamic_cast( anApp->createViewManager( GraphicsView_Viewer::Type() ) ); @@ -602,30 +622,29 @@ void HYDROGUI_ImportImageOp::onCreatePreview( QImage theImage ) this, SLOT( onPointSelected() ) ); } } + } - // Set the image name in the dialog - QString anImageName = aPanel->getImageName().simplified(); - // If edit mode and the name was not set yet then get from the edited object - if( myIsEdit && anImageName.isEmpty() ) - { - if( !myEditedObject.IsNull() ) - anImageName = myEditedObject->GetName(); + // Set the image name in the dialog + QString anImageName = aPanel->getImageName().simplified(); + // If edit mode and the name was not set yet then get from the edited object + if( myIsEdit && anImageName.isEmpty() ) + { + if( !myEditedObject.IsNull() ) + anImageName = myEditedObject->GetName(); + } + // If the name was not set then initialize it from the selected file name + if ( anImageName.isEmpty() ) + { + anImageName = aPanel->getFileName(); + if ( !anImageName.isEmpty() ) { + anImageName = QFileInfo( anImageName ).baseName(); } - // If the name was not set then initialize it from the selected file name - if ( anImageName.isEmpty() ) - { - anImageName = aPanel->getFileName(); - if ( !anImageName.isEmpty() ) { - anImageName = QFileInfo( anImageName ).baseName(); - } - // If no file name then generate a new image name - if ( anImageName.isEmpty() ) { - anImageName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_IMAGE_NAME" ) ); - } + // If no file name then generate a new image name + if ( anImageName.isEmpty() ) { + anImageName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_IMAGE_NAME" ) ); } - - aPanel->setImageName( anImageName ); } + aPanel->setImageName( anImageName ); aPanel->setImageSize( myImage.size() ); @@ -677,17 +696,19 @@ void HYDROGUI_ImportImageOp::onModeActivated( int theMode ) void HYDROGUI_ImportImageOp::onRefImageActivated( const QString& theName ) { + if( theName.isEmpty() ) { + if( myRefViewManager ) + closeView( myRefViewManager ); + return; + } + GraphicsView_ViewPort* aViewPort = 0; LightApp_Application* anApp = module()->getApp(); ///// Get a view port for the reference image preview if( myRefViewManager ) { - if( theName.isEmpty() ) - { - closeView( myRefViewManager ); - } - else if( GraphicsView_Viewer* aViewer = myRefViewManager->getViewer() ) + if( GraphicsView_Viewer* aViewer = myRefViewManager->getViewer() ) { aViewPort = aViewer->getActiveViewPort(); } @@ -737,8 +758,7 @@ void HYDROGUI_ImportImageOp::onRefImageActivated( const QString& theName ) anImage = anImageObj->Image(); myRefPreviewPrs = new HYDROGUI_PrsImage( anImageObj ); - myRefPreviewPrs->setImage( anImage ); - myRefPreviewPrs->compute(); + myRefPreviewPrs->setImage( anImage, true ); myRefPreviewPrs->setIsTransformationPointPreview( true ); myRefPreviewPrs->setTransformationPointType( myPointType );