mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
Make the drive configuration UI work again.
This commit is contained in:
@@ -45,6 +45,7 @@ cxxlibrary(
|
||||
srcs=[
|
||||
"./main.cc",
|
||||
"./mainwindow.cc",
|
||||
"./drivecomponent.cc",
|
||||
".+resources_cc",
|
||||
],
|
||||
hdrs={
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
#include "globals.h"
|
||||
#include "drivecomponent.h"
|
||||
#include "mainwindow.h"
|
||||
#include "driveConfigurationForm.h"
|
||||
#include "fluxConfigurationForm.h"
|
||||
#include <QStandardItemModel>
|
||||
#include <range/v3/all.hpp>
|
||||
|
||||
@@ -22,12 +20,15 @@ public:
|
||||
W_OBJECT(ConfigurationForm)
|
||||
|
||||
public:
|
||||
ConfigurationForm(
|
||||
DriveComponentImpl* dci, QIcon icon, const std::string text):
|
||||
ConfigurationForm(QWidget* widget,
|
||||
DriveComponentImpl* dci,
|
||||
QIcon icon,
|
||||
const std::string text):
|
||||
QStandardItem(icon, QString::fromStdString(text)),
|
||||
_dci(dci)
|
||||
_widget(widget),
|
||||
_dci(dci),
|
||||
_mw(dci->_mainWindow)
|
||||
{
|
||||
_widget = new QWidget();
|
||||
}
|
||||
|
||||
public:
|
||||
@@ -52,20 +53,20 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
DriveComponentImpl* _dci;
|
||||
QWidget* _widget;
|
||||
DriveComponentImpl* _dci;
|
||||
MainWindow* _mw;
|
||||
};
|
||||
|
||||
class FluxConfigurationForm :
|
||||
public ConfigurationForm,
|
||||
public Ui_fluxConfigurationForm
|
||||
class FluxConfigurationForm : public ConfigurationForm
|
||||
{
|
||||
public:
|
||||
FluxConfigurationForm(DriveComponentImpl* dci):
|
||||
ConfigurationForm(
|
||||
dci, QIcon(":/ui/extras/fluxfile.png"), "Flux file")
|
||||
ConfigurationForm(dci->_mainWindow->fluxDevicePage,
|
||||
dci,
|
||||
QIcon(":/ui/extras/fluxfile.png"),
|
||||
"Flux file")
|
||||
{
|
||||
setupUi(_widget);
|
||||
}
|
||||
|
||||
public:
|
||||
@@ -76,7 +77,7 @@ public:
|
||||
|
||||
void collectConfig() const override
|
||||
{
|
||||
auto fluxFile = filenameEdit->text().toStdString();
|
||||
auto fluxFile = _mw->filenameEdit->text().toStdString();
|
||||
|
||||
const FluxConstructor* fc = &Config::getFluxFormats()[0];
|
||||
if (fc->sink)
|
||||
@@ -86,7 +87,8 @@ public:
|
||||
fc->source(fluxFile,
|
||||
globalConfig().overrides()->mutable_flux_source());
|
||||
|
||||
QString rpmOverride = rpmOverrideComboBox->currentData().toString();
|
||||
QString rpmOverride =
|
||||
_mw->rpmOverrideComboBox->currentData().toString();
|
||||
if (rpmOverride == "300")
|
||||
globalConfig()
|
||||
.overrides()
|
||||
@@ -99,7 +101,7 @@ public:
|
||||
->set_rotational_period_ms(166);
|
||||
else if (rpmOverride == "override")
|
||||
{
|
||||
float value = rpmOverrideValue->value();
|
||||
float value = _mw->rpmOverrideValue->value();
|
||||
globalConfig()
|
||||
.overrides()
|
||||
->mutable_drive()
|
||||
@@ -107,7 +109,7 @@ public:
|
||||
}
|
||||
|
||||
QString driveTypeOverride =
|
||||
driveTypeOverrideComboBox->currentData().toString();
|
||||
_mw->driveTypeOverrideComboBox->currentData().toString();
|
||||
if (driveTypeOverride != "default")
|
||||
globalConfig().overrides()->MergeFrom(
|
||||
*drivetypes.at(driveTypeOverride.toStdString()));
|
||||
@@ -115,52 +117,56 @@ public:
|
||||
|
||||
void loadSavedState() override
|
||||
{
|
||||
filenameEdit->setText(app->value(qid() + "/filename").toString());
|
||||
_mw->filenameEdit->setText(
|
||||
app->value(qid() + "/filename").toString());
|
||||
|
||||
rpmOverrideComboBox->addItem(
|
||||
_mw->rpmOverrideComboBox->addItem(
|
||||
"Use value in file", QVariant("default"));
|
||||
rpmOverrideComboBox->addItem("300 rpm / 200 ms", QVariant("300"));
|
||||
rpmOverrideComboBox->addItem("360 rpm / 166 ms", QVariant("360"));
|
||||
rpmOverrideComboBox->addItem("Custom value", QVariant("custom"));
|
||||
_mw->rpmOverrideComboBox->addItem(
|
||||
"300 rpm / 200 ms", QVariant("300"));
|
||||
_mw->rpmOverrideComboBox->addItem(
|
||||
"360 rpm / 166 ms", QVariant("360"));
|
||||
_mw->rpmOverrideComboBox->addItem(
|
||||
"Custom value", QVariant("custom"));
|
||||
QString rpmType = app->value(qid() + "/rpmType").toString();
|
||||
setByString(rpmOverrideComboBox, rpmType);
|
||||
rpmOverrideValue->setEnabled(rpmType == "custom");
|
||||
setByString(_mw->rpmOverrideComboBox, rpmType);
|
||||
_mw->rpmOverrideValue->setEnabled(rpmType == "custom");
|
||||
|
||||
driveTypeOverrideComboBox->addItem(
|
||||
_mw->driveTypeOverrideComboBox->addItem(
|
||||
"Use value in file", QVariant("default"));
|
||||
for (auto& d : drivetypes)
|
||||
{
|
||||
driveTypeOverrideComboBox->addItem(
|
||||
_mw->driveTypeOverrideComboBox->addItem(
|
||||
QString::fromStdString(d.second->comment()),
|
||||
QVariant(QString::fromStdString(d.first)));
|
||||
}
|
||||
setByString(driveTypeOverrideComboBox,
|
||||
setByString(_mw->driveTypeOverrideComboBox,
|
||||
app->value(qid() + "/driveType").toString());
|
||||
|
||||
rpmOverrideValue->setValue(
|
||||
_mw->rpmOverrideValue->setValue(
|
||||
app->value(qid() + "/customRpm").toInt());
|
||||
}
|
||||
|
||||
void connectAll() override
|
||||
{
|
||||
connect(filenameEdit,
|
||||
connect(_mw->filenameEdit,
|
||||
&QLineEdit::editingFinished,
|
||||
this,
|
||||
&ConfigurationForm::updateSavedState);
|
||||
connect(driveTypeOverrideComboBox,
|
||||
connect(_mw->driveTypeOverrideComboBox,
|
||||
QOverload<int>::of(&QComboBox::activated),
|
||||
this,
|
||||
&ConfigurationForm::updateSavedState);
|
||||
connect(rpmOverrideComboBox,
|
||||
connect(_mw->rpmOverrideComboBox,
|
||||
QOverload<int>::of(&QComboBox::activated),
|
||||
this,
|
||||
&ConfigurationForm::updateSavedState);
|
||||
connect(rpmOverrideValue,
|
||||
connect(_mw->rpmOverrideValue,
|
||||
QOverload<int>::of(&QSpinBox::valueChanged),
|
||||
this,
|
||||
&ConfigurationForm::updateSavedState);
|
||||
|
||||
connect(openButton,
|
||||
connect(_mw->openButton,
|
||||
&QPushButton::clicked,
|
||||
[this]()
|
||||
{
|
||||
@@ -178,55 +184,55 @@ public:
|
||||
ranges::views::intersperse(" ") |
|
||||
ranges::views::join |
|
||||
ranges::to<std::string>();
|
||||
QFileDialog dialogue(_dci->container());
|
||||
QFileDialog dialogue(_mw);
|
||||
dialogue.setFileMode(QFileDialog::ExistingFile);
|
||||
dialogue.setNameFilter(
|
||||
QString::fromStdString("Flux files (" + formats + ")"));
|
||||
|
||||
QStringList fileNames;
|
||||
if (dialogue.exec())
|
||||
filenameEdit->setText(dialogue.selectedFiles().first());
|
||||
_mw->filenameEdit->setText(
|
||||
dialogue.selectedFiles().first());
|
||||
});
|
||||
}
|
||||
|
||||
void updateSavedState() const override
|
||||
{
|
||||
app->setValue(qid() + "/filename", filenameEdit->text());
|
||||
app->setValue(qid() + "/filename", _mw->filenameEdit->text());
|
||||
|
||||
QString rpmType = rpmOverrideComboBox->currentData().toString();
|
||||
QString rpmType =
|
||||
_mw->rpmOverrideComboBox->currentData().toString();
|
||||
app->setValue(qid() + "/rpmType", rpmType);
|
||||
rpmOverrideValue->setEnabled(rpmType == "custom");
|
||||
_mw->rpmOverrideValue->setEnabled(rpmType == "custom");
|
||||
|
||||
app->setValue(qid() + "/customRpm", rpmOverrideValue->value());
|
||||
app->setValue(qid() + "/customRpm", _mw->rpmOverrideValue->value());
|
||||
|
||||
app->setValue(qid() + "/driveType",
|
||||
driveTypeOverrideComboBox->currentData().toString());
|
||||
_mw->driveTypeOverrideComboBox->currentData().toString());
|
||||
}
|
||||
};
|
||||
|
||||
class DriveConfigurationForm :
|
||||
public ConfigurationForm,
|
||||
public Ui_driveConfigurationForm
|
||||
class DriveConfigurationForm : public ConfigurationForm
|
||||
{
|
||||
public:
|
||||
DriveConfigurationForm(
|
||||
DriveComponentImpl* dci, QIcon icon, const std::string& label):
|
||||
ConfigurationForm(dci, icon, label)
|
||||
ConfigurationForm(
|
||||
dci->_mainWindow->hardwareDevicePage, dci, icon, label)
|
||||
{
|
||||
setupUi(_widget);
|
||||
}
|
||||
|
||||
void collectConfig() const override
|
||||
{
|
||||
globalConfig().overrides()->mutable_drive()->set_high_density(
|
||||
highDensityToggle->isChecked());
|
||||
_mw->highDensityToggle->isChecked());
|
||||
|
||||
auto driveTypeId =
|
||||
driveTypeComboBox->currentData().toString().toStdString();
|
||||
_mw->driveTypeComboBox->currentData().toString().toStdString();
|
||||
globalConfig().overrides()->MergeFrom(*drivetypes.at(driveTypeId));
|
||||
|
||||
auto filename =
|
||||
fmt::format("drive:{}", driveComboBox->currentIndex());
|
||||
fmt::format("drive:{}", _mw->driveComboBox->currentIndex());
|
||||
globalConfig().setFluxSink(filename);
|
||||
globalConfig().setFluxSource(filename);
|
||||
globalConfig().setVerificationFluxSource(filename);
|
||||
@@ -234,40 +240,40 @@ public:
|
||||
|
||||
void loadSavedState() override
|
||||
{
|
||||
driveComboBox->setCurrentIndex(
|
||||
_mw->driveComboBox->setCurrentIndex(
|
||||
app->value(qid() + "/drive").toInt());
|
||||
|
||||
QString driveType = app->value(qid() + "/driveType").toString();
|
||||
for (auto& d : drivetypes)
|
||||
{
|
||||
driveTypeComboBox->addItem(
|
||||
_mw->driveTypeComboBox->addItem(
|
||||
QString::fromStdString(d.second->comment()),
|
||||
QVariant(QString::fromStdString(d.first)));
|
||||
if (QString::fromStdString(d.first) == driveType)
|
||||
driveTypeComboBox->setCurrentIndex(
|
||||
driveTypeComboBox->count() - 1);
|
||||
_mw->driveTypeComboBox->setCurrentIndex(
|
||||
_mw->driveTypeComboBox->count() - 1);
|
||||
}
|
||||
|
||||
highDensityToggle->setCheckState(
|
||||
_mw->highDensityToggle->setCheckState(
|
||||
app->value(qid() + "/highDensity").toBool() ? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
}
|
||||
|
||||
void connectAll() override
|
||||
{
|
||||
connect(portLineEdit,
|
||||
connect(_mw->portLineEdit,
|
||||
&QLineEdit::editingFinished,
|
||||
this,
|
||||
&ConfigurationForm::updateSavedState);
|
||||
connect(driveComboBox,
|
||||
connect(_mw->driveComboBox,
|
||||
QOverload<int>::of(&QComboBox::activated),
|
||||
this,
|
||||
&ConfigurationForm::updateSavedState);
|
||||
connect(driveTypeComboBox,
|
||||
connect(_mw->driveTypeComboBox,
|
||||
QOverload<int>::of(&QComboBox::activated),
|
||||
this,
|
||||
&ConfigurationForm::updateSavedState);
|
||||
connect(highDensityToggle,
|
||||
connect(_mw->highDensityToggle,
|
||||
&QCheckBox::stateChanged,
|
||||
this,
|
||||
&ConfigurationForm::updateSavedState);
|
||||
@@ -275,13 +281,13 @@ public:
|
||||
|
||||
void updateSavedState() const override
|
||||
{
|
||||
app->setValue(qid() + "/drive", driveComboBox->currentIndex());
|
||||
app->setValue(qid() + "/drive", _mw->driveComboBox->currentIndex());
|
||||
|
||||
app->setValue(qid() + "/driveType",
|
||||
driveTypeComboBox->currentData().toString());
|
||||
_mw->driveTypeComboBox->currentData().toString());
|
||||
|
||||
app->setValue(
|
||||
qid() + "/highDensity", highDensityToggle->isChecked());
|
||||
qid() + "/highDensity", _mw->highDensityToggle->isChecked());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -308,18 +314,18 @@ public:
|
||||
.overrides()
|
||||
->mutable_usb()
|
||||
->mutable_greaseweazle()
|
||||
->set_port(portLineEdit->text().toStdString());
|
||||
->set_port(_mw->portLineEdit->text().toStdString());
|
||||
}
|
||||
|
||||
void loadSavedState() override
|
||||
{
|
||||
DriveConfigurationForm::loadSavedState();
|
||||
portLineEdit->setText(app->value(qid() + "/port").toString());
|
||||
_mw->portLineEdit->setText(app->value(qid() + "/port").toString());
|
||||
}
|
||||
|
||||
void updateSavedState() const override
|
||||
{
|
||||
app->setValue(qid() + "/port", portLineEdit->text());
|
||||
app->setValue(qid() + "/port", _mw->portLineEdit->text());
|
||||
DriveConfigurationForm::updateSavedState();
|
||||
}
|
||||
};
|
||||
@@ -338,12 +344,13 @@ public:
|
||||
_id(id),
|
||||
_device(device)
|
||||
{
|
||||
portLineEdit->setEnabled(false);
|
||||
_mw->portLineEdit->setEnabled(false);
|
||||
}
|
||||
|
||||
void loadSavedState() override
|
||||
{
|
||||
portLineEdit->setText(QString::fromStdString(_device->serialPort));
|
||||
_mw->portLineEdit->setText(
|
||||
QString::fromStdString(_device->serialPort));
|
||||
}
|
||||
|
||||
public:
|
||||
@@ -388,7 +395,7 @@ public:
|
||||
this,
|
||||
&DriveComponentImpl::updateSavedState);
|
||||
|
||||
container()->updateGeometry();
|
||||
_mainWindow->updateGeometry();
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -399,9 +406,6 @@ private:
|
||||
|
||||
_forms.append(form);
|
||||
_devicesModel.appendRow(form);
|
||||
|
||||
container()->layout()->addWidget(form->widget());
|
||||
form->widget()->hide();
|
||||
}
|
||||
|
||||
int findFormById(const std::string& id, int def)
|
||||
@@ -415,8 +419,7 @@ private:
|
||||
public:
|
||||
void changeSelectedDevice(int index)
|
||||
{
|
||||
for (int i = 0; i < _forms.size(); i++)
|
||||
_forms[i]->widget()->setVisible(i == index);
|
||||
_mainWindow->driveStackedWidget->setCurrentIndex(index);
|
||||
}
|
||||
W_SLOT(changeSelectedDevice)
|
||||
|
||||
@@ -437,12 +440,6 @@ public:
|
||||
form->collectConfig();
|
||||
}
|
||||
|
||||
public:
|
||||
QWidget* container() const
|
||||
{
|
||||
return _mainWindow->driveConfigurationContainer;
|
||||
}
|
||||
|
||||
private:
|
||||
static void setByString(QComboBox* combobox, QString value)
|
||||
{
|
||||
@@ -43,10 +43,16 @@
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="handleWidth">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Vertical</enum>
|
||||
</property>
|
||||
<property name="handleWidth">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<widget class="QGroupBox" name="groupBox_4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
|
||||
@@ -95,8 +101,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>875</width>
|
||||
<height>444</height>
|
||||
<width>873</width>
|
||||
<height>462</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@@ -127,7 +133,13 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="stackedWidget">
|
||||
<widget class="QStackedWidget" name="driveStackedWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
@@ -135,6 +147,12 @@
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="hardwareDevicePage">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
@@ -149,7 +167,14 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="portLineEdit"/>
|
||||
<widget class="QLineEdit" name="portLineEdit">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_61">
|
||||
@@ -207,7 +232,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="label_15">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
|
||||
@@ -220,7 +245,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<item row="7" column="1">
|
||||
<widget class="QRadioButton" name="defaultSampleTimeCheckbox">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
@@ -230,7 +255,40 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<item row="6" column="1">
|
||||
<widget class="QCheckBox" name="highDensityToggle">
|
||||
<property name="text">
|
||||
<string>High density disk inserted</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Port:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="customSampleTimeCheckBox">
|
||||
@@ -245,7 +303,7 @@
|
||||
<item>
|
||||
<widget class="QSpinBox" name="customSampleTimeSpinbox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
@@ -272,29 +330,15 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QCheckBox" name="highDensityToggle">
|
||||
<property name="text">
|
||||
<string>High density disk inserted</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Port:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="fluxDevicePage">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout1">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
@@ -324,7 +368,14 @@
|
||||
<item row="0" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="filenameEdit"/>
|
||||
<widget class="QLineEdit" name="filenameEdit">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="openButton">
|
||||
@@ -357,7 +408,7 @@
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="rpmOverrideComboBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
@@ -383,7 +434,7 @@
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="driveTypeOverrideComboBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
@@ -402,7 +453,7 @@
|
||||
<item>
|
||||
<widget class="QSpinBox" name="rpmOverrideValue">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
@@ -414,23 +465,23 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
@@ -491,8 +542,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>875</width>
|
||||
<height>343</height>
|
||||
<width>873</width>
|
||||
<height>321</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@@ -627,6 +678,9 @@
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Vertical</enum>
|
||||
</property>
|
||||
<property name="handleWidth">
|
||||
<number>5</number>
|
||||
</property>
|
||||
<widget class="QFrame" name="container">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
|
||||
@@ -4,18 +4,19 @@
|
||||
#include "lib/core/utils.h"
|
||||
#include "globals.h"
|
||||
#include "mainwindow.h"
|
||||
#include "drivecomponent.h"
|
||||
|
||||
W_OBJECT_IMPL(MainWindow)
|
||||
|
||||
MainWindow::MainWindow():
|
||||
_logStreamBuf(
|
||||
[this](const std::string& s)
|
||||
{
|
||||
logViewerEdit->appendPlainText(QString::fromStdString(s));
|
||||
logViewerEdit->ensureCursorVisible();
|
||||
}),
|
||||
_logStream(&_logStreamBuf),
|
||||
_logRenderer(LogRenderer::create(_logStream))
|
||||
_logStreamBuf(
|
||||
[this](const std::string& s)
|
||||
{
|
||||
logViewerEdit->appendPlainText(QString::fromStdString(s));
|
||||
logViewerEdit->ensureCursorVisible();
|
||||
}),
|
||||
_logStream(&_logStreamBuf),
|
||||
_logRenderer(LogRenderer::create(_logStream))
|
||||
{
|
||||
setupUi(this);
|
||||
|
||||
@@ -37,6 +38,8 @@ MainWindow::MainWindow():
|
||||
{
|
||||
::emergencyStop = true;
|
||||
});
|
||||
|
||||
_driveComponent = DriveComponent::create(this);
|
||||
}
|
||||
|
||||
void MainWindow::runThen(
|
||||
@@ -51,8 +54,8 @@ void MainWindow::runThen(
|
||||
&QFutureWatcher<void>::deleteLater);
|
||||
}
|
||||
|
||||
void MainWindow::logMessage(const AnyLogMessage& message)
|
||||
{
|
||||
void MainWindow::logMessage(const AnyLogMessage& message)
|
||||
{
|
||||
#if 0
|
||||
std::visit(overloaded{/* Fallback --- do nothing */
|
||||
[this](const auto& m)
|
||||
@@ -92,6 +95,6 @@ void MainWindow::runThen(
|
||||
*message);
|
||||
#endif
|
||||
|
||||
_logRenderer->add(message);
|
||||
_logStream.flush();
|
||||
}
|
||||
_logRenderer->add(message);
|
||||
_logStream.flush();
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
#include "lib/core/logger.h"
|
||||
#include "globals.h"
|
||||
|
||||
class DriveComponent;
|
||||
|
||||
class CallbackOstream : public std::streambuf
|
||||
{
|
||||
public:
|
||||
@@ -50,4 +52,5 @@ protected:
|
||||
std::ostream _logStream;
|
||||
CallbackOstream _logStreamBuf;
|
||||
std::unique_ptr<LogRenderer> _logRenderer;
|
||||
DriveComponent* _driveComponent;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user