Compare commits
No commits in common. "a08cf6a682be32a3adbceb6d93e0c62f22ca4b28" and "417608478df9a6779782cbc1abca65100a3cd7ea" have entirely different histories.
a08cf6a682
...
417608478d
5 changed files with 8 additions and 170 deletions
|
|
@ -43,8 +43,6 @@ add_executable(${PROJECT_NAME}
|
||||||
mainwindow.ui
|
mainwindow.ui
|
||||||
multiplexer.h
|
multiplexer.h
|
||||||
multiplexer.cpp
|
multiplexer.cpp
|
||||||
triggerwidget.cpp
|
|
||||||
triggerwidget.h
|
|
||||||
)
|
)
|
||||||
set_target_properties(${PROJECT_NAME} PROPERTIES WIN32_EXECUTABLE ON)
|
set_target_properties(${PROJECT_NAME} PROPERTIES WIN32_EXECUTABLE ON)
|
||||||
target_compile_options(${PROJECT_NAME} PUBLIC "-Wall")
|
target_compile_options(${PROJECT_NAME} PUBLIC "-Wall")
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "ui_mainwindow.h"
|
#include "ui_mainwindow.h"
|
||||||
#include "triggerwidget.h"
|
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent):
|
MainWindow::MainWindow(QWidget *parent):
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
|
|
@ -65,20 +64,6 @@ void MainWindow::enumerateDevices()
|
||||||
ui->channelLayout->addWidget(widget.get());
|
ui->channelLayout->addWidget(widget.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add trigger widgets
|
|
||||||
int triggerCount = eismultiplexer_get_trigger_count(multiplexer.get());
|
|
||||||
if (triggerCount > 0)
|
|
||||||
{
|
|
||||||
qDebug()<<"Adding triggers from device "<<serial;
|
|
||||||
for (int trigger = 0; trigger < triggerCount; trigger++)
|
|
||||||
{
|
|
||||||
std::shared_ptr<TriggerWidget> triggerWidget(new TriggerWidget(serial, trigger, multiplexer));
|
|
||||||
qDebug()<<"Added trigger widget from device "<<serial<<" trigger "<<trigger;
|
|
||||||
triggers.push_back(triggerWidget);
|
|
||||||
ui->channelLayout->addWidget(triggerWidget.get());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -89,7 +74,7 @@ void MainWindow::enumerateDevices()
|
||||||
}
|
}
|
||||||
ui->channelLayout->addStretch();
|
ui->channelLayout->addStretch();
|
||||||
|
|
||||||
// Second pass: populate gang combos and connect signals for channels
|
// Second pass: populate gang combos and connect signals
|
||||||
for (const auto& widget : channels) {
|
for (const auto& widget : channels) {
|
||||||
// Populate gang combo with all other channels
|
// Populate gang combo with all other channels
|
||||||
for (const auto& otherWidget : channels) {
|
for (const auto& otherWidget : channels) {
|
||||||
|
|
|
||||||
19
mainwindow.h
19
mainwindow.h
|
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
#ifndef MAINWINDOW_H
|
#ifndef MAINWINDOW_H
|
||||||
#define MAINWINDOW_H
|
#define MAINWINDOW_H
|
||||||
|
|
||||||
|
|
@ -10,7 +8,6 @@
|
||||||
#include <QPythonHighlighter>
|
#include <QPythonHighlighter>
|
||||||
|
|
||||||
#include "channelwidget.h"
|
#include "channelwidget.h"
|
||||||
#include "triggerwidget.h"
|
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
|
|
@ -19,25 +16,23 @@ class MainWindow;
|
||||||
|
|
||||||
class MainWindow : public QMainWindow
|
class MainWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
std::vector<std::shared_ptr<ChannelWidget>> channels;
|
std::vector<std::shared_ptr<ChannelWidget>> channels;
|
||||||
std::vector<std::shared_ptr<TriggerWidget>> triggers;
|
Ui::MainWindow *ui;
|
||||||
Ui::MainWindow *ui;
|
|
||||||
QCodeEditor codeEditor;
|
QCodeEditor codeEditor;
|
||||||
QPythonHighlighter highligter;
|
QPythonHighlighter highligter;
|
||||||
QPythonCompleter completer;
|
QPythonCompleter completer;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void channelStateChanged(uint16_t device, uint16_t channel);
|
void channelStateChanged(uint16_t device, uint16_t channel);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit MainWindow(QWidget *parent = nullptr);
|
explicit MainWindow(QWidget *parent = nullptr);
|
||||||
~MainWindow();
|
~MainWindow();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void enumerateDevices();
|
void enumerateDevices();
|
||||||
void generateExample();
|
void generateExample();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
#include "triggerwidget.h"
|
|
||||||
#include <QDebug>
|
|
||||||
#include <QMessageBox>
|
|
||||||
#include <eismultiplexer.h>
|
|
||||||
|
|
||||||
TriggerWidget::TriggerWidget(uint16_t deviceSerial, uint16_t triggerNumber,
|
|
||||||
std::shared_ptr<struct eismultiplexer> multiplexer,
|
|
||||||
QWidget *parent):
|
|
||||||
QWidget(parent),
|
|
||||||
deviceSerial(deviceSerial),
|
|
||||||
triggerNumber(triggerNumber),
|
|
||||||
multiplexer(multiplexer),
|
|
||||||
inputCheckbox("Input"),
|
|
||||||
levelCheckbox("Level"),
|
|
||||||
devicelabel(QString::asprintf("Device %04u", deviceSerial)),
|
|
||||||
triggerlabel(QString::asprintf("Trigger %u", triggerNumber))
|
|
||||||
{
|
|
||||||
hlayout.addLayout(&labellayout);
|
|
||||||
vlayout.addLayout(&hlayout);
|
|
||||||
|
|
||||||
inputCheckbox.setChecked(true);
|
|
||||||
levelCheckbox.setEnabled(false);
|
|
||||||
|
|
||||||
labellayout.addWidget(&devicelabel);
|
|
||||||
labellayout.addWidget(&triggerlabel);
|
|
||||||
|
|
||||||
line.setFrameShape(QFrame::HLine);
|
|
||||||
line.setFrameShadow(QFrame::Sunken);
|
|
||||||
vlayout.addWidget(&line);
|
|
||||||
|
|
||||||
hlayout.addStretch();
|
|
||||||
hlayout.addWidget(&inputCheckbox);
|
|
||||||
hlayout.addWidget(&levelCheckbox);
|
|
||||||
|
|
||||||
connect(&inputCheckbox, &QCheckBox::toggled, this, &TriggerWidget::onInputToggled);
|
|
||||||
connect(&levelCheckbox, &QCheckBox::toggled, this, &TriggerWidget::onLevelToggled);
|
|
||||||
|
|
||||||
setFixedHeight(96);
|
|
||||||
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
|
||||||
|
|
||||||
setLayout(&vlayout);
|
|
||||||
|
|
||||||
// Initialize trigger state
|
|
||||||
updateTriggerState();
|
|
||||||
}
|
|
||||||
|
|
||||||
TriggerWidget::~TriggerWidget()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t TriggerWidget::getDeviceSerial() const
|
|
||||||
{
|
|
||||||
return deviceSerial;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t TriggerWidget::getTriggerNumber() const
|
|
||||||
{
|
|
||||||
return triggerNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TriggerWidget::onInputToggled(bool checked)
|
|
||||||
{
|
|
||||||
updateTriggerState();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TriggerWidget::onLevelToggled(bool checked)
|
|
||||||
{
|
|
||||||
updateTriggerState();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TriggerWidget::updateTriggerState()
|
|
||||||
{
|
|
||||||
trigger_state_t state;
|
|
||||||
if(inputCheckbox.isChecked())
|
|
||||||
{
|
|
||||||
levelCheckbox.blockSignals(true);
|
|
||||||
levelCheckbox.setChecked(false);
|
|
||||||
levelCheckbox.setEnabled(false);
|
|
||||||
levelCheckbox.blockSignals(false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
levelCheckbox.setEnabled(true);
|
|
||||||
state = levelCheckbox.isChecked() ? TRIGGER_HIGH : TRIGGER_LOW;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (eismultiplexer_set_trigger_state(multiplexer.get(), triggerNumber, state) < 0) {
|
|
||||||
QMessageBox::warning(this, tr("Trigger Configuration Failed"),
|
|
||||||
tr("Failed to set trigger %1 on device %2").arg(triggerNumber).arg(deviceSerial));
|
|
||||||
qWarning() << "Failed to set trigger" << triggerNumber << "on device" << deviceSerial;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
|
|
||||||
#ifndef TRIGGERWIDGET_H
|
|
||||||
#define TRIGGERWIDGET_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QCheckBox>
|
|
||||||
#include <QLabel>
|
|
||||||
#include <QHBoxLayout>
|
|
||||||
#include <QVBoxLayout>
|
|
||||||
#include <eismultiplexer.h>
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
class TriggerWidget : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit TriggerWidget(uint16_t deviceSerial, uint16_t triggerNumber,
|
|
||||||
std::shared_ptr<struct eismultiplexer> multiplexer,
|
|
||||||
QWidget *parent = nullptr);
|
|
||||||
~TriggerWidget() override;
|
|
||||||
|
|
||||||
uint16_t getDeviceSerial() const;
|
|
||||||
uint16_t getTriggerNumber() const;
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void onInputToggled(bool checked);
|
|
||||||
void onLevelToggled(bool checked);
|
|
||||||
void updateTriggerState();
|
|
||||||
|
|
||||||
private:
|
|
||||||
uint16_t deviceSerial;
|
|
||||||
uint16_t triggerNumber;
|
|
||||||
std::shared_ptr<struct eismultiplexer> multiplexer;
|
|
||||||
QCheckBox inputCheckbox;
|
|
||||||
QCheckBox levelCheckbox;
|
|
||||||
QLabel devicelabel;
|
|
||||||
QLabel triggerlabel;
|
|
||||||
QFrame line;
|
|
||||||
QVBoxLayout vlayout;
|
|
||||||
QHBoxLayout hlayout;
|
|
||||||
QVBoxLayout labellayout;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // TRIGGERWIDGET_H
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue