Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ if(BUILD_GUI)
find_package(Qt5Widgets REQUIRED)
find_package(Qwt REQUIRED)

set(CMAKE_AUTORCC ON)

qt5_wrap_cpp(GENERATED_SOURCES
src/gui/MainWindow.hpp
src/gui/NotFoundDialog.hpp
Expand Down Expand Up @@ -173,6 +175,7 @@ if(BUILD_GUI)
src/gui/PointsBuffer.cpp
src/gui/RightClickPickerMachine.cpp
src/gui/SignalEstimator.cpp
src/gui/SignalEstimator.qrc
)

add_dependencies(signal-estimator-gui
Expand Down
39 changes: 33 additions & 6 deletions src/gui/MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "ui_MainWindow.h"

#include <QCheckBox>
#include <QCloseEvent>
#include <QList>
#include <QPen>

Expand All @@ -24,6 +25,12 @@ MainWindow::MainWindow(IDeviceManager& device_manager, QWidget* parent)
connect(signal_estimator_, &SignalEstimator::error, this, &MainWindow::show_error);
connect(signal_estimator_, &SignalEstimator::can_read, this,
&MainWindow::read_graph_data);
connect(signal_estimator_, &SignalEstimator::finished, this, [this]() {
ui->actionStart->setEnabled(true);
ui->actionStop->setEnabled(false);
ui->StatusLabel->setText("");
timer_->stop();
});

ui->OutputSig->setCanvasBackground(Qt::white);

Expand Down Expand Up @@ -99,7 +106,14 @@ MainWindow::~MainWindow() {
delete ui;
}

void MainWindow::on_StartButton_released() {
void MainWindow::closeEvent(QCloseEvent* event) {
signal_estimator_->stop();
event->accept();
}

void MainWindow::on_start() {
ui->actionStart->setEnabled(false);
ui->actionStop->setEnabled(true);
QStringList args = set_up_program_();

set_update_plots_(true); // must be true to update graphs
Expand All @@ -119,22 +133,30 @@ void MainWindow::on_StartButton_released() {
}

if (signal_estimator_->start(args)) {
ui->ErrorLabel->setText("");
ui->StatusLabel->setText("Running");
} else {
ui->ErrorLabel->setText(QString("Failed to open signal-estimator"));
ui->StatusLabel->setText(QString("Failed to open signal-estimator"));
}

set_update_plots_(true);
clear_results_text_();
timer_->start();
}

void MainWindow::on_StopButton_clicked() {
void MainWindow::on_stop() {
ui->actionStart->setEnabled(true);
ui->actionStop->setEnabled(false);
ui->StatusLabel->setText("");
signal_estimator_->stop();

set_update_plots_(false);
}

void MainWindow::on_DurationCheckBox_stateChanged(int state) {
const bool checked = (state == Qt::Checked);
ui->Duration->setEnabled(!checked);
}

void MainWindow::update_graphs() {
if (auto latencyValues = signal_estimator_->latencyUpdate()) {
update_latency_(*latencyValues);
Expand Down Expand Up @@ -177,7 +199,7 @@ void MainWindow::read_graph_data() {
}

void MainWindow::show_error(QString error) {
ui->ErrorLabel->setText(error);
ui->StatusLabel->setText(error);
}

QStringList MainWindow::set_up_program_() {
Expand Down Expand Up @@ -217,7 +239,12 @@ QStringList MainWindow::set_up_program_() {
list.append("-l");
list.append(t);

t = ui->Duration->cleanText();
if (ui->Duration->isEnabled()) {
t = ui->Duration->cleanText();
} else {
// one year. TODO find a better solution to have infinite measurement
t = "31536000";
}
list.append("-d");
list.append(t);

Expand Down
8 changes: 6 additions & 2 deletions src/gui/MainWindow.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,13 @@ class MainWindow : public QMainWindow {
explicit MainWindow(IDeviceManager& device_manager, QWidget* parent = nullptr);
~MainWindow() override;

protected slots:
void closeEvent(QCloseEvent*) override;

private slots:
void on_StartButton_released();
void on_StopButton_clicked();
void on_start();
void on_stop();
void on_DurationCheckBox_stateChanged(int state);

void update_graphs();
void read_graph_data();
Expand Down
211 changes: 164 additions & 47 deletions src/gui/MainWindow.ui
Original file line number Diff line number Diff line change
Expand Up @@ -169,32 +169,6 @@
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="frame">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="StartButton">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Run signal-estimator and graph the results&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="StopButton">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Stop graphing. Please wait for the sounds of signal-estimator to stop&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Stop</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_5">
<property name="autoFillBackground">
Expand Down Expand Up @@ -283,13 +257,9 @@
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="GridCheckBoxLabel">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;show grid&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>show grid</string>
</property>
</widget>
</item>
<item>
Expand Down Expand Up @@ -535,20 +505,53 @@
</widget>
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="Duration">
<property name="minimum">
<layout class="QHBoxLayout" name="DurationLayout">
<property name="margin">
<number>0</number>
</property>
<property name="maximum">
<number>2147483647</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="value">
<number>10</number>
</property>
</widget>
<item>
<widget class="QSpinBox" name="Duration">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>2147483647</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="value">
<number>10</number>
</property>
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="DurationCheckBox">
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>run measurement unlimited</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="6" column="0">
<widget class="QLabel" name="Label1_6">
Expand Down Expand Up @@ -770,7 +773,7 @@
</widget>
</item>
<item>
<widget class="QLabel" name="ErrorLabel">
<widget class="QLabel" name="StatusLabel">
<property name="text">
<string/>
</property>
Expand All @@ -787,15 +790,80 @@
<height>26</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
<property name="title">
<string>File</string>
</property>
<addaction name="actionQuit"/>
</widget>
<widget class="QMenu" name="menuMeasurement">
<property name="title">
<string>Measurement</string>
</property>
<addaction name="actionStart"/>
<addaction name="actionStop"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuMeasurement"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="actionStart"/>
<addaction name="actionStop"/>
</widget>
<action name="actionQuit">
<property name="text">
<string>Quit</string>
</property>
<property name="toolTip">
<string>Quit application</string>
</property>
<property name="shortcut">
<string>Ctrl+Q</string>
</property>
</action>
<action name="actionStart">
<property name="text">
<string>Start</string>
</property>
<property name="toolTip">
<string>Start measurement (Ctrl+R)</string>
</property>
<property name="shortcut">
<string>Ctrl+R</string>
</property>
<property name="icon">
<iconset>:/images/start.png</iconset>
</property>
</action>
<action name="actionStop">
<property name="text">
<string>Stop</string>
</property>
<property name="toolTip">
<string>Stop measurement (Ctrl+A)</string>
</property>
<property name="shortcut">
<string>Ctrl+A</string>
</property>
<property name="icon">
<iconset>:/images/stop.png</iconset>
</property>
<property name="enabled">
<bool>false</bool>
</property>
<property name="icon">
<iconset>:/images/stop.png</iconset>
</property>
</action>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
Expand All @@ -808,5 +876,54 @@
</customwidget>
</customwidgets>
<resources/>
<connections/>
<connections>
<connection>
<sender>actionQuit</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>close()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>399</x>
<y>299</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionStart</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_start()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>399</x>
<y>299</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionStop</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_stop()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>399</x>
<y>299</y>
</hint>
</hints>
</connection>
</connections>
</ui>
Loading