Salome HOME
Python console has been added for HYDRO module (Bug #22).
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_TwoImagesOp.cxx
index 19baa6a735c42a902779bedb56a32e215ddbed79..2e634382f1ceb9087742f3afddf13f33b924bf29 100644 (file)
@@ -160,54 +160,43 @@ 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 )
   {