diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 5c3f6ff40..d927be13d 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -507,36 +507,43 @@ QString LogicalSwitchData::toString(const ModelData & model) } switch (getFunctionFamily()) { case LS_FAMILY_STAY: - result = QObject::tr("STAY(%1, [%2:%3])").arg(RawSwitch(val1).toString()).arg(ValToTim(val2)).arg(ValToTim(val2+val3)); + result = QObject::tr("STAY( %1, [%2:%3])").arg(RawSwitch(val1).toString()).arg(ValToTim(val2)).arg(ValToTim(val2+val3)); break; case LS_FAMILY_STICKY: - result = QObject::tr("STICKY(%1, %2)").arg(RawSwitch(val1).toString()).arg(RawSwitch(val2).toString()); + result = QObject::tr("STICKY( %1, %2)").arg(RawSwitch(val1).toString()).arg(RawSwitch(val2).toString()); break; case LS_FAMILY_TIMER: - result = QObject::tr("TIMER(%1, %2)").arg(ValToTim(val1)).arg(ValToTim(val2)); + result = QObject::tr("TIMER( %1, %2)").arg(ValToTim(val1)).arg(ValToTim(val2)); break; case LS_FAMILY_VOFS: { RawSource source = RawSource(val1, &model); RawSourceRange range = source.getRange(); + QString res; if (val1) - result += source.toString(); + res += source.toString(); else - result += "0"; - result.remove(" "); + res += "0"; + res.remove(" "); if (func == LS_FN_APOS || func == LS_FN_ANEG) - result = "|" + result + "|"; + res = "|" + res + "|"; else if (func == LS_FN_DAPOS) - result = "|d(" + result + ")|"; - else if (func == LS_FN_DPOS) result = "d(" + result + ")"; + res = "|d(" + res + ")|"; + else if (func == LS_FN_DPOS) result = "d(" + res + ")"; + result += res; + if (func == LS_FN_APOS || func == LS_FN_VPOS || func == LS_FN_DAPOS || func == LS_FN_DPOS) result += " > "; else if (func == LS_FN_ANEG || func == LS_FN_VNEG) result += " < "; + else if (func == LS_FN_VALMOSTEQUAL) + result += " ~ "; + else + result += " missing"; result += QString::number(range.step * (val2 /*TODO+ source.getRawOffset(model)*/) + range.offset); break; } case LS_FAMILY_VBOOL: - result = RawSwitch(val1).toString(); + result += RawSwitch(val1).toString(); switch (func) { case LS_FN_AND: result += " AND "; @@ -547,7 +554,8 @@ QString LogicalSwitchData::toString(const ModelData & model) case LS_FN_XOR: result += " XOR "; break; - default: + default: + result += " bar "; break; } result += RawSwitch(val2).toString(); @@ -560,6 +568,7 @@ QString LogicalSwitchData::toString(const ModelData & model) result += "0"; switch (func) { case LS_FN_EQUAL: + case LS_FN_VEQUAL: result += " = "; break; case LS_FN_NEQUAL: @@ -578,6 +587,7 @@ QString LogicalSwitchData::toString(const ModelData & model) result += " <= "; break; default: + result += " foo "; break; } if (val2) diff --git a/companion/src/helpers.h b/companion/src/helpers.h index ceb3a2e22..82a775395 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -37,6 +37,8 @@ class CompanionIcon: public QIcon { CompanionIcon(QString baseimage); }; +bool gvarsEnabled(); + class GVarGroup : public QObject { Q_OBJECT diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index 9c7d8d5f3..2b7a7b9e7 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -155,16 +155,6 @@ QString InputsPanel::getInputText(int dest, bool * new_ch) str = " "; } - if (firmware->getCapability(VirtualInputs)) { - str += " " + tr("Source(%1)").arg(md->srcRaw.toString()); - if (md->carryTrim>0) { - str += " " + tr("No Trim"); - } - else if (md->carryTrim<0) { - str += " " + RawSource(SOURCE_TYPE_TRIM, (-(md->carryTrim)-1)).toString(); - } - } - switch (md->mode) { case (1): str += " <-"; break; case (2): str += " ->"; break; @@ -173,7 +163,17 @@ QString InputsPanel::getInputText(int dest, bool * new_ch) str += " " + tr("Weight(%1)").arg(getGVarString(md->weight)); - if (md->curve.value) str += " " + md->curve.toString(); + if (firmware->getCapability(VirtualInputs)) { + str += " " + tr("Source(%1)").arg(md->srcRaw.toString()); + if (md->carryTrim>0) { + str += " " + tr("NoTrim"); + } + else if (md->carryTrim<0) { + str += " " + RawSource(SOURCE_TYPE_TRIM, (-(md->carryTrim)-1)).toString(); + } + } + + if (md->curve.value) str += " " + Qt::escape(md->curve.toString()); QString phasesStr = getPhasesStr(md->phases, model); if (!phasesStr.isEmpty()) str += " " + phasesStr; diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index 7b01d83e6..57b59c927 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -191,11 +191,8 @@ QString MixesPanel::getMixerText(int dest, bool * new_ch) str += " " + Qt::escape(tr("Switch(%1)").arg(md->swtch.toString())); } - if (md->carryTrim>0) { - str += " " + Qt::escape(tr("No Trim")); - } - else if (md->carryTrim<0) { - str += " " + Qt::escape(RawSource(SOURCE_TYPE_TRIM, (-(md->carryTrim)-1)).toString()); + if (md->carryTrim) { + str += " " + Qt::escape(tr("NoTrim")); } if (md->noExpo) str += " " + Qt::escape(tr("No DR/Expo")); @@ -214,7 +211,7 @@ QString MixesPanel::getMixerText(int dest, bool * new_ch) QString MixerName; MixerName.append(md->name); if (!MixerName.isEmpty()) { - str += Qt::escape(QString("(%1)").arg(MixerName)); + str += " " + Qt::escape(QString("(%1)").arg(MixerName)); } } } diff --git a/companion/src/printdialog.cpp b/companion/src/printdialog.cpp index a6e6177e0..9c15efcee 100644 --- a/companion/src/printdialog.cpp +++ b/companion/src/printdialog.cpp @@ -20,51 +20,47 @@ PrintDialog::PrintDialog(QWidget *parent, FirmwareInterface * firmware, GeneralS g_eeGeneral(gg), g_model(gm), printfilename(filename), - ui(new Ui::PrintDialog) + ui(new Ui::PrintDialog), + gvars(gvarsEnabled()), + gvarnum (0) { - ui->setupUi(this); - this->setWindowIcon(CompanionIcon("print.png")); - te = ui->textEdit; + if (gvars) { + gvarnum=firmware->getCapability(Gvars); + } - setWindowTitle(tr("Setup for: ") + g_model->name); - ui->textEdit->clear(); - QString modelname=g_model->name; - if (modelname.isEmpty()) { - curvefile5=QString("%1/curve5.png").arg(qd->tempPath()); - curvefile9=QString("%1/curve9.png").arg(qd->tempPath()); - } - else { - curvefile5=QString("%1/%2-curve5.png").arg(qd->tempPath()).arg(modelname); - curvefile9=QString("%1/%2-curve9.png").arg(qd->tempPath()).arg(modelname); - } - printSetup(); - int gvars=0; - if (firmware->getCapability(HasVariants)) { - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { - gvars=1; - } - } - else { - gvars=1; - } - - if (gvars) { - te->append(printPhases()+"
"); - } - printExpo(); - printMixes(); - printLimits(); - printCurves(); - printGvars(); - printSwitches(); - printFSwitches(); - printFrSky(); - - te->scrollToAnchor("1"); - if (!printfilename.isEmpty()) { - printToFile(); - QTimer::singleShot(0, this, SLOT(autoClose())); - } + ui->setupUi(this); + this->setWindowIcon(CompanionIcon("print.png")); + te = ui->textEdit; + + setWindowTitle(tr("Setup for: ") + g_model->name); + te->clear(); + QString modelname=g_model->name; + if (modelname.isEmpty()) { + curvefile5=QString("%1/curve5.png").arg(qd->tempPath()); + curvefile9=QString("%1/curve9.png").arg(qd->tempPath()); + } + else { + curvefile5=QString("%1/%2-curve5.png").arg(qd->tempPath()).arg(modelname); + curvefile9=QString("%1/%2-curve9.png").arg(qd->tempPath()).arg(modelname); + } + printSetup(); + if (gvars) { + te->append(printPhases()+"
"); + } + printExpo(); + printMixes(); + printLimits(); + printCurves(); + printGvars(); + printSwitches(); + printFSwitches(); + printFrSky(); + + te->scrollToAnchor("1"); + if (!printfilename.isEmpty()) { + printToFile(); + QTimer::singleShot(0, this, SLOT(autoClose())); + } } void PrintDialog::closeEvent(QCloseEvent *event) @@ -115,16 +111,8 @@ QString PrintDialog::fv(const QString name, const QString value) void PrintDialog::printSetup() { - int gvars=0; - if (firmware->getCapability(HasVariants)) { - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { - gvars=1; - } - } else { - gvars=1; - } QString str = ""; - str.append(QString("

").arg((firmware->getCapability(FlightPhases) && gvars==0) ? 2 : 1)); + str.append(QString("

"); str.append("

").arg((firmware->getCapability(FlightPhases) && !gvars) ? 2 : 1)); str.append(g_model->name); str.append(" ("); str.append(firmware->getEepromInterface()->getName()); @@ -132,7 +120,7 @@ void PrintDialog::printSetup() str.append("

"+tr("General Model Settings")+"

"); str.append(fv(tr("Name"), g_model->name)); - str.append(""+tr("EEprom Size")+QString(": %1
").arg(firmware->getEepromInterface()->getSize(*g_model))); + str.append(fv(tr("EEprom Size"), QString("%1").arg(firmware->getEepromInterface()->getSize(*g_model)))); str.append(fv(tr("Timer1"), getTimerStr(g_model->timers[0]))); //value, mode, count up/down str.append(fv(tr("Timer2"), getTimerStr(g_model->timers[1]))); //value, mode, count up/down str.append(fv(tr("Protocol"), getProtocol(g_model))); //proto, numch, delay, @@ -154,17 +142,8 @@ void PrintDialog::printSetup() QString PrintDialog::printPhases() { - int gvars=0; - int gvarnum=0; - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT ) || (!firmware->getCapability(HasVariants) && firmware->getCapability(Gvars))) { - if (firmware->getCapability(GvarsFlightPhases)) { - gvars=1; - gvarnum=firmware->getCapability(Gvars); - } - } - QString str=""; - str.append(QString("

").arg(gvars==0 ? 8+firmware->getCapability(RotaryEncoders) : 8+gvarnum+firmware->getCapability(RotaryEncoders))); + str.append(QString(""); @@ -175,14 +154,14 @@ QString PrintDialog::printPhases() if (firmware->getCapability(RotaryEncoders)) { str.append(QString(""); } - str.append(""); + str.append(""); for (int i=0; i<4; i++) { - str.append(QString("").arg(getInputStr(*g_model, i))); + str.append(QString("").arg(getInputStr(*g_model, i))); } - if (gvars==1) { - for (int i=0; iGV%1
%2").arg(i+1).arg(g_model->gvars_names[i])); + if (gvars) { + for (unsigned int i=0; iGV%1
%2").arg(i+1).arg(g_model->gvars_names[i])); } } for (int i=0; igetCapability(RotaryEncoders); i++) { @@ -191,23 +170,24 @@ QString PrintDialog::printPhases() str.append("
"); for (int i=0; igetCapability(FlightPhases); i++) { PhaseData *pd=&g_model->phaseData[i]; - str.append("").arg(i).arg(pd->name).arg(pd->fadeIn).arg(pd->fadeOut)); + str.append("").arg(i).arg(pd->name).arg(pd->fadeIn).arg(pd->fadeOut)); for (int k=0; k<4; k++) { + //TODO trim values if (pd->trimRef[k]==-1) { - str.append(QString("").arg(pd->trim[k])); + str.append(QString("").arg(pd->trim[k])); } else { - str.append("").arg(pd->trimRef[k])); + str.append("").arg(pd->trimRef[k])); } } - if (gvars==1) { - for (int k=0; kgvars[k]<=1024) { - str.append(QString(""); + str.append(QString(""); } else { int num = pd->gvars[k] - 1025; if (num>=i) num++; - str.append("").arg(num)); + str.append("").arg(num)); } } } @@ -231,7 +211,7 @@ QString PrintDialog::printPhases() void PrintDialog::printExpo() { QString str = "

").arg(!gvars ? 8+firmware->getCapability(RotaryEncoders) : 8+gvarnum+firmware->getCapability(RotaryEncoders))); str.append(tr("Flight modes Settings")); str.append("

 "); str.append(tr("Fades")+"").arg(firmware->getCapability(RotaryEncoders))+tr("Rot.Enc.")+""+tr("Switch")+"
"+tr("Flight mode name")); - str.append(""+tr("IN")+""+tr("OUT")+""+tr("Switch")+"
"+tr("Flight mode name")); + str.append(""+tr("IN")+""+tr("OUT")+"%1%1
"+tr("FM")+QString("%1 %2%3%4
"+tr("FM")+QString("%1 %2%3%4%1%1"+tr("FM")+QString("%1"+tr("FM")+QString("%1%1").arg(pd->gvars[k])+"%1").arg(pd->gvars[k])+""+tr("FM")+QString("%1"+tr("FM")+QString("%1

"; - str.append(tr("Expo/Dr Settings")); + str.append(tr("Inputs")); str.append("

"); int ec=0; unsigned int lastCHN = 255; @@ -262,8 +242,18 @@ void PrintDialog::printExpo() break; }; - str += tr("Weight") + QString("%1").arg(getGVarString(ed->weight,true)).rightJustified(6, ' '); - str += ed->curve.toString().replace("<", "<").replace(">", ">"); + str += tr("Weight(") + QString("%1").arg(getGVarString(ed->weight,true)) + ")"; + + if (firmware->getCapability(VirtualInputs)) { + str += " " + tr("Source(%1)").arg(ed->srcRaw.toString()); + if (ed->carryTrim>0) { + str += " " + tr("NoTrim"); + } + else if (ed->carryTrim<0) { + str += " " + RawSource(SOURCE_TYPE_TRIM, (-(ed->carryTrim)-1)).toString(); + } + } + if (ed->curve.value) str += " " + Qt::escape(ed->curve.toString()); if (firmware->getCapability(FlightPhases)) { if(ed->phases) { @@ -303,12 +293,11 @@ void PrintDialog::printExpo() } if (ed->swtch.type) str += " " + tr("Switch") + QString("(%1)").arg(ed->swtch.toString()); - str += ed->curve.toString().replace("<", "<").replace(">", ">"); if (firmware->getCapability(HasExpoNames)) { QString ExpoName; ExpoName.append(ed->name); if (!ExpoName.isEmpty()) { - str+=QString(" (%1)").arg(ExpoName); + str+= " " + QString(" [%1]").arg(ExpoName); } } str += ""; @@ -332,16 +321,22 @@ void PrintDialog::printMixes() str.append(""); @@ -351,57 +346,42 @@ void PrintDialog::printMixes() case (2): str += " R"; break; default: str += "  "; break; }; - str += QString(" %1").arg(getGVarString(md->weight, true)).rightJustified(6, ' '); - str += md->srcRaw.toString(); - if (md->swtch.type) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); - if (md->carryTrim) str += " " + tr("noTrim"); - if (md->sOffset) str += " "+ tr("Offset") + QString(" %1").arg(getGVarString(md->sOffset)); - str += md->curve.toString().replace("<", "<").replace(">", ">"); - float scale=firmware->getCapability(SlowScale); - if (md->delayDown || md->delayUp) str += tr(" Delay(u%1:d%2)").arg(md->delayUp/scale).arg(md->delayDown/scale); - if (md->speedDown || md->speedUp) str += tr(" Slow(u%1:d%2)").arg(md->speedUp/scale).arg(md->speedDown/scale); - if (md->mixWarn) str += " "+tr("Warn")+QString("(%1)").arg(md->mixWarn); - if (firmware->getCapability(FlightPhases)) { - if(md->phases) { - if (md->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { - int mask=1; - int first=0; - for (int i=0; igetCapability(FlightPhases); i++) { - if (!(md->phases & mask)) { - first++; - } - mask <<=1; - } - if (first>1) { - str += " " + tr("Flight modes") + QString("("); - } else { - str += " " + tr("Flight mode") + QString("("); - } - mask=1; - first=1; - for (int j=0; jgetCapability(FlightPhases);j++) { - if (!(md->phases & mask)) { - PhaseData *pd = &g_model->phaseData[j]; - if (!first) { - str += QString(", ")+ QString("%1").arg(getPhaseName(j+1, pd->name)); - } else { - str += QString("%1").arg(getPhaseName(j+1,pd->name)); - first=0; - } - } - mask <<=1; - } - str += QString(")"); - } else { - str += tr("DISABLED")+QString(" !!!"); - } - } + //set mixer src model if it is unset (srcRaw needs this to generate proper toString() for input source type) + if (md->srcRaw.model == 0) + md->srcRaw.model = g_model; + str += " " + md->srcRaw.toString(); + + str += " " + Qt::escape(tr("Weight(%1)").arg(getGVarString(md->weight, true))); + + QString phasesStr = getPhasesStr(md->phases, *g_model); + if (!phasesStr.isEmpty()) str += " " + Qt::escape(phasesStr); + + if (md->swtch.type != SWITCH_TYPE_NONE) { + str += " " + Qt::escape(tr("Switch(%1)").arg(md->swtch.toString())); } + + if (md->carryTrim) { + str += " " + Qt::escape(tr("NoTrim")); + } + + if (md->noExpo) str += " " + Qt::escape(tr("No DR/Expo")); + if (md->sOffset) str += " " + Qt::escape(tr("Offset(%1)").arg(getGVarString(md->sOffset))); + if (md->curve.value) str += " " + Qt::escape(md->curve.toString()); + + + int scale = firmware->getCapability(SlowScale); + if (scale == 0) + scale = 1; + if (md->delayDown || md->delayUp) + str += Qt::escape(tr(" Delay(u%1:d%2)").arg((double)md->delayUp/scale).arg((double)md->delayDown/scale)); + if (md->speedDown || md->speedUp) + str += Qt::escape(tr(" Slow(u%1:d%2)").arg((double)md->speedUp/scale).arg((double)md->speedDown/scale)); + if (md->mixWarn) str += Qt::escape(tr(" Warn(%1)").arg(md->mixWarn)); if (firmware->getCapability(HasMixerNames)) { QString MixerName; MixerName.append(md->name); if (!MixerName.isEmpty()) { - str+=QString(" (%1)").arg(MixerName); + str += " " + Qt::escape(QString("(%1)").arg(MixerName)); } } str.append(""); @@ -435,12 +415,12 @@ void PrintDialog::printLimits() str.append(""); str.append(""); for(int i=0; igetCapability(Outputs); i++) { - str.append(doTR(QString::number(g_model->limitData[i].min),"green")); + str.append(doTR(QString::number((qreal)g_model->limitData[i].min/10),"green")); } str.append(""); str.append(""); for(int i=0; igetCapability(Outputs); i++) { - str.append(doTR(QString::number(g_model->limitData[i].max),"green")); + str.append(doTR(QString::number((qreal)g_model->limitData[i].max/10),"green")); } str.append(""); str.append(""); @@ -465,12 +445,12 @@ void PrintDialog::printLimits() str.append(""); str.append(""); for(int i=0; i<16; i++) { - str.append(doTR(QString::number(g_model->limitData[i].min),"green")); + str.append(doTR(QString::number((qreal)g_model->limitData[i].min/10),"green")); } str.append(""); str.append(""); for(int i=0; i<16; i++) { - str.append(doTR(QString::number(g_model->limitData[i].max),"green")); + str.append(doTR(QString::number((qreal)g_model->limitData[i].max/10),"green")); } str.append(""); str.append(""); @@ -497,12 +477,12 @@ void PrintDialog::printLimits() str.append(""); str.append(""); for(int i=16; igetCapability(Outputs); i++) { - str.append(doTR(QString::number(g_model->limitData[i].min),"green")); + str.append(doTR(QString::number((qreal)g_model->limitData[i].min/10),"green")); } str.append(""); str.append(""); for(int i=16; igetCapability(Outputs); i++) { - str.append(doTR(QString::number(g_model->limitData[i].max),"green")); + str.append(doTR(QString::number((qreal)g_model->limitData[i].max/10),"green")); } str.append(""); str.append(""); @@ -633,11 +613,8 @@ void PrintDialog::printSwitches() for (int i=0; igetCapability(LogicalSwitches); i++) { if (g_model->customSw[i].func) { str.append(""); - if (i<9) { - str.append("").arg(i+1)); - } else { - str.append(""); - } + str.append("").arg(i+1)); + if (i < 9) str += " "; QString tstr = g_model->customSw[i].toString(*g_model); str.append(doTC(tstr,"green")); str.append(""); @@ -652,25 +629,19 @@ void PrintDialog::printSwitches() void PrintDialog::printGvars() { - int gvars=0; - int gvarnum=0; - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT ) || (!firmware->getCapability(HasVariants) && firmware->getCapability(Gvars))) { - gvars=1; - gvarnum=firmware->getCapability(Gvars); - } - if (!firmware->getCapability(GvarsFlightPhases) && (gvars==1 && firmware->getCapability(Gvars))) { + if (!firmware->getCapability(GvarsFlightPhases) && (gvars && firmware->getCapability(Gvars))) { QString str = "
"); if(lastCHN!=md->destCh) { lastCHN=md->destCh; - QString chname=tr("CH")+QString("%1 ").arg(lastCHN,2,10,QChar('0')); + + QString chname = QObject::tr("CH%1").arg(lastCHN); + // TODO not nice, Qt brings a function for that, I don't remember right now + (chname.length() < 4) ? chname.append(" ") : chname.append(" "); if (firmware->getCapability(HasChNames)) { - QString name=g_model->limitData[md->destCh-1].name; + QString name = g_model->limitData[lastCHN-1].name; if (!name.isEmpty()) { - name.append(" "); - chname=name.left(6); + name = QString("(") + name + QString(")"); } + name.append(" "); + chname += name.left(8); } - str.append(chname); - } else { + chname = Qt::escape(chname); + str.append(chname.replace(" ", " ")); + } + else { str.append(" "); } str.append("
"+tr("Min")+"
"+tr("Max")+"
"+tr("Invert")+"
"+tr("Min")+"
"+tr("Max")+"
"+tr("Invert")+"
"+tr("Min")+"
"+tr("Max")+"
"+tr("Invert")+"
"+tr("LS")+QString("%1"+tr("LS")+('A'+(i-9))+""+tr("L")+QString("%1
"; str.append(""); str.append("

"+tr("Global Variables")+"

"); PhaseData *pd=&g_model->phaseData[0]; int width=100/gvarnum; str.append(""); - for(int i=0; i").arg(width)+tr("GV")+QString("%1").arg(i+1)); } str.append(""); str.append(""); - for(int i=0; i").arg(width)+QString("%1").arg(pd->gvars[i])); } str.append(""); diff --git a/companion/src/printdialog.h b/companion/src/printdialog.h index 8209db326..2084b7596 100644 --- a/companion/src/printdialog.h +++ b/companion/src/printdialog.h @@ -28,6 +28,8 @@ public: private: Ui::PrintDialog *ui; + bool gvars; + unsigned int gvarnum; void printSetup(); QString printPhases();