Use combobox for delta marker selection
This commit is contained in:
parent
17882c9d51
commit
d57970d3ed
@ -708,9 +708,8 @@ void Marker::checkDeltaMarker()
|
|||||||
// not a delta marker, nothing to do
|
// not a delta marker, nothing to do
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Check if type of delta marker is still okay
|
if(!canUseAsDelta(delta)) {
|
||||||
if(!delta || delta->getDomain() != getDomain()) {
|
// incompatible delta marker, select best choice instead
|
||||||
// not the same domain anymore, adjust delta
|
|
||||||
assignDeltaMarker(bestDeltaCandidate());
|
assignDeltaMarker(bestDeltaCandidate());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -973,6 +972,20 @@ Marker *Marker::bestDeltaCandidate()
|
|||||||
return match;
|
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)
|
void Marker::assignDeltaMarker(Marker *m)
|
||||||
{
|
{
|
||||||
if(type != Type::Delta) {
|
if(type != Type::Delta) {
|
||||||
@ -1285,14 +1298,19 @@ QWidget *Marker::getTypeEditor(QAbstractItemDelegate *delegate)
|
|||||||
layout->setMargin(0);
|
layout->setMargin(0);
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
layout->addWidget(new QLabel("to"));
|
layout->addWidget(new QLabel("to"));
|
||||||
auto spinbox = new QSpinBox;
|
auto deltaChooser = new QComboBox;
|
||||||
if(delta) {
|
for(auto m : model->getMarkers()) {
|
||||||
spinbox->setValue(delta->number);
|
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;
|
bool found = false;
|
||||||
for(auto m : model->getMarkers()) {
|
for(auto m : model->getMarkers()) {
|
||||||
if(m->number == newval) {
|
if(m->number == deltaChooser->currentText().toInt()) {
|
||||||
assignDeltaMarker(m);
|
assignDeltaMarker(m);
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
@ -1303,8 +1321,8 @@ QWidget *Marker::getTypeEditor(QAbstractItemDelegate *delegate)
|
|||||||
}
|
}
|
||||||
update();
|
update();
|
||||||
});
|
});
|
||||||
spinbox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
deltaChooser->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
layout->addWidget(spinbox);
|
layout->addWidget(deltaChooser);
|
||||||
w->setLayout(layout);
|
w->setLayout(layout);
|
||||||
c->setObjectName("Type");
|
c->setObjectName("Type");
|
||||||
if(delegate){
|
if(delegate){
|
||||||
@ -1496,7 +1514,7 @@ bool Marker::isVisible()
|
|||||||
return visible;
|
return visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Marker::setVisible(bool visible)
|
void Marker::setVisible(bool visible)
|
||||||
{
|
{
|
||||||
if(this->visible != visible) {
|
if(this->visible != visible) {
|
||||||
this->visible = visible;
|
this->visible = visible;
|
||||||
|
@ -98,7 +98,7 @@ public:
|
|||||||
SIUnitEdit* getSettingsEditor();
|
SIUnitEdit* getSettingsEditor();
|
||||||
void adjustSettings(double value);
|
void adjustSettings(double value);
|
||||||
bool isVisible();
|
bool isVisible();
|
||||||
bool setVisible(bool visible);
|
void setVisible(bool visible);
|
||||||
|
|
||||||
QMenu *getContextMenu();
|
QMenu *getContextMenu();
|
||||||
|
|
||||||
@ -107,6 +107,7 @@ public:
|
|||||||
Marker *getParent() const;
|
Marker *getParent() const;
|
||||||
const std::vector<Marker *>& getHelperMarkers() const;
|
const std::vector<Marker *>& getHelperMarkers() const;
|
||||||
Marker *helperMarker(unsigned int i);
|
Marker *helperMarker(unsigned int i);
|
||||||
|
bool canUseAsDelta(Marker *m);
|
||||||
void assignDeltaMarker(Marker *m);
|
void assignDeltaMarker(Marker *m);
|
||||||
QString getSuffix() const;
|
QString getSuffix() const;
|
||||||
|
|
||||||
|
@ -91,6 +91,7 @@ MarkerWidget::MarkerWidget(MarkerModel &model, QWidget *parent) :
|
|||||||
connect(m, &Marker::typeChanged, this, &MarkerWidget::updatePersistentEditors);
|
connect(m, &Marker::typeChanged, this, &MarkerWidget::updatePersistentEditors);
|
||||||
connect(m, &Marker::traceChanged, this, &MarkerWidget::updatePersistentEditors);
|
connect(m, &Marker::traceChanged, this, &MarkerWidget::updatePersistentEditors);
|
||||||
connect(m, &Marker::assignedDeltaChanged, this, &MarkerWidget::updatePersistentEditors);
|
connect(m, &Marker::assignedDeltaChanged, this, &MarkerWidget::updatePersistentEditors);
|
||||||
|
connect(m, &Marker::deleted, this, &MarkerWidget::updatePersistentEditors);
|
||||||
updatePersistentEditors();
|
updatePersistentEditors();
|
||||||
});
|
});
|
||||||
connect(&model, &MarkerModel::setupLoadComplete, this, &MarkerWidget::updatePersistentEditors);
|
connect(&model, &MarkerModel::setupLoadComplete, this, &MarkerWidget::updatePersistentEditors);
|
||||||
|
Loading…
Reference in New Issue
Block a user