Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/visualization/OpenGL/src/G4OpenGLQtMovieDialog.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /visualization/OpenGL/src/G4OpenGLQtMovieDialog.cc (Version 11.3.0) and /visualization/OpenGL/src/G4OpenGLQtMovieDialog.cc (Version 11.1.3)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 //                                                 26 //
 27 //                                                 27 //
 28 //                                                 28 //
 29                                                    29 
 30 #include "G4OpenGLQtViewer.hh" // should be fi     30 #include "G4OpenGLQtViewer.hh" // should be first in case we include
 31                                // some boost S     31                                // some boost SIGNAL/SLOT library
 32 #include "G4OpenGLQtMovieDialog.hh"                32 #include "G4OpenGLQtMovieDialog.hh"
 33                                                    33 
 34 #include <qpushbutton.h>                           34 #include <qpushbutton.h>
 35 #include <qpalette.h>                              35 #include <qpalette.h>
 36 #include <qlabel.h>                                36 #include <qlabel.h>
 37 #include <qgroupbox.h>                             37 #include <qgroupbox.h>
 38 #include <qlayout.h>                               38 #include <qlayout.h>
 39 #include <qlineedit.h>                             39 #include <qlineedit.h>
 40 #include <qfiledialog.h>                           40 #include <qfiledialog.h>
 41 #include <qprocess.h>                              41 #include <qprocess.h>
 42                                                    42 
 43 #ifndef G4GMAKE                                    43 #ifndef G4GMAKE
 44 #include "moc_G4OpenGLQtMovieDialog.cpp"           44 #include "moc_G4OpenGLQtMovieDialog.cpp"
 45 #endif                                             45 #endif
 46                                                    46 
 47 // +---------------------------------------+       47 // +---------------------------------------+
 48 // +        Path for encoder               +       48 // +        Path for encoder               +
 49 // +  _______                              +       49 // +  _______                              +
 50 // + | select| ____________________        +       50 // + | select| ____________________        +
 51 // +  -------                              +       51 // +  -------                              +
 52 // +        Temp path                      +       52 // +        Temp path                      +
 53 // +  _______                              +       53 // +  _______                              +
 54 // + | select| ____________________        +       54 // + | select| ____________________        +
 55 // +  -------                              +       55 // +  -------                              +
 56 // +                                       +       56 // +                                       +
 57 // + max number of frames  ________        +       57 // + max number of frames  ________        +
 58 // + ....                                  +       58 // + ....                                  +
 59 // +                                       +       59 // +                                       +
 60 // +     Label : X frames Saves/Encoding   +       60 // +     Label : X frames Saves/Encoding   +
 61 // +         Cancel        Encode          +       61 // +         Cancel        Encode          +
 62 // +---------------------------------------+       62 // +---------------------------------------+
 63                                                    63 
 64 G4OpenGLQtMovieDialog::G4OpenGLQtMovieDialog(      64 G4OpenGLQtMovieDialog::G4OpenGLQtMovieDialog(
 65  G4OpenGLQtViewer* parentViewer,                   65  G4OpenGLQtViewer* parentViewer,
 66  QWidget* parentw                                  66  QWidget* parentw
 67 )                                                  67 )
 68   : QDialog( parentw ),                            68   : QDialog( parentw ),
 69     fParentViewer(parentViewer)                    69     fParentViewer(parentViewer)
 70 {                                                  70 {
 71   setModal(false);                                 71   setModal(false);
 72   setWindowTitle( tr( " Save as movie" ));         72   setWindowTitle( tr( " Save as movie" ));
 73                                                    73 
 74                                                    74 
 75   // global layout                                 75   // global layout
 76   QVBoxLayout* globalVLayout = new QVBoxLayout     76   QVBoxLayout* globalVLayout = new QVBoxLayout(this);
 77   globalVLayout->setContentsMargins(10,10,10,1 <<  77   globalVLayout->setMargin(10);
 78   globalVLayout->setSpacing(10);                   78   globalVLayout->setSpacing(10);
 79                                                    79 
 80   // Encoder group box                             80   // Encoder group box
 81   QGroupBox *encoderGroupBox = new QGroupBox(t     81   QGroupBox *encoderGroupBox = new QGroupBox(tr("Encoder path"),this);
 82   QVBoxLayout *encoderVGroupBoxLayout = new QV     82   QVBoxLayout *encoderVGroupBoxLayout = new QVBoxLayout(encoderGroupBox);
 83                                                    83 
 84   // Encoder Path                                  84   // Encoder Path
 85   QWidget *encoderHBox = new QWidget(encoderGr     85   QWidget *encoderHBox = new QWidget(encoderGroupBox);
 86   QHBoxLayout *encoderHBoxLayout = new QHBoxLa     86   QHBoxLayout *encoderHBoxLayout = new QHBoxLayout(encoderHBox);
 87   fEncoderPath = new QLineEdit("",encoderHBox)     87   fEncoderPath = new QLineEdit("",encoderHBox);
 88                                                    88 
 89   QPushButton *encoderButton = new QPushButton     89   QPushButton *encoderButton = new QPushButton(tr("..."),encoderHBox);
 90   encoderButton->setMaximumWidth (30);             90   encoderButton->setMaximumWidth (30);
 91                                                    91 
 92   fEncoderStatus = new QLabel(encoderGroupBox)     92   fEncoderStatus = new QLabel(encoderGroupBox);
 93                                                    93 
 94   fEncoderStatus->setWordWrap(true);               94   fEncoderStatus->setWordWrap(true);
 95   encoderVGroupBoxLayout->setContentsMargins(1 <<  95   encoderVGroupBoxLayout->setMargin(15);
 96                                                    96 
 97   fEncoderStatus->setText("");                     97   fEncoderStatus->setText("");
 98                                                    98 
 99   encoderHBoxLayout->addWidget(fEncoderPath);      99   encoderHBoxLayout->addWidget(fEncoderPath);
100   encoderHBoxLayout->addWidget(encoderButton);    100   encoderHBoxLayout->addWidget(encoderButton);
101   encoderVGroupBoxLayout->addWidget(encoderHBo    101   encoderVGroupBoxLayout->addWidget(encoderHBox);
102   encoderVGroupBoxLayout->addWidget(fEncoderSt    102   encoderVGroupBoxLayout->addWidget(fEncoderStatus);
103                                                   103 
104   encoderGroupBox->setLayout(encoderVGroupBoxL    104   encoderGroupBox->setLayout(encoderVGroupBoxLayout);
105   globalVLayout->addWidget(encoderGroupBox);      105   globalVLayout->addWidget(encoderGroupBox);
106                                                   106 
107   connect( encoderButton, SIGNAL( clicked( ) )    107   connect( encoderButton, SIGNAL( clicked( ) ), this, SLOT(selectEncoderPathAction() ) );
108                                                   108 
109                                                   109 
110   // temp folder group box                        110   // temp folder group box
111   QGroupBox *tempFolderGroupBox = new QGroupBo    111   QGroupBox *tempFolderGroupBox = new QGroupBox(tr("Temporary folder path"),this);
112   QVBoxLayout *tempFolderVGroupBoxLayout = new    112   QVBoxLayout *tempFolderVGroupBoxLayout = new QVBoxLayout(tempFolderGroupBox);
113                                                   113 
114   // temp folder Path                             114   // temp folder Path
115   QWidget *tempFolderHBox = new QWidget(tempFo    115   QWidget *tempFolderHBox = new QWidget(tempFolderGroupBox);
116   QHBoxLayout *tempFolderHBoxLayout = new QHBo    116   QHBoxLayout *tempFolderHBoxLayout = new QHBoxLayout(tempFolderHBox);
117                                                   117 
118   fTempFolderPath = new QLineEdit("",tempFolde    118   fTempFolderPath = new QLineEdit("",tempFolderHBox);
119                                                   119 
120   QPushButton *tempButton = new QPushButton(tr    120   QPushButton *tempButton = new QPushButton(tr("..."),tempFolderHBox);
121   tempButton->setMaximumWidth (30);               121   tempButton->setMaximumWidth (30);
122                                                   122 
123   fTempFolderStatus = new QLabel(tempFolderGro    123   fTempFolderStatus = new QLabel(tempFolderGroupBox);
124   fTempFolderStatus->setWordWrap(true);           124   fTempFolderStatus->setWordWrap(true);
125   tempFolderVGroupBoxLayout->setContentsMargin << 125   tempFolderVGroupBoxLayout->setMargin(15);
126   fTempFolderStatus->setText("");                 126   fTempFolderStatus->setText("");
127                                                   127 
128   tempFolderHBoxLayout->addWidget(fTempFolderP    128   tempFolderHBoxLayout->addWidget(fTempFolderPath);
129   tempFolderHBoxLayout->addWidget(tempButton);    129   tempFolderHBoxLayout->addWidget(tempButton);
130   tempFolderVGroupBoxLayout->addWidget(tempFol    130   tempFolderVGroupBoxLayout->addWidget(tempFolderHBox);
131   tempFolderVGroupBoxLayout->addWidget(fTempFo    131   tempFolderVGroupBoxLayout->addWidget(fTempFolderStatus);
132                                                   132 
133   tempFolderGroupBox->setLayout(tempFolderVGro    133   tempFolderGroupBox->setLayout(tempFolderVGroupBoxLayout);
134   globalVLayout->addWidget(tempFolderGroupBox)    134   globalVLayout->addWidget(tempFolderGroupBox);
135                                                   135 
136   connect( tempButton, SIGNAL( clicked( ) ), t    136   connect( tempButton, SIGNAL( clicked( ) ), this, SLOT(selectTempPathAction() ) );
137                                                   137 
138                                                   138 
139                                                   139 
140                                                   140 
141   // save file group box                          141   // save file group box
142   QGroupBox *saveFileGroupBox = new QGroupBox(    142   QGroupBox *saveFileGroupBox = new QGroupBox(tr("Save as"),this);
143   QVBoxLayout *saveFileVGroupBoxLayout = new Q    143   QVBoxLayout *saveFileVGroupBoxLayout = new QVBoxLayout(saveFileGroupBox);
144                                                   144 
145   // save file                                    145   // save file
146   QWidget *saveFileHBox = new QWidget(saveFile    146   QWidget *saveFileHBox = new QWidget(saveFileGroupBox);
147   QHBoxLayout *saveFileHBoxLayout = new QHBoxL    147   QHBoxLayout *saveFileHBoxLayout = new QHBoxLayout(saveFileHBox);
148                                                   148 
149   fSaveFileName = new QLineEdit("G4Movie.mpeg"    149   fSaveFileName = new QLineEdit("G4Movie.mpeg",saveFileHBox);
150                                                   150 
151   QPushButton *saveButton = new QPushButton(tr    151   QPushButton *saveButton = new QPushButton(tr("..."),saveFileHBox);
152   saveButton->setMaximumWidth (30);               152   saveButton->setMaximumWidth (30);
153                                                   153 
154   fSaveFileStatus = new QLabel(saveFileGroupBo    154   fSaveFileStatus = new QLabel(saveFileGroupBox);
155   fSaveFileStatus->setWordWrap(true);             155   fSaveFileStatus->setWordWrap(true);
156   saveFileVGroupBoxLayout->setContentsMargins( << 156   saveFileVGroupBoxLayout->setMargin(15);
157   fSaveFileStatus->setText("");                   157   fSaveFileStatus->setText("");
158                                                   158 
159   saveFileHBoxLayout->addWidget(fSaveFileName)    159   saveFileHBoxLayout->addWidget(fSaveFileName);
160   saveFileHBoxLayout->addWidget(saveButton);      160   saveFileHBoxLayout->addWidget(saveButton);
161   saveFileVGroupBoxLayout->addWidget(saveFileH    161   saveFileVGroupBoxLayout->addWidget(saveFileHBox);
162   saveFileVGroupBoxLayout->addWidget(fSaveFile    162   saveFileVGroupBoxLayout->addWidget(fSaveFileStatus);
163                                                   163 
164   saveFileGroupBox->setLayout(saveFileVGroupBo    164   saveFileGroupBox->setLayout(saveFileVGroupBoxLayout);
165   globalVLayout->addWidget(saveFileGroupBox);     165   globalVLayout->addWidget(saveFileGroupBox);
166                                                   166 
167   connect( saveButton, SIGNAL( clicked( ) ), t    167   connect( saveButton, SIGNAL( clicked( ) ), this, SLOT(selectSaveFileNameAction() ) );
168                                                   168 
169                                                   169 
170                                                   170 
171   // label                                        171   // label
172                                                   172 
173   QLabel *infoLabel = new QLabel("  Press SPAC    173   QLabel *infoLabel = new QLabel("  Press SPACE to Start/Pause video recording \n  Press RETURN to Stop video recording",this);
174                                                   174 
175   // global status                                175   // global status
176   QGroupBox *statusGroupBox = new QGroupBox(tr    176   QGroupBox *statusGroupBox = new QGroupBox(tr("Status"),this);
177   QVBoxLayout *statusVGroupBoxLayout = new QVB    177   QVBoxLayout *statusVGroupBoxLayout = new QVBoxLayout(statusGroupBox);
178                                                   178 
179   fRecordingStatus = new QLabel(statusGroupBox    179   fRecordingStatus = new QLabel(statusGroupBox);
180   statusVGroupBoxLayout->setContentsMargins(15 << 180   statusVGroupBoxLayout->setMargin(15);
181   fRecordingStatus->setWordWrap(true);            181   fRecordingStatus->setWordWrap(true);
182   QPalette mypalette( fRecordingStatus->palett    182   QPalette mypalette( fRecordingStatus->palette() );
183   mypalette.setColor( QPalette::Text, Qt::gree    183   mypalette.setColor( QPalette::Text, Qt::green);
184   fRecordingStatus->setPalette(mypalette);        184   fRecordingStatus->setPalette(mypalette);
185                                                   185 
186   fRecordingInfos = new QLabel(statusGroupBox)    186   fRecordingInfos = new QLabel(statusGroupBox);
187   fRecordingInfos->setWordWrap(true);             187   fRecordingInfos->setWordWrap(true);
188   setRecordingInfos("");                          188   setRecordingInfos("");
189                                                   189 
190   statusVGroupBoxLayout->addWidget(fRecordingS    190   statusVGroupBoxLayout->addWidget(fRecordingStatus);
191   statusVGroupBoxLayout->addWidget(fRecordingI    191   statusVGroupBoxLayout->addWidget(fRecordingInfos);
192                                                   192 
193   statusGroupBox->setLayout(statusVGroupBoxLay    193   statusGroupBox->setLayout(statusVGroupBoxLayout);
194   globalVLayout->addWidget(infoLabel);            194   globalVLayout->addWidget(infoLabel);
195   globalVLayout->addWidget(statusGroupBox);       195   globalVLayout->addWidget(statusGroupBox);
196                                                   196 
197   // buttons                                      197   // buttons
198   QWidget *buttonBox = new QWidget(this);         198   QWidget *buttonBox = new QWidget(this);
199                                                   199 
200   QHBoxLayout *buttonBoxLayout = new QHBoxLayo    200   QHBoxLayout *buttonBoxLayout = new QHBoxLayout(buttonBox);
201                                                   201 
202   QPushButton *buttonReset = new QPushButton(     202   QPushButton *buttonReset = new QPushButton( tr( "&Reset" ),buttonBox );
203   buttonReset->setAutoDefault( TRUE );            203   buttonReset->setAutoDefault( TRUE );
204   buttonBoxLayout->addWidget(buttonReset);        204   buttonBoxLayout->addWidget(buttonReset);
205                                                   205 
206   fButtonStartPause = new QPushButton( tr( "      206   fButtonStartPause = new QPushButton( tr( "  &Start " ),buttonBox );
207   fButtonStartPause->setEnabled(true);            207   fButtonStartPause->setEnabled(true);
208   fButtonStartPause->setAutoDefault( TRUE );      208   fButtonStartPause->setAutoDefault( TRUE );
209   buttonBoxLayout->addWidget(fButtonStartPause    209   buttonBoxLayout->addWidget(fButtonStartPause);
210                                                   210 
211   fButtonStopFinishClose = new QPushButton( tr    211   fButtonStopFinishClose = new QPushButton( tr( "&Stop" ),buttonBox );
212   fButtonStopFinishClose->setEnabled(false);      212   fButtonStopFinishClose->setEnabled(false);
213   fButtonStopFinishClose->setAutoDefault( TRUE    213   fButtonStopFinishClose->setAutoDefault( TRUE );
214   buttonBoxLayout->addWidget(fButtonStopFinish    214   buttonBoxLayout->addWidget(fButtonStopFinishClose);
215                                                   215 
216   fButtonSave = new QPushButton( tr( "&Save" )    216   fButtonSave = new QPushButton( tr( "&Save" ),buttonBox );
217   fButtonSave->setEnabled(false);                 217   fButtonSave->setEnabled(false);
218   fButtonSave->setAutoDefault( TRUE );            218   fButtonSave->setAutoDefault( TRUE );
219   buttonBoxLayout->addWidget(fButtonSave);        219   buttonBoxLayout->addWidget(fButtonSave);
220                                                   220 
221   QPushButton *buttonCancel = new QPushButton(    221   QPushButton *buttonCancel = new QPushButton( tr( "&Cancel" ),buttonBox );
222   buttonCancel->setAutoDefault( TRUE );           222   buttonCancel->setAutoDefault( TRUE );
223   buttonBoxLayout->addWidget(buttonCancel);       223   buttonBoxLayout->addWidget(buttonCancel);
224                                                   224 
225   buttonBox->setLayout(buttonBoxLayout);          225   buttonBox->setLayout(buttonBoxLayout);
226   globalVLayout->addWidget(buttonBox);            226   globalVLayout->addWidget(buttonBox);
227                                                   227 
228                                                   228 
229                                                   229 
230   setLayout(globalVLayout);                       230   setLayout(globalVLayout);
231                                                   231 
232   // signals and slots connections                232   // signals and slots connections
233   connect( fButtonStartPause, SIGNAL( clicked(    233   connect( fButtonStartPause, SIGNAL( clicked() ), fParentViewer, SLOT(    startPauseVideo() ) );
234   connect( buttonReset, SIGNAL( clicked() ), t    234   connect( buttonReset, SIGNAL( clicked() ), this, SLOT( resetRecording() ) );
235   connect( buttonCancel, SIGNAL( clicked() ),     235   connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
236   connect( fButtonStopFinishClose, SIGNAL( cli    236   connect( fButtonStopFinishClose, SIGNAL( clicked() ), this, SLOT( stopFinishClose() ) );
237   connect( fButtonSave, SIGNAL( clicked() ), t    237   connect( fButtonSave, SIGNAL( clicked() ), this, SLOT( save() ) );
238                                                   238 
239   // fill                                         239   // fill
240   setRecordingStatus("");                         240   setRecordingStatus("");
241   fEncoderPath->setText(fParentViewer->getEnco    241   fEncoderPath->setText(fParentViewer->getEncoderPath());
242   fTempFolderPath->setText(fParentViewer->getT    242   fTempFolderPath->setText(fParentViewer->getTempFolderPath());
243                                                   243 
244   // connect line edit signals                    244   // connect line edit signals
245   connect (fEncoderPath,SIGNAL(textChanged ( c    245   connect (fEncoderPath,SIGNAL(textChanged ( const QString&)),this,SLOT(checkEncoderSwParameters()));
246   connect (fTempFolderPath,SIGNAL(textChanged     246   connect (fTempFolderPath,SIGNAL(textChanged ( const QString&)),this,SLOT(checkTempFolderParameters()));
247   connect (fSaveFileName,SIGNAL(textChanged (     247   connect (fSaveFileName,SIGNAL(textChanged ( const QString&)),this,SLOT(checkSaveFileNameParameters()));
248                                                   248 
249   connect (fEncoderPath,SIGNAL(editingFinished    249   connect (fEncoderPath,SIGNAL(editingFinished ()),this,SLOT(checkEncoderSwParameters()));
250   connect (fTempFolderPath,SIGNAL(editingFinis    250   connect (fTempFolderPath,SIGNAL(editingFinished ()),this,SLOT(checkTempFolderParameters()));
251   connect (fSaveFileName,SIGNAL(editingFinishe    251   connect (fSaveFileName,SIGNAL(editingFinished ()),this,SLOT(checkSaveFileNameParameters()));
252                                                   252 
253 }                                                 253 }
254                                                   254 
255                                                   255 
256                                                   256 
257 G4OpenGLQtMovieDialog::~G4OpenGLQtMovieDialog(    257 G4OpenGLQtMovieDialog::~G4OpenGLQtMovieDialog()
258 {                                                 258 {
259 }                                                 259 }
260                                                   260 
261 void G4OpenGLQtMovieDialog::selectEncoderPathA    261 void G4OpenGLQtMovieDialog::selectEncoderPathAction()
262 {                                                 262 {
263   QString nomFich =  QFileDialog::getOpenFileN    263   QString nomFich =  QFileDialog::getOpenFileName ( this,
264                                                   264                                                     "Select your encoder",
265                                                   265                                                     tr("Select your encoder ..."));
266                                                   266 
267                                                   267 
268   if (nomFich == "") {                            268   if (nomFich == "") {
269     return;                                       269     return;
270   }                                               270   }
271   fEncoderPath->setText(nomFich);                 271   fEncoderPath->setText(nomFich);
272   checkEncoderSwParameters();                     272   checkEncoderSwParameters();
273  }                                                273  }
274                                                   274 
275                                                   275 
276 void G4OpenGLQtMovieDialog::selectTempPathActi    276 void G4OpenGLQtMovieDialog::selectTempPathAction()
277 {                                                 277 {
278   QString nomFich =  QFileDialog::getExistingD    278   QString nomFich =  QFileDialog::getExistingDirectory ( this,
279                                                   279                                                     "Select temporary folder",
280                                                   280                                                     tr("Select temporary folder ..."));
281                                                   281 
282   if (nomFich == "") {                            282   if (nomFich == "") {
283     return;                                       283     return;
284   }                                               284   }
285   fTempFolderPath->setText(nomFich);              285   fTempFolderPath->setText(nomFich);
286   checkTempFolderParameters();                    286   checkTempFolderParameters();
287  }                                                287  }
288                                                   288 
289                                                   289 
290 void G4OpenGLQtMovieDialog::selectSaveFileName    290 void G4OpenGLQtMovieDialog::selectSaveFileNameAction()
291 {                                                 291 {
292   QString nomFich =  QFileDialog::getSaveFileN    292   QString nomFich =  QFileDialog::getSaveFileName ( this,
293                                                   293                                                     "Select saved file",
294                                                   294                                                     tr("Select saved file ..."));
295                                                   295 
296   if (nomFich == "") {                            296   if (nomFich == "") {
297     return;                                       297     return;
298   }                                               298   }
299   fSaveFileName->setText(nomFich);                299   fSaveFileName->setText(nomFich);
300   checkSaveFileNameParameters();                  300   checkSaveFileNameParameters();
301  }                                                301  }
302                                                   302 
303                                                   303 
304 void G4OpenGLQtMovieDialog::stopFinishClose()     304 void G4OpenGLQtMovieDialog::stopFinishClose() {
305   fParentViewer->stopVideo();                     305   fParentViewer->stopVideo();
306 }                                                 306 }
307                                                   307 
308 void G4OpenGLQtMovieDialog::save() {              308 void G4OpenGLQtMovieDialog::save() {
309   if (((fParentViewer->isPaused()) || fParentV    309   if (((fParentViewer->isPaused()) || fParentViewer->isRecording() || fParentViewer->isStopped())) {
310     fParentViewer->saveVideo();                   310     fParentViewer->saveVideo();
311   }                                               311   }
312 }                                                 312 }
313                                                   313 
314   /**                                             314   /**
315  * If one of parameter is incorrect, put it in    315  * If one of parameter is incorrect, put it in red and don't valid it
316  * If valid, save it                              316  * If valid, save it
317  */                                               317  */
318 bool G4OpenGLQtMovieDialog::checkEncoderSwPara    318 bool G4OpenGLQtMovieDialog::checkEncoderSwParameters() {
319                                                   319 
320   bool status = true;                             320   bool status = true;
321   QPalette mypalette( fEncoderPath->palette()     321   QPalette mypalette( fEncoderPath->palette() );
322                                                   322 
323   QString temp = fParentViewer->setEncoderPath    323   QString temp = fParentViewer->setEncoderPath(fEncoderPath->text());
324   setRecordingInfos("");                          324   setRecordingInfos("");
325   fEncoderStatus->setText(temp);                  325   fEncoderStatus->setText(temp);
326   if (temp != "") {                               326   if (temp != "") {
327     mypalette.setColor( QPalette::Base, Qt::re    327     mypalette.setColor( QPalette::Base, Qt::red);
328     if (fParentViewer->isReadyToEncode()) {       328     if (fParentViewer->isReadyToEncode()) {
329       setRecordingInfos("No valid encode defin    329       setRecordingInfos("No valid encode defined, screen capture had been saved in the temp folder in ppm format.\nPlease define a encoder and clic on Apply button");
330   }                                               330   }
331     status = false;                               331     status = false;
332   } else {                                        332   } else {
333     mypalette.setColor( QPalette::Base, Qt::wh    333     mypalette.setColor( QPalette::Base, Qt::white);
334     fEncoderPath->setText(fParentViewer->getEn    334     fEncoderPath->setText(fParentViewer->getEncoderPath());
335   }                                               335   }
336   fEncoderPath->setPalette(mypalette);            336   fEncoderPath->setPalette(mypalette);
337   return status;                                  337   return status;
338 }                                                 338 }
339                                                   339 
340                                                   340 
341 /**                                               341 /**
342  * If one of parameter is incorrect, put it in    342  * If one of parameter is incorrect, put it in red and don't valid it
343  * If valid, save it                              343  * If valid, save it
344  */                                               344  */
345 bool G4OpenGLQtMovieDialog::checkTempFolderPar    345 bool G4OpenGLQtMovieDialog::checkTempFolderParameters() {
346                                                   346 
347   bool status = true;                             347   bool status = true;
348   QPalette mypalette( fTempFolderPath->palette    348   QPalette mypalette( fTempFolderPath->palette() );
349                                                   349 
350   QString temp = fParentViewer->setTempFolderP    350   QString temp = fParentViewer->setTempFolderPath(fTempFolderPath->text());
351   fTempFolderStatus->setText(temp);               351   fTempFolderStatus->setText(temp);
352   if (temp != "") {                               352   if (temp != "") {
353     mypalette.setColor( QPalette::Base, Qt::re    353     mypalette.setColor( QPalette::Base, Qt::red);
354     status = false;                               354     status = false;
355   } else {                                        355   } else {
356     mypalette.setColor( QPalette::Base, Qt::wh    356     mypalette.setColor( QPalette::Base, Qt::white);
357     fTempFolderPath->setText(fParentViewer->ge    357     fTempFolderPath->setText(fParentViewer->getTempFolderPath());
358   }                                               358   }
359   fTempFolderPath->setPalette(mypalette);         359   fTempFolderPath->setPalette(mypalette);
360   return status;                                  360   return status;
361 }                                                 361 }
362                                                   362 
363                                                   363 
364 /**                                               364 /**
365  * If one of parameter is incorrect, put it in    365  * If one of parameter is incorrect, put it in red and don't valid it
366  * If valid, save it                              366  * If valid, save it
367  */                                               367  */
368 bool G4OpenGLQtMovieDialog::checkSaveFileNameP    368 bool G4OpenGLQtMovieDialog::checkSaveFileNameParameters() {
369                                                   369 
370   bool status = true;                             370   bool status = true;
371   QPalette mypalette( fSaveFileName->palette()    371   QPalette mypalette( fSaveFileName->palette() );
372                                                   372 
373   QString temp = fParentViewer->setSaveFileNam    373   QString temp = fParentViewer->setSaveFileName(fSaveFileName->text());
374   fSaveFileStatus->setText(temp);                 374   fSaveFileStatus->setText(temp);
375   if (temp != "") {                               375   if (temp != "") {
376     mypalette.setColor( QPalette::Base, Qt::re    376     mypalette.setColor( QPalette::Base, Qt::red);
377     status = false;                               377     status = false;
378   } else {                                        378   } else {
379     mypalette.setColor( QPalette::Base, Qt::wh    379     mypalette.setColor( QPalette::Base, Qt::white);
380     fSaveFileName->setText(fParentViewer->getS    380     fSaveFileName->setText(fParentViewer->getSaveFileName());
381   }                                               381   }
382   fSaveFileName->setPalette(mypalette);           382   fSaveFileName->setPalette(mypalette);
383   return status;                                  383   return status;
384 }                                                 384 }
385                                                   385 
386                                                   386 
387 void G4OpenGLQtMovieDialog::resetRecording() {    387 void G4OpenGLQtMovieDialog::resetRecording() {
388   fParentViewer->resetRecording();                388   fParentViewer->resetRecording();
389 }                                                 389 }
390                                                   390 
391                                                   391 
392 void G4OpenGLQtMovieDialog::setRecordingStatus    392 void G4OpenGLQtMovieDialog::setRecordingStatus(QString txt) {
393   fRecordingStatus->setText(txt);                 393   fRecordingStatus->setText(txt);
394   if (fParentViewer->isWaiting()) {               394   if (fParentViewer->isWaiting()) {
395     fButtonStartPause->setText("  &Start ");      395     fButtonStartPause->setText("  &Start ");
396     fButtonStartPause->setEnabled(true);          396     fButtonStartPause->setEnabled(true);
397     fButtonStopFinishClose->setEnabled(false);    397     fButtonStopFinishClose->setEnabled(false);
398     fButtonSave->setEnabled(false);               398     fButtonSave->setEnabled(false);
399                                                   399 
400   } else if (fParentViewer->isPaused()) {         400   } else if (fParentViewer->isPaused()) {
401                                                   401 
402     fButtonStartPause->setText("  &Continue ")    402     fButtonStartPause->setText("  &Continue ");
403     fButtonStartPause->setEnabled(true);          403     fButtonStartPause->setEnabled(true);
404     fButtonStopFinishClose->setEnabled(true);     404     fButtonStopFinishClose->setEnabled(true);
405     fButtonSave->setEnabled(false);               405     fButtonSave->setEnabled(false);
406                                                   406 
407   } else if (fParentViewer->isRecording()) {      407   } else if (fParentViewer->isRecording()) {
408                                                   408 
409     fButtonStartPause->setText("  &Pause ");      409     fButtonStartPause->setText("  &Pause ");
410     fButtonStartPause->setEnabled(true);          410     fButtonStartPause->setEnabled(true);
411     fButtonStopFinishClose->setEnabled(true);     411     fButtonStopFinishClose->setEnabled(true);
412     fButtonSave->setEnabled(false);               412     fButtonSave->setEnabled(false);
413                                                   413 
414   } else if (fParentViewer->isBadOutput()) {      414   } else if (fParentViewer->isBadOutput()) {
415                                                   415 
416     fButtonStartPause->setText("  &Start ");      416     fButtonStartPause->setText("  &Start ");
417     fButtonStartPause->setEnabled(true);          417     fButtonStartPause->setEnabled(true);
418     fButtonStopFinishClose->setEnabled(false);    418     fButtonStopFinishClose->setEnabled(false);
419     fButtonSave->setEnabled(false);               419     fButtonSave->setEnabled(false);
420                                                   420 
421   } else if (fParentViewer->isBadTmp()) {         421   } else if (fParentViewer->isBadTmp()) {
422                                                   422 
423     fButtonStartPause->setText("  &Start ");      423     fButtonStartPause->setText("  &Start ");
424     fButtonStartPause->setEnabled(false);         424     fButtonStartPause->setEnabled(false);
425     fButtonStopFinishClose->setEnabled(false);    425     fButtonStopFinishClose->setEnabled(false);
426     fButtonSave->setEnabled(false);               426     fButtonSave->setEnabled(false);
427                                                   427 
428   } else if (fParentViewer->isBadEncoder()) {     428   } else if (fParentViewer->isBadEncoder()) {
429                                                   429 
430     fButtonStartPause->setText("  &Start ");      430     fButtonStartPause->setText("  &Start ");
431     fButtonStartPause->setEnabled(true);          431     fButtonStartPause->setEnabled(true);
432     fButtonStopFinishClose->setEnabled(false);    432     fButtonStopFinishClose->setEnabled(false);
433     fButtonSave->setEnabled(false);               433     fButtonSave->setEnabled(false);
434                                                   434 
435   } else if (fParentViewer->isSuccess()) {        435   } else if (fParentViewer->isSuccess()) {
436                                                   436 
437     fButtonStartPause->setText("  &Start ");      437     fButtonStartPause->setText("  &Start ");
438     fButtonStartPause->setEnabled(false);         438     fButtonStartPause->setEnabled(false);
439     fButtonStopFinishClose->setEnabled(false);    439     fButtonStopFinishClose->setEnabled(false);
440     fButtonSave->setEnabled(false);               440     fButtonSave->setEnabled(false);
441                                                   441 
442   } else if (fParentViewer->isFailed()) {         442   } else if (fParentViewer->isFailed()) {
443                                                   443 
444     fButtonStartPause->setText("  &Start ");      444     fButtonStartPause->setText("  &Start ");
445     fButtonStartPause->setEnabled(false);         445     fButtonStartPause->setEnabled(false);
446     fButtonStopFinishClose->setEnabled(false);    446     fButtonStopFinishClose->setEnabled(false);
447     fButtonSave->setEnabled(false);               447     fButtonSave->setEnabled(false);
448                                                   448 
449   } else if (fParentViewer->isStopped()) {        449   } else if (fParentViewer->isStopped()) {
450                                                   450 
451     fButtonStartPause->setText("  &Start ");      451     fButtonStartPause->setText("  &Start ");
452     fButtonStartPause->setEnabled(false);         452     fButtonStartPause->setEnabled(false);
453     fButtonStopFinishClose->setEnabled(false);    453     fButtonStopFinishClose->setEnabled(false);
454     fButtonSave->setEnabled(true);                454     fButtonSave->setEnabled(true);
455   }                                               455   }
456 }                                                 456 }
457                                                   457 
458                                                   458 
459 void G4OpenGLQtMovieDialog::setRecordingInfos(    459 void G4OpenGLQtMovieDialog::setRecordingInfos(QString txt) {
460   fRecordingInfos->setText(txt);                  460   fRecordingInfos->setText(txt);
461 }                                                 461 }
462                                                   462 
463                                                   463 
464 void G4OpenGLQtMovieDialog::enabledApplyButton    464 void G4OpenGLQtMovieDialog::enabledApplyButton() {
465   fButtonStartPause->setEnabled(true);            465   fButtonStartPause->setEnabled(true);
466 }                                                 466 }
467                                                   467