mirror of
https://github.com/jankae/LibreVNA.git
synced 2026-04-07 23:43:42 +00:00
Use combobox for delta marker selection
This commit is contained in:
parent
17882c9d51
commit
d57970d3ed
3 changed files with 32 additions and 12 deletions
|
|
@ -708,9 +708,8 @@ void Marker::checkDeltaMarker()
|
|||
// not a delta marker, nothing to do
|
||||
return;
|
||||
}
|
||||
// Check if type of delta marker is still okay
|
||||
if(!delta || delta->getDomain() != getDomain()) {
|
||||
// not the same domain anymore, adjust delta
|
||||
if(!canUseAsDelta(delta)) {
|
||||
// incompatible delta marker, select best choice instead
|
||||
assignDeltaMarker(bestDeltaCandidate());
|
||||
}
|
||||
}
|
||||
|
|
@ -973,6 +972,20 @@ Marker *Marker::bestDeltaCandidate()
|
|||
return match;
|
||||
}
|
||||
|
||||
bool Marker::canUseAsDelta(Marker *m)
|
||||
{
|
||||
if(type != Type::Delta) {
|
||||
// not a delta marker, nothing to do
|
||||
return false;
|
||||
}
|
||||
if(m->getDomain() != getDomain()) {
|
||||
// not the same domain anymore, unusable
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Marker::assignDeltaMarker(Marker *m)
|
||||
{
|
||||
if(type != Type::Delta) {
|
||||
|
|
@ -1285,14 +1298,19 @@ QWidget *Marker::getTypeEditor(QAbstractItemDelegate *delegate)
|
|||
layout->setMargin(0);
|
||||
layout->setSpacing(0);
|
||||
layout->addWidget(new QLabel("to"));
|
||||
auto spinbox = new QSpinBox;
|
||||
if(delta) {
|
||||
spinbox->setValue(delta->number);
|
||||
auto deltaChooser = new QComboBox;
|
||||
for(auto m : model->getMarkers()) {
|
||||
if(canUseAsDelta(m)) {
|
||||
deltaChooser->addItem(QString::number(m->getNumber()));
|
||||
}
|
||||
}
|
||||
connect(spinbox, qOverload<int>(&QSpinBox::valueChanged), [=](int newval){
|
||||
if(delta) {
|
||||
deltaChooser->setCurrentText(QString::number(delta->number));
|
||||
}
|
||||
connect(deltaChooser, qOverload<int>(&QComboBox::currentIndexChanged), [=](int){
|
||||
bool found = false;
|
||||
for(auto m : model->getMarkers()) {
|
||||
if(m->number == newval) {
|
||||
if(m->number == deltaChooser->currentText().toInt()) {
|
||||
assignDeltaMarker(m);
|
||||
found = true;
|
||||
break;
|
||||
|
|
@ -1303,8 +1321,8 @@ QWidget *Marker::getTypeEditor(QAbstractItemDelegate *delegate)
|
|||
}
|
||||
update();
|
||||
});
|
||||
spinbox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
layout->addWidget(spinbox);
|
||||
deltaChooser->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
layout->addWidget(deltaChooser);
|
||||
w->setLayout(layout);
|
||||
c->setObjectName("Type");
|
||||
if(delegate){
|
||||
|
|
@ -1496,7 +1514,7 @@ bool Marker::isVisible()
|
|||
return visible;
|
||||
}
|
||||
|
||||
bool Marker::setVisible(bool visible)
|
||||
void Marker::setVisible(bool visible)
|
||||
{
|
||||
if(this->visible != visible) {
|
||||
this->visible = visible;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue