diff --git a/pylonrecorder.cpp b/pylonrecorder.cpp index 733632c..eb3c785 100644 --- a/pylonrecorder.cpp +++ b/pylonrecorder.cpp @@ -87,6 +87,7 @@ PylonRecorder::PylonRecorder(QWidget *parent) statusHeader->setStyleSheet("QLabel{font-size: 11pt;font-family: Arial; font-weight: Bold}"); QLabel *fileHeader = new QLabel("Output file:"); fileHeader->setStyleSheet("QLabel{font-size: 11pt;font-family: Arial; font-weight: Bold}"); + statusBar()->addWidget(camHeader); statusBar()->addWidget(cameraConnectedLabel); statusBar()->addWidget(pressureLabel); @@ -98,6 +99,7 @@ PylonRecorder::PylonRecorder(QWidget *parent) statusBar()->addWidget(writingLabel); statusBar()->addWidget(fileHeader); statusBar()->addWidget(fileLabel); + resize(QGuiApplication::primaryScreen()->availableSize() * 3 / 5); detectCameras(); createActions(); @@ -206,6 +208,7 @@ bool PylonRecorder::loadFile(const QString &fileName) { void PylonRecorder::setImage(const QImage &newImage) { + qDebug() << "Setting image"; //FIXME figure out how to display both images. extract to extra class... image = newImage; // (image.colorSpace().isValid()) @@ -223,6 +226,7 @@ void PylonRecorder::setImage(const QImage &newImage) { applyScaling(); } this->update(); + qDebug() << "Setting image done"; } @@ -608,16 +612,17 @@ void PylonRecorder::adjustScrollBar(QScrollBar *scrollBar, double factor) { void PylonRecorder::cameraConfiguration(){ - cameraConfigDialog = new CamConfigurator(deviceList, this); - connect(cameraConfigDialog, SIGNAL(accepted()), SLOT(cameraConfigurationAccepted())); - connect(cameraConfigDialog, SIGNAL(rejected()), SLOT(cameraConfigurationAborted())); - // QObject::connect(&d, SIGNAL(column_visibility_changed(QString, QString,bool)), this, SLOT(visible_columns_update(QString, QString,bool))); - cameraConfigDialog->exec(); + qDebug() << "Configuring camera(s)"; + cameraConfigDialog = new CamConfigurator(deviceList, this); + connect(cameraConfigDialog, SIGNAL(accepted()), SLOT(cameraConfigurationAccepted())); + connect(cameraConfigDialog, SIGNAL(rejected()), SLOT(cameraConfigurationAborted())); + // QObject::connect(&d, SIGNAL(column_visibility_changed(QString, QString,bool)), this, SLOT(visible_columns_update(QString, QString,bool))); + cameraConfigDialog->exec(); } void PylonRecorder::cameraConfigurationAccepted() { - qDebug() << "Cameras setting " << ((cameraConfigDialog->result()) ? "Accepted" : "Discarded"); + qDebug() << "Camera configuration " << ((cameraConfigDialog->result()) ? "Accepted" : "Discarded"); this->layout = cameraConfigDialog->layout(); camsconfigured = true; delete cameraConfigDialog; @@ -627,12 +632,13 @@ void PylonRecorder::cameraConfigurationAccepted() { void PylonRecorder::cameraConfigurationAborted() { qDebug() << "Camera configuration aborted!"; camsconfigured = false; + delete cameraConfigDialog; } void PylonRecorder::connectCamera() { - this->layout = CameraLayout(); qDebug() << "connecting camera(s)"; + this->layout = CameraLayout(); if (deviceList.size() == 0) { detectCameras(); QMessageBox msgBox; @@ -647,6 +653,8 @@ void PylonRecorder::connectCamera() { qDebug() << "cameras have not been properly configured!"; return; } + + //Single Camera mode if (layout.mode == CameraMode::single && layout.devices.size() == 1) { qDebug() << "single camera mode"; std::string cname = layout.devices[0]; @@ -668,12 +676,15 @@ void PylonRecorder::connectCamera() { statusBar()->showMessage(QString::fromStdString(message)); updateActions(); } + + // Dual Camera mode if (layout.mode == CameraMode::dual && layout.devices.size() == 2) { qDebug() << "dual camera mode"; std::string message; dualcam = new DualcamWrapper(layout); bool success = dualcam->openCameras(message); if (success) { + qDebug()::cerr << "dual camera connected\n"; cameraConnectedLabel->setText("connected"); cameraConnectedLabel->setStyleSheet("QLabel { font-size: 10px;font-family: Arial;color: green;}"); cameraOpened = true; @@ -843,10 +854,10 @@ void PylonRecorder::startDualcamRecording() { connect(writer, SIGNAL(writingDone()), this, SLOT(writerDone())); writer->setVideoSpecs(specs); - qDebug() << "push metadata to writer"; - QSettings s; - this->mdata.read(s); - writer->setProjectMetadata(mdata); + // qDebug() << "push metadata to writer"; + // QSettings s; + // this->mdata.read(s); + // writer->setProjectMetadata(mdata); dryRun = dryRunCheckBox->isChecked(); buffer->clear(); @@ -895,10 +906,8 @@ void PylonRecorder::stopRecording() { stopRequest = true; grab_stop_action->setEnabled(false); qDebug() << "StopRecording: clear buffer!"; - if(buffer != nullptr) { - buffer->clear(); - if (dryRun) - writerDone(); + if (dryRun){ + writerDone(); } } qDebug() << "StopRecording done!"; @@ -919,8 +928,12 @@ void PylonRecorder::writerDone() { } if (writer != nullptr) writer->wait(10000); + if(buffer != nullptr) { + buffer->clear(); + } writing = false; updateActions(); + qInfo() << "writer is Done!"; } @@ -933,6 +946,7 @@ void PylonRecorder::displayActivity() { void PylonRecorder::displaySingleFrame() { + qDebug() << "display single frame"; MyImage *img; size_t fc = 0; img = buffer->readLast(fc); @@ -940,7 +954,7 @@ void PylonRecorder::displaySingleFrame() { QImage qimg(static_cast(img->data()), img->width(), img->height(), QImage::Format::Format_Grayscale8); setImage(qimg); }else { - std::cerr << "Error reading last image" << std::endl; + qDebug() << "Error reading last image"; } } @@ -986,7 +1000,8 @@ void PylonRecorder::displayBufferPressure() { void PylonRecorder::grabStillFromPylon() { qDebug() << "Grab still image form camera!"; if (singlecam != nullptr && singlecam->isOpen()) { - MyImage img; + ImageSettings s = singlecam->getImageSettings(); + MyImage img(s.width, s.height); bool valid = singlecam->grabFrame(img); if (valid) { QImage qimg(static_cast(img.data()), img.width(), img.height(), @@ -996,7 +1011,7 @@ void PylonRecorder::grabStillFromPylon() { } else { statusBar()->showMessage(tr("Camera is not open! Connect to camera first!")); } - //FIXME does not work for single camera mode! + //FIXME does not work for stereo camera mode! qDebug() << "grabbing still image done!"; }