aPanel->setColor( aColor );
}
}
+ else if( !myIsEdit )
+ {
+ Handle(HYDROData_Image) aSelectedImage =
+ Handle(HYDROData_Image)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
+ if( !aSelectedImage.IsNull() )
+ {
+ QString aSelectedName = aSelectedImage->GetName();
+ aPanel->setPreselectedObject( aSelectedName );
+ }
+ }
}
bool HYDROGUI_TwoImagesOp::processApply( int& theUpdateFlags,
return false;
HYDROOperations_Factory* aFactory = HYDROOperations_Factory::Factory();
- Handle(HYDROData_Image) aResult = 0;
+
+ Handle(HYDROData_Image) aResult;
+ ImageComposer_Operator* anOperator = 0;
if( myIsEdit )
{
aResult = myEditedObject;
aResult->ClearReferences();
+ anOperator = aFactory->Operator( aResult );
}
else
{
- ImageComposer_Operator* anOperator = 0;
+ QString anOperatorName;
switch( myType )
{
- case Fuse: anOperator = new ImageComposer_FuseOperator(); break;
- case Cut: anOperator = new ImageComposer_CutOperator(); break;
- case Split: anOperator = new ImageComposer_CropOperator(); break;
+ case Fuse: anOperatorName = ImageComposer_FuseOperator::Type(); break;
+ case Cut: anOperatorName = ImageComposer_CutOperator::Type(); break;
+ case Split: anOperatorName = ImageComposer_CropOperator::Type(); break;
default: break;
}
- if( !anOperator )
- return false;
+ anOperator = aFactory->Operator( anOperatorName );
aResult = aFactory->CreateImage( doc(), anOperator );
}
- if( aResult.IsNull() )
+ if( aResult.IsNull() || !anOperator )
return false;
+ // Setting the operator arguments
+ anOperator->setArgs( aPanel->getColor() );
+ aResult->SetArgs( anOperator->getBinArgs() );
+
aResult->SetName( anImageName );
aResult->AppendReference( anObject1 );
aResult->AppendReference( anObject2 );
- // Setting the operator arguments (probably, it should be done somewhere else).
- // For Fuse and Cut operators: setting background color.
- // For Crop operator: setting background color and polyline path to crop.
- if( ImageComposer_Operator* anOperator = aFactory->Operator( aResult ) )
- {
- if( ImageComposer_CropOperator* aCropOperator =
- dynamic_cast<ImageComposer_CropOperator*>( anOperator ) )
- {
- Handle(HYDROData_Polyline) aPolyline = Handle(HYDROData_Polyline)::DownCast( anObject2 );
- if( !aPolyline.IsNull() )
- aCropOperator->setArgs( aPanel->getColor(), aPolyline->painterPath() );
- }
- else
- anOperator->setArgs( aPanel->getColor() );
- aResult->SetArgs( anOperator->getBinArgs() );
- }
-
- aFactory->UpdateImage( doc(), aResult );
+ aResult->Update();
if( anIsModifySelected )
{