Ignore:
Timestamp:
Mar 5, 2008, 5:23:40 PM (16 years ago)
Author:
garnier
Message:

merge fini corrections en cours NE COMPILE PAS

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

Legend:

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

    r739 r740  
    6262  ~G4OpenGLQtMovieDialog();
    6363  void setStatus(QString);
     64  void setEncodeButtonEnabled(bool);
    6465
    6566private :
     
    7273  QLabel *fSaveFileStatus;
    7374  QLabel *fGlobalStatus;
    74   QPushButton *fButtonEmcode;
     75  QPushButton *fButtonEncode;
    7576
    7677  void checkEncoderParameters(QString);
     
    7879  void checkSaveFileNameParameters(QString);
    7980
     81public slots :
     82  void checkAllParameters();
     83
    8084private slots :
    8185  void selectEncoderPathAction();
    8286  void selectTempPathAction();
    8387  void selectSaveFileNameAction();
    84   void checkAllParameters();
    8588  void encode();
    8689};
  • trunk/geant4/visualization/OpenGL/include/G4OpenGLQtViewer.hh

    r739 r740  
    7878  QString setSaveFileName(QString path);
    7979  QString getSaveFileName();
     80  bool getRecordFrames();
    8081
    8182protected:
     
    106107  bool hasPendingEvents();
    107108  void savePPMToTemp();
    108   bool saveVideo(QString);
     109  bool generateMpegEncoderParameters();
    109110  bool fRecordFrames;
    110111  int fRecordFrameNumber;
     
    155156  QString fMovieTempFolderPath;
    156157  QString fSaveFileName;
     158  QString fParameterFileName;
    157159  QAction *fRotateAction;
    158160  QAction *fMoveAction;
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLQtMovieDialog.cc

    r739 r740  
    231231
    232232  fButtonEncode = new QPushButton( tr( "&Encode" ),buttonBox );
    233   fButtonEncode->setEnabled(false);
     233  fButtonEncode->setEnabled(fParentViewer->getRecordFrames());
    234234  fButtonEncode->setAutoDefault( TRUE );
    235235  buttonBoxLayout->addWidget(fButtonEncode);
     
    309309  checkTempFolderParameters(fTempFolderPath->text());
    310310  checkSaveFileNameParameters(fSaveFileName->text());
     311
     312  // set state of encode button
     313  // if frames had been generated and parameters are valid : enabled encode button
     314//  if ((fParentViewer->getRecordFrames() == false) && (fRecordFrameNumber >1)) {
     315//  }
     316
    311317}
    312318
     
    321327  QString temp = fParentViewer->setEncoderPath(param);
    322328  setStatus("");
    323     fEncoderStatus->setText(temp);
     329  fEncoderStatus->setText(temp);
    324330  if (temp != "") {
    325331    palette.setColor( QPalette::Base, Qt::red);
     
    380386}
    381387
    382 #endif
     388void G4OpenGLQtMovieDialog::setEncodeButtonEnabled(bool b) {
     389  fButtonEncode->setEnabled(b);
     390}
     391#endif
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLQtViewer.cc

    r739 r740  
    306306  ,fMovieTempFolderPath("")
    307307  ,fSaveFileName("")
     308  ,fParameterFileName("mpeg_encode_parameter_file.par")
    308309  ,fMovieParametersDialog(NULL)
    309310{
     
    322323//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
    323324{
    324   removeTempFolder();
     325  G4cout <<removeTempFolder().toStdString().c_str();
    325326#ifdef GEANT4_QT_DEBUG
    326327  printf("G4OpenGLQtViewer::~G4OpenGLQtViewer \n");
     
    13041305    return;
    13051306  }
    1306   QString nomFich =fMovieTempFolderPath+"/Test"+QString::number(fRecordFrameNumber)
     1307  QString nomFich =fMovieTempFolderPath+"Test"+QString::number(fRecordFrameNumber);
    13071308
    13081309  QImage image;
     
    20952096#endif
    20962097  }
    2097 
     2098  // several case here : If return is pressed, in every case -> display the movie parameters dialog
     2099  // If one parameter is wrong -> put it in red (only save filenam could be wrong..)
     2100  // If encoder not found-> does nothing.Only display a message in status box
     2101  // If all ok-> generate parameter file
     2102  // If ok -> put encoder button enabled
     2103 
    20982104  if ((event->key() == Qt::Key_Return) || (event->key() == Qt::Key_Enter)){ // end of video
    20992105   // if encoder parameter is wrong, display parameters dialog and return
     
    21022108    }
    21032109    fMovieParametersDialog->setStatus("Stop Recording\n");
     2110    fMovieParametersDialog->checkAllParameters();
    21042111    if (getEncoderPath() == "") {
    2105       fMovieParametersDialog->setStatus("No valid encoder found. Frames saved in "+fTempFolder);
    2106     }
    2107     if (generateMpegEncoderParameters()) {     
    2108       ...
    2109       if (
    2110           ...
    2111           if (fMovieParametersDialog) {
    2112             fMovieParametersDialog->setEncodeButtonEnable(true);
    2113           }
     2112      fMovieParametersDialog->setStatus("No valid encoder found. Frames saved in "+fMovieTempFolderPath);
     2113    } else if (getSaveFileName() =="") {   // if no saved file
     2114      if (generateMpegEncoderParameters()) {
     2115        fMovieParametersDialog->setEncodeButtonEnabled(true);
     2116        fMovieParametersDialog->setStatus("Parameter file "+fParameterFileName+" generated in "+fMovieTempFolderPath);
     2117      } else {  // try to encode without dialog
     2118        fMovieParametersDialog->setStatus("Generation of parameter file failed");
    21142119      }
    21152120    }
     
    21262131          return;
    21272132        } else  {
    2128           //          printf("record+premier image+temp<>.. \n");
    21292133          // remove temp folder if it was create
    2130           if (!removeTempFolder()) {
     2134          QString tmp = removeTempFolder()
     2135          if (tmp !="") {
     2136            fMovieParametersDialog->setStatus(tmp);
    21312137            fHoldKeyEvent = false;
    21322138            return;
    21332139          }
    2134 
    2135           //          printf("create tmp dir.. \n");
    2136           // create temp dir if not
    2137           QString time = QDir::fromNativeSeparators ("/"+QDateTime::currentDateTime ().toString("dd-MM-yyyy_hh-mm-ss"));
    2138           QDir dir(fTempFolderBasePath);
    2139           if (dir.mkdir(fTempFolderBasePath+time)) {
    2140             fTempFolder = fTempFolderBasePath+time;
     2140          QString tmp = createTempFolder();
     2141          if (tmp != "") {
     2142            fMovieParametersDialog->setStatus("Can't create temp folder. \n"+tmp);
     2143            fHoldKeyEvent = false;
     2144            return;
    21412145          }
    21422146        }
     
    22222226    return "File does not exist";
    22232227  }
     2228  path =  QDir::cleanPath(path);
    22242229  QFile *f = new QFile(path);
    22252230  if (!f->exists()) {
     
    22332238}
    22342239
     2240bool G4OpenGLQtViewer::getRecordFrames(){
     2241  return fRecordFrames;
     2242}
     2243
    22352244/**
    22362245 * set the temp folder path
     
    22422251    return "Path does not exist";
    22432252  }
     2253  path =  QDir::cleanPath(path);
    22442254  QDir *d = new QDir(path);
    22452255  if (!d->exists(path)) {
     
    22812291    return "Path does not exist";
    22822292  }
    2283   QDir *d = new QDir(path);
    2284   if (!d->exists(path)) {
    2285     return "Path does not exist";
    2286   }
    2287 
    2288   d->setFilter( QDir::Dirs | QDir::Readable | QDir::Writable );
    2289   QStringList subDirList = d->entryList();
     2293  path =  QDir::cleanPath(path);
     2294  QFileInfo *fileInfo = new QFileInfo(path);
     2295  QDir dir = fileInfo->absoluteDir();
     2296  if (!dir.exists()) {
     2297    return "Folder does not exist\n";
     2298  }
     2299
     2300  dir.setFilter( QDir::Dirs | QDir::Writable );
     2301  QStringList subDirList = dir.entryList();
    22902302  bool found = false;
    22912303
     
    23122324
    23132325/** Create a Qt_temp folder in the temp folder given
    2314 */
    2315 bool G4OpenGLQtViewer::createTempFolder() {
     2326* The temp folder will be like this /tmp/QtMovie_12-02-2008_12_12_58/
     2327* @return "" if success. Error message if not.
     2328*/
     2329QString G4OpenGLQtViewer::createTempFolder() {
    23162330  fMovieTempFolderPath = "";
    23172331
    23182332  //check
    2319   if (setTempFolderPath(fTempFolderPath) != "") {
    2320     return false;
    2321   }
    2322   QString path = QString("/QtMovie_")+QDateTime::currentDateTime ().toString("dd-MM-yyyy_hh-mm-ss");
    2323   QDir *d = new QDir(fTempFolderPath);
     2333  QString tmp = setTempFolderPath(fTempFolderPath);
     2334  if (tmp != "") {
     2335    return tmp;
     2336  }
     2337  QString path = QDir::fromNativeSeparators(QString("/QtMovie_")+QDateTime::currentDateTime ().toString("dd-MM-yyyy_hh-mm-ss/"));
     2338  QDir *d = new QDir(QDir::cleanPath(fTempFolderPath));
    23242339  // check if it is already present
    23252340  if (d->exists(path)) {
    2326           return false;
     2341    return "Folder "+path+" already exists.\nPlease remove it first";
    23272342  }
    23282343  if (d->mkdir(fTempFolderPath+path)) {
    23292344    fMovieTempFolderPath = fTempFolderPath+path;
    2330     return true;
    2331   }
    2332   return false;
     2345    return "";
     2346  } else {
     2347    return "Can't create "+fTempFolderPath+path+"\n";
     2348  }
     2349  return "-";
    23332350}
    23342351
    23352352/** Remove the Qt_temp folder in the temp folder
    23362353*/
    2337 bool G4OpenGLQtViewer::removeTempFolder() {
     2354QString G4OpenGLQtViewer::removeTempFolder() {
    23382355        // remove files in Qt_temp folder
    2339   QDir *d = new QDir(fMovieTempFolderPath);
     2356  QDir *d = new QDir(QDir::cleanPath(fMovieTempFolderPath));
    23402357  if (!d->exists()) {
    2341     return false;  // already remove
     2358    return "";  // already remove
    23422359  }
    23432360
     
    23452362  QStringList subDirList = d->entryList();
    23462363  int res = true;
    2347 
     2364  QString error = "";
    23482365  for (QStringList::ConstIterator it = subDirList.begin() ;(it != subDirList.end()) ; it++) {
    23492366    const QString currentFile = *it;
    23502367    if (!d->remove(currentFile)) {
    23512368      res = false;
    2352       G4cout << "Try to remove Movie temp directory:"<<fMovieTempFolderPath.toStdString()<<" but failed to remove:"<<fMovieTempFolderPath.toStdString()<<"/"<<currentFile.toStdString() <<"\n" << G4endl;
     2369      QString file = QDir::fromNativeSeparators(fMovieTempFolderPath+currentFile);
     2370      error +="Removing file failed : "+file.toStdString()+"\n";
    23532371    }
    23542372  }
    23552373  if (res) {
    23562374    if (d->rmdir(fMovieTempFolderPath)) {
    2357       return true;
    2358     }
    2359   }
    2360   return false;
     2375      return "";
     2376    } else {
     2377      return "Dir "+fMovieTempFolderPath+" should be empty,\n but could not remove it";
     2378    }
     2379
     2380  }
     2381  return "Could not remove "+fMovieTempFolderPath+" because \nof the following errors :"+error;
    23612382}
    23622383
     
    23672388}
    23682389
    2369 bool G4OpenGLQtViewer::saveVideo (QString outputName) {
     2390bool G4OpenGLQtViewer::generateMpegEncoderParameters () {
    23702391
    23712392  // save the parameter file
    23722393  FILE* fp;
    2373   fp = fopen ("/temp/parameter_file.par", "w");
     2394#if QT_VERSION < 0x040000
     2395  fp = fopen (QString(fMovieTempFolderPath+fParameterFileName).ascii, "w");
     2396#else
     2397  fp = fopen (QString(fMovieTempFolderPath+fParameterFileName).toStdString().c_str(), "w");
     2398#endif
    23742399
    23752400  if (fp == NULL) {
     
    24722497  fprintf (fp,"\n");
    24732498  fprintf (fp,"# directory to get all input files from (makes this file easier to read)\n");
    2474   fprintf (fp,"INPUT_DIR        /temp\n");
     2499#if QT_VERSION < 0x040000
     2500  fprintf (fp,"INPUT_DIR        %s\n",fMovieTempFolderPath.ascii());
     2501#else
     2502  fprintf (fp,"INPUT_DIR        %s\n",fMovieTempFolderPath.toStdString().c_str());
     2503#endif
    24752504  fprintf (fp,"\n");
    24762505  fprintf (fp,"# There are a bunch of ways to specify the input files.\n");
     
    25502579  fclose (fp);
    25512580
    2552   QProcess::execute (fEncoderPath, QStringList("/temp/parameter_file.par"));
     2581  fMovieParametersDialog->setStatus("Parameter file generated : "+fMovieTempFolderPath+fParameterFileName);
     2582  return true;
     2583}
     2584
     2585bool G4OpenGLQtViewer::saveVideo()
     2586{
     2587  QProcess::execute (fEncoderPath, QStringList(fMovieTempFolderPath+fParameterFileName));
     2588  fMovieParametersDialog->setStatus(removeTempFolder());
     2589
     2590  // reset
     2591  fRecordFrameNumber = 0;
    25532592  return true;
    25542593}
Note: See TracChangeset for help on using the changeset viewer.