]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Fixed bug GVIEW10573 : time to load sandia file too long
authorouv <ouv@opencascade.com>
Tue, 22 Nov 2005 15:35:34 +0000 (15:35 +0000)
committerouv <ouv@opencascade.com>
Tue, 22 Nov 2005 15:35:34 +0000 (15:35 +0000)
src/VISUGUI/Makefile.in
src/VISUGUI/VISUM_msg_en.po
src/VISUGUI/VisuGUI.cxx
src/VISUGUI/VisuGUI_BuildProgressDlg.cxx [new file with mode: 0644]
src/VISUGUI/VisuGUI_BuildProgressDlg.h [new file with mode: 0644]
src/VISUGUI/VisuGUI_GaussPointsDlg.cxx
src/VISUGUI/VisuGUI_GaussPointsDlg.h

index 84579bf285f70eb068e252e3b15fbb67e666fb5c..f787a02d9e198b5eef3f555becfd2de83b030320 100644 (file)
@@ -70,6 +70,7 @@ LIB_SRC =     VisuGUI.cxx \
                VisuGUI_CutPlanesDlg.cxx \
                VisuGUI_StreamLinesDlg.cxx \
                VisuGUI_VectorsDlg.cxx \
+               VisuGUI_BuildProgressDlg.cxx \
                VisuGUI_Timer.cxx
 
 LIB_MOC =      VisuGUI.h \
@@ -91,7 +92,8 @@ LIB_MOC =     VisuGUI.h \
                VisuGUI_CutLinesDlg.h \
                VisuGUI_CutPlanesDlg.h \
                VisuGUI_StreamLinesDlg.h \
-               VisuGUI_VectorsDlg.h
+               VisuGUI_VectorsDlg.h \
+               VisuGUI_BuildProgressDlg.h
 
 LIB_CLIENT_IDL = SALOME_Exception.idl \
                 VISU_Gen.idl \
index 5fc6576b3580e9b92256dd042b14627891f62df8..015083b9698f9aaeaf8400ac997acc14e2c92404 100644 (file)
@@ -232,6 +232,18 @@ msgstr "Gauss Points Preferences"
 msgid "VisuGUI_GaussPointsDlg::DLG_PROP_TITLE"
 msgstr "Gauss Points Properties"
 
+msgid "VisuGUI_BuildProgressDlg::DLG_BUILD_PROGRESS_TITLE"
+msgstr "Build progress"
+
+msgid "VisuGUI_BuildProgressDlg::BUILD_FIELDS"
+msgstr "Building fields..."
+
+msgid "VisuGUI_BuildProgressDlg::BUILD_GROUPS"
+msgstr "Building groups..."
+
+msgid "VisuGUI_BuildProgressDlg::BUILD_MINMAX"
+msgstr "Building min/max..."
+
 msgid "VVTK_ViewManager::VTK_VIEW_TITLE"
 msgstr "VISU scene:%1 - viewer:%2"
 
index 8a4e36e25b166dc97f96c4958bacc99b87ba7829..0862abd444245e1c5eb3a661ab4723ac0052b28d 100644 (file)
 #include "VisuGUI_ClippingDlg.h"
 #include "VisuGUI_Plot3DDlg.h"
 #include "VisuGUI_OffsetDlg.h"
+#include "VisuGUI_BuildProgressDlg.h"
 
 #include "VISU_ScalarMap_i.hh"
 #include "VisuGUI_ScalarBarDlg.h"
@@ -179,10 +180,17 @@ OnImportFromFile()
     application()->putInfo( "Importing From File " + aFileInfo.filePath() + "...", -1 );
     double initialTime = vtkTimerLog::GetCPUTime();
 
+    VisuGUI_BuildProgressDlg* aBuildProgressDlg;
+    QString aFileName = aFileInfo.fileName();
+
     VISU::Result_var aResult;
     bool anIsBuild = aResourceMgr->booleanValue("VISU", "full_med_loading", false);
     if (VisuGUI_FileDlg::IsBuild) {
       aResult = GetVisuGen(this)->ImportFile(aFileInfo.filePath());
+
+      aBuildProgressDlg = new VisuGUI_BuildProgressDlg( GetDesktop(this), aResult, aFileName );
+      aBuildProgressDlg->start();
+
       if (!CORBA::is_nil(aResult.in()))
         if (Result_i* aRes = dynamic_cast<Result_i*>(GetServant(aResult).in())) {
           if (!aRes->IsPossible())
@@ -197,6 +205,9 @@ OnImportFromFile()
       aResourceMgr->setValue("VISU", "full_med_loading", false);
       aResult = GetVisuGen(this)->ImportFile(aFileInfo.filePath());
       aResourceMgr->setValue("VISU", "full_med_loading", anIsBuild);
+
+      aBuildProgressDlg = new VisuGUI_BuildProgressDlg( GetDesktop(this), aResult, aFileName );
+      aBuildProgressDlg->start();
     }
 
     if (CORBA::is_nil(aResult.in())) {
diff --git a/src/VISUGUI/VisuGUI_BuildProgressDlg.cxx b/src/VISUGUI/VisuGUI_BuildProgressDlg.cxx
new file mode 100644 (file)
index 0000000..cf44bc8
--- /dev/null
@@ -0,0 +1,140 @@
+//  VISU VISUGUI : GUI of VISU component
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+//  File   : VisuGUI_BuildProgressDlg.cxx
+//  Author : Oleg UVAROV
+//  Module : VISU
+
+#include "VisuGUI_BuildProgressDlg.h"
+
+#include "VisuGUI_Tools.h"
+
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qtimer.h>
+
+/*!
+ * Constructor
+ */
+VisuGUI_BuildProgressDlg::VisuGUI_BuildProgressDlg( QWidget* theParent,
+                                                   VISU::Result_var theResult,
+                                                   const QString& theFileName ):
+  QDialog( theParent ),
+  myResult( theResult )
+{
+  setName( "VisuGUI_BuildProgressBar" );
+  setCaption( tr( "DLG_BUILD_PROGRESS_TITLE" ) );
+  setSizeGripEnabled( true );
+
+  SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr();
+
+  QVBoxLayout* aTopLayout = new QVBoxLayout( this );
+  //aTopLayout->setSpacing( 6 );
+  aTopLayout->setMargin( 6 );
+  aTopLayout->setAutoAdd( true );
+
+  QString aCaption = QString( "Importing " ) + theFileName;
+  QGroupBox* aBox = new QGroupBox( aCaption, this );
+  aBox->setColumnLayout(0, Qt::Vertical );
+  aBox->layout()->setSpacing( 0 );
+  aBox->layout()->setMargin( 0 );
+
+  QGridLayout* aGridLayout = new QGridLayout( aBox->layout() );
+  aGridLayout->setSpacing( 6 );
+  aGridLayout->setMargin( 11 );
+
+  QLabel* BuildFieldsLabel = new QLabel( tr( "BUILD_FIELDS" ), aBox );
+  myBuildFieldsButton = new QPushButton( aBox );
+  myBuildFieldsButton->setEnabled( false );
+  myBuildFieldsButton->setFixedSize( 30, 30 );
+  myBuildFieldsButton->setPaletteBackgroundColor( Qt::red );
+
+  QLabel* BuildGroupsLabel = new QLabel( tr( "BUILD_GROUPS" ), aBox );
+  myBuildGroupsButton = new QPushButton( aBox );
+  myBuildGroupsButton->setEnabled( false );
+  myBuildGroupsButton->setFixedSize( 30, 30 );
+  myBuildGroupsButton->setPaletteBackgroundColor( Qt::red );
+
+  QLabel* BuildMinMaxLabel = new QLabel( tr( "BUILD_MINMAX" ), aBox );
+  myBuildMinMaxButton = new QPushButton( aBox );
+  myBuildMinMaxButton->setEnabled( false );
+  myBuildMinMaxButton->setFixedSize( 30, 30 );
+  myBuildMinMaxButton->setPaletteBackgroundColor( Qt::red );
+
+  aGridLayout->addWidget(   BuildFieldsLabel,  0, 0 );
+  aGridLayout->addWidget( myBuildFieldsButton, 0, 1 );
+  aGridLayout->addWidget(   BuildGroupsLabel,  1, 0 );
+  aGridLayout->addWidget( myBuildGroupsButton, 1, 1 );
+  aGridLayout->addWidget(   BuildMinMaxLabel,  2, 0 );
+  aGridLayout->addWidget( myBuildMinMaxButton, 2, 1 );
+
+  myTimer = new QTimer( this );
+  connect( myTimer, SIGNAL( timeout() ), this, SLOT( onTimer() ) );
+}
+
+VisuGUI_BuildProgressDlg::~VisuGUI_BuildProgressDlg()
+{
+}
+
+void VisuGUI_BuildProgressDlg::start()
+{
+  myTimer->start( 100 );
+  show();
+}
+
+void VisuGUI_BuildProgressDlg::onTimer()
+{
+  bool isFieldsDone = myResult->IsFieldsDone();
+  bool isGroupsDone = myResult->IsGroupsDone();
+  bool isMinMaxDone = myResult->IsMinMaxDone();
+
+  updateButton( myBuildFieldsButton, isFieldsDone );
+  updateButton( myBuildGroupsButton, isGroupsDone );
+  updateButton( myBuildMinMaxButton, isMinMaxDone );
+
+  if( isFieldsDone && isGroupsDone && isMinMaxDone )
+    done( 0 );
+}
+
+void VisuGUI_BuildProgressDlg::updateButton( QPushButton* theButton, bool theIsDone )
+{
+  QColor aCurrentColor = theButton->paletteBackgroundColor();
+  QColor aNewColor = Qt::green;
+
+  if( !theIsDone )
+  {
+    aNewColor = Qt::red;
+    if( aCurrentColor == Qt::red )
+      aNewColor = Qt::yellow;
+  }
+
+  theButton->setPaletteBackgroundColor( aNewColor );
+}
+
+void VisuGUI_BuildProgressDlg::done( int r )
+{
+  myTimer->stop();
+  QDialog::done( r );
+}
diff --git a/src/VISUGUI/VisuGUI_BuildProgressDlg.h b/src/VISUGUI/VisuGUI_BuildProgressDlg.h
new file mode 100644 (file)
index 0000000..9fec674
--- /dev/null
@@ -0,0 +1,67 @@
+//  VISU VISUGUI : GUI of VISU component
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+//  File   : VisuGUI_BuildProgressDlg.h
+//  Author : Oleg UVAROV
+//  Module : VISU
+//  $Header$
+
+#ifndef VISUGUI_BUILDPROGRESSDLG_H
+#define VISUGUI_BUILDPROGRESSDLG_H
+
+#include "VISU_Gen_i.hh"
+
+#include <qdialog.h>
+
+class QPushButton;
+class QTimer;
+
+//! Build Progress Dialog.
+class VisuGUI_BuildProgressDlg : public QDialog
+{
+  Q_OBJECT
+
+public:
+  VisuGUI_BuildProgressDlg( QWidget*, VISU::Result_var, const QString& );
+  ~VisuGUI_BuildProgressDlg();
+
+  void             start();
+
+protected slots:
+  void             done( int );
+  void             onTimer();
+
+private:
+  void             updateButton( QPushButton*, bool );
+
+private:
+  VISU::Result_var myResult;
+
+  QTimer*          myTimer;
+
+  QPushButton*     myBuildFieldsButton;
+  QPushButton*     myBuildGroupsButton;
+  QPushButton*     myBuildMinMaxButton;
+};
+
+#endif
index 478adbd0a5a30f2de6d205406b3cb35b673438f3..5cff94a5a819fb253db6cfd5d1cc0d4e44bdeaa4 100644 (file)
@@ -21,8 +21,8 @@
 //
 //
 //
-//  File   : VisuGUI_MagnitudeDlg.cxx
-//  Author : Laurent CORNABE & Hubert ROLLAND
+//  File   : VisuGUI_GaussPointsDlg.cxx
+//  Author : Oleg UVAROV
 //  Module : VISU
 
 #include "VisuGUI_GaussPointsDlg.h"
index 205496cf27de0aa2a25bd66ceaaee11edbae8a21..ecb97047e1b6eb3a039d08e7a0cb1b4c4b50b324 100644 (file)
@@ -21,8 +21,8 @@
 //
 //
 //
-//  File   : VisuGUI_MagnitudeDlg.h
-//  Author : Laurent CORNABE & Hubert ROLLAND
+//  File   : VisuGUI_GaussPointsDlg.h
+//  Author : Oleg UVAROV
 //  Module : VISU
 //  $Header$