]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
0020821: EDF 1347 VISU : Surface Representation during edition
authorouv <ouv@opencascade.com>
Fri, 2 Apr 2010 13:20:24 +0000 (13:20 +0000)
committerouv <ouv@opencascade.com>
Fri, 2 Apr 2010 13:20:24 +0000 (13:20 +0000)
src/VISUGUI/VisuGUI_DeformedShapeDlg.cxx
src/VISUGUI/VisuGUI_DeformedShapeDlg.h

index 03f87a4c30a4c73aa7bcdd35999b5dc0a6f2e8e7..92b6ba8a20e49b454a2f247f9a0e774e89dc11b0 100644 (file)
@@ -205,12 +205,23 @@ int VisuGUI_DeformedShapeDlg::storeToPrsObject(VISU::ColoredPrs3d_i* thePrs)
   return anIsOk;
 }
 
-void VisuGUI_DeformedShapeDlg::updatePrsCopy()
+void VisuGUI_DeformedShapeDlg::updatePrsCopy( VISU::Prs3d_i* thePrs )
 {
   SVTK_ViewWindow* aViewWindow = VISU::GetActiveViewWindow<SVTK_ViewWindow>();
   VisuGUI* aVisuGUI = dynamic_cast <VisuGUI*>(myModule);
   if ( myPrsCopy->GetNumberOfActors() == 0 ) {
     PublishInView(aVisuGUI, myPrsCopy, aViewWindow);
+
+    // Bug 0020821
+    if( thePrs ) {
+      if( SVTK_ViewWindow* aViewWindow = VISU::GetActiveViewWindow<SVTK_ViewWindow>( myModule ) ) {
+        VISU_Actor* anActorSource = VISU::FindActor( aViewWindow, thePrs );
+        VISU_Actor* anActorCopy = VISU::FindActor( aViewWindow, myPrsCopy );
+        if( anActorSource && anActorCopy )
+          anActorCopy->DeepCopy( anActorSource );
+      }
+    }
+
     if(VISU::GetResourceMgr()->booleanValue("VISU","automatic_fit_all",false))
       aViewWindow->onFitAll();
     int aPos = VISU::GetFreePositionOfDefaultScalarBar(aVisuGUI, aViewWindow);
@@ -252,7 +263,7 @@ bool VisuGUI_DeformedShapeDlg::onApply()
 {
   if ( storeToPrsObject( myPrsCopy ) ) 
   {
-    updatePrsCopy();
+    updatePrsCopy( myPrsCopy );
     isApplyed = true;
     return true;
   }
@@ -329,7 +340,7 @@ void VisuGUI_DeformedShapeDlg::EditPrs3d(VisuGUI* theModule, VISU::Prs3d_i* theP
   if (TPrs3d_i* aPrs3d = dynamic_cast<TPrs3d_i*>(thePrs3d)) {
     VisuGUI_DeformedShapeDlg* aDlg = new VisuGUI_DeformedShapeDlg (theModule);
     aDlg->initFromPrsObject(aPrs3d, true);
-    aDlg->updatePrsCopy();
+    aDlg->updatePrsCopy(thePrs3d);
 
     //Hide thePrs3d from Viewer
     SVTK_ViewWindow* aViewWindow = VISU::GetActiveViewWindow<SVTK_ViewWindow>(theModule);
@@ -339,7 +350,7 @@ void VisuGUI_DeformedShapeDlg::EditPrs3d(VisuGUI* theModule, VISU::Prs3d_i* theP
           anActor->VisibilityOff();
 
     VisuGUI_DialogRunner r(aDlg);
-    int dlgResult = r.run( false );
+    int dlgResult = r.run( true );
     
     if ( dlgResult != 0 )
       aDlg->storeToPrsObject( aPrs3d );
index 5589baf4c3ddf79a12343ca8aa87459818ef50ab..c66a84b5f590c93272f7be0146059cdf9f8d9dd6 100644 (file)
@@ -72,7 +72,7 @@ public:
     static VISU::Prs3d_i* CreatePrs3d(VisuGUI*  theModule);
     static void EditPrs3d(VisuGUI* theModule, VISU::Prs3d_i* thePrs3d, Handle(SALOME_InteractiveObject)& theIO);
 
-    void updatePrsCopy();
+    void updatePrsCopy( VISU::Prs3d_i* thePrs );
 
 protected:
     virtual QString        GetContextHelpFilePath();