]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
"Play" functionality
authorouv <ouv@opencascade.com>
Thu, 2 Nov 2006 12:42:15 +0000 (12:42 +0000)
committerouv <ouv@opencascade.com>
Thu, 2 Nov 2006 12:42:15 +0000 (12:42 +0000)
src/VISUGUI/VisuGUI_Slider.cxx
src/VISUGUI/VisuGUI_Slider.h

index 667ded43c3d3d815727b72937c693787a4b5378e..d0ef34fcdc4fa5bf3902f3ac0d158660644dccc1 100644 (file)
@@ -51,6 +51,7 @@
 #include <qpushbutton.h>
 #include <qslider.h>
 #include <qspinbox.h>
+#include <qtimer.h>
 
 /*!
   Constructor
@@ -89,8 +90,10 @@ VisuGUI_Slider::VisuGUI_Slider( VVTK_MainWindow* parent )
   myTimeStampsNumber->setText( "" );
 
   myTimeStampStrings = new QComboBox( aTopBox );
+  myTimeStampStrings->setFixedWidth( 120 );
 
   myTimeStampIndices = new QComboBox( aTopBox );
+  myTimeStampIndices->setFixedWidth( 50 );
 
   // Buttons
   QHBox* aBottomBox = new QHBox( aWidget );
@@ -124,6 +127,8 @@ VisuGUI_Slider::VisuGUI_Slider( VVTK_MainWindow* parent )
   myAVIBox = new QCheckBox( tr( "AVI" ), aBottomBox );
   myAVIBox->setEnabled( false );
 
+  myTimer = new QTimer( this );
+
   // Common
   aLayout->addWidget( aTopBox );
   aLayout->addWidget( aBottomBox );
@@ -141,6 +146,8 @@ VisuGUI_Slider::VisuGUI_Slider( VVTK_MainWindow* parent )
   connect( mySlider,           SIGNAL( sliderMoved( int ) ),  SLOT( onSliderMoved( int ) ) );
   connect( mySlider,           SIGNAL( valueChanged( int ) ), SLOT( onValueChanged( int ) ) );
 
+  connect( myTimer,            SIGNAL( timeout() ),           SLOT( onTimeout() ) );
+
   enableControls( false );
 }
 
@@ -266,8 +273,18 @@ void VisuGUI_Slider::onPrevious()
 
 void VisuGUI_Slider::onPlay( bool on )
 {
-  QString aText = on ? "||" : ">";
-  myPlayButton->setText( aText );
+  if( on )
+  {
+    myPlayButton->setText( "||" );
+
+    double delay = 5000.0 / ( double )mySpeedBox->value();
+    myTimer->start( delay );
+  }
+  else
+  {
+    myTimer->stop();
+    myPlayButton->setText( ">" );
+  }
 }
 
 void VisuGUI_Slider::onNext()
@@ -310,3 +327,12 @@ void VisuGUI_Slider::onValueChanged( int value )
 
   myMainWindow->Repaint();
 }
+
+void VisuGUI_Slider::onTimeout()
+{
+  int value = mySlider->value();
+  if( value < mySlider->maxValue() )
+    onNext();
+  else
+    myPlayButton->setOn( false );
+}
index 57c2db5f4bc3f8319cc367054434b394386d5345..e7b3cbb1f97df73a971278e2d493d0bd3fbc3b5e 100644 (file)
@@ -42,6 +42,7 @@ class QLabel;
 class QPushButton;
 class QSlider;
 class QSpinBox;
+class QTimer;
 
 class VVTK_MainWindow;
 
@@ -76,6 +77,8 @@ public slots:
   virtual void     onSliderMoved( int );
   virtual void     onValueChanged( int );
 
+  virtual void     onTimeout();
+
 private:
   VVTK_MainWindow* myMainWindow;
 
@@ -97,6 +100,8 @@ private:
   QSpinBox*        mySpeedBox;
   QCheckBox*       myAVIBox;
 
+  QTimer*          myTimer;
+
   PrsList          myPrsList;
 };