Update port extension while editing
This commit is contained in:
parent
40793d2e7d
commit
c63d15a8b3
@ -115,14 +115,17 @@ bool SIUnitEdit::eventFilter(QObject *, QEvent *event)
|
|||||||
} else {
|
} else {
|
||||||
// change the digit at the current cursor
|
// change the digit at the current cursor
|
||||||
int nthDigit = cursor;
|
int nthDigit = cursor;
|
||||||
|
// account for decimal point/leading zero/sign
|
||||||
if(_value < 0) {
|
if(_value < 0) {
|
||||||
// account for sign
|
|
||||||
nthDigit--;
|
nthDigit--;
|
||||||
}
|
}
|
||||||
auto dotPos = text().indexOf('.');
|
auto dotPos = text().indexOf('.');
|
||||||
if(dotPos >= 0 && dotPos < nthDigit) {
|
if(dotPos >= 0 && dotPos < nthDigit) {
|
||||||
nthDigit--;
|
nthDigit--;
|
||||||
}
|
}
|
||||||
|
if(text().startsWith("-0.") || text().startsWith("0.")) {
|
||||||
|
nthDigit--;
|
||||||
|
}
|
||||||
auto step_size = pow(10, floor(log10(std::abs(newVal))) - nthDigit + 1);
|
auto step_size = pow(10, floor(log10(std::abs(newVal))) - nthDigit + 1);
|
||||||
newVal += step_size * steps * sign;
|
newVal += step_size * steps * sign;
|
||||||
setValue(newVal);
|
setValue(newVal);
|
||||||
|
@ -216,16 +216,35 @@ void PortExtension::edit()
|
|||||||
ui->P2calkit->setEnabled(false);
|
ui->P2calkit->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto updateValuesFromUI = [=](){
|
||||||
|
port1.delay = ui->P1Time->value();
|
||||||
|
port1.velocityFactor = ui->P1Velocity->value();
|
||||||
|
port1.DCloss = ui->P1DCloss->value();
|
||||||
|
port1.loss = ui->P1Loss->value();
|
||||||
|
port1.frequency = ui->P1Frequency->value();
|
||||||
|
port2.delay = ui->P2Time->value();
|
||||||
|
port2.velocityFactor = ui->P2Velocity->value();
|
||||||
|
port2.DCloss = ui->P2DCloss->value();
|
||||||
|
port2.loss = ui->P2Loss->value();
|
||||||
|
port2.frequency = ui->P2Frequency->value();
|
||||||
|
};
|
||||||
|
|
||||||
// connections to link delay and distance
|
// connections to link delay and distance
|
||||||
connect(ui->P1Time, &SIUnitEdit::valueChanged, [=](double newval) {
|
connect(ui->P1Time, &SIUnitEdit::valueChanged, [=](double newval) {
|
||||||
ui->P1Distance->setValueQuiet(newval * ui->P1Velocity->value() * c);
|
ui->P1Distance->setValueQuiet(newval * ui->P1Velocity->value() * c);
|
||||||
|
updateValuesFromUI();
|
||||||
});
|
});
|
||||||
connect(ui->P1Distance, &SIUnitEdit::valueChanged, [=](double newval) {
|
connect(ui->P1Distance, &SIUnitEdit::valueChanged, [=](double newval) {
|
||||||
ui->P1Time->setValueQuiet(newval / (ui->P1Velocity->value() * c));
|
ui->P1Time->setValueQuiet(newval / (ui->P1Velocity->value() * c));
|
||||||
|
updateValuesFromUI();
|
||||||
});
|
});
|
||||||
connect(ui->P1Velocity, &SIUnitEdit::valueChanged, [=](double newval) {
|
connect(ui->P1Velocity, &SIUnitEdit::valueChanged, [=](double newval) {
|
||||||
ui->P1Time->setValueQuiet(ui->P1Distance->value() / (newval * c));
|
ui->P1Time->setValueQuiet(ui->P1Distance->value() / (newval * c));
|
||||||
|
updateValuesFromUI();
|
||||||
});
|
});
|
||||||
|
connect(ui->P1DCloss, &SIUnitEdit::valueChanged, updateValuesFromUI);
|
||||||
|
connect(ui->P1Loss, &SIUnitEdit::valueChanged, updateValuesFromUI);
|
||||||
|
connect(ui->P1Frequency, &SIUnitEdit::valueChanged, updateValuesFromUI);
|
||||||
connect(ui->P1short, &QPushButton::pressed, [=](){
|
connect(ui->P1short, &QPushButton::pressed, [=](){
|
||||||
isOpen = false;
|
isOpen = false;
|
||||||
isPort1 = true;
|
isPort1 = true;
|
||||||
@ -241,13 +260,19 @@ void PortExtension::edit()
|
|||||||
|
|
||||||
connect(ui->P2Time, &SIUnitEdit::valueChanged, [=](double newval) {
|
connect(ui->P2Time, &SIUnitEdit::valueChanged, [=](double newval) {
|
||||||
ui->P2Distance->setValueQuiet(newval * ui->P2Velocity->value() * c);
|
ui->P2Distance->setValueQuiet(newval * ui->P2Velocity->value() * c);
|
||||||
|
updateValuesFromUI();
|
||||||
});
|
});
|
||||||
connect(ui->P2Distance, &SIUnitEdit::valueChanged, [=](double newval) {
|
connect(ui->P2Distance, &SIUnitEdit::valueChanged, [=](double newval) {
|
||||||
ui->P2Time->setValueQuiet(newval / (ui->P2Velocity->value() * c));
|
ui->P2Time->setValueQuiet(newval / (ui->P2Velocity->value() * c));
|
||||||
|
updateValuesFromUI();
|
||||||
});
|
});
|
||||||
connect(ui->P2Velocity, &SIUnitEdit::valueChanged, [=](double newval) {
|
connect(ui->P2Velocity, &SIUnitEdit::valueChanged, [=](double newval) {
|
||||||
ui->P2Time->setValueQuiet(ui->P2Distance->value() / (newval * c));
|
ui->P2Time->setValueQuiet(ui->P2Distance->value() / (newval * c));
|
||||||
|
updateValuesFromUI();
|
||||||
});
|
});
|
||||||
|
connect(ui->P2DCloss, &SIUnitEdit::valueChanged, updateValuesFromUI);
|
||||||
|
connect(ui->P2Loss, &SIUnitEdit::valueChanged, updateValuesFromUI);
|
||||||
|
connect(ui->P2Frequency, &SIUnitEdit::valueChanged, updateValuesFromUI);
|
||||||
connect(ui->P2short, &QPushButton::pressed, [=](){
|
connect(ui->P2short, &QPushButton::pressed, [=](){
|
||||||
isOpen = false;
|
isOpen = false;
|
||||||
isPort1 = false;
|
isPort1 = false;
|
||||||
@ -261,19 +286,7 @@ void PortExtension::edit()
|
|||||||
startMeasurement();
|
startMeasurement();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(ui->buttonBox, &QDialogButtonBox::accepted, [=](){
|
connect(ui->buttonBox, &QDialogButtonBox::accepted, dialog, &QDialog::accept);
|
||||||
port1.delay = ui->P1Time->value();
|
|
||||||
port1.velocityFactor = ui->P1Velocity->value();
|
|
||||||
port1.DCloss = ui->P1DCloss->value();
|
|
||||||
port1.loss = ui->P1Loss->value();
|
|
||||||
port1.frequency = ui->P1Frequency->value();
|
|
||||||
port2.delay = ui->P2Time->value();
|
|
||||||
port2.velocityFactor = ui->P2Velocity->value();
|
|
||||||
port2.DCloss = ui->P2DCloss->value();
|
|
||||||
port2.loss = ui->P2Loss->value();
|
|
||||||
port2.frequency = ui->P2Frequency->value();
|
|
||||||
dialog->accept();
|
|
||||||
});
|
|
||||||
connect(ui->buttonBox, &QDialogButtonBox::rejected, dialog, &QDialog::reject);
|
connect(ui->buttonBox, &QDialogButtonBox::rejected, dialog, &QDialog::reject);
|
||||||
dialog->show();
|
dialog->show();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user