feat: add precision setting for mix delay up & down (#5314)
This commit is contained in:
@@ -143,6 +143,7 @@ Node convert<MixData>::encode(const MixData& rhs)
|
||||
node["weight"] = YamlSourceNumRefEncode(rhs.weight);
|
||||
node["swtch"] = rhs.swtch;
|
||||
node["curve"] = rhs.curve;
|
||||
node["delayPrec"] = rhs.delayPrec;
|
||||
node["delayUp"] = rhs.delayUp;
|
||||
node["delayDown"] = rhs.delayDown;
|
||||
node["speedPrec"] = rhs.speedPrec;
|
||||
@@ -166,6 +167,7 @@ bool convert<MixData>::decode(const Node& node, MixData& rhs)
|
||||
}
|
||||
node["swtch"] >> rhs.swtch;
|
||||
node["curve"] >> rhs.curve;
|
||||
node["delayPrec"] >> rhs.delayPrec;
|
||||
node["delayUp"] >> rhs.delayUp;
|
||||
node["delayDown"] >> rhs.delayDown;
|
||||
node["speedPrec"] >> rhs.speedPrec;
|
||||
|
||||
@@ -48,6 +48,7 @@ class MixData {
|
||||
int weight;
|
||||
RawSwitch swtch;
|
||||
CurveReference curve;
|
||||
unsigned int delayPrec;
|
||||
unsigned int delayUp;
|
||||
unsigned int delayDown;
|
||||
unsigned int speedPrec;
|
||||
|
||||
@@ -145,20 +145,23 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
|
||||
ui->switchesCB->setCurrentIndex(ui->switchesCB->findData(md->swtch.toValue()));
|
||||
ui->warningCB->setCurrentIndex(md->mixWarn);
|
||||
ui->mltpxCB->setCurrentIndex(md->mltpx);
|
||||
ui->delayPrecCB->setCurrentIndex(md->delayPrec);
|
||||
ui->speedPrecCB->setCurrentIndex(md->speedPrec);
|
||||
|
||||
int scale=firmware->getCapability(SlowScale);
|
||||
float range=firmware->getCapability(SlowRange);
|
||||
float range = firmware->getCapability(SlowRange);
|
||||
|
||||
int scale = firmware->getCapability(SlowScale);
|
||||
if (md->delayPrec) scale = scale * 10;
|
||||
ui->delayDownSB->setMaximum(range / scale);
|
||||
ui->delayDownSB->setSingleStep(1.0 / scale);
|
||||
ui->delayDownSB->setDecimals((scale == 1 ? 0 : 1));
|
||||
ui->delayDownSB->setDecimals((scale == 1 ? 0 : scale == 10 ? 1 : 2));
|
||||
ui->delayDownSB->setValue((float)md->delayDown / scale);
|
||||
ui->delayUpSB->setMaximum(range / scale);
|
||||
ui->delayUpSB->setSingleStep(1.0 / scale);
|
||||
ui->delayUpSB->setDecimals((scale == 1 ? 0 : 1));
|
||||
ui->delayUpSB->setDecimals((scale == 1 ? 0 : scale == 10 ? 1 : 2));
|
||||
ui->delayUpSB->setValue((float)md->delayUp / scale);
|
||||
|
||||
scale = firmware->getCapability(SlowScale);
|
||||
if (md->speedPrec) scale = scale * 10;
|
||||
ui->slowDownSB->setMaximum(range / scale);
|
||||
ui->slowDownSB->setSingleStep(1.0 / scale);
|
||||
@@ -178,6 +181,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
|
||||
connect(ui->switchesCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
|
||||
connect(ui->warningCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
|
||||
connect(ui->mltpxCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
|
||||
connect(ui->delayPrecCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
|
||||
connect(ui->delayDownSB, SIGNAL(editingFinished()), this, SLOT(valuesChanged()));
|
||||
connect(ui->delayUpSB, SIGNAL(editingFinished()), this, SLOT(valuesChanged()));
|
||||
connect(ui->speedPrecCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
|
||||
@@ -229,18 +233,35 @@ void MixerDialog::valuesChanged()
|
||||
md->mixWarn = ui->warningCB->currentIndex();
|
||||
md->mltpx = (MltpxValue)ui->mltpxCB->currentIndex();
|
||||
|
||||
float range = firmware->getCapability(SlowRange);
|
||||
|
||||
// Update values based on old precision (in case it changed)
|
||||
int scale = firmware->getCapability(SlowScale);
|
||||
if (md->delayPrec) scale = scale * 10;
|
||||
md->delayDown = round(ui->delayDownSB->value() * scale);
|
||||
md->delayUp = round(ui->delayUpSB->value() * scale);
|
||||
|
||||
// Get new precion and update controls
|
||||
md->delayPrec = ui->delayPrecCB->currentIndex();
|
||||
scale = firmware->getCapability(SlowScale);
|
||||
if (md->delayPrec) scale = scale * 10;
|
||||
ui->delayDownSB->setMaximum(range / scale);
|
||||
ui->delayDownSB->setSingleStep(1.0 / scale);
|
||||
ui->delayDownSB->setDecimals((scale == 1 ? 0 : scale == 10 ? 1 : 2));
|
||||
ui->delayDownSB->setValue((float)md->delayDown / scale);
|
||||
ui->delayUpSB->setMaximum(range / scale);
|
||||
ui->delayUpSB->setSingleStep(1.0 / scale);
|
||||
ui->delayUpSB->setDecimals((scale == 1 ? 0 : scale == 10 ? 1 : 2));
|
||||
ui->delayUpSB->setValue((float)md->delayUp / scale);
|
||||
|
||||
// Update values based on old precision (in case it changed)
|
||||
scale = firmware->getCapability(SlowScale);
|
||||
if (md->speedPrec) scale = scale * 10;
|
||||
md->speedDown = round(ui->slowDownSB->value() * scale);
|
||||
md->speedUp = round(ui->slowUpSB->value() * scale);
|
||||
|
||||
// Get new precion and update controls
|
||||
md->speedPrec = ui->speedPrecCB->currentIndex();
|
||||
float range = firmware->getCapability(SlowRange);
|
||||
scale = firmware->getCapability(SlowScale);
|
||||
if (md->speedPrec) scale = scale * 10;
|
||||
ui->slowDownSB->setMaximum(range / scale);
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>752</width>
|
||||
<height>623</height>
|
||||
<width>763</width>
|
||||
<height>655</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@@ -63,13 +63,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="11" column="0">
|
||||
<widget class="QLabel" name="label_15">
|
||||
<property name="text">
|
||||
<string>Slow up/dn prec</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="sourceCB"/>
|
||||
</item>
|
||||
@@ -80,20 +73,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="1">
|
||||
<widget class="QComboBox" name="speedPrecCB">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>0.0</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>0.00</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="QComboBox" name="switchesCB"/>
|
||||
</item>
|
||||
@@ -521,37 +500,8 @@
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout" columnstretch="0,0,0,0">
|
||||
<item row="1" column="2">
|
||||
<widget class="QDoubleSpinBox" name="slowUpSB">
|
||||
<property name="whatsThis">
|
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; text-decoration: underline;">Delay ans Slow</span></p>
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600; text-decoration: underline;"></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These values control the speed and delay of the output of the mix. </p>
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If Delay is not zero the actuation of the mix will be delayed by the specified amount of seconds.</p>
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If Slow is not zero then the speed of the mix will be set by the value specified -&gt; the value states the number of seconds it takes to transit from -100 to 100.</p></body></html></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>7.500000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<double>0.500000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QDoubleSpinBox" name="delayUpSB">
|
||||
<item row="3" column="1">
|
||||
<widget class="QDoubleSpinBox" name="delayDownSB">
|
||||
<property name="whatsThis">
|
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
@@ -573,7 +523,48 @@ p, li { white-space: pre-wrap; }
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="text">
|
||||
<string>Slow</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<property name="text">
|
||||
<string>Delay</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string>Up</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>Down</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2">
|
||||
<widget class="QDoubleSpinBox" name="slowDownSB">
|
||||
<property name="whatsThis">
|
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
@@ -602,49 +593,8 @@ p, li { white-space: pre-wrap; }
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>Down</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="text">
|
||||
<string>Up</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<property name="text">
|
||||
<string>Delay</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="text">
|
||||
<string>Slow</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QDoubleSpinBox" name="delayDownSB">
|
||||
<widget class="QDoubleSpinBox" name="delayUpSB">
|
||||
<property name="whatsThis">
|
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
@@ -666,6 +616,73 @@ p, li { white-space: pre-wrap; }
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QDoubleSpinBox" name="slowUpSB">
|
||||
<property name="whatsThis">
|
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; text-decoration: underline;">Delay ans Slow</span></p>
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600; text-decoration: underline;"></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These values control the speed and delay of the output of the mix. </p>
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If Delay is not zero the actuation of the mix will be delayed by the specified amount of seconds.</p>
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If Slow is not zero then the speed of the mix will be set by the value specified -&gt; the value states the number of seconds it takes to transit from -100 to 100.</p></body></html></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>7.500000000000000</double>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<double>0.500000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_15">
|
||||
<property name="text">
|
||||
<string>Precision</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QComboBox" name="speedPrecCB">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>0.0</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>0.00</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="delayPrecCB">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>0.0</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>0.00</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
|
||||
@@ -440,10 +440,15 @@ QString ModelPrinter::printMixerLine(const MixData & mix, bool showMultiplex, in
|
||||
if (mix.curve.value)
|
||||
str += " " + mix.curve.toString(&model, true, &generalSettings).toHtmlEscaped();
|
||||
int scale = firmware->getCapability(SlowScale);
|
||||
if (scale == 0)
|
||||
scale = 1;
|
||||
if (scale == 0) scale = 1;
|
||||
if (mix.delayPrec) {
|
||||
scale = scale * 10;
|
||||
str += " " + tr("Delay precision(0.00)").toHtmlEscaped();
|
||||
}
|
||||
if (mix.delayDown || mix.delayUp)
|
||||
str += " " + tr("Delay(u%1:d%2)").arg((double)mix.delayUp / scale).arg((double)mix.delayDown / scale).toHtmlEscaped();
|
||||
scale = firmware->getCapability(SlowScale);
|
||||
if (scale == 0) scale = 1;
|
||||
if (mix.speedPrec) {
|
||||
scale = scale * 10;
|
||||
str += " " + tr("Slow precision(0.00)").toHtmlEscaped();
|
||||
|
||||
@@ -93,9 +93,10 @@ PACK(struct MixData {
|
||||
uint16_t carryTrim:1;
|
||||
uint16_t mixWarn:2; // mixer warning
|
||||
uint16_t mltpx:2 ENUM(MixerMultiplex);
|
||||
uint16_t delayPrec:1;
|
||||
uint16_t speedPrec:1;
|
||||
uint16_t flightModes:9 CUST(r_flightModes, w_flightModes);
|
||||
uint16_t spare:2 SKIP;
|
||||
uint16_t spare:1 SKIP;
|
||||
uint32_t weight:11 CUST(r_sourceNumVal,w_sourceNumVal);
|
||||
uint32_t offset:11 CUST(r_sourceNumVal,w_sourceNumVal);
|
||||
int32_t swtch:10 CUST(r_swtchSrc,w_swtchSrc);
|
||||
|
||||
@@ -33,6 +33,7 @@ enum MixFields {
|
||||
MIX_FIELD_SWITCH,
|
||||
MIX_FIELD_WARNING,
|
||||
MIX_FIELD_MLTPX,
|
||||
MIX_FIELD_DELAY_PREC,
|
||||
MIX_FIELD_DELAY_UP,
|
||||
MIX_FIELD_DELAY_DOWN,
|
||||
MIX_FIELD_SLOW_PREC,
|
||||
@@ -185,12 +186,16 @@ void menuModelMixOne(event_t event)
|
||||
md2->mltpx = editChoice(MIXES_2ND_COLUMN, y, STR_MULTPX, STR_VMLTPX, md2->mltpx, 0, 2, attr, event);
|
||||
break;
|
||||
|
||||
case MIX_FIELD_DELAY_PREC:
|
||||
md2->delayPrec = editChoice(MIXES_2ND_COLUMN, y, STR_MIX_DELAY_PREC, &STR_VPREC[1], md2->delayPrec, 0, 1, attr, event);
|
||||
break;
|
||||
|
||||
case MIX_FIELD_DELAY_UP:
|
||||
md2->delayUp = EDIT_DELAY(0, y, event, attr, STR_DELAYUP, md2->delayUp, PREC1);
|
||||
md2->delayUp = EDIT_DELAY(0, y, event, attr, STR_DELAYUP, md2->delayUp, (md2->delayPrec ? PREC2 : PREC1));
|
||||
break;
|
||||
|
||||
case MIX_FIELD_DELAY_DOWN:
|
||||
md2->delayDown = EDIT_DELAY(0, y, event, attr, STR_DELAYDOWN, md2->delayDown, PREC1);
|
||||
md2->delayDown = EDIT_DELAY(0, y, event, attr, STR_DELAYDOWN, md2->delayDown, (md2->delayPrec ? PREC2 : PREC1));
|
||||
break;
|
||||
|
||||
case MIX_FIELD_SLOW_PREC:
|
||||
|
||||
@@ -33,6 +33,7 @@ enum MixFields {
|
||||
MIX_FIELD_SWITCH,
|
||||
MIX_FIELD_WARNING,
|
||||
MIX_FIELD_MLTPX,
|
||||
MIX_FIELD_DELAY_PREC,
|
||||
MIX_FIELD_DELAY_UP,
|
||||
MIX_FIELD_DELAY_DOWN,
|
||||
MIX_FIELD_SLOW_PREC,
|
||||
@@ -181,12 +182,16 @@ void menuModelMixOne(event_t event)
|
||||
md2->mltpx = editChoice(MIXES_2ND_COLUMN, y, STR_MULTPX, STR_VMLTPX, md2->mltpx, 0, 2, attr, event);
|
||||
break;
|
||||
|
||||
case MIX_FIELD_DELAY_PREC:
|
||||
md2->delayPrec = editChoice(MIXES_2ND_COLUMN, y, STR_MIX_DELAY_PREC, &STR_VPREC[1], md2->delayPrec, 0, 1, attr, event);
|
||||
break;
|
||||
|
||||
case MIX_FIELD_DELAY_UP:
|
||||
md2->delayUp = EDIT_DELAY(y, event, attr, STR_DELAYUP, md2->delayUp, PREC1);
|
||||
md2->delayUp = EDIT_DELAY(y, event, attr, STR_DELAYUP, md2->delayUp, (md2->delayPrec ? PREC2 : PREC1));
|
||||
break;
|
||||
|
||||
case MIX_FIELD_DELAY_DOWN:
|
||||
md2->delayDown = EDIT_DELAY(y, event, attr, STR_DELAYDOWN, md2->delayDown, PREC1);
|
||||
md2->delayDown = EDIT_DELAY(y, event, attr, STR_DELAYDOWN, md2->delayDown, (md2->delayPrec ? PREC2 : PREC1));
|
||||
break;
|
||||
|
||||
case MIX_FIELD_SLOW_PREC:
|
||||
|
||||
@@ -84,20 +84,42 @@ void MixEditAdvanced::buildBody(Window* form)
|
||||
GET_SET_DEFAULT(mix->mixWarn));
|
||||
edit->setZeroText(STR_OFF);
|
||||
|
||||
// Delay up/down precision
|
||||
#if !PORTRAIT_LCD
|
||||
grid.setColSpan(2);
|
||||
#endif
|
||||
line = form->newLine(grid);
|
||||
new StaticText(line, rect_t{}, STR_MIX_DELAY_PREC);
|
||||
new Choice(line, rect_t{}, &STR_VPREC[1], 0, 1,
|
||||
GET_DEFAULT(mix->delayPrec),
|
||||
[=](int newValue) {
|
||||
mix->delayPrec = newValue;
|
||||
delayUp->clearTextFlag(PREC2);
|
||||
delayUp->setTextFlag(mix->delayPrec ? PREC2 : PREC1);
|
||||
delayUp->update();
|
||||
delayDn->clearTextFlag(PREC2);
|
||||
delayDn->setTextFlag(mix->delayPrec ? PREC2 : PREC1);
|
||||
delayDn->update();
|
||||
SET_DIRTY();
|
||||
});
|
||||
#if !PORTRAIT_LCD
|
||||
grid.setColSpan(1);
|
||||
#endif
|
||||
|
||||
// Delay up
|
||||
line = form->newLine(grid);
|
||||
new StaticText(line, rect_t{}, STR_DELAYUP);
|
||||
edit = new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, 0, DELAY_MAX,
|
||||
GET_DEFAULT(mix->delayUp),
|
||||
SET_VALUE(mix->delayUp, newValue), PREC1);
|
||||
edit->setSuffix("s");
|
||||
delayUp = new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, 0, DELAY_MAX,
|
||||
GET_DEFAULT(mix->delayUp),
|
||||
SET_VALUE(mix->delayUp, newValue), mix->delayPrec ? PREC2 : PREC1);
|
||||
delayUp->setSuffix("s");
|
||||
|
||||
// Delay down
|
||||
new StaticText(line, rect_t{}, STR_DELAYDOWN);
|
||||
edit = new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, 0, DELAY_MAX,
|
||||
GET_DEFAULT(mix->delayDown),
|
||||
SET_VALUE(mix->delayDown, newValue), PREC1);
|
||||
edit->setSuffix("s");
|
||||
delayDn = new NumberEdit(line, rect_t{0, 0, NUM_EDIT_W, 0}, 0, DELAY_MAX,
|
||||
GET_DEFAULT(mix->delayDown),
|
||||
SET_VALUE(mix->delayDown, newValue), mix->delayPrec ? PREC2 : PREC1);
|
||||
delayDn->setSuffix("s");
|
||||
|
||||
// Slow up/down precision
|
||||
#if !PORTRAIT_LCD
|
||||
|
||||
@@ -38,6 +38,8 @@ class MixEditAdvanced : public Page
|
||||
protected:
|
||||
uint8_t channel;
|
||||
uint8_t index;
|
||||
NumberEdit* delayUp;
|
||||
NumberEdit* delayDn;
|
||||
NumberEdit* slowUp;
|
||||
NumberEdit* slowDn;
|
||||
|
||||
|
||||
+2
-1
@@ -924,7 +924,8 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms)
|
||||
if (mode == e_perout_mode_normal && swTog) {
|
||||
if (!mixState[i].delay)
|
||||
_swPrev = _swOn;
|
||||
mixState[i].delay = (mixEnabled > _swOn ? md->delayUp : md->delayDown) * 10;
|
||||
int32_t precMult = md->delayPrec ? 1 : 10;
|
||||
mixState[i].delay = (mixEnabled > _swOn ? md->delayUp : md->delayDown) * precMult;
|
||||
mixState[i].now = mixEnabled;
|
||||
mixState[i].prev = _swPrev;
|
||||
}
|
||||
|
||||
@@ -401,9 +401,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -427,9 +427,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -427,9 +427,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -429,9 +429,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -401,9 +401,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -401,9 +401,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -429,9 +429,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -429,9 +429,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -400,9 +400,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -401,9 +401,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -404,9 +404,10 @@ static const struct YamlNode struct_MixData[] = {
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_UNSIGNED( "delayPrec", 1 ),
|
||||
YAML_UNSIGNED( "speedPrec", 1 ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
|
||||
@@ -1111,3 +1111,4 @@ const char STR_WIDGET_SIZE[] = TR_WIDGET_SIZE;
|
||||
#endif
|
||||
|
||||
const char STR_MIX_SLOW_PREC[] = TR_MIX_SLOW_PREC;
|
||||
const char STR_MIX_DELAY_PREC[] = TR_MIX_DELAY_PREC;
|
||||
|
||||
@@ -1276,3 +1276,4 @@ extern const char STR_WIDGET_SIZE[];
|
||||
#endif
|
||||
|
||||
extern const char STR_MIX_SLOW_PREC[];
|
||||
extern const char STR_MIX_DELAY_PREC[];
|
||||
|
||||
@@ -1294,6 +1294,7 @@
|
||||
#define TR_CREATE_NEW "新建"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("慢放精度", "慢放精度 上行/下行")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "已存在同名主题目录 !"
|
||||
|
||||
|
||||
@@ -1309,6 +1309,7 @@
|
||||
#define TR_CREATE_NEW "Vytvořit"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Přesnost zpomal", "Přesnost zpomalení")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "Adresář vzhledu s tímto názvem již existuje."
|
||||
|
||||
|
||||
@@ -1308,6 +1308,7 @@
|
||||
#define TR_CREATE_NEW "Opret"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Træg præc", "Træg op/ned præcision")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "Der findes allerede et katalog med samme navn."
|
||||
|
||||
|
||||
@@ -1299,6 +1299,7 @@
|
||||
#define TR_CREATE_NEW "Erstelle"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Langs. Vorlauf", "Langs. Vor-/Rücklauf")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "Ein Theme-Verzeichnis mit demselben Namen existiert bereits"
|
||||
|
||||
|
||||
@@ -1294,6 +1294,7 @@
|
||||
#define TR_CREATE_NEW "Create"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "A theme directory with the same name already exists."
|
||||
|
||||
|
||||
@@ -1296,6 +1296,7 @@
|
||||
#define TR_CREATE_NEW "Create"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "A theme directory with the same name already exists."
|
||||
|
||||
|
||||
@@ -1312,6 +1312,7 @@
|
||||
#define TR_CREATE_NEW "Create"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "A theme directory with the same name already exists."
|
||||
|
||||
|
||||
@@ -1311,6 +1311,7 @@
|
||||
#define TR_CREATE_NEW "Créer"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "Un thème avec le même nom existe déjà."
|
||||
|
||||
|
||||
@@ -1295,6 +1295,7 @@
|
||||
#define TR_CREATE_NEW "יצירה חדשה"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "כבר קיימת ערכת נושא עם אותו שם"
|
||||
|
||||
|
||||
@@ -1290,6 +1290,7 @@
|
||||
#define TR_CREATE_NEW "Crea"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Prec. lenta", "Prec. su/giù lenta")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "Esiste già una cartella di temi con lo stesso nome."
|
||||
|
||||
|
||||
@@ -1295,6 +1295,7 @@
|
||||
#define TR_CREATE_NEW "作成"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "同じ名前のテーマディレクトリが既に存在します。"
|
||||
|
||||
|
||||
@@ -1302,6 +1302,7 @@
|
||||
#define TR_CREATE_NEW "Create"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "A theme directory with the same name already exists."
|
||||
|
||||
|
||||
@@ -1295,6 +1295,7 @@
|
||||
#define TR_CREATE_NEW "Utwórz"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Wolna prec.", "Wolna prec. góra/dół")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "Folder szablonów o takiej samej nazwie już istnieje."
|
||||
|
||||
|
||||
@@ -1299,6 +1299,7 @@
|
||||
#define TR_CREATE_NEW "Criar"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Prec. Lento", "Prec. mais/menos lento")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "Já existe um diretório de tema com o mesmo nome."
|
||||
|
||||
|
||||
@@ -1298,6 +1298,7 @@
|
||||
#define TR_CREATE_NEW "Создать"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Точн замедл", "Точность замедления")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "Уже есть каталог с таким названием"
|
||||
|
||||
|
||||
@@ -1330,6 +1330,7 @@
|
||||
#define TR_CREATE_NEW "Skapa"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Dröj preci.", "Fördröj upp/ner precision")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "Det finns redan ett tema med samma namn"
|
||||
|
||||
|
||||
@@ -1299,6 +1299,7 @@
|
||||
#define TR_CREATE_NEW "新建"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("慢放精度", "慢放精度 上行/下行")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "已存在同名主題目錄 !"
|
||||
|
||||
|
||||
@@ -1294,6 +1294,7 @@
|
||||
#define TR_CREATE_NEW "Створити"
|
||||
|
||||
#define TR_MIX_SLOW_PREC TR("Точн. уповільн.", "Точність уповільнення")
|
||||
#define TR_MIX_DELAY_PREC TR("Delay prec", "Delay up/dn prec")
|
||||
|
||||
#define TR_THEME_EXISTS "A theme directory with the same name already exists."
|
||||
|
||||
|
||||
Reference in New Issue
Block a user