Changeset 857 for trunk/source/visualization
- Timestamp:
- Oct 1, 2008, 5:12:18 PM (16 years ago)
- Location:
- trunk/source/visualization/OpenGL
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/visualization/OpenGL/include/G4OpenGLQtMovieDialog.hh
r754 r857 74 74 QLabel *fRecordingStatus; 75 75 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; 82 79 83 80 public slots : 84 81 void checkAllParameters(); 82 void stopFinishClose(); 83 void save(); 84 bool checkEncoderSwParameters(); 85 bool checkSaveFileNameParameters(); 86 bool checkTempFolderParameters(); 85 87 86 88 private slots : … … 88 90 void selectTempPathAction(); 89 91 void selectSaveFileNameAction(); 90 void encode();91 92 void resetRecording(); 92 93 void enabledApplyButton(); -
trunk/source/visualization/OpenGL/include/G4OpenGLQtViewer.hh
r850 r857 83 83 bool isRecording(); 84 84 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(); 85 97 bool isReadyToEncode(); 86 98 void resetRecording(); 87 99 void encodeVideo(); 100 void stopVideo(); 101 void saveVideo(); 88 102 bool generateMpegEncoderParameters(); 89 103 void displayRecordingStatus(); … … 129 143 private: 130 144 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}; 132 146 133 147 void createPopupMenu(); … … 141 155 QString createTempFolder(); 142 156 QString removeTempFolder(); 143 void startPauseVideo();144 void stopVideo();145 157 void setRecordingStatus(RECORDING_STEP); 146 158 void setRecordingInfos(QString); … … 203 215 void moveZ(int); 204 216 217 public slots : 218 void startPauseVideo(); 219 205 220 private slots : 206 221 void actionMouseRotate(); -
trunk/source/visualization/OpenGL/src/G4OpenGLQtMovieDialog.cc
r850 r857 182 182 QHBoxLayout *saveFileHBoxLayout = new QHBoxLayout(saveFileHBox); 183 183 184 fSaveFileName = new QLineEdit(" ",saveFileHBox);184 fSaveFileName = new QLineEdit("G4Movie.mpeg",saveFileHBox); 185 185 186 186 QPushButton *saveButton = new QPushButton(tr("..."),saveFileHBox); … … 270 270 QHBoxLayout *buttonBoxLayout = new QHBoxLayout(buttonBox); 271 271 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 272 291 QPushButton *buttonCancel = new QPushButton( tr( "&Cancel" ),buttonBox ); 273 292 buttonCancel->setAutoDefault( TRUE ); 274 293 buttonBoxLayout->addWidget(buttonCancel); 275 294 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 290 295 #if QT_VERSION >= 0x040000 291 296 buttonBox->setLayout(buttonBoxLayout); … … 300 305 301 306 // signals and slots connections 302 connect( fButton Apply, SIGNAL( clicked() ), this, SLOT( checkAllParameters() ) );307 connect( fButtonStartPause, SIGNAL( clicked() ), fParentViewer, SLOT( startPauseVideo() ) ); 303 308 connect( buttonReset, SIGNAL( clicked() ), this, SLOT( resetRecording() ) ); 304 309 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() ) ); 306 312 307 313 // fill … … 311 317 312 318 // 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())); 316 322 317 323 #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 328 333 } 329 334 … … 353 358 } 354 359 fEncoderPath->setText(nomFich); 355 check AllParameters();360 checkEncoderSwParameters(); 356 361 } 357 362 … … 374 379 } 375 380 fTempFolderPath->setText(nomFich); 376 check AllParameters();381 checkTempFolderParameters(); 377 382 } 378 383 … … 396 401 } 397 402 fSaveFileName->setText(nomFich); 398 check AllParameters();403 checkSaveFileNameParameters(); 399 404 } 400 405 401 406 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 407 void G4OpenGLQtMovieDialog::stopFinishClose() { 408 fParentViewer->stopVideo(); 409 } 410 411 void G4OpenGLQtMovieDialog::save() { 412 if (((fParentViewer->isPaused()) || fParentViewer->isRecording() || fParentViewer->isStopped())) { 413 fParentViewer->saveVideo(); 414 } 415 } 425 416 426 417 /** … … 428 419 * If valid, save it 429 420 */ 430 bool G4OpenGLQtMovieDialog::checkEncoder Parameters(QString param) {421 bool G4OpenGLQtMovieDialog::checkEncoderSwParameters() { 431 422 432 423 bool status = true; 433 424 QPalette palette( fEncoderPath->palette() ); 434 425 435 QString temp = fParentViewer->setEncoderPath( param);426 QString temp = fParentViewer->setEncoderPath(fEncoderPath->text()); 436 427 setRecordingInfos(""); 437 428 fEncoderStatus->setText(temp); … … 463 454 * If valid, save it 464 455 */ 465 bool G4OpenGLQtMovieDialog::checkTempFolderParameters( QString param) {456 bool G4OpenGLQtMovieDialog::checkTempFolderParameters() { 466 457 467 458 bool status = true; 468 459 QPalette palette( fTempFolderPath->palette() ); 469 460 470 QString temp = fParentViewer->setTempFolderPath( param);461 QString temp = fParentViewer->setTempFolderPath(fTempFolderPath->text()); 471 462 fTempFolderStatus->setText(temp); 472 463 if (temp != "") { … … 494 485 * If valid, save it 495 486 */ 496 bool G4OpenGLQtMovieDialog::checkSaveFileNameParameters( QString param) {487 bool G4OpenGLQtMovieDialog::checkSaveFileNameParameters() { 497 488 498 489 bool status = true; 499 490 QPalette palette( fSaveFileName->palette() ); 500 491 501 QString temp = fParentViewer->setSaveFileName( param);492 QString temp = fParentViewer->setSaveFileName(fSaveFileName->text()); 502 493 fSaveFileStatus->setText(temp); 503 494 if (temp != "") { … … 527 518 528 519 void G4OpenGLQtMovieDialog::setRecordingStatus(QString txt) { 529 fButtonEncode->setEnabled(fParentViewer->isReadyToEncode());530 520 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 } 531 583 } 532 584 … … 538 590 539 591 void G4OpenGLQtMovieDialog::enabledApplyButton() { 540 fButton Apply->setEnabled(true);541 } 542 543 #endif 592 fButtonStartPause->setEnabled(true); 593 } 594 595 #endif -
trunk/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc
r850 r857 1486 1486 fMovieParametersDialog= new G4OpenGLQtMovieDialog(this,GLWindow); 1487 1487 displayRecordingStatus(); 1488 fMovieParametersDialog->checkEncoderSwParameters(); 1489 fMovieParametersDialog->checkSaveFileNameParameters(); 1490 fMovieParametersDialog->checkTempFolderParameters(); 1488 1491 if (getEncoderPath() == "") { 1489 1492 setRecordingInfos("mpeg_encode is needed to encode in video format. It is available here: http://bmrc.berkeley.edu/frame/research/mpeg/"); … … 2124 2127 if (fRecordFrameNumber >0) { 2125 2128 // 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 } 2128 2134 } else { 2129 2135 resetRecording(); 2130 2136 setRecordingInfos("No frame to encode."); 2137 } 2138 } 2139 2140 /** Stop the video. Check all parameters and enable encoder button if all is ok. 2141 */ 2142 void 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(); 2131 2156 } 2132 2157 } … … 2138 2163 2139 2164 // first time, if temp parameter is wrong, display parameters dialog and return 2140 if ( fRecordingStep == WAIT) { 2165 2166 if (( fRecordingStep == WAIT)) { 2141 2167 if ( fRecordFrameNumber == 0) { 2142 if (getTempFolderPath() == "") { 2168 if (getTempFolderPath() == "") { // BAD_OUTPUT 2143 2169 showMovieParametersDialog(); 2144 2170 setRecordingInfos("You should specified the temp folder in order to make movie"); … … 2159 2185 } 2160 2186 } 2161 if ( fRecordingStep == WAIT) {2187 if ((fRecordingStep == WAIT)) { 2162 2188 setRecordingStatus(START); 2163 2189 } else if (fRecordingStep == START) { … … 2170 2196 } 2171 2197 2172 2173 2198 void G4OpenGLQtViewer::setRecordingStatus(RECORDING_STEP step) { 2174 2199 … … 2180 2205 void G4OpenGLQtViewer::displayRecordingStatus() { 2181 2206 2182 QString txt = "";2207 QString txtStatus = ""; 2183 2208 if (fRecordingStep == WAIT) { 2184 txt = "Waiting to start...";2209 txtStatus = "Waiting to start..."; 2185 2210 fRecordFrameNumber = 0; // reset the frame number 2186 2211 } else if (fRecordingStep == START) { 2187 txt = "Start Recording...";2212 txtStatus = "Start Recording..."; 2188 2213 } else if (fRecordingStep == PAUSE) { 2189 txt = "Pause Recording...";2214 txtStatus = "Pause Recording..."; 2190 2215 } else if (fRecordingStep == CONTINUE) { 2191 txt = "Continue Recording...";2216 txtStatus = "Continue Recording..."; 2192 2217 } else if (fRecordingStep == STOP) { 2193 txt = "Stop Recording...";2218 txtStatus = "Stop Recording..."; 2194 2219 } else if (fRecordingStep == READY_TO_ENCODE) { 2195 txt = "Ready to Encode...";2220 txtStatus = "Ready to Encode..."; 2196 2221 } else if (fRecordingStep == ENCODING) { 2197 txt = "Encoding...";2222 txtStatus = "Encoding..."; 2198 2223 } 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"; 2200 2229 } else if (fRecordingStep == SUCCESS) { 2201 txt = "File encoded successfully";2230 txtStatus = "File encoded successfully"; 2202 2231 } else { 2203 2232 } 2204 2233 2205 2234 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; 2212 2241 #endif 2213 2242 } … … 2283 2312 } 2284 2313 fEncoderPath = path; 2314 2315 if ((fRecordingStep == BAD_ENCODER)) { 2316 setRecordingStatus(STOP); 2317 } 2285 2318 return ""; 2286 2319 } … … 2294 2327 } 2295 2328 2329 bool G4OpenGLQtViewer::isPaused(){ 2330 if (fRecordingStep == PAUSE) { 2331 return true; 2332 } 2333 return false; 2334 } 2335 2336 bool G4OpenGLQtViewer::isEncoding(){ 2337 if (fRecordingStep == ENCODING) { 2338 return true; 2339 } 2340 return false; 2341 } 2342 2343 bool G4OpenGLQtViewer::isWaiting(){ 2344 if (fRecordingStep == WAIT) { 2345 return true; 2346 } 2347 return false; 2348 } 2349 2296 2350 bool G4OpenGLQtViewer::isStopped(){ 2297 2351 if (fRecordingStep == STOP) { … … 2299 2353 } 2300 2354 return false; 2355 } 2356 2357 bool G4OpenGLQtViewer::isFailed(){ 2358 if (fRecordingStep == FAILED) { 2359 return true; 2360 } 2361 return false; 2362 } 2363 2364 bool G4OpenGLQtViewer::isSuccess(){ 2365 if (fRecordingStep == SUCCESS) { 2366 return true; 2367 } 2368 return false; 2369 } 2370 2371 bool G4OpenGLQtViewer::isBadEncoder(){ 2372 if (fRecordingStep == BAD_ENCODER) { 2373 return true; 2374 } 2375 return false; 2376 } 2377 bool G4OpenGLQtViewer::isBadTmp(){ 2378 if (fRecordingStep == BAD_TMP) { 2379 return true; 2380 } 2381 return false; 2382 } 2383 bool G4OpenGLQtViewer::isBadOutput(){ 2384 if (fRecordingStep == BAD_OUTPUT) { 2385 return true; 2386 } 2387 return false; 2388 } 2389 2390 void G4OpenGLQtViewer::setBadEncoder(){ 2391 fRecordingStep = BAD_ENCODER; 2392 displayRecordingStatus(); 2393 } 2394 void G4OpenGLQtViewer::setBadTmp(){ 2395 fRecordingStep = BAD_TMP; 2396 displayRecordingStatus(); 2397 } 2398 void G4OpenGLQtViewer::setBadOutput(){ 2399 fRecordingStep = BAD_OUTPUT; 2400 displayRecordingStatus(); 2401 } 2402 2403 void G4OpenGLQtViewer::setWaiting(){ 2404 fRecordingStep = WAIT; 2405 displayRecordingStatus(); 2301 2406 } 2302 2407 … … 2338 2443 } 2339 2444 2445 if ((fRecordingStep == BAD_TMP)) { 2446 setRecordingStatus(WAIT); 2447 } 2340 2448 fTempFolderPath = path; 2341 2449 return ""; … … 2373 2481 } 2374 2482 2483 if ((fRecordingStep == BAD_OUTPUT)) { 2484 setRecordingStatus(STOP); 2485 } 2375 2486 fSaveFileName = path; 2376 2487 return ""; … … 2389 2500 QString G4OpenGLQtViewer::createTempFolder() { 2390 2501 fMovieTempFolderPath = ""; 2391 2392 2502 //check 2393 2503 QString tmp = setTempFolderPath(fTempFolderPath); … … 2659 2769 2660 2770 setRecordingInfos("Parameter file "+fParameterFileName+" generated in "+fMovieTempFolderPath); 2771 printf("Parameter file %s generated in %s\n",fParameterFileName.toStdString().c_str(),fMovieTempFolderPath.toStdString().c_str()); 2661 2772 setRecordingStatus(READY_TO_ENCODE); 2662 2773 return true; … … 2724 2835 setRecordingStatus(FAILED); 2725 2836 } 2726 setRecordingInfos(txt+removeTempFolder());2837 // setRecordingInfos(txt+removeTempFolder()); 2727 2838 } 2728 2839
Note: See TracChangeset
for help on using the changeset viewer.