femtoCAM/mainwindow.cpp
2025-12-14 01:27:15 +01:00

111 lines
3.3 KiB
C++

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
cam.update_av_cams();
foreach (QString info, cam.av_cams_info)
ui->cam_selector->addItem(info);
handle_cam_selector(0);
ui->liveView->setPixmap(liveview_pixmap);
connect(ui->cam_selector, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MainWindow::handle_cam_selector);
connect(ui->pixel_format_selector, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MainWindow::handle_pixel_format_selector);
connect(ui->triggerSource, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MainWindow::handle_new_trig);
connect(ui->exposureTime, &QDoubleSpinBox::editingFinished, this, &MainWindow::handle_new_exposure_time);
connect(ui->frameRate, &QDoubleSpinBox::editingFinished, this, &MainWindow::handle_new_frame_rate);
connect(ui->gain, &QDoubleSpinBox::editingFinished, this, &MainWindow::handle_new_gain);
connect(ui->startButton, &QPushButton::clicked, this, &MainWindow::handle_start_button);
connect(ui->statsButton, &QPushButton::clicked, &stats, &StatsView::show);
connect(&cam, &IdsCam::new_status_text, ui->infotext, &QLabel::setText);
connect(&cam, &IdsCam::vis_new_frame, this, &MainWindow::visualize_new_frame);
connect(&cam, &IdsCam::new_hist_av, stats.histogramm, &BarChart::new_batch_data);
connect(&cam, &IdsCam::new_batch_view, &stats, &StatsView::vis_new_batch_view);
connect(&cam, &IdsCam::new_avg_view, &stats, &StatsView::vis_new_avg_view);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::handle_cam_selector(int i)
{
cam.select_cam(i);
ui->pixel_format_selector->clear();
foreach(QString mode, cam.av_pixel_formats)
ui->pixel_format_selector->addItem(mode);
ui->triggerSource->clear();
foreach (QString trig, cam.av_trig_sources)
ui->triggerSource->addItem(trig);
ui->exposureTime->setValue(cam.exposure_time);
ui->frameRate->setValue(cam.frame_rate);
ui->gain->setValue(cam.gain);
}
void MainWindow::handle_pixel_format_selector(int i)
{
if(i != -1)
cam.set_pixel_format(i);
}
void MainWindow::handle_new_exposure_time()
{
cam.set_exposure_time(ui->exposureTime->value());
ui->exposureTime->setValue(cam.exposure_time);
}
void MainWindow::handle_new_frame_rate()
{
cam.set_frame_rate(ui->frameRate->value());
ui->frameRate->setValue(cam.frame_rate);
}
void MainWindow::handle_new_gain()
{
cam.set_gain(ui->gain->value());
ui->gain->setValue(cam.gain);
}
void MainWindow::handle_new_trig(int i)
{
if(i != -1)
cam.set_trig(i);
if(ui->triggerSource->itemText(i) != "Software")
ui->frameRate->setEnabled(0);
else
ui->frameRate->setEnabled(1);
}
void MainWindow::handle_start_button()
{
if (ui->startButton->text() == "Start")
{
qDebug("Setting up Buffering");
if(cam.setup_buffering())
ui->startButton->setText("Stop");
}
else
{
qDebug("Stopping Buffering");
if(cam.stop_buffering())
ui->startButton->setText("Start");
}
}
void MainWindow::visualize_new_frame(QImage img)
{
//QPixmap *map = ui->liveView->setPixmap();
ui->liveView->setPixmap(QPixmap::fromImage(img));
}