feat: use any source for expo/weight/offset (#5220)
Co-authored-by: philmoz <phil.a.mitchell@gmail.com> Co-authored-by: 3djc <3djc@gh.com> Co-authored-by: elecpower <elecpower@users.noreply.github.com>
This commit is contained in:
co-authored by
philmoz
3djc
elecpower
parent
326c58a7fd
commit
4b917b762c
@@ -104,6 +104,9 @@ ChannelsPanel::ChannelsPanel(QWidget * parent, ModelData & model, GeneralSetting
|
||||
|
||||
int gvid = dialogFilteredItemModels->registerItemModel(new FilteredItemModel(sharedItemModels->getItemModel(AbstractItemModel::IMID_GVarRef)), "GVarRef");
|
||||
|
||||
curveRefFilteredItemModels = new CurveRefFilteredFactory(sharedItemModels,
|
||||
firmware->getCapability(HasMixerExpo) ? 0 : FilteredItemModel::PositiveFilter);
|
||||
|
||||
QStringList headerLabels;
|
||||
headerLabels << "#";
|
||||
if (channelNameMaxLen > 0) {
|
||||
@@ -162,20 +165,15 @@ ChannelsPanel::ChannelsPanel(QWidget * parent, ModelData & model, GeneralSetting
|
||||
if (IS_HORUS_OR_TARANIS(firmware->getBoard())) {
|
||||
curveCB[i] = new QComboBox(this);
|
||||
curveCB[i]->setProperty("index", i);
|
||||
curveCB[i]->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||
curveCB[i]->setModel(dialogFilteredItemModels->getItemModel(crvid));
|
||||
connect(curveCB[i], SIGNAL(currentIndexChanged(int)), this, SLOT(curveEdited()));
|
||||
tableLayout->addWidget(i, col++, curveCB[i]);
|
||||
|
||||
curveImage[i] = new CurveImageWidget(this);
|
||||
int crvidx = model.limitData[i].curve.value - 1;
|
||||
QColor pencolor = colors[crvidx >= 0 ? crvidx : Qt::black];
|
||||
curveImage[i]->set(&model, firmware, sharedItemModels, crvidx, pencolor, 3);
|
||||
curveImage[i]->setGrid(Qt::gray, 2);
|
||||
curveImage[i]->setProperty("index", i);
|
||||
curveImage[i]->setFixedSize(QSize(100, 100));
|
||||
connect(curveImage[i], &CurveImageWidget::doubleClicked, this, &ChannelsPanel::on_curveImageDoubleClicked);
|
||||
tableLayout->addWidget(i, col++, curveImage[i]);
|
||||
|
||||
curveGroup[i] = new CurveReferenceUIManager(curveCB[i], curveImage[i], model.limitData[i].curve, model, sharedItemModels,
|
||||
curveRefFilteredItemModels, this);
|
||||
}
|
||||
|
||||
// PPM center
|
||||
@@ -201,6 +199,7 @@ ChannelsPanel::ChannelsPanel(QWidget * parent, ModelData & model, GeneralSetting
|
||||
tableLayout->addWidget(i, col++, symlimitsChk[i]);
|
||||
}
|
||||
}
|
||||
|
||||
update();
|
||||
|
||||
disableMouseScrolling();
|
||||
@@ -222,8 +221,10 @@ ChannelsPanel::~ChannelsPanel()
|
||||
delete curveCB[i];
|
||||
delete centerSB[i];
|
||||
delete symlimitsChk[i];
|
||||
delete curveGroup[i];
|
||||
}
|
||||
delete dialogFilteredItemModels;
|
||||
delete curveRefFilteredItemModels;
|
||||
}
|
||||
|
||||
void ChannelsPanel::symlimitsEdited()
|
||||
@@ -270,24 +271,6 @@ void ChannelsPanel::invEdited()
|
||||
}
|
||||
}
|
||||
|
||||
void ChannelsPanel::curveEdited()
|
||||
{
|
||||
if (!lock) {
|
||||
QComboBox *cb = qobject_cast<QComboBox*>(sender());
|
||||
int index = cb->property("index").toInt();
|
||||
// ignore unnecessary updates that could be triggered by updates to the data model
|
||||
LimitData &ld = model->limitData[index];
|
||||
if (ld.curve != CurveReference(CurveReference::CURVE_REF_CUSTOM, cb->itemData(cb->currentIndex()).toInt())) {
|
||||
ld.curve = CurveReference(CurveReference::CURVE_REF_CUSTOM, cb->itemData(cb->currentIndex()).toInt());
|
||||
curveImage[index]->setIndex(abs(ld.curve.value) - 1);
|
||||
if (abs(ld.curve.value) > 0)
|
||||
curveImage[index]->setPen(colors[abs(ld.curve.value) - 1], 3);
|
||||
updateLine(index);
|
||||
emit modified();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ChannelsPanel::ppmcenterEdited()
|
||||
{
|
||||
if (!lock) {
|
||||
@@ -317,16 +300,6 @@ void ChannelsPanel::updateLine(int i)
|
||||
chnMin[i]->setValue(chn.min);
|
||||
chnMax[i]->setValue(chn.max);
|
||||
invCB[i]->setCurrentIndex((chn.revert) ? 1 : 0);
|
||||
if (IS_HORUS_OR_TARANIS(firmware->getBoard())) {
|
||||
curveCB[i]->setCurrentIndex(curveCB[i]->findData(chn.curve.value));
|
||||
if (chn.curve.value == 0) {
|
||||
curveImage[i]->setVisible(false);
|
||||
}
|
||||
else {
|
||||
curveImage[i]->setVisible(true);
|
||||
curveImage[i]->draw();
|
||||
}
|
||||
}
|
||||
if (firmware->getCapability(PPMCenter)) {
|
||||
centerSB[i]->setValue(chn.ppmCenter + 1500);
|
||||
}
|
||||
@@ -496,14 +469,3 @@ void ChannelsPanel::updateItemModels()
|
||||
sharedItemModels->update(AbstractItemModel::IMUE_Channels);
|
||||
emit modified();
|
||||
}
|
||||
|
||||
void ChannelsPanel::on_curveImageDoubleClicked()
|
||||
{
|
||||
bool ok = false;
|
||||
int index = sender()->property("index").toInt(&ok);
|
||||
|
||||
if (ok && curveImage[abs(index)]->edit()) {
|
||||
updateLine(index);
|
||||
emit modified();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user