Changeset 857


Ignore:
Timestamp:
Oct 1, 2008, 5:12:18 PM (16 years ago)
Author:
garnier
Message:

movie parameters imrovments

Location:
trunk/source/visualization/OpenGL
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/visualization/OpenGL/include/G4OpenGLQtMovieDialog.hh

    r754 r857  
    7474  QLabel *fRecordingStatus;
    7575  QLabel *fRecordingInfos;
    76   QPushButton *fButtonEncode;
    77   QPushButton *fButtonApply;
    78 
    79   bool checkEncoderParameters(QString);
    80   bool checkTempFolderParameters(QString);
    81   bool checkSaveFileNameParameters(QString);
     76  QPushButton *fButtonStopFinishClose;
     77  QPushButton *fButtonSave;
     78  QPushButton *fButtonStartPause;
    8279
    8380public slots :
    8481  void checkAllParameters();
     82  void stopFinishClose();
     83  void save();
     84  bool checkEncoderSwParameters();
     85  bool checkSaveFileNameParameters();
     86  bool checkTempFolderParameters();
    8587
    8688private slots :
     
    8890  void selectTempPathAction();
    8991  void selectSaveFileNameAction();
    90   void encode();
    9192  void resetRecording();
    9293  void enabledApplyButton();
  • trunk/source/visualization/OpenGL/include/G4OpenGLQtViewer.hh

    r850 r857  
    8383  bool isRecording();
    8484  bool isStopped();
     85  bool isPaused();
     86  bool isEncoding();
     87  bool isWaiting();
     88  bool isFailed();
     89  void setWaiting();
     90  bool isBadEncoder();
     91  bool isBadOutput();
     92  bool isBadTmp();
     93  bool isSuccess();
     94  void setBadTmp();
     95  void setBadOutput();
     96  void setBadEncoder();
    8597  bool isReadyToEncode();
    8698  void resetRecording();
    8799  void encodeVideo();
     100  void stopVideo();
     101  void saveVideo();
    88102  bool generateMpegEncoderParameters();
    89103  void displayRecordingStatus();
     
    129143private:
    130144  enum mouseActions {STYLE1,STYLE2,STYLE3,STYLE4};
    131   enum RECORDING_STEP {WAIT,START,PAUSE,CONTINUE,STOP,READY_TO_ENCODE,ENCODING,FAILED,SUCCESS};
     145  enum RECORDING_STEP {WAIT,START,PAUSE,CONTINUE,STOP,READY_TO_ENCODE,ENCODING,FAILED,SUCCESS,BAD_ENCODER,BAD_OUTPUT,BAD_TMP,SAVE};
    132146
    133147  void createPopupMenu();
     
    141155  QString createTempFolder();
    142156  QString removeTempFolder();
    143   void startPauseVideo();
    144   void stopVideo();
    145157  void setRecordingStatus(RECORDING_STEP);
    146158  void setRecordingInfos(QString);
     
    203215 void moveZ(int);
    204216
     217public slots :
     218  void startPauseVideo();
     219
    205220private slots :
    206221  void actionMouseRotate();
  • trunk/source/visualization/OpenGL/src/G4OpenGLQtMovieDialog.cc

    r850 r857  
    182182  QHBoxLayout *saveFileHBoxLayout = new QHBoxLayout(saveFileHBox);
    183183
    184   fSaveFileName = new QLineEdit("",saveFileHBox);
     184  fSaveFileName = new QLineEdit("G4Movie.mpeg",saveFileHBox);
    185185
    186186  QPushButton *saveButton = new QPushButton(tr("..."),saveFileHBox);
     
    270270  QHBoxLayout *buttonBoxLayout = new QHBoxLayout(buttonBox);
    271271
     272  QPushButton *buttonReset = new QPushButton( tr( "&Reset" ),buttonBox );
     273  buttonReset->setAutoDefault( TRUE );
     274  buttonBoxLayout->addWidget(buttonReset);
     275
     276  fButtonStartPause = new QPushButton( tr( "  &Start " ),buttonBox );
     277  fButtonStartPause->setEnabled(true);
     278  fButtonStartPause->setAutoDefault( TRUE );
     279  buttonBoxLayout->addWidget(fButtonStartPause);
     280
     281  fButtonStopFinishClose = new QPushButton( tr( "&Stop" ),buttonBox );
     282  fButtonStopFinishClose->setEnabled(false);
     283  fButtonStopFinishClose->setAutoDefault( TRUE );
     284  buttonBoxLayout->addWidget(fButtonStopFinishClose);
     285
     286  fButtonSave = new QPushButton( tr( "&Save" ),buttonBox );
     287  fButtonSave->setEnabled(false);
     288  fButtonSave->setAutoDefault( TRUE );
     289  buttonBoxLayout->addWidget(fButtonSave);
     290
    272291  QPushButton *buttonCancel = new QPushButton( tr( "&Cancel" ),buttonBox );
    273292  buttonCancel->setAutoDefault( TRUE );
    274293  buttonBoxLayout->addWidget(buttonCancel);
    275294
    276   QPushButton *buttonReset = new QPushButton( tr( "&Reset" ),buttonBox );
    277   buttonReset->setAutoDefault( TRUE );
    278   buttonBoxLayout->addWidget(buttonReset);
    279 
    280   fButtonApply = new QPushButton( tr( "&Apply" ),buttonBox );
    281   fButtonApply->setAutoDefault( TRUE );
    282   enabledApplyButton();
    283   buttonBoxLayout->addWidget(fButtonApply);
    284 
    285   fButtonEncode = new QPushButton( tr( "&Encode" ),buttonBox );
    286   fButtonEncode->setEnabled(fParentViewer->isReadyToEncode());
    287   fButtonEncode->setAutoDefault( TRUE );
    288   buttonBoxLayout->addWidget(fButtonEncode);
    289 
    290295#if QT_VERSION >= 0x040000
    291296  buttonBox->setLayout(buttonBoxLayout);
     
    300305
    301306  // signals and slots connections
    302   connect( fButtonApply, SIGNAL( clicked() ), this, SLOT( checkAllParameters() ) );
     307  connect( fButtonStartPause, SIGNAL( clicked() ), fParentViewer, SLOT(    startPauseVideo() ) );
    303308  connect( buttonReset, SIGNAL( clicked() ), this, SLOT( resetRecording() ) );
    304309  connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
    305   connect( fButtonEncode, SIGNAL( clicked() ), this, SLOT( encode() ) );
     310  connect( fButtonStopFinishClose, SIGNAL( clicked() ), this, SLOT( stopFinishClose() ) );
     311  connect( fButtonSave, SIGNAL( clicked() ), this, SLOT( save() ) );
    306312
    307313  // fill
     
    311317
    312318  // connect line edit signals
    313   connect (fEncoderPath,SIGNAL(textChanged ( const QString&)),this,SLOT(enabledApplyButton()));
    314   connect (fTempFolderPath,SIGNAL(textChanged ( const QString&)),this,SLOT(enabledApplyButton()));
    315   connect (fSaveFileName,SIGNAL(textChanged ( const QString&)),this,SLOT(enabledApplyButton()));
     319  connect (fEncoderPath,SIGNAL(textChanged ( const QString&)),this,SLOT(checkEncoderSwParameters()));
     320  connect (fTempFolderPath,SIGNAL(textChanged ( const QString&)),this,SLOT(checkTempFolderParameters()));
     321  connect (fSaveFileName,SIGNAL(textChanged ( const QString&)),this,SLOT(checkSaveFileNameParameters()));
    316322
    317323#if QT_VERSION >= 0x040000
    318   connect (fEncoderPath,SIGNAL(editingFinished ()),this,SLOT(checkAllParameters()));
    319   connect (fTempFolderPath,SIGNAL(editingFinished ()),this,SLOT(checkAllParameters()));
    320   connect (fSaveFileName,SIGNAL(editingFinished ()),this,SLOT(checkAllParameters()));
    321 #else
    322   connect (fEncoderPath,SIGNAL(lostFocus ()),this,SLOT(checkAllParameters()));
    323   connect (fTempFolderPath,SIGNAL(lostFocus ()),this,SLOT(checkAllParameters()));
    324   connect (fSaveFileName,SIGNAL(lostFocus ()),this,SLOT(checkAllParameters()));
    325 #endif
    326 
    327   checkAllParameters();
     324  connect (fEncoderPath,SIGNAL(editingFinished ()),this,SLOT(checkEncoderSwParameters()));
     325  connect (fTempFolderPath,SIGNAL(editingFinished ()),this,SLOT(checkTempFolderParameters()));
     326  connect (fSaveFileName,SIGNAL(editingFinished ()),this,SLOT(checkSaveFileNameParameters()));
     327#else
     328  connect (fEncoderPath,SIGNAL(lostFocus ()),this,SLOT(checkEncoderSwParameters()));
     329  connect (fTempFolderPath,SIGNAL(lostFocus ()),this,SLOT(checkTempFolderParameters()));
     330  connect (fSaveFileName,SIGNAL(lostFocus ()),this,SLOT(checkSaveFileNameParameters()));
     331#endif
     332
    328333}
    329334
     
    353358  }
    354359  fEncoderPath->setText(nomFich);
    355   checkAllParameters();
     360  checkEncoderSwParameters();
    356361 }
    357362
     
    374379  }
    375380  fTempFolderPath->setText(nomFich);
    376   checkAllParameters();
     381  checkTempFolderParameters();
    377382 }
    378383
     
    396401  }
    397402  fSaveFileName->setText(nomFich);
    398   checkAllParameters();
     403  checkSaveFileNameParameters();
    399404 }
    400405
    401406
    402 void G4OpenGLQtMovieDialog::encode() {
    403   fParentViewer->encodeVideo();
    404 }
    405 
    406 /** Check all parameters
    407 */
    408 void G4OpenGLQtMovieDialog::checkAllParameters() {
    409 
    410   // set state of encode button
    411   // if frames had been generated and parameters are valid : enabled encode button
    412   bool status = checkEncoderParameters(fEncoderPath->text())
    413               & checkTempFolderParameters(fTempFolderPath->text())
    414               & checkSaveFileNameParameters(fSaveFileName->text());
    415   if (status) {
    416     if (fParentViewer->isStopped()) {
    417       if (fParentViewer->generateMpegEncoderParameters()) {
    418         fButtonEncode->setEnabled(fParentViewer->isReadyToEncode() );
    419       }
    420     }
    421   }
    422   fButtonApply->setEnabled(false);
    423 }
    424 
     407void G4OpenGLQtMovieDialog::stopFinishClose() {
     408  fParentViewer->stopVideo();
     409}
     410
     411void G4OpenGLQtMovieDialog::save() {
     412  if (((fParentViewer->isPaused()) || fParentViewer->isRecording() || fParentViewer->isStopped())) {
     413    fParentViewer->saveVideo();
     414  }
     415}
    425416
    426417        /**
     
    428419 * If valid, save it
    429420 */
    430 bool G4OpenGLQtMovieDialog::checkEncoderParameters(QString param) {
     421bool G4OpenGLQtMovieDialog::checkEncoderSwParameters() {
    431422
    432423  bool status = true;
    433424  QPalette palette( fEncoderPath->palette() );
    434425
    435   QString temp = fParentViewer->setEncoderPath(param);
     426  QString temp = fParentViewer->setEncoderPath(fEncoderPath->text());
    436427  setRecordingInfos("");
    437428  fEncoderStatus->setText(temp);
     
    463454 * If valid, save it
    464455 */
    465 bool G4OpenGLQtMovieDialog::checkTempFolderParameters(QString param) {
     456bool G4OpenGLQtMovieDialog::checkTempFolderParameters() {
    466457
    467458  bool status = true;
    468459  QPalette palette( fTempFolderPath->palette() );
    469460
    470   QString temp = fParentViewer->setTempFolderPath(param);
     461  QString temp = fParentViewer->setTempFolderPath(fTempFolderPath->text());
    471462  fTempFolderStatus->setText(temp);
    472463  if (temp != "") {
     
    494485 * If valid, save it
    495486 */
    496 bool G4OpenGLQtMovieDialog::checkSaveFileNameParameters(QString param) {
     487bool G4OpenGLQtMovieDialog::checkSaveFileNameParameters() {
    497488
    498489  bool status = true;
    499490  QPalette palette( fSaveFileName->palette() );
    500491
    501   QString temp = fParentViewer->setSaveFileName(param);
     492  QString temp = fParentViewer->setSaveFileName(fSaveFileName->text());
    502493  fSaveFileStatus->setText(temp);
    503494  if (temp != "") {
     
    527518
    528519void G4OpenGLQtMovieDialog::setRecordingStatus(QString txt) {
    529   fButtonEncode->setEnabled(fParentViewer->isReadyToEncode());
    530520  fRecordingStatus->setText(txt);
     521  if (fParentViewer->isWaiting()) {
     522    fButtonStartPause->setText("  &Start ");
     523    fButtonStartPause->setEnabled(true);
     524    fButtonStopFinishClose->setEnabled(false);
     525    fButtonSave->setEnabled(false);
     526
     527  } else if (fParentViewer->isPaused()) {
     528
     529    fButtonStartPause->setText("  &Continue ");
     530    fButtonStartPause->setEnabled(true);
     531    fButtonStopFinishClose->setEnabled(true);
     532    fButtonSave->setEnabled(false);
     533
     534  } else if (fParentViewer->isRecording()) {
     535
     536    fButtonStartPause->setText("  &Pause ");
     537    fButtonStartPause->setEnabled(true);
     538    fButtonStopFinishClose->setEnabled(true);
     539    fButtonSave->setEnabled(false);
     540
     541  } else if (fParentViewer->isBadOutput()) {
     542
     543    fButtonStartPause->setText("  &Start ");
     544    fButtonStartPause->setEnabled(true);
     545    fButtonStopFinishClose->setEnabled(false);
     546    fButtonSave->setEnabled(false);
     547
     548  } else if (fParentViewer->isBadTmp()) {
     549
     550    fButtonStartPause->setText("  &Start ");
     551    fButtonStartPause->setEnabled(false);
     552    fButtonStopFinishClose->setEnabled(false);
     553    fButtonSave->setEnabled(false);
     554
     555  } else if (fParentViewer->isBadEncoder()) {
     556
     557    fButtonStartPause->setText("  &Start ");
     558    fButtonStartPause->setEnabled(true);
     559    fButtonStopFinishClose->setEnabled(false);
     560    fButtonSave->setEnabled(false);
     561
     562  } else if (fParentViewer->isSuccess()) {
     563
     564    fButtonStartPause->setText("  &Start ");
     565    fButtonStartPause->setEnabled(false);
     566    fButtonStopFinishClose->setEnabled(false);
     567    fButtonSave->setEnabled(false);
     568
     569  } else if (fParentViewer->isFailed()) {
     570
     571    fButtonStartPause->setText("  &Start ");
     572    fButtonStartPause->setEnabled(false);
     573    fButtonStopFinishClose->setEnabled(false);
     574    fButtonSave->setEnabled(false);
     575
     576  } else if (fParentViewer->isStopped()) {
     577
     578    fButtonStartPause->setText("  &Start ");
     579    fButtonStartPause->setEnabled(false);
     580    fButtonStopFinishClose->setEnabled(false);
     581    fButtonSave->setEnabled(true);
     582  }
    531583}
    532584
     
    538590
    539591void G4OpenGLQtMovieDialog::enabledApplyButton() {
    540   fButtonApply->setEnabled(true);
    541 }
    542 
    543 #endif
     592  fButtonStartPause->setEnabled(true);
     593}
     594
     595#endif
  • trunk/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc

    r850 r857  
    14861486    fMovieParametersDialog= new G4OpenGLQtMovieDialog(this,GLWindow);
    14871487    displayRecordingStatus();
     1488    fMovieParametersDialog->checkEncoderSwParameters();
     1489    fMovieParametersDialog->checkSaveFileNameParameters();
     1490    fMovieParametersDialog->checkTempFolderParameters();
    14881491    if (getEncoderPath() == "") {
    14891492      setRecordingInfos("mpeg_encode is needed to encode in video format. It is available here: http://bmrc.berkeley.edu/frame/research/mpeg/");
     
    21242127  if (fRecordFrameNumber >0) {
    21252128    // check parameters if they were modified (Re APPLY them...)
    2126     // It will enable/disable encode button
    2127     fMovieParametersDialog->checkAllParameters();
     2129    if (!(fMovieParametersDialog->checkEncoderSwParameters())) {
     2130      setRecordingStatus(BAD_ENCODER);
     2131    }  else if (!(fMovieParametersDialog->checkSaveFileNameParameters())) {
     2132      setRecordingStatus(BAD_OUTPUT);
     2133    }
    21282134  } else {
    21292135    resetRecording();
    21302136    setRecordingInfos("No frame to encode.");
     2137  }
     2138}
     2139
     2140/** Stop the video. Check all parameters and enable encoder button if all is ok.
     2141*/
     2142void G4OpenGLQtViewer::saveVideo() {
     2143
     2144  // if encoder parameter is wrong, display parameters dialog and return
     2145  if (!fMovieParametersDialog) {
     2146    showMovieParametersDialog();
     2147  }
     2148
     2149  fMovieParametersDialog->checkEncoderSwParameters();
     2150  fMovieParametersDialog->checkSaveFileNameParameters();
     2151 
     2152  if (fRecordingStep == STOP) {
     2153    setRecordingStatus(SAVE);
     2154    generateMpegEncoderParameters();
     2155    encodeVideo();
    21312156  }
    21322157}
     
    21382163   
    21392164  // first time, if temp parameter is wrong, display parameters dialog and return
    2140   if ( fRecordingStep == WAIT) {
     2165
     2166  if (( fRecordingStep == WAIT)) {
    21412167    if ( fRecordFrameNumber == 0) {
    2142       if (getTempFolderPath() == "") {
     2168      if (getTempFolderPath() == "") { // BAD_OUTPUT
    21432169        showMovieParametersDialog();
    21442170        setRecordingInfos("You should specified the temp folder in order to make movie");
     
    21592185    }
    21602186  }
    2161   if (fRecordingStep == WAIT) {
     2187  if ((fRecordingStep == WAIT)) {
    21622188    setRecordingStatus(START);
    21632189  } else if (fRecordingStep == START) {
     
    21702196}
    21712197
    2172 
    21732198void G4OpenGLQtViewer::setRecordingStatus(RECORDING_STEP step) {
    21742199
     
    21802205void G4OpenGLQtViewer::displayRecordingStatus() {
    21812206 
    2182   QString txt = "";
     2207  QString txtStatus = "";
    21832208  if (fRecordingStep == WAIT) {
    2184     txt  = "Waiting to start...";
     2209    txtStatus  = "Waiting to start...";
    21852210    fRecordFrameNumber = 0; // reset the frame number
    21862211  } else if (fRecordingStep == START) {
    2187     txt  = "Start Recording...";
     2212    txtStatus  = "Start Recording...";
    21882213  } else if (fRecordingStep == PAUSE) {
    2189     txt  = "Pause Recording...";
     2214    txtStatus  = "Pause Recording...";
    21902215  } else if (fRecordingStep == CONTINUE) {
    2191     txt  = "Continue Recording...";
     2216    txtStatus  = "Continue Recording...";
    21922217  } else if (fRecordingStep == STOP) {
    2193     txt  = "Stop Recording...";
     2218    txtStatus  = "Stop Recording...";
    21942219  } else if (fRecordingStep == READY_TO_ENCODE) {
    2195     txt  = "Ready to Encode...";
     2220    txtStatus  = "Ready to Encode...";
    21962221  } else if (fRecordingStep == ENCODING) {
    2197     txt  = "Encoding...";
     2222    txtStatus  = "Encoding...";
    21982223  } else if (fRecordingStep == FAILED) {
    2199     txt  = "Failed to encode...";
     2224    txtStatus  = "Failed to encode...";
     2225  } else if ((fRecordingStep == BAD_ENCODER)
     2226         || (fRecordingStep == BAD_OUTPUT)
     2227             || (fRecordingStep == BAD_TMP)) {
     2228    txtStatus  = "Correct above errors first";
    22002229  } else if (fRecordingStep == SUCCESS) {
    2201     txt  = "File encoded successfully";
     2230    txtStatus  = "File encoded successfully";
    22022231  } else {
    22032232  }
    22042233
    22052234  if (fMovieParametersDialog) {
    2206     fMovieParametersDialog->setRecordingStatus(txt);
    2207   } else {
    2208 #if QT_VERSION < 0x040000
    2209     G4cout << txt.ascii() << G4endl;
    2210 #else
    2211     G4cout << txt.toStdString().c_str() << G4endl;
     2235    fMovieParametersDialog->setRecordingStatus(txtStatus);
     2236  } else {
     2237#if QT_VERSION < 0x040000
     2238    G4cout << txtStatus.ascii() << G4endl;
     2239#else
     2240    G4cout << txtStatus.toStdString().c_str() << G4endl;
    22122241#endif
    22132242  }
     
    22832312  }
    22842313  fEncoderPath = path;
     2314
     2315  if ((fRecordingStep == BAD_ENCODER)) {
     2316    setRecordingStatus(STOP);
     2317  }
    22852318  return "";
    22862319}
     
    22942327}
    22952328
     2329bool G4OpenGLQtViewer::isPaused(){
     2330  if (fRecordingStep == PAUSE) {
     2331    return true;
     2332  }
     2333  return false;
     2334}
     2335
     2336bool G4OpenGLQtViewer::isEncoding(){
     2337  if (fRecordingStep == ENCODING) {
     2338    return true;
     2339  }
     2340  return false;
     2341}
     2342
     2343bool G4OpenGLQtViewer::isWaiting(){
     2344  if (fRecordingStep == WAIT) {
     2345    return true;
     2346  }
     2347  return false;
     2348}
     2349
    22962350bool G4OpenGLQtViewer::isStopped(){
    22972351  if (fRecordingStep == STOP) {
     
    22992353  }
    23002354  return false;
     2355}
     2356
     2357bool G4OpenGLQtViewer::isFailed(){
     2358  if (fRecordingStep == FAILED) {
     2359    return true;
     2360  }
     2361  return false;
     2362}
     2363
     2364bool G4OpenGLQtViewer::isSuccess(){
     2365  if (fRecordingStep == SUCCESS) {
     2366    return true;
     2367  }
     2368  return false;
     2369}
     2370
     2371bool G4OpenGLQtViewer::isBadEncoder(){
     2372  if (fRecordingStep == BAD_ENCODER) {
     2373    return true;
     2374  }
     2375  return false;
     2376}
     2377bool G4OpenGLQtViewer::isBadTmp(){
     2378  if (fRecordingStep == BAD_TMP) {
     2379    return true;
     2380  }
     2381  return false;
     2382}
     2383bool G4OpenGLQtViewer::isBadOutput(){
     2384  if (fRecordingStep == BAD_OUTPUT) {
     2385    return true;
     2386  }
     2387  return false;
     2388}
     2389
     2390void G4OpenGLQtViewer::setBadEncoder(){
     2391  fRecordingStep = BAD_ENCODER;
     2392  displayRecordingStatus();
     2393}
     2394void G4OpenGLQtViewer::setBadTmp(){
     2395  fRecordingStep = BAD_TMP;
     2396  displayRecordingStatus();
     2397}
     2398void G4OpenGLQtViewer::setBadOutput(){
     2399  fRecordingStep = BAD_OUTPUT;
     2400  displayRecordingStatus();
     2401}
     2402
     2403void G4OpenGLQtViewer::setWaiting(){
     2404  fRecordingStep = WAIT;
     2405  displayRecordingStatus();
    23012406}
    23022407
     
    23382443  }
    23392444 
     2445  if ((fRecordingStep == BAD_TMP)) {
     2446    setRecordingStatus(WAIT);
     2447  }
    23402448  fTempFolderPath = path;
    23412449  return "";
     
    23732481  }
    23742482 
     2483  if ((fRecordingStep == BAD_OUTPUT)) {
     2484    setRecordingStatus(STOP);
     2485  }
    23752486  fSaveFileName = path;
    23762487  return "";
     
    23892500QString G4OpenGLQtViewer::createTempFolder() {
    23902501  fMovieTempFolderPath = "";
    2391 
    23922502  //check
    23932503  QString tmp = setTempFolderPath(fTempFolderPath);
     
    26592769
    26602770  setRecordingInfos("Parameter file "+fParameterFileName+" generated in "+fMovieTempFolderPath);
     2771  printf("Parameter file %s  generated in %s\n",fParameterFileName.toStdString().c_str(),fMovieTempFolderPath.toStdString().c_str());
    26612772  setRecordingStatus(READY_TO_ENCODE);
    26622773  return true;
     
    27242835    setRecordingStatus(FAILED);
    27252836  }
    2726   setRecordingInfos(txt+removeTempFolder());
     2837  //  setRecordingInfos(txt+removeTempFolder());
    27272838}
    27282839
Note: See TracChangeset for help on using the changeset viewer.