Salome HOME
PAL9807 - some dialogs in VISU must be non-modal
authorasl <asl@opencascade.com>
Thu, 6 Oct 2005 05:02:50 +0000 (05:02 +0000)
committerasl <asl@opencascade.com>
Thu, 6 Oct 2005 05:02:50 +0000 (05:02 +0000)
src/VISUGUI/VisuGUI.cxx
src/VISUGUI/VisuGUI_Prs3dTools.h

index bf9aa8e2cad1aaff52ede0d495181d54171aa914..b33dcf47c4b83a0573d9072183ae17a6a7f2660c 100644 (file)
@@ -697,7 +697,7 @@ OnEditScalarMap()
 {
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
-    EditPrs3d<VISU::ScalarMap_i, VisuGUI_ScalarBarDlg>(this, aPrs3d);
+    EditPrs3d<VISU::ScalarMap_i, VisuGUI_ScalarBarDlg,0>(this, aPrs3d);
     if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
       aViewWindow->highlight(anIO, 1);
     }
@@ -711,7 +711,7 @@ OnEditDeformedShape()
 {
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
-    EditPrs3d<VISU::DeformedShape_i, VisuGUI_DeformedShapeDlg>(this, aPrs3d);
+    EditPrs3d<VISU::DeformedShape_i, VisuGUI_DeformedShapeDlg,0>(this, aPrs3d);
     if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
       aViewWindow->highlight(anIO, 1);
     }
@@ -725,7 +725,7 @@ OnEditCutPlanes()
 {
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
-    EditPrs3d<VISU::CutPlanes_i, VisuGUI_CutPlanesDlg>(this, aPrs3d);
+    EditPrs3d<VISU::CutPlanes_i, VisuGUI_CutPlanesDlg,1>(this, aPrs3d);
     if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
       aViewWindow->highlight(anIO, 1);
     }
@@ -739,7 +739,7 @@ OnEditCutLines()
 {
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
-    EditPrs3d<VISU::CutLines_i, VisuGUI_CutLinesDlg>(this, aPrs3d);
+    EditPrs3d<VISU::CutLines_i, VisuGUI_CutLinesDlg,1>(this, aPrs3d);
     if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
       aViewWindow->highlight(anIO, 1);
     }
@@ -753,7 +753,7 @@ OnEditIsoSurfaces()
 {
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
-    EditPrs3d<VISU::IsoSurfaces_i, VisuGUI_IsoSurfacesDlg>(this, aPrs3d);
+    EditPrs3d<VISU::IsoSurfaces_i, VisuGUI_IsoSurfacesDlg,0>(this, aPrs3d);
     if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
       aViewWindow->highlight(anIO, 1);
     }
@@ -767,7 +767,7 @@ OnEditVectors()
 {
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
-    EditPrs3d<VISU::Vectors_i, VisuGUI_VectorsDlg>(this, aPrs3d);
+    EditPrs3d<VISU::Vectors_i, VisuGUI_VectorsDlg,0>(this, aPrs3d);
     if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
       aViewWindow->highlight(anIO, 1);
     }
@@ -781,7 +781,7 @@ OnEditStreamLines()
 {
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
-    EditPrs3d<VISU::StreamLines_i, VisuGUI_StreamLinesDlg>(this, aPrs3d);
+    EditPrs3d<VISU::StreamLines_i, VisuGUI_StreamLinesDlg,0>(this, aPrs3d);
     if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
       aViewWindow->highlight(anIO, 1);
     }
@@ -795,7 +795,7 @@ OnEditPlot3D()
 {
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
-    EditPrs3d<VISU::Plot3D_i, VisuGUI_Plot3DDlg>(this, aPrs3d);
+    EditPrs3d<VISU::Plot3D_i, VisuGUI_Plot3DDlg,1>(this, aPrs3d);
     if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
       aViewWindow->highlight(anIO, 1);
     }
index 3a75c75407144a1300c739f755187c7ec7fea9a7..2e97024594d5a9b39ee6250adabc88464f33db02 100644 (file)
 
 #include "VisuGUI_Tools.h"
 
+int runAndWait( QDialog* dlg, const bool modal )
+{
+  if( modal )
+    return dlg->exec();
+
+  dlg->show();
+
+  qApp->enter_loop();
+
+  return dlg->result();
+}
+
 namespace VISU
 {
   class CutLines_i;
 
   //---------------------------------------------------------------
-  template<class TPrs3d_i, class TDlg>
+  template<class TPrs3d_i, class TDlg, int IsDlgModal >
   void
   EditPrs3d (SalomeApp_Module* theModule, VISU::Prs3d_i* thePrs3d)
   {
@@ -44,7 +56,7 @@ namespace VISU
     if (aPrsObject) {
       TDlg* aDlg = new TDlg (theModule);
       aDlg->initFromPrsObject(aPrsObject);
-      if (aDlg->exec()) {
+      if (runAndWait(aDlg,IsDlgModal)) {
        if (!(aDlg->storeToPrsObject(aPrsObject))) {
          delete aDlg;
          return;
@@ -130,8 +142,8 @@ namespace VISU
       if(!aValue){
        if(TDlg* aDlg = new TDlg(theModule)){ // dialog box in creation mode
          aDlg->initFromPrsObject(aPrs3d);
-         if(IsDlgModal)
-           if(aDlg->exec() && (aDlg->storeToPrsObject(aPrs3d))) {
+
+           if(runAndWait(aDlg,IsDlgModal) && (aDlg->storeToPrsObject(aPrs3d))) {
              // Optionally, create table and curves for cut lines
              QApplication::setOverrideCursor(Qt::waitCursor);
              CreateCurves( theModule,
@@ -145,10 +157,6 @@ namespace VISU
              delete aDlg;
              return false;
            }
-         else{
-           aDlg->show();
-           return true;
-         }
        }
       }
       PublishInView(theModule,aPrs3d);